qlogicagent 2.19.9 → 2.19.11
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 +1 -1
- package/dist/default-project-knowledge/INSTRUCTIONS.md +7 -7
- package/dist/default-project-knowledge/rules/project-workflow.md +6 -6
- package/dist/host-contract.js +1 -1
- package/dist/index.js +336 -343
- package/dist/protocol.js +1 -1
- package/dist/skills/builtin/desktop-screenshot/SKILL.md +62 -62
- package/dist/skills/builtin/office-doc-reading/SKILL.md +19 -19
- package/dist/types/cli/handlers/community-handler.d.ts +0 -8
- package/dist/types/cli/handlers/files-handler.d.ts +2 -30
- package/dist/types/cli/industrial-runtime-store.d.ts +1 -14
- package/dist/types/host-contract/index.d.ts +2 -2
- package/package.json +4 -6
- package/dist/types/cli/industrial-runtime-archive.d.ts +0 -14
- package/dist/types/cli/runtime-dependency-catalog.d.ts +0 -112
- package/dist/types/cli/windows-authenticode.d.ts +0 -18
package/dist/protocol.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Y="1.0.0",l={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},G={REQUEST:"tool.approval.request"};function _(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function 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 v(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function z(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||_(t)||v(t)?t:null}import{randomUUID as X}from"node:crypto";var $=["settings.list","settings.get","settings.validate","provider.list","tools.list","todos.list","tasks.list","session.list","session.get","session.resolve","session.loadNativeTranscript","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","agent.health","agent.metrics"],J=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Q=["memory.","usage."],Z=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt"]);function A(e){return J.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:$.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function x(e){return Z.has(e)||A(e).mutability==="read"?!1:Q.some(t=>e.startsWith(t))}function ee(e,t={}){let r=t.now??Date.now(),n=A(e),o=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??X(),createdAt:r,deadlineAt:r+o,channel:t.channel??n.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function M(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:l.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:l.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:l.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let n=A(e.method).channel;return r.channel!==n?{ok:!1,error:{code:l.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${n}, got ${r.channel}.`}}:x(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:l.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=M({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 te=["agent.health","agent.metrics","agent.cancel","provider.catalog","provider.list","provider.get","provider.install","provider.install.cancel","provider.update","provider.uninstall","provider.enable","provider.disable","provider.diagnose","provider.auth.status","provider.auth.setPreference","provider.auth.setUserKey","provider.auth.methods","provider.auth.start","provider.auth.attach","provider.auth.input","provider.auth.resize","provider.auth.cancel","provider.auth.logout","provider.models.list","provider.nativeSessions.list","provider.nativeSessions.load","provider.nativeSessions.resume","delegation.cancel","delegation.reset","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.loadNativeTranscript","session.adoptNative","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.detach","project.delete","project.rename","project.archive","project.unarchive","project.update","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.move","files.copy","files.delete","files.search","files.undoOperation","files.gitStatus","turnBaseline.getSummary","turnBaseline.getFileDiff","turnBaseline.listRecent","turnBaseline.getFileBaseline","workingMaterials.get","workingMaterials.replace","workingMaterials.upsert","workingMaterials.remove","workingMaterials.reorder","skills.list","memory.list-files","memory.atlas","memory.activity","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var I=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.file_changes","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.media_capability_check","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.progress","turn.tool_use_summary","turn.tool_selection_policy","turn.lifecycle","turn.document_maintenance","turn.artifact_contract","turn.usage_update","team.member.notification","session.info","session.recovery_pending","memory.updated","skills.updated","turn.memory_recall","turn.memory_written","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed","workflow.nodeStatus","workflow.triggerDropped","workflow.alert","workflow.approvalRequested","workflow.approvalTimedOut"],b=["solo.progress","solo.specProgress","solo.agentDelta","solo.agentActivity","solo.agentUsage","solo.evaluation","product.taskStarted","product.taskOutput","product.members","product.agentActivity","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.budgetWarning","product.checkpointed","product.completed","product.dagTopology","plan.interrupted","product.planReady","product.planningDelta","product.leaderMessage","product.planFailed","product.planningAsk","goal.run_state_changed","goal.phase_boundary","goal.goal_edited","goal.message_queued","goal.acceptance_updated","goal.round_message","mention.delegate_started","mention.delegate_activity","mention.delegate_settled"],re=[...I,...b],w=re;import{createHash as Et}from"node:crypto";import{resolve as Tt}from"node:path";var m={request:"x/delegate",update:"x/delegate.update",respond:"x/delegate.respond",cancel:"x/delegate.cancel"},ne=["search","addText","embedText","ingestExtracted","proposeExtracted","consumePendingProposals","feedback","findRelatedEvents","synthesizeTimeline","getActivitySummary","getAllProfiles","setProfile","getAtlas","setMemoryArchived","triggerDecay","resolveConflicts"],ie=["initialize","getIndex","addToIndex","replaceInIndex","removeFromIndex","createFile","writeFile","readFile","deleteFile","listFiles","searchLocal"],oe=["getSkillSnapshot","readSkillFile","recordSkillInvocation","commitSkillMutation","applyCuratorPlan","prepareSkillInstall","finalizeSkillInstall"],se=["loadForResume","appendTranscript","updateTitle","saveState","saveTaskSummary","groupSplit"],ae=["commitTurnTelemetry","listDistillableFeedback","markFeedbackDistilled","runUploadSweep"],de=["getSnapshot","create","switch","update"],Nt=1024*1024,pe=["list","get","diagnose"],ce=["navigate","snapshot","click","type","screenshot","console","network"];var le=["open","recordEvent","checkpoint","get","list","delete","getCheckpoint","listCheckpoints","restoreCheckpoint"],ue=["getTunables","updateTunable","clearTunable","appendDirectoryAllowRule"];var Dt=new Set(ne),Ht=new Set(ie),Lt=new Set(ue),jt=new Set(oe),Ut=new Set(se),Kt=new Set(ae),Ft=new Set(de),Vt=new Set(le),Wt=new Set(pe),qt=new Set(ce);var ge=1,me={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"},fe={ABORT:"x/abort",DREAM:"x/dream",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_REPLAY:"x/product.replay",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",SOLO_SPEC_CHAT:"x/solo.specChat",SOLO_SPEC_JUDGE:"x/solo.specJudge",WORKFLOW_CHAT:"x/workflow.chat",WORKFLOW_MATCH_INTENT:"x/workflow.matchIntent",PRODUCT_SUBSCRIBE:"x/product.subscribe",GOAL_START:"x/goal.start",GOAL_STATUS:"x/goal.status",GOAL_PAUSE:"x/goal.pause",GOAL_RESUME:"x/goal.resume",GOAL_UPDATE_GOAL:"x/goal.updateGoal",GOAL_STOP:"x/goal.stop",GOAL_MESSAGE:"x/goal.message",GOAL_SUBSCRIBE:"x/goal.subscribe",GOAL_EVENTS:"x/goal.events",DELEGATE:m.request,DELEGATE_UPDATE:m.update,DELEGATE_RESPOND:m.respond,DELEGATE_CANCEL:m.cancel},O={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"},ye={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};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"&&typeof t.method=="string"&&!("id"in t)}function H(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function Ae(e){let t;try{t=JSON.parse(e)}catch{return null}return H(t)||N(t)||D(t)?t:null}function Se(e){return Object.values(O).includes(e)}function Re(e){return e.startsWith("x_")}var P=["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(e){return e?e.map(t=>({...t})):void 0}function Ie(e){return e?[...e]:void 0}function L(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function f(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(e.workspaceSummaries)}:{}}}function be(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?f(r):{...f(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:E(r.workspaceSummaries)}:{}}}function Pe(e){return L(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function Ee(e){return L(e.map(t=>t.id))}function he(e){let{previous:t,current:r}=e;if(!t)return{...f(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let n=P.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(n.length===P.length)return{...f(r),syncMode:"full"};let o={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:n,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},p=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":p[s]=Ie(i);break;case"approvalPolicy":p[s]={...i};break;case"workspaceSummaries":p[s]=E(i);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":p[s]=g(i);break;default:p[s]=i;break}}return o}var Te=["web_search","web_fetch","deep_research","browser_execution"],ke=["web-intelligence","browser-execution"],_e=["discovery","read-url","multi-source-research","interactive-browser"],Ce=["stateless","render-backend","interactive-session"],ve=["stateless","stateless-single-step","stateful-session-required"],xe=["required","conditional","none"],Me=["browser-read","browser-authenticated-read","browser-state-changing"];var we=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],Oe=["web_search","web_fetch","deep_research","blocked"],Ne=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],De=["none","same-capability-once","degrade-only"];var He=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Le=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],je=["observe-only","parent-write","deny"];var Ue=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 Ke(e){return{...e,assetIds:[...e.assetIds]}}function K(){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 F(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function Fe(e,t){let r=V(e,t);return r?r.assetIds.map(n=>F(e,n)).filter(n=>!!n):[]}function Ve(e,t){return e.assets[t.id]=U(t),W(e)}function h(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 W(e){let t=h(e.assets[a.gatewayImage]),r=h(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function j(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 We(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[i,d]of Object.entries(n)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.artifacts)||(r[i]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let i=j(t.gateway,{id:a.gatewayImage,title:"XiaoZhiClaw 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=j(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 p={...K()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[i,d]of Object.entries(s)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.assetIds)||(p[i]=Ke(u))}return W({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:p})}var qe=["pending","captured","failed","restored"],Be=["file","directory","missing"],Ye=["metadata-only","workspace-copy","shadow-git"];var Ge=["api-key","oauth","token","aws-sdk"],ze=["rate_limit","auth","server_error","timeout","network","unknown"],Xe=["requiresOpenAiAnthropicToolPayload"];function $e(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var q="openai-codex";function S(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=S(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Je=B,Qe={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},Ze={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"},[q]:{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(n=>r.includes(n))}function c(e){let t=S(e??"");return{...Qe,...Ze[t]}}function et(e){return c(e).preserveAnthropicThinkingSignatures}function tt(e){let t=c(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function rt(e){return c(e).anthropicToolSchemaMode==="openai-functions"}function nt(e){return c(e).anthropicToolChoiceMode==="openai-string-modes"}function it(e){return c(e).openAiCompatTurnValidation}function ot(e){return c(e).providerFamily==="openai"}function st(e){return c(e).providerFamily==="anthropic"}function at(e){return T(e.modelId,c(e.provider).dropThinkingBlockModelHints)}function dt(e){let t=c(e.provider);return t.providerThoughtSignatureSanitization&&T(e.modelId,t.providerThoughtSignatureModelHints)}function pt(e,t){let r=c(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(T(t,r.transcriptToolCallIdModelHints))return"strict9"}var k={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 ct(){return[...new Set(Object.values(k).flat())]}function lt(e){let t=S(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),o=i=>{let d=r[i]?.trim();if(!d)return null;let u=n.has(i)?`shell env: ${i}`:`env: ${i}`;return{apiKey:d,source:u}},p=e.resolveSpecialApiKey?.(t,r,n);if(p)return p;let s=k[t];if(!s||s.length===0)return null;for(let i of s){let d=o(i);if(d)return d}return null}export{fe as ACP_EXTENDED_METHODS,ye as ACP_EXTENDED_SESSION_UPDATE_TYPES,me as ACP_METHODS,ge as ACP_PROTOCOL_VERSION,O as ACP_SESSION_UPDATE_TYPES,G as AGENT_RPC_APPROVAL_METHODS,l as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,b as AGENT_TEAM_WS_EVENT_NAMES,I as AGENT_WS_EVENT_NAMES,w as ALL_AGENT_WS_EVENT_NAMES,P as CAPABILITY_MANIFEST_DIFF_SECTIONS,te as GATEWAY_RPC_METHODS,R as GatewayRpcContract,He as MEMORY_OBSERVATION_HOOK_VALUES,Le as MEMORY_OBSERVATION_SOURCE_VALUES,je as MEMORY_WRITE_ACCESS_VALUES,Ye as MUTATION_CHECKPOINT_BACKEND_VALUES,Be as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,qe as MUTATION_CHECKPOINT_PHASE_VALUES,Ge as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Xe as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,k as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,q as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,ze as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Ue as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,we as WEB_ACTION_SCOPE_VALUES,xe as WEB_APPROVAL_DEFAULT_VALUES,ke as WEB_CAPABILITY_FAMILY_VALUES,Te as WEB_CAPABILITY_ID_VALUES,Oe as WEB_DEGRADATION_TARGET_VALUES,Ne as WEB_ESCALATION_REASON_VALUES,Ce as WEB_EXECUTION_MODE_VALUES,Me as WEB_POLICY_RISK_CLASS_VALUES,De as WEB_RETRY_POLICY_VALUES,ve as WEB_STATEFULNESS_VALUES,_e as WEB_TASK_MODE_VALUES,ee as buildAgentRpcMeta,A as classifyGatewayRpcMethod,f as cloneCapabilityManifestSnapshot,he as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,Pe as deriveCapabilityToolNamespaces,Ee as deriveCapabilityWorkspaceIds,h as getManifestShortcutEntry,F as getRuntimeResourceAsset,V as getRuntimeResourceProfile,Fe as getRuntimeResourceProfileAssets,D as isAcpJsonRpcNotification,N as isAcpJsonRpcRequest,H as isAcpJsonRpcResponse,v as isAgentRpcNotification,_ as isAgentRpcRequest,C as isAgentRpcResponse,st as isAnthropicProviderRuntimeFamily,Re as isExtendedSessionUpdateType,ot as isOpenAiProviderRuntimeFamily,Se as isStandardSessionUpdateType,ct as listProviderRuntimeEnvApiKeyNames,be as mergeCapabilityManifestSnapshot,S as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,We as normalizeRuntimeResourceManifest,Ae as parseAcpMessage,z as parseAgentRpcMessage,et as preservesProviderRuntimeAnthropicThinkingSignatures,$e as readProviderRuntimeCompatFlag,M as requireGatewayRpcMeta,x as requiresIdempotencyKey,tt as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,c as resolveProviderRuntimeCapabilities,lt as resolveProviderRuntimeEnvApiKey,Je as resolveProviderRuntimeKeyFamily,pt as resolveProviderRuntimeTranscriptToolCallIdMode,at as shouldDropThinkingBlocksForProviderRuntimeModel,dt as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,it as supportsOpenAiCompatTurnValidationForProviderRuntime,Ve as upsertRuntimeResourceAsset,rt as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,nt as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
1
|
+
var Y="1.0.0",l={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},G={REQUEST:"tool.approval.request"};function _(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function 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 v(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function z(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||_(t)||v(t)?t:null}import{randomUUID as X}from"node:crypto";var $=["settings.list","settings.get","settings.validate","provider.list","tools.list","todos.list","tasks.list","session.list","session.get","session.resolve","session.loadNativeTranscript","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","agent.health","agent.metrics"],J=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Q=["memory.","usage."],Z=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt"]);function A(e){return J.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:$.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function x(e){return Z.has(e)||A(e).mutability==="read"?!1:Q.some(t=>e.startsWith(t))}function ee(e,t={}){let r=t.now??Date.now(),n=A(e),o=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??X(),createdAt:r,deadlineAt:r+o,channel:t.channel??n.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function M(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:l.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:l.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:l.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:l.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let n=A(e.method).channel;return r.channel!==n?{ok:!1,error:{code:l.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${n}, got ${r.channel}.`}}:x(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:l.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=M({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 te=["agent.health","agent.metrics","agent.cancel","provider.catalog","provider.list","provider.get","provider.install","provider.install.cancel","provider.update","provider.uninstall","provider.enable","provider.disable","provider.diagnose","provider.auth.status","provider.auth.setPreference","provider.auth.setUserKey","provider.auth.methods","provider.auth.start","provider.auth.attach","provider.auth.input","provider.auth.resize","provider.auth.cancel","provider.auth.logout","provider.models.list","provider.nativeSessions.list","provider.nativeSessions.load","provider.nativeSessions.resume","delegation.cancel","delegation.reset","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.loadNativeTranscript","session.adoptNative","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.detach","project.delete","project.rename","project.archive","project.unarchive","project.update","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.move","files.copy","files.delete","files.search","files.undoOperation","files.gitStatus","turnBaseline.getSummary","turnBaseline.getFileDiff","turnBaseline.listRecent","turnBaseline.getFileBaseline","workingMaterials.get","workingMaterials.replace","workingMaterials.upsert","workingMaterials.remove","workingMaterials.reorder","skills.list","memory.list-files","memory.atlas","memory.activity","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var I=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.file_changes","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.media_capability_check","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_started","turn.subagent_delta","turn.subagent_ended","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.progress","turn.tool_use_summary","turn.tool_selection_policy","turn.lifecycle","turn.document_maintenance","turn.artifact_contract","turn.usage_update","team.member.notification","session.info","session.recovery_pending","memory.updated","skills.updated","turn.memory_recall","turn.memory_written","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed","workflow.nodeStatus","workflow.triggerDropped","workflow.alert","workflow.approvalRequested","workflow.approvalTimedOut"],b=["solo.progress","solo.specProgress","solo.agentDelta","solo.agentActivity","solo.agentUsage","solo.evaluation","product.taskStarted","product.taskOutput","product.members","product.agentActivity","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.budgetWarning","product.checkpointed","product.completed","product.dagTopology","plan.interrupted","product.planReady","product.planningDelta","product.leaderMessage","product.planFailed","product.planningAsk","goal.run_state_changed","goal.phase_boundary","goal.goal_edited","goal.message_queued","goal.acceptance_updated","goal.round_message","mention.delegate_started","mention.delegate_activity","mention.delegate_settled"],re=[...I,...b],w=re;import{MODEL_PURPOSES as Gt}from"@xiaozhiclaw/module-sdk/model-access";import{createHash as Et}from"node:crypto";import{resolve as Tt}from"node:path";var m={request:"x/delegate",update:"x/delegate.update",respond:"x/delegate.respond",cancel:"x/delegate.cancel"},ne=["search","addText","embedText","ingestExtracted","proposeExtracted","consumePendingProposals","feedback","findRelatedEvents","synthesizeTimeline","getActivitySummary","getAllProfiles","setProfile","getAtlas","setMemoryArchived","triggerDecay","resolveConflicts"],ie=["initialize","getIndex","addToIndex","replaceInIndex","removeFromIndex","createFile","writeFile","readFile","deleteFile","listFiles","searchLocal"],oe=["getSkillSnapshot","readSkillFile","recordSkillInvocation","commitSkillMutation","applyCuratorPlan","prepareSkillInstall","finalizeSkillInstall"],se=["loadForResume","appendTranscript","updateTitle","saveState","saveTaskSummary","groupSplit"],ae=["commitTurnTelemetry","listDistillableFeedback","markFeedbackDistilled","runUploadSweep"],de=["getSnapshot","create","switch","update"],Nt=1024*1024,pe=["list","get","diagnose"],ce=["navigate","snapshot","click","type","screenshot","console","network"];var le=["open","recordEvent","checkpoint","get","list","delete","getCheckpoint","listCheckpoints","restoreCheckpoint"],ue=["getTunables","updateTunable","clearTunable","appendDirectoryAllowRule"];var Dt=new Set(ne),Ht=new Set(ie),Lt=new Set(ue),jt=new Set(oe),Ut=new Set(se),Kt=new Set(ae),Ft=new Set(de),Vt=new Set(le),Wt=new Set(pe),qt=new Set(ce);var ge=1,me={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"},fe={ABORT:"x/abort",DREAM:"x/dream",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_REPLAY:"x/product.replay",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",SOLO_SPEC_CHAT:"x/solo.specChat",SOLO_SPEC_JUDGE:"x/solo.specJudge",WORKFLOW_CHAT:"x/workflow.chat",WORKFLOW_MATCH_INTENT:"x/workflow.matchIntent",PRODUCT_SUBSCRIBE:"x/product.subscribe",GOAL_START:"x/goal.start",GOAL_STATUS:"x/goal.status",GOAL_PAUSE:"x/goal.pause",GOAL_RESUME:"x/goal.resume",GOAL_UPDATE_GOAL:"x/goal.updateGoal",GOAL_STOP:"x/goal.stop",GOAL_MESSAGE:"x/goal.message",GOAL_SUBSCRIBE:"x/goal.subscribe",GOAL_EVENTS:"x/goal.events",DELEGATE:m.request,DELEGATE_UPDATE:m.update,DELEGATE_RESPOND:m.respond,DELEGATE_CANCEL:m.cancel},O={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"},ye={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};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"&&typeof t.method=="string"&&!("id"in t)}function H(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function Ae(e){let t;try{t=JSON.parse(e)}catch{return null}return H(t)||N(t)||D(t)?t:null}function Se(e){return Object.values(O).includes(e)}function Re(e){return e.startsWith("x_")}var P=["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(e){return e?e.map(t=>({...t})):void 0}function Ie(e){return e?[...e]:void 0}function L(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function f(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(e.workspaceSummaries)}:{}}}function be(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?f(r):{...f(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:E(r.workspaceSummaries)}:{}}}function Pe(e){return L(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function Ee(e){return L(e.map(t=>t.id))}function he(e){let{previous:t,current:r}=e;if(!t)return{...f(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let n=P.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(n.length===P.length)return{...f(r),syncMode:"full"};let o={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:n,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},p=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":p[s]=Ie(i);break;case"approvalPolicy":p[s]={...i};break;case"workspaceSummaries":p[s]=E(i);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":p[s]=g(i);break;default:p[s]=i;break}}return o}var Te=["web_search","web_fetch","deep_research","browser_execution"],ke=["web-intelligence","browser-execution"],_e=["discovery","read-url","multi-source-research","interactive-browser"],Ce=["stateless","render-backend","interactive-session"],ve=["stateless","stateless-single-step","stateful-session-required"],xe=["required","conditional","none"],Me=["browser-read","browser-authenticated-read","browser-state-changing"];var we=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],Oe=["web_search","web_fetch","deep_research","blocked"],Ne=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],De=["none","same-capability-once","degrade-only"];var He=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Le=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],je=["observe-only","parent-write","deny"];var Ue=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 Ke(e){return{...e,assetIds:[...e.assetIds]}}function K(){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 F(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function Fe(e,t){let r=V(e,t);return r?r.assetIds.map(n=>F(e,n)).filter(n=>!!n):[]}function Ve(e,t){return e.assets[t.id]=U(t),W(e)}function h(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 W(e){let t=h(e.assets[a.gatewayImage]),r=h(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function j(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 We(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[i,d]of Object.entries(n)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.artifacts)||(r[i]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let i=j(t.gateway,{id:a.gatewayImage,title:"XiaoZhiClaw 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=j(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 p={...K()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[i,d]of Object.entries(s)){if(!d||typeof d!="object")continue;let u=d;!u.id||!Array.isArray(u.assetIds)||(p[i]=Ke(u))}return W({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:p})}var qe=["pending","captured","failed","restored"],Be=["file","directory","missing"],Ye=["metadata-only","workspace-copy","shadow-git"];var Ge=["api-key","oauth","token","aws-sdk"],ze=["rate_limit","auth","server_error","timeout","network","unknown"],Xe=["requiresOpenAiAnthropicToolPayload"];function $e(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var q="openai-codex";function S(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=S(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Je=B,Qe={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},Ze={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"},[q]:{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(n=>r.includes(n))}function c(e){let t=S(e??"");return{...Qe,...Ze[t]}}function et(e){return c(e).preserveAnthropicThinkingSignatures}function tt(e){let t=c(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function rt(e){return c(e).anthropicToolSchemaMode==="openai-functions"}function nt(e){return c(e).anthropicToolChoiceMode==="openai-string-modes"}function it(e){return c(e).openAiCompatTurnValidation}function ot(e){return c(e).providerFamily==="openai"}function st(e){return c(e).providerFamily==="anthropic"}function at(e){return T(e.modelId,c(e.provider).dropThinkingBlockModelHints)}function dt(e){let t=c(e.provider);return t.providerThoughtSignatureSanitization&&T(e.modelId,t.providerThoughtSignatureModelHints)}function pt(e,t){let r=c(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(T(t,r.transcriptToolCallIdModelHints))return"strict9"}var k={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 ct(){return[...new Set(Object.values(k).flat())]}function lt(e){let t=S(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),o=i=>{let d=r[i]?.trim();if(!d)return null;let u=n.has(i)?`shell env: ${i}`:`env: ${i}`;return{apiKey:d,source:u}},p=e.resolveSpecialApiKey?.(t,r,n);if(p)return p;let s=k[t];if(!s||s.length===0)return null;for(let i of s){let d=o(i);if(d)return d}return null}export{fe as ACP_EXTENDED_METHODS,ye as ACP_EXTENDED_SESSION_UPDATE_TYPES,me as ACP_METHODS,ge as ACP_PROTOCOL_VERSION,O as ACP_SESSION_UPDATE_TYPES,G as AGENT_RPC_APPROVAL_METHODS,l as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,b as AGENT_TEAM_WS_EVENT_NAMES,I as AGENT_WS_EVENT_NAMES,w as ALL_AGENT_WS_EVENT_NAMES,P as CAPABILITY_MANIFEST_DIFF_SECTIONS,te as GATEWAY_RPC_METHODS,R as GatewayRpcContract,He as MEMORY_OBSERVATION_HOOK_VALUES,Le as MEMORY_OBSERVATION_SOURCE_VALUES,je as MEMORY_WRITE_ACCESS_VALUES,Ye as MUTATION_CHECKPOINT_BACKEND_VALUES,Be as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,qe as MUTATION_CHECKPOINT_PHASE_VALUES,Ge as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Xe as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,k as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,q as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,ze as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Ue as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,we as WEB_ACTION_SCOPE_VALUES,xe as WEB_APPROVAL_DEFAULT_VALUES,ke as WEB_CAPABILITY_FAMILY_VALUES,Te as WEB_CAPABILITY_ID_VALUES,Oe as WEB_DEGRADATION_TARGET_VALUES,Ne as WEB_ESCALATION_REASON_VALUES,Ce as WEB_EXECUTION_MODE_VALUES,Me as WEB_POLICY_RISK_CLASS_VALUES,De as WEB_RETRY_POLICY_VALUES,ve as WEB_STATEFULNESS_VALUES,_e as WEB_TASK_MODE_VALUES,ee as buildAgentRpcMeta,A as classifyGatewayRpcMethod,f as cloneCapabilityManifestSnapshot,he as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,Pe as deriveCapabilityToolNamespaces,Ee as deriveCapabilityWorkspaceIds,h as getManifestShortcutEntry,F as getRuntimeResourceAsset,V as getRuntimeResourceProfile,Fe as getRuntimeResourceProfileAssets,D as isAcpJsonRpcNotification,N as isAcpJsonRpcRequest,H as isAcpJsonRpcResponse,v as isAgentRpcNotification,_ as isAgentRpcRequest,C as isAgentRpcResponse,st as isAnthropicProviderRuntimeFamily,Re as isExtendedSessionUpdateType,ot as isOpenAiProviderRuntimeFamily,Se as isStandardSessionUpdateType,ct as listProviderRuntimeEnvApiKeyNames,be as mergeCapabilityManifestSnapshot,S as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,We as normalizeRuntimeResourceManifest,Ae as parseAcpMessage,z as parseAgentRpcMessage,et as preservesProviderRuntimeAnthropicThinkingSignatures,$e as readProviderRuntimeCompatFlag,M as requireGatewayRpcMeta,x as requiresIdempotencyKey,tt as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,c as resolveProviderRuntimeCapabilities,lt as resolveProviderRuntimeEnvApiKey,Je as resolveProviderRuntimeKeyFamily,pt as resolveProviderRuntimeTranscriptToolCallIdMode,at as shouldDropThinkingBlocksForProviderRuntimeModel,dt as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,it as supportsOpenAiCompatTurnValidationForProviderRuntime,Ve as upsertRuntimeResourceAsset,rt as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,nt as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: desktop-screenshot
|
|
3
|
-
description: 用户要求截屏/截图/看看我的屏幕时使用 —— 用 exec 跑系统命令截取桌面,把图片文件路径回给用户。无需专用截图工具。
|
|
4
|
-
requires: [exec, write]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Desktop Screenshot
|
|
8
|
-
|
|
9
|
-
用户要求截取桌面/屏幕时,用 exec 执行系统自带命令,**不要**说自己没有截图能力。
|
|
10
|
-
|
|
11
|
-
## 通用规则
|
|
12
|
-
|
|
13
|
-
- **输出到系统临时目录**(Windows = `$env:TEMP`;macOS/Linux = `$TMPDIR`,回退 `/tmp`)。系统会自动把临时目录里的截图桥接到工作区可代理的 `assets/` 目录并作为图片回给用户 —— 你只要把命令打印出来的那条路径原样转告用户即可,**不必**手动搬运文件,也**不要**写到工作区其它目录(那样前端反而加载不出图)。
|
|
14
|
-
- 文件名带时间戳(如 `qla-shot-20260703-142530.png`),避免覆盖。
|
|
15
|
-
|
|
16
|
-
## Windows
|
|
17
|
-
|
|
18
|
-
不要把一长串截图命令内联到 exec。改为分两步:
|
|
19
|
-
|
|
20
|
-
1. 用 **write 工具**把下面这个脚本写到工作区 `.qla-tmp/shot.ps1`(`$out` 落在系统临时目录 `$env:TEMP`):
|
|
21
|
-
|
|
22
|
-
```powershell
|
|
23
|
-
Add-Type -AssemblyName System.Windows.Forms, System.Drawing
|
|
24
|
-
$out = Join-Path $env:TEMP ("qla-shot-" + (Get-Date -Format yyyyMMdd-HHmmss) + ".png")
|
|
25
|
-
$b = [System.Windows.Forms.SystemInformation]::VirtualScreen
|
|
26
|
-
$bmp = New-Object System.Drawing.Bitmap $b.Width, $b.Height
|
|
27
|
-
$g = [System.Drawing.Graphics]::FromImage($bmp)
|
|
28
|
-
$g.CopyFromScreen($b.Left, $b.Top, 0, 0, $bmp.Size)
|
|
29
|
-
$bmp.Save($out)
|
|
30
|
-
$g.Dispose(); $bmp.Dispose()
|
|
31
|
-
Write-Output $out
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
2. 再用 exec 运行它,**显式写 `powershell.exe`**(不要假设当前 shell 是 PowerShell —— 即便是 opt-in 的 Git Bash 也能这样截图):
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .qla-tmp/shot.ps1
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
脚本会把最终 PNG 的绝对路径打印到 stdout。
|
|
41
|
-
|
|
42
|
-
## macOS
|
|
43
|
-
|
|
44
|
-
截到系统临时目录并把路径打印出来(不要固定文件名):
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
f="${TMPDIR:-/tmp}/qla-shot-$(date +%Y%m%d-%H%M%S).png"; screencapture -x "$f"; echo "$f"
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Linux
|
|
51
|
-
|
|
52
|
-
优先 grim(Wayland)或 `import -window root`(X11/ImageMagick),同样输出到系统临时目录并打印路径:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
f="${TMPDIR:-/tmp}/qla-shot-$(date +%Y%m%d-%H%M%S).png"; grim "$f" && echo "$f"
|
|
56
|
-
# 或 X11/ImageMagick:
|
|
57
|
-
f="${TMPDIR:-/tmp}/qla-shot-$(date +%Y%m%d-%H%M%S).png"; import -window root "$f" && echo "$f"
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## 之后
|
|
61
|
-
|
|
62
|
-
把命令打印出来的那条图片路径**用反引号包成行内代码**回给用户(如 `C:\Users\…\image.png`)——前端会把工作区内的图片路径**内联渲染成图片**,反引号能避免路径里的反斜杠被 markdown 转义破坏。再一句话说明截的是什么。命令失败时报告确切错误,不要改用安装大型依赖的方案。
|
|
1
|
+
---
|
|
2
|
+
name: desktop-screenshot
|
|
3
|
+
description: 用户要求截屏/截图/看看我的屏幕时使用 —— 用 exec 跑系统命令截取桌面,把图片文件路径回给用户。无需专用截图工具。
|
|
4
|
+
requires: [exec, write]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Desktop Screenshot
|
|
8
|
+
|
|
9
|
+
用户要求截取桌面/屏幕时,用 exec 执行系统自带命令,**不要**说自己没有截图能力。
|
|
10
|
+
|
|
11
|
+
## 通用规则
|
|
12
|
+
|
|
13
|
+
- **输出到系统临时目录**(Windows = `$env:TEMP`;macOS/Linux = `$TMPDIR`,回退 `/tmp`)。系统会自动把临时目录里的截图桥接到工作区可代理的 `assets/` 目录并作为图片回给用户 —— 你只要把命令打印出来的那条路径原样转告用户即可,**不必**手动搬运文件,也**不要**写到工作区其它目录(那样前端反而加载不出图)。
|
|
14
|
+
- 文件名带时间戳(如 `qla-shot-20260703-142530.png`),避免覆盖。
|
|
15
|
+
|
|
16
|
+
## Windows
|
|
17
|
+
|
|
18
|
+
不要把一长串截图命令内联到 exec。改为分两步:
|
|
19
|
+
|
|
20
|
+
1. 用 **write 工具**把下面这个脚本写到工作区 `.qla-tmp/shot.ps1`(`$out` 落在系统临时目录 `$env:TEMP`):
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
23
|
+
Add-Type -AssemblyName System.Windows.Forms, System.Drawing
|
|
24
|
+
$out = Join-Path $env:TEMP ("qla-shot-" + (Get-Date -Format yyyyMMdd-HHmmss) + ".png")
|
|
25
|
+
$b = [System.Windows.Forms.SystemInformation]::VirtualScreen
|
|
26
|
+
$bmp = New-Object System.Drawing.Bitmap $b.Width, $b.Height
|
|
27
|
+
$g = [System.Drawing.Graphics]::FromImage($bmp)
|
|
28
|
+
$g.CopyFromScreen($b.Left, $b.Top, 0, 0, $bmp.Size)
|
|
29
|
+
$bmp.Save($out)
|
|
30
|
+
$g.Dispose(); $bmp.Dispose()
|
|
31
|
+
Write-Output $out
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
2. 再用 exec 运行它,**显式写 `powershell.exe`**(不要假设当前 shell 是 PowerShell —— 即便是 opt-in 的 Git Bash 也能这样截图):
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .qla-tmp/shot.ps1
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
脚本会把最终 PNG 的绝对路径打印到 stdout。
|
|
41
|
+
|
|
42
|
+
## macOS
|
|
43
|
+
|
|
44
|
+
截到系统临时目录并把路径打印出来(不要固定文件名):
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
f="${TMPDIR:-/tmp}/qla-shot-$(date +%Y%m%d-%H%M%S).png"; screencapture -x "$f"; echo "$f"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Linux
|
|
51
|
+
|
|
52
|
+
优先 grim(Wayland)或 `import -window root`(X11/ImageMagick),同样输出到系统临时目录并打印路径:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
f="${TMPDIR:-/tmp}/qla-shot-$(date +%Y%m%d-%H%M%S).png"; grim "$f" && echo "$f"
|
|
56
|
+
# 或 X11/ImageMagick:
|
|
57
|
+
f="${TMPDIR:-/tmp}/qla-shot-$(date +%Y%m%d-%H%M%S).png"; import -window root "$f" && echo "$f"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 之后
|
|
61
|
+
|
|
62
|
+
把命令打印出来的那条图片路径**用反引号包成行内代码**回给用户(如 `C:\Users\…\image.png`)——前端会把工作区内的图片路径**内联渲染成图片**,反引号能避免路径里的反斜杠被 markdown 转义破坏。再一句话说明截的是什么。命令失败时报告确切错误,不要改用安装大型依赖的方案。
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: office-doc-reading
|
|
3
|
-
description: 用户上传或提到 xls/xlsx/doc/docx/ppt/pdf 等 office 文档并询问内容时使用 —— 用 exec + python 一行脚本直接读取,严禁格式转换迂回和重复装包。
|
|
4
|
-
requires: [exec, read]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Office Document Reading
|
|
8
|
-
|
|
9
|
-
read 工具无法解析二进制 office 文档(会返回结构化拒绝)。正确路径:
|
|
10
|
-
|
|
11
|
-
1. **定位本地文件**:上传清单里的 `[Uploaded file saved locally: <path>]` 即本地路径;没有则先用 search 找。
|
|
12
|
-
2. **一行脚本直读**(exec):
|
|
13
|
-
- 表格:python -c "import openpyxl;wb=openpyxl.load_workbook(r'<path>',read_only=True);ws=wb.active;[print(*[c.value for c in r],sep='\t') for r in ws.iter_rows(max_rows=30)]"
|
|
14
|
-
(.xls 老格式用 pandas.read_excel,engine 自动回退 xlrd)
|
|
15
|
-
- Word:python -c "import docx;print('\n'.join(p.text for p in docx.Document(r'<path>').paragraphs[:60]))"
|
|
16
|
-
- PDF:python -c "import pypdf;r=pypdf.PdfReader(r'<path>');print('\n'.join((p.extract_text() or '')[:2000] for p in r.pages[:5]))"
|
|
17
|
-
3. **缺依赖时**:最多补装一次对应包(如 pip install openpyxl);装完立即回到第 2 步。
|
|
18
|
-
4. **禁止**:把文档转成 XML/BOM/其他格式的迂回链;同一目标装第二轮依赖;对二进制文件重复调用 read。
|
|
19
|
-
5. 回答用户问题本身(表里有什么 → 列名 + 行数 + 前几行概要),不要倾倒全部内容。
|
|
1
|
+
---
|
|
2
|
+
name: office-doc-reading
|
|
3
|
+
description: 用户上传或提到 xls/xlsx/doc/docx/ppt/pdf 等 office 文档并询问内容时使用 —— 用 exec + python 一行脚本直接读取,严禁格式转换迂回和重复装包。
|
|
4
|
+
requires: [exec, read]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Office Document Reading
|
|
8
|
+
|
|
9
|
+
read 工具无法解析二进制 office 文档(会返回结构化拒绝)。正确路径:
|
|
10
|
+
|
|
11
|
+
1. **定位本地文件**:上传清单里的 `[Uploaded file saved locally: <path>]` 即本地路径;没有则先用 search 找。
|
|
12
|
+
2. **一行脚本直读**(exec):
|
|
13
|
+
- 表格:python -c "import openpyxl;wb=openpyxl.load_workbook(r'<path>',read_only=True);ws=wb.active;[print(*[c.value for c in r],sep='\t') for r in ws.iter_rows(max_rows=30)]"
|
|
14
|
+
(.xls 老格式用 pandas.read_excel,engine 自动回退 xlrd)
|
|
15
|
+
- Word:python -c "import docx;print('\n'.join(p.text for p in docx.Document(r'<path>').paragraphs[:60]))"
|
|
16
|
+
- PDF:python -c "import pypdf;r=pypdf.PdfReader(r'<path>');print('\n'.join((p.extract_text() or '')[:2000] for p in r.pages[:5]))"
|
|
17
|
+
3. **缺依赖时**:最多补装一次对应包(如 pip install openpyxl);装完立即回到第 2 步。
|
|
18
|
+
4. **禁止**:把文档转成 XML/BOM/其他格式的迂回链;同一目标装第二轮依赖;对二进制文件重复调用 read。
|
|
19
|
+
5. 回答用户问题本身(表里有什么 → 列名 + 行数 + 前几行概要),不要倾倒全部内容。
|
|
@@ -10,11 +10,3 @@ export interface CommunityHandlerHost {
|
|
|
10
10
|
export declare function handleCommunityResolveInstall(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
11
11
|
export declare function handleCommunityListResourceVersions(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
12
12
|
export declare function handleCommunityInstallResource(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Handshake step ① — probe declared runtime dependencies (vetted catalog only).
|
|
15
|
-
* The plugin page calls this right after install so "点 + 即可用" holds: missing
|
|
16
|
-
* quick runtimes are auto-installed, heavy/unknown ones surface a consent card.
|
|
17
|
-
*/
|
|
18
|
-
export declare function handleCommunityRuntimeStatus(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
19
|
-
/** Handshake step ② — install ONE vetted runtime dependency (catalog recipe only). */
|
|
20
|
-
export declare function handleCommunityInstallRuntime(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
@@ -1,35 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
* Files + Instructions handlers — extracted from StdioServer.
|
|
3
|
-
* Handles: files.list, files.create, files.rename, files.delete, files.gitStatus,
|
|
4
|
-
* instructions.list, instructions.read, instructions.write, instructions.delete
|
|
5
|
-
*/
|
|
6
|
-
import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
|
|
1
|
+
import type { AgentRpcError, AgentRpcRequest } from "../../protocol/wire/index.js";
|
|
7
2
|
export interface FilesHandlerHost {
|
|
8
|
-
currentTurnId?: string;
|
|
9
3
|
getActiveProjectRoot(): string;
|
|
10
|
-
sendNotification?(method: string, params: Record<string, unknown>): void;
|
|
11
4
|
sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
|
|
12
5
|
}
|
|
13
|
-
export declare function resolveProjectDir(projectId: string): string |
|
|
14
|
-
export declare function handleFilesList(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
15
|
-
export declare function handleFilesCreate(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* files.readLocal — read an ABSOLUTE local path for chat file-reference preview.
|
|
18
|
-
* Workspace-relative reads keep going through files.read; this endpoint serves the
|
|
19
|
-
* "user/agent mentioned a file outside every project workspace" preview gap (the
|
|
20
|
-
* media proxy only serves media extensions, so .txt/.log etc. had no channel).
|
|
21
|
-
*/
|
|
22
|
-
export declare function handleFilesReadLocal(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
23
|
-
export declare function handleFilesRead(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
24
|
-
export declare function handleFilesRename(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
25
|
-
export declare function handleFilesDelete(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
26
|
-
export declare function handleFilesMove(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
27
|
-
export declare function handleFilesCopy(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
28
|
-
export declare function handleFilesUndoOperation(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
29
|
-
export declare function handleFilesSearch(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
30
|
-
export declare function handleFilesGitStatus(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
31
|
-
export declare function handleInstructionsList(this: FilesHandlerHost, msg: AgentRpcRequest): void;
|
|
32
|
-
export declare function handleInstructionsRead(this: FilesHandlerHost, msg: AgentRpcRequest): void;
|
|
33
|
-
export declare function handleInstructionsWrite(this: FilesHandlerHost, msg: AgentRpcRequest): void;
|
|
34
|
-
export declare function handleInstructionsDelete(this: FilesHandlerHost, msg: AgentRpcRequest): void;
|
|
6
|
+
export declare function resolveProjectDir(projectId: string): string | undefined;
|
|
35
7
|
export declare function handlePlansList(this: FilesHandlerHost, msg: AgentRpcRequest): void;
|
|
@@ -5,25 +5,12 @@ interface ActiveRuntimeEntry {
|
|
|
5
5
|
export interface ValidatedActiveIndustrialRuntime extends ActiveRuntimeEntry {
|
|
6
6
|
absoluteEntrypoint: string;
|
|
7
7
|
}
|
|
8
|
-
type ActiveFileWriter = (filePath: string, data: string | Buffer) => Promise<void>;
|
|
9
8
|
export interface IndustrialRuntimeStoreOptions {
|
|
10
9
|
rootDir?: string;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
|
-
stagingDir: string;
|
|
14
|
-
runtimeId: string;
|
|
15
|
-
version: string;
|
|
16
|
-
entrypoint: string;
|
|
17
|
-
writeActiveFile?: ActiveFileWriter;
|
|
18
|
-
}
|
|
11
|
+
/** Read-only projection of the Runtime-owned industrial runtime store. */
|
|
19
12
|
export declare function industrialRuntimeRoot(): string;
|
|
20
|
-
export declare function createIndustrialRuntimeStaging(options?: IndustrialRuntimeStoreOptions): Promise<string>;
|
|
21
|
-
export declare function activateIndustrialRuntime(input: ActivateIndustrialRuntimeInput): Promise<{
|
|
22
|
-
versionDir: string;
|
|
23
|
-
entrypoint: string;
|
|
24
|
-
}>;
|
|
25
13
|
export declare function runtimeEntrypoint(runtimeId: string, options?: IndustrialRuntimeStoreOptions): Promise<string | undefined>;
|
|
26
14
|
export declare function activeIndustrialRuntime(runtimeId: string, options?: IndustrialRuntimeStoreOptions): Promise<ValidatedActiveIndustrialRuntime | undefined>;
|
|
27
15
|
export declare function runtimePathEntries(options?: IndustrialRuntimeStoreOptions): Promise<string[]>;
|
|
28
|
-
export declare function assertIndustrialRuntimeVersion(version: string): void;
|
|
29
16
|
export {};
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* 标注 [S1 补定] 的辅助类型是 freeze 引用但未给定义的最小结构,属 S1 评审点,
|
|
12
12
|
* 其字段以 freeze 正文/recon 注释为据;实现 lane 负责与现状 store 形状做映射。
|
|
13
13
|
*/
|
|
14
|
-
import { type ModelPurpose } from "@xiaozhiclaw/model-access";
|
|
14
|
+
import { type ModelPurpose } from "@xiaozhiclaw/module-sdk/model-access";
|
|
15
15
|
import type { NativeTranscript } from "../host-session-collection-contract.js";
|
|
16
|
-
export { MODEL_PURPOSES, type ModelPurpose } from "@xiaozhiclaw/model-access";
|
|
16
|
+
export { MODEL_PURPOSES, type ModelPurpose } from "@xiaozhiclaw/module-sdk/model-access";
|
|
17
17
|
export type { HostSessionCollectionDelta, HostSessionCollectionScope, HostSessionCollectionSnapshot, HostSessionLifecycle, HostSessionProviderDiagnostic, HostSessionSummary, HostSessionTitleSource, NativeTranscript, NativeTranscriptMessage, } from "../host-session-collection-contract.js";
|
|
18
18
|
export { isHostSessionCollectionDelta, isHostSessionCollectionSnapshot, isNativeTranscript, } from "../host-session-collection-contract.js";
|
|
19
19
|
export * from "./provider-profile.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qlogicagent",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.11",
|
|
4
4
|
"description": "XiaozhiClaw Agent CLI — subprocess architecture (JSON-RPC over stdio)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -145,8 +145,8 @@
|
|
|
145
145
|
"dependencies": {
|
|
146
146
|
"@agentclientprotocol/sdk": "^0.25.0",
|
|
147
147
|
"@napi-rs/canvas": "0.1.100",
|
|
148
|
-
"@xiaozhiclaw/
|
|
149
|
-
"@xiaozhiclaw/provider-core": "^0.1.
|
|
148
|
+
"@xiaozhiclaw/module-sdk": "0.2.0",
|
|
149
|
+
"@xiaozhiclaw/provider-core": "^0.1.27",
|
|
150
150
|
"better-sqlite3": "^12.10.0",
|
|
151
151
|
"dotenv": "^17.3.1",
|
|
152
152
|
"ioredis": "^5.11.1",
|
|
@@ -154,13 +154,11 @@
|
|
|
154
154
|
"mcporter": "^0.12.0",
|
|
155
155
|
"nanoid": "^5.1.5",
|
|
156
156
|
"pino": "^9.6.0",
|
|
157
|
-
"pino-pretty": "^13.0.0"
|
|
158
|
-
"yauzl": "3.4.0"
|
|
157
|
+
"pino-pretty": "^13.0.0"
|
|
159
158
|
},
|
|
160
159
|
"devDependencies": {
|
|
161
160
|
"@types/better-sqlite3": "^7.6.13",
|
|
162
161
|
"@types/node": "^22.15.0",
|
|
163
|
-
"@types/yauzl": "3.4.0",
|
|
164
162
|
"esbuild": "^0.28.0",
|
|
165
163
|
"javascript-obfuscator": "^5.4.3",
|
|
166
164
|
"oxlint": "1.67.0",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface IndustrialRuntimeArchiveInput {
|
|
2
|
-
archivePath: string;
|
|
3
|
-
targetDir: string;
|
|
4
|
-
runtimeId: string;
|
|
5
|
-
version: string;
|
|
6
|
-
entrypoint: string;
|
|
7
|
-
}
|
|
8
|
-
export interface ValidatedIndustrialRuntimePackage {
|
|
9
|
-
runtimeId: string;
|
|
10
|
-
version: string;
|
|
11
|
-
entrypoint: string;
|
|
12
|
-
signedFiles: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function extractIndustrialRuntimeArchive(input: IndustrialRuntimeArchiveInput): Promise<ValidatedIndustrialRuntimePackage>;
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { type VerifyAuthenticodeInput } from "./windows-authenticode.js";
|
|
2
|
-
/**
|
|
3
|
-
* Vetted runtime-dependency catalog for community skills.
|
|
4
|
-
*
|
|
5
|
-
* A skill manifest may declare `runtime: ["officecli"]` — bare ids only. The
|
|
6
|
-
* registry stays declarative: WHAT a skill needs lives in Hub data, but HOW to
|
|
7
|
-
* probe/install it lives here, reviewed in code. A runtime is a single-file
|
|
8
|
-
* binary mirrored to our OSS; the installer resolves a Hub-signed download URL,
|
|
9
|
-
* verifies its sha256 BEFORE placing the file, and never executes registry
|
|
10
|
-
* payloads — so a compromised registry row cannot turn "install runtime" into
|
|
11
|
-
* arbitrary code execution. Unknown ids surface as "manual" in the handshake UI
|
|
12
|
-
* instead of running anything. CN-reliable: no dependency on foreign mirrors.
|
|
13
|
-
*/
|
|
14
|
-
export interface RuntimeDependencySpec {
|
|
15
|
-
id: string;
|
|
16
|
-
/** Human-facing name shown in the handshake card. */
|
|
17
|
-
label: string;
|
|
18
|
-
/** Executable probed on PATH (and known-location fallbacks). */
|
|
19
|
-
bin: string;
|
|
20
|
-
probeArgs: string[];
|
|
21
|
-
/** Known install locations not yet on PATH in this process (fresh installs). */
|
|
22
|
-
extraWindowsPaths?: string[];
|
|
23
|
-
/**
|
|
24
|
-
* quick=true → the handshake auto-installs without an extra consent step
|
|
25
|
-
* (small, single-artifact). quick=false → the client must show a consent
|
|
26
|
-
* card first (large download / system-level changes).
|
|
27
|
-
*/
|
|
28
|
-
quick: boolean;
|
|
29
|
-
/** Honest size estimate surfaced in the consent card. */
|
|
30
|
-
estSizeMB?: number;
|
|
31
|
-
install: RuntimeInstallMode;
|
|
32
|
-
installTimeoutMs: number;
|
|
33
|
-
docsUrl?: string;
|
|
34
|
-
}
|
|
35
|
-
export interface UserBinaryInstall {
|
|
36
|
-
kind: "user-binary";
|
|
37
|
-
/** Resolve id for the Hub (GET /api/v15/runtime/:id/resolve?platform=…). */
|
|
38
|
-
resourceId: string;
|
|
39
|
-
/** Absolute path the per-platform binary is written to (matches upstream layout). */
|
|
40
|
-
dest(): string;
|
|
41
|
-
/** Directory appended to the persistent user PATH so the agent shell finds `bin`. */
|
|
42
|
-
pathDir(): string;
|
|
43
|
-
/** chmod 0o755 after writing (POSIX). */
|
|
44
|
-
posixExecutable: boolean;
|
|
45
|
-
/** Verified release archives expose exactly one executable entry per host family. */
|
|
46
|
-
archiveEntries?: {
|
|
47
|
-
win32: string;
|
|
48
|
-
default: string;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export interface AstraClawPrivateZipInstall {
|
|
52
|
-
kind: "astraclaw-private-zip";
|
|
53
|
-
runtimeId: string;
|
|
54
|
-
}
|
|
55
|
-
export type RuntimeInstallMode = UserBinaryInstall | AstraClawPrivateZipInstall;
|
|
56
|
-
export declare const RUNTIME_DEPENDENCIES: Record<string, RuntimeDependencySpec>;
|
|
57
|
-
export interface RuntimeDependencyStatus {
|
|
58
|
-
id: string;
|
|
59
|
-
/** false → not in the vetted catalog: the client can only show guidance. */
|
|
60
|
-
known: boolean;
|
|
61
|
-
label?: string;
|
|
62
|
-
present: boolean;
|
|
63
|
-
version?: string;
|
|
64
|
-
/** Absolute path when found via a known location instead of PATH. */
|
|
65
|
-
binPath?: string;
|
|
66
|
-
quick?: boolean;
|
|
67
|
-
estSizeMB?: number;
|
|
68
|
-
docsUrl?: string;
|
|
69
|
-
}
|
|
70
|
-
/** Resolved download for a hub-binary runtime (signed URL + integrity metadata). */
|
|
71
|
-
export interface ResolvedRuntimeBinary {
|
|
72
|
-
id: string;
|
|
73
|
-
platform: string;
|
|
74
|
-
version: string;
|
|
75
|
-
downloadUrl: string;
|
|
76
|
-
/** sha256 hex digest — the integrity anchor verified before placing the file. */
|
|
77
|
-
checksum: string;
|
|
78
|
-
sizeBytes: number;
|
|
79
|
-
format: "executable" | "zip" | "tar.gz";
|
|
80
|
-
entrypoint?: string;
|
|
81
|
-
}
|
|
82
|
-
export type RuntimeExecFile = (file: string, args: string[], options: {
|
|
83
|
-
timeout: number;
|
|
84
|
-
windowsHide: boolean;
|
|
85
|
-
encoding: "utf8";
|
|
86
|
-
}, callback: (error: Error | null, stdout: string, stderr: string) => void) => unknown;
|
|
87
|
-
export interface RuntimeInstallDeps {
|
|
88
|
-
/** Resolve a hub-binary runtime via the Hub (community client). */
|
|
89
|
-
resolveBinary(id: string, platform: string): Promise<ResolvedRuntimeBinary>;
|
|
90
|
-
/** Injectable for tests. */
|
|
91
|
-
fetchFn?: typeof fetch;
|
|
92
|
-
hostPlatform?: string;
|
|
93
|
-
hostArch?: string;
|
|
94
|
-
rootDir?: string;
|
|
95
|
-
verifyAuthenticodeFiles?: (input: VerifyAuthenticodeInput) => Promise<void>;
|
|
96
|
-
execFileFn?: RuntimeExecFile;
|
|
97
|
-
}
|
|
98
|
-
/** Map this host to the officecli asset platform key (`<os>-<arch>`). */
|
|
99
|
-
export declare function runtimePlatformKey(platform?: string, architecture?: string): string;
|
|
100
|
-
export declare function probeRuntimeDependency(id: string): Promise<RuntimeDependencyStatus>;
|
|
101
|
-
export interface RuntimeInstallResult {
|
|
102
|
-
id: string;
|
|
103
|
-
ok: true;
|
|
104
|
-
version?: string;
|
|
105
|
-
binPath?: string;
|
|
106
|
-
}
|
|
107
|
-
export declare function installRuntimeDependency(id: string, deps: RuntimeInstallDeps): Promise<RuntimeInstallResult>;
|
|
108
|
-
/**
|
|
109
|
-
* Read only the allowlisted executable from a checksum-verified release archive. `tar -xOf`
|
|
110
|
-
* streams the named entry without unpacking sibling files or trusting archive paths.
|
|
111
|
-
*/
|
|
112
|
-
export declare function extractRuntimeArchive(archiveBytes: Buffer, executableEntry: string): Buffer;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export type AuthenticodeExecFile = (file: string, args: string[], options: {
|
|
2
|
-
encoding: "utf8";
|
|
3
|
-
timeout: number;
|
|
4
|
-
maxBuffer: number;
|
|
5
|
-
windowsHide: boolean;
|
|
6
|
-
}, callback: (error: Error | null, stdout: string, stderr: string) => void) => unknown;
|
|
7
|
-
export interface AuthenticodeFile {
|
|
8
|
-
absolutePath: string;
|
|
9
|
-
relativePath: string;
|
|
10
|
-
}
|
|
11
|
-
export interface VerifyAuthenticodeInput {
|
|
12
|
-
files: AuthenticodeFile[];
|
|
13
|
-
execFileFn?: AuthenticodeExecFile;
|
|
14
|
-
platform?: string;
|
|
15
|
-
arch?: string;
|
|
16
|
-
}
|
|
17
|
-
export declare function assertIndustrialRuntimePlatform(platform?: string, arch?: string): void;
|
|
18
|
-
export declare function verifyWindowsAuthenticodeFiles(input: VerifyAuthenticodeInput): Promise<void>;
|