qlogicagent 2.16.6 → 2.16.8

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 (97) hide show
  1. package/dist/agent.js +16 -16
  2. package/dist/cli.js +412 -413
  3. package/dist/default-project-knowledge/INSTRUCTIONS.md +7 -0
  4. package/dist/default-project-knowledge/rules/project-workflow.md +6 -0
  5. package/dist/index.js +411 -412
  6. package/dist/protocol.js +1 -1
  7. package/dist/types/cli/agent-runtime-bootstrap.d.ts +1 -0
  8. package/dist/types/cli/base-tool-bootstrap.d.ts +3 -0
  9. package/dist/types/cli/handlers/community-handler.d.ts +2 -28
  10. package/dist/types/cli/handlers/files-handler.d.ts +6 -0
  11. package/dist/types/cli/handlers/message-feedback-handler.d.ts +31 -0
  12. package/dist/types/cli/handlers/pet-handler.d.ts +1 -0
  13. package/dist/types/cli/handlers/project-handler.d.ts +1 -0
  14. package/dist/types/cli/handlers/turn-baseline-handler.d.ts +8 -0
  15. package/dist/types/cli/handlers/turn-handler.d.ts +5 -0
  16. package/dist/types/cli/handlers/workflow-handler.d.ts +0 -11
  17. package/dist/types/cli/handlers/working-materials-handler.d.ts +9 -0
  18. package/dist/types/cli/idle-dream-coordinator.d.ts +6 -0
  19. package/dist/types/cli/mcp-bootstrap.d.ts +1 -0
  20. package/dist/types/cli/memory-coordinator.d.ts +1 -0
  21. package/dist/types/cli/project-template-seeder.d.ts +2 -2
  22. package/dist/types/cli/rpc-registry.d.ts +6 -0
  23. package/dist/types/cli/runtime-hook-bootstrap.d.ts +1 -0
  24. package/dist/types/cli/stdio-agent-session-bootstrap.d.ts +1 -0
  25. package/dist/types/cli/stdio-rpc-handler-hosts.d.ts +1 -0
  26. package/dist/types/cli/stdio-runtime-bootstrap.d.ts +1 -0
  27. package/dist/types/cli/tool-bootstrap-community-registration.d.ts +0 -6
  28. package/dist/types/cli/tool-bootstrap-core-registration.d.ts +2 -0
  29. package/dist/types/cli/tool-bootstrap.d.ts +2 -0
  30. package/dist/types/cli/turn-skill-autopersist.d.ts +0 -25
  31. package/dist/types/protocol/methods.d.ts +24 -201
  32. package/dist/types/protocol/wire/agent-events.d.ts +2 -2
  33. package/dist/types/protocol/wire/agent-methods.d.ts +10 -205
  34. package/dist/types/protocol/wire/gateway-rpc.d.ts +160 -0
  35. package/dist/types/protocol/wire/notification-payloads.d.ts +34 -0
  36. package/dist/types/runtime/community/community-consent-client.d.ts +9 -186
  37. package/dist/types/runtime/community/community-discovery-coordinator.d.ts +1 -1
  38. package/dist/types/runtime/infra/default-path-service.d.ts +1 -1
  39. package/dist/types/runtime/infra/feedback-distillation-worker.d.ts +20 -0
  40. package/dist/types/runtime/infra/feedback-distillation.d.ts +30 -0
  41. package/dist/types/runtime/infra/feedback-event-store.d.ts +179 -0
  42. package/dist/types/runtime/infra/feedback-outbox.d.ts +26 -0
  43. package/dist/types/runtime/infra/feedback-redaction.d.ts +71 -0
  44. package/dist/types/runtime/infra/feedback-upload-client.d.ts +40 -0
  45. package/dist/types/runtime/infra/feedback-upload-worker.d.ts +11 -0
  46. package/dist/types/runtime/infra/project-data-paths.d.ts +5 -5
  47. package/dist/types/runtime/infra/turn-baseline-store.d.ts +102 -0
  48. package/dist/types/runtime/infra/turn-telemetry-store.d.ts +59 -0
  49. package/dist/types/runtime/infra/working-materials-store.d.ts +35 -0
  50. package/dist/types/runtime/pet/daily-journey-summarizer.d.ts +25 -0
  51. package/dist/types/runtime/pet/index.d.ts +2 -1
  52. package/dist/types/runtime/pet/journey-catchup.d.ts +14 -0
  53. package/dist/types/runtime/pet/journey-day-aggregator.d.ts +27 -0
  54. package/dist/types/runtime/pet/journey-narrative-prompt.d.ts +8 -0
  55. package/dist/types/runtime/pet/pet-profile-service.d.ts +14 -1
  56. package/dist/types/runtime/ports/memory-provider.d.ts +6 -0
  57. package/dist/types/runtime/ports/path-service.d.ts +1 -1
  58. package/dist/types/runtime/ports/tool-contracts.d.ts +2 -0
  59. package/dist/types/runtime/prompt/fresh-workspace-evidence.d.ts +14 -0
  60. package/dist/types/runtime/prompt/instruction-loader.d.ts +7 -7
  61. package/dist/types/skills/mcp/mcp-manager.d.ts +11 -0
  62. package/dist/types/skills/memory/local-memory-provider.d.ts +3 -3
  63. package/dist/types/skills/memory/local-store-records.d.ts +18 -1
  64. package/dist/types/skills/memory/local-store.d.ts +8 -195
  65. package/dist/types/skills/memory/memory-consolidation.d.ts +14 -0
  66. package/dist/types/skills/memory/sqlite-memory-schema.d.ts +1 -1
  67. package/dist/types/skills/plugins/plugin-marketplace.d.ts +1 -1
  68. package/dist/types/skills/tools/community-seek-tool.d.ts +0 -33
  69. package/dist/types/skills/tools/instructions-tool.d.ts +2 -2
  70. package/dist/types/skills/tools/skill-tool.d.ts +1 -1
  71. package/dist/vendor/hatch-pet/LICENSE.txt +201 -201
  72. package/dist/vendor/hatch-pet/NOTICE.md +25 -25
  73. package/dist/vendor/hatch-pet/references/animation-rows.md +29 -29
  74. package/dist/vendor/hatch-pet/references/codex-pet-contract.md +35 -35
  75. package/dist/vendor/hatch-pet/references/qa-rubric.md +66 -66
  76. package/dist/vendor/hatch-pet/scripts/compose_atlas.py +169 -169
  77. package/dist/vendor/hatch-pet/scripts/derive_running_left_from_running_right.py +150 -150
  78. package/dist/vendor/hatch-pet/scripts/extract_strip_frames.py +408 -408
  79. package/dist/vendor/hatch-pet/scripts/inspect_frames.py +256 -256
  80. package/dist/vendor/hatch-pet/scripts/make_contact_sheet.py +96 -96
  81. package/dist/vendor/hatch-pet/scripts/prepare_pet_run.py +834 -834
  82. package/dist/vendor/hatch-pet/scripts/render_animation_previews.py +78 -78
  83. package/dist/vendor/hatch-pet/scripts/validate_atlas.py +157 -157
  84. package/package.json +1 -1
  85. package/dist/types/runtime/community/activity-event-emitter.d.ts +0 -31
  86. package/dist/types/runtime/community/activity-event.d.ts +0 -62
  87. package/dist/types/runtime/community/community-desensitization-red-team-cli.d.ts +0 -7
  88. package/dist/types/runtime/community/community-desensitization.d.ts +0 -29
  89. package/dist/types/runtime/community/community-pet-publisher.d.ts +0 -27
  90. package/dist/types/runtime/community/community-signal-reporter.d.ts +0 -19
  91. package/dist/types/runtime/community/community-telemetry-metadata.d.ts +0 -4
  92. package/dist/types/runtime/community/community-telemetry-recorder.d.ts +0 -6
  93. package/dist/types/runtime/community/community-telemetry-types.d.ts +0 -1
  94. package/dist/types/runtime/community/pet-activity-sink.d.ts +0 -36
  95. package/dist/types/runtime/community/pet-key.d.ts +0 -7
  96. package/dist/types/runtime/community/roaming-gate.d.ts +0 -19
  97. package/dist/types/runtime/community/social-emission.d.ts +0 -16
package/dist/protocol.js CHANGED
@@ -1 +1 @@
1
- var q=["idle","running-right","running-left","waving","jumping","failed","waiting","running","review"];var Y="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},H={REQUEST:"tool.approval.request"};function P(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function G(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||P(t)||I(t)?t:null}import{randomUUID as z}from"node:crypto";var X=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","session.list","session.get","session.resolve","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],J=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","pet.asset.import","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Q=["memory.","pet.","usage."],$=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt","pet.status"]);function f(e){return J.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:X.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function h(e){return $.has(e)||f(e).mutability==="read"?!1:Q.some(t=>e.startsWith(t))}function Z(e,t={}){let r=t.now??Date.now(),o=f(e),i=t.timeoutMs??o.defaultTimeoutMs;return{requestId:t.requestId??z(),createdAt:r,deadlineAt:r+i,channel:t.channel??o.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: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=M({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 ee=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.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","memory.attachment.adopt","memory.attachment.locate"];var v=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.media_usage","turn.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.tool_use_summary","turn.tool_selection_policy","turn.lifecycle","turn.document_maintenance","turn.artifact_contract","turn.usage_update","team.member.notification","session.info","memory.updated","skills.updated","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.asset.updated","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed","workflow.nodeStatus","workflow.triggerDropped","workflow.alert","workflow.approvalRequested"],k=["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","goal.run_state_changed","goal.phase_boundary","goal.goal_edited","goal.message_queued","goal.acceptance_updated"],te=[...v,...k];var re=1,oe={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"},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_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",MENTION_DELEGATE:"x/mention.delegate",MENTION_CANCEL:"x/mention.cancel",MENTION_LIST:"x/mention.list"},x={USER_MESSAGE_CHUNK:"user_message_chunk",AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update",CURRENT_MODE_UPDATE:"current_mode_update"},ie={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function w(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function se(e){let t;try{t=JSON.parse(e)}catch{return null}return w(t)||O(t)||N(t)?t:null}function ae(e){return Object.values(x).includes(e)}function pe(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function _(e){return e?e.map(t=>({...t})):void 0}function ce(e){return e?[...e]:void 0}function D(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function m(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:_(e.workspaceSummaries)}:{}}}function le(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?m(r):{...m(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:_(r.workspaceSummaries)}:{}}}function de(e){return D(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function ue(e){return D(e.map(t=>t.id))}function ge(e){let{previous:t,current:r}=e;if(!t)return{...m(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let o=E.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(o.length===E.length)return{...m(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]=ce(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 me=["web_search","web_fetch","deep_research","browser_execution"],ye=["web-intelligence","browser-execution"],fe=["discovery","read-url","multi-source-research","interactive-browser"],Ae=["stateless","render-backend","interactive-session"],Re=["stateless","stateless-single-step","stateful-session-required"],Ee=["required","conditional","none"],_e=["browser-read","browser-authenticated-read","browser-state-changing"];var Se=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],be=["web_search","web_fetch","deep_research","blocked"],Te=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Pe=["none","same-capability-once","degrade-only"];var Ce=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ie=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],he=["observe-only","parent-write","deny"];var Me=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 ve(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 W(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function ke(e,t){let r=V(e,t);return r?r.assetIds.map(o=>W(e,o)).filter(o=>!!o):[]}function xe(e,t){return e.assets[t.id]=U(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 L(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function Oe(e){let t=e&&typeof e=="object"?e:{},r={},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]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let n=L(t.gateway,{id:a.gatewayImage,title:"XiaoZhiClaw 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=L(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});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 Ne=["pending","captured","failed","restored"],we=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var Le=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],Ke=["requiresOpenAiAnthropicToolPayload"];function We(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var j="openai-codex";function A(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function B(e){let t=A(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Ve=B,Fe={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},je={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[j]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function b(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(o=>r.includes(o))}function l(e){let t=A(e??"");return{...Fe,...je[t]}}function Be(e){return l(e).preserveAnthropicThinkingSignatures}function qe(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function Ye(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function He(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Ge(e){return l(e).openAiCompatTurnValidation}function ze(e){return l(e).providerFamily==="openai"}function Xe(e){return l(e).providerFamily==="anthropic"}function Je(e){return b(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Qe(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&b(e.modelId,t.providerThoughtSignatureModelHints)}function $e(e,t){let r=l(e),o=r.transcriptToolCallIdMode;if(o==="strict9")return o;if(b(t,r.transcriptToolCallIdModelHints))return"strict9"}var T={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],qwen:["DASHSCOPE_API_KEY","QWEN_API_KEY"],"qwen-coding":["DASHSCOPE_API_KEY","QWEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function Ze(){return[...new Set(Object.values(T).flat())]}function et(e){let t=A(e.provider),r=e.env??process.env,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=T[t];if(!s||s.length===0)return null;for(let n of s){let p=i(n);if(p)return p}return null}export{ne as ACP_EXTENDED_METHODS,ie as ACP_EXTENDED_SESSION_UPDATE_TYPES,oe as ACP_METHODS,re as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,H as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,v as AGENT_WS_EVENT_NAMES,te as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,ee as GATEWAY_RPC_METHODS,R as GatewayRpcContract,Ce as MEMORY_OBSERVATION_HOOK_VALUES,Ie as MEMORY_OBSERVATION_SOURCE_VALUES,he as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,we as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Ne as MUTATION_CHECKPOINT_PHASE_VALUES,q as PETDEX_ANIMATION_IDS,Le as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Ke as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,T as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,j as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ue as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Me as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,Se as WEB_ACTION_SCOPE_VALUES,Ee as WEB_APPROVAL_DEFAULT_VALUES,ye as WEB_CAPABILITY_FAMILY_VALUES,me as WEB_CAPABILITY_ID_VALUES,be as WEB_DEGRADATION_TARGET_VALUES,Te as WEB_ESCALATION_REASON_VALUES,Ae as WEB_EXECUTION_MODE_VALUES,_e as WEB_POLICY_RISK_CLASS_VALUES,Pe as WEB_RETRY_POLICY_VALUES,Re as WEB_STATEFULNESS_VALUES,fe as WEB_TASK_MODE_VALUES,Z as buildAgentRpcMeta,f as classifyGatewayRpcMethod,m as cloneCapabilityManifestSnapshot,ge as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,de as deriveCapabilityToolNamespaces,ue as deriveCapabilityWorkspaceIds,S as getManifestShortcutEntry,W as getRuntimeResourceAsset,V as getRuntimeResourceProfile,ke as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,w as isAcpJsonRpcResponse,I as isAgentRpcNotification,P as isAgentRpcRequest,C as isAgentRpcResponse,Xe as isAnthropicProviderRuntimeFamily,pe as isExtendedSessionUpdateType,ze as isOpenAiProviderRuntimeFamily,ae as isStandardSessionUpdateType,Ze as listProviderRuntimeEnvApiKeyNames,le as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,Oe as normalizeRuntimeResourceManifest,se as parseAcpMessage,G as parseAgentRpcMessage,Be as preservesProviderRuntimeAnthropicThinkingSignatures,We as readProviderRuntimeCompatFlag,M as requireGatewayRpcMeta,h as requiresIdempotencyKey,qe as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,et as resolveProviderRuntimeEnvApiKey,Ve as resolveProviderRuntimeKeyFamily,$e as resolveProviderRuntimeTranscriptToolCallIdMode,Je as shouldDropThinkingBlocksForProviderRuntimeModel,Qe as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Ge as supportsOpenAiCompatTurnValidationForProviderRuntime,xe as upsertRuntimeResourceAsset,Ye as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,He as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
1
+ var q=["idle","running-right","running-left","waving","jumping","failed","waiting","running","review"];var Y="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},H={REQUEST:"tool.approval.request"};function P(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function G(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||P(t)||I(t)?t:null}import{randomUUID as z}from"node:crypto";var X=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","session.list","session.get","session.resolve","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],J=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","pet.asset.import","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Q=["memory.","pet.","usage."],$=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt","pet.status"]);function f(e){return J.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:X.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function h(e){return $.has(e)||f(e).mutability==="read"?!1:Q.some(t=>e.startsWith(t))}function Z(e,t={}){let r=t.now??Date.now(),n=f(e),i=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??z(),createdAt:r,deadlineAt:r+i,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:d.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof r.createdAt!="number"||!Number.isFinite(r.createdAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:d.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let n=f(e.method).channel;return r.channel!==n?{ok:!1,error:{code:d.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${n}, got ${r.channel}.`}}:h(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:d.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:r}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,r){let n=M({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 ee=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.purgeAll","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.observe","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var v=["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.tool_use_summary","turn.tool_selection_policy","turn.lifecycle","turn.document_maintenance","turn.artifact_contract","turn.usage_update","team.member.notification","session.info","memory.updated","skills.updated","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.asset.updated","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed","workflow.nodeStatus","workflow.triggerDropped","workflow.alert","workflow.approvalRequested"],k=["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","goal.run_state_changed","goal.phase_boundary","goal.goal_edited","goal.message_queued","goal.acceptance_updated"],te=[...v,...k];var re=1,ne={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_CLOSE:"session/close",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_LOAD:"session/load",SESSION_CANCEL:"session/cancel",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},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_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",MENTION_DELEGATE:"x/mention.delegate",MENTION_CANCEL:"x/mention.cancel",MENTION_LIST:"x/mention.list"},x={USER_MESSAGE_CHUNK:"user_message_chunk",AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update",CURRENT_MODE_UPDATE:"current_mode_update"},ie={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function w(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function se(e){let t;try{t=JSON.parse(e)}catch{return null}return w(t)||O(t)||N(t)?t:null}function ae(e){return Object.values(x).includes(e)}function pe(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function _(e){return e?e.map(t=>({...t})):void 0}function ce(e){return e?[...e]:void 0}function D(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function m(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:_(e.workspaceSummaries)}:{}}}function le(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?m(r):{...m(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:_(r.workspaceSummaries)}:{}}}function de(e){return D(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function ue(e){return D(e.map(t=>t.id))}function ge(e){let{previous:t,current:r}=e;if(!t)return{...m(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let n=E.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(n.length===E.length)return{...m(r),syncMode:"full"};let 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]=ce(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 me=["web_search","web_fetch","deep_research","browser_execution"],ye=["web-intelligence","browser-execution"],fe=["discovery","read-url","multi-source-research","interactive-browser"],Ae=["stateless","render-backend","interactive-session"],Re=["stateless","stateless-single-step","stateful-session-required"],Ee=["required","conditional","none"],_e=["browser-read","browser-authenticated-read","browser-state-changing"];var Se=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],be=["web_search","web_fetch","deep_research","blocked"],Te=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Pe=["none","same-capability-once","degrade-only"];var Ce=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ie=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],he=["observe-only","parent-write","deny"];var Me=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 ve(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 W(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function ke(e,t){let r=V(e,t);return r?r.assetIds.map(n=>W(e,n)).filter(n=>!!n):[]}function xe(e,t){return e.assets[t.id]=U(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 L(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function Oe(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[o,p]of Object.entries(n)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.artifacts)||(r[o]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let o=L(t.gateway,{id:a.gatewayImage,title:"XiaoZhiClaw 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=L(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});o&&(r[o.id]=o)}let c={...K()},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]=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 Ne=["pending","captured","failed","restored"],we=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var Le=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],Ke=["requiresOpenAiAnthropicToolPayload"];function We(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var j="openai-codex";function A(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function B(e){let t=A(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Ve=B,Fe={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},je={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[j]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function b(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(n=>r.includes(n))}function l(e){let t=A(e??"");return{...Fe,...je[t]}}function Be(e){return l(e).preserveAnthropicThinkingSignatures}function qe(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function Ye(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function He(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Ge(e){return l(e).openAiCompatTurnValidation}function ze(e){return l(e).providerFamily==="openai"}function Xe(e){return l(e).providerFamily==="anthropic"}function Je(e){return b(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Qe(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&b(e.modelId,t.providerThoughtSignatureModelHints)}function $e(e,t){let r=l(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(b(t,r.transcriptToolCallIdModelHints))return"strict9"}var T={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],qwen:["DASHSCOPE_API_KEY","QWEN_API_KEY"],"qwen-coding":["DASHSCOPE_API_KEY","QWEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function Ze(){return[...new Set(Object.values(T).flat())]}function et(e){let t=A(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),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{oe as ACP_EXTENDED_METHODS,ie as ACP_EXTENDED_SESSION_UPDATE_TYPES,ne as ACP_METHODS,re as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,H as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,v as AGENT_WS_EVENT_NAMES,te as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,ee as GATEWAY_RPC_METHODS,R as GatewayRpcContract,Ce as MEMORY_OBSERVATION_HOOK_VALUES,Ie as MEMORY_OBSERVATION_SOURCE_VALUES,he as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,we as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Ne as MUTATION_CHECKPOINT_PHASE_VALUES,q as PETDEX_ANIMATION_IDS,Le as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Ke as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,T as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,j as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ue as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Me as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,Se as WEB_ACTION_SCOPE_VALUES,Ee as WEB_APPROVAL_DEFAULT_VALUES,ye as WEB_CAPABILITY_FAMILY_VALUES,me as WEB_CAPABILITY_ID_VALUES,be as WEB_DEGRADATION_TARGET_VALUES,Te as WEB_ESCALATION_REASON_VALUES,Ae as WEB_EXECUTION_MODE_VALUES,_e as WEB_POLICY_RISK_CLASS_VALUES,Pe as WEB_RETRY_POLICY_VALUES,Re as WEB_STATEFULNESS_VALUES,fe as WEB_TASK_MODE_VALUES,Z as buildAgentRpcMeta,f as classifyGatewayRpcMethod,m as cloneCapabilityManifestSnapshot,ge as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,de as deriveCapabilityToolNamespaces,ue as deriveCapabilityWorkspaceIds,S as getManifestShortcutEntry,W as getRuntimeResourceAsset,V as getRuntimeResourceProfile,ke as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,w as isAcpJsonRpcResponse,I as isAgentRpcNotification,P as isAgentRpcRequest,C as isAgentRpcResponse,Xe as isAnthropicProviderRuntimeFamily,pe as isExtendedSessionUpdateType,ze as isOpenAiProviderRuntimeFamily,ae as isStandardSessionUpdateType,Ze as listProviderRuntimeEnvApiKeyNames,le as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,Oe as normalizeRuntimeResourceManifest,se as parseAcpMessage,G as parseAgentRpcMessage,Be as preservesProviderRuntimeAnthropicThinkingSignatures,We as readProviderRuntimeCompatFlag,M as requireGatewayRpcMeta,h as requiresIdempotencyKey,qe as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,et as resolveProviderRuntimeEnvApiKey,Ve as resolveProviderRuntimeKeyFamily,$e as resolveProviderRuntimeTranscriptToolCallIdMode,Je as shouldDropThinkingBlocksForProviderRuntimeModel,Qe as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Ge as supportsOpenAiCompatTurnValidationForProviderRuntime,xe as upsertRuntimeResourceAsset,Ye as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,He as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
@@ -23,6 +23,7 @@ export interface AgentRuntimeBootstrapDeps {
23
23
  projectRoot: string;
24
24
  pathService: PathService;
25
25
  memdir: ProjectMemoryStore;
26
+ getMemdir?: () => ProjectMemoryStore | null;
26
27
  currentUserId: string;
27
28
  memoryPrefetchState: MemoryPrefetchState;
28
29
  getLastUserMessage(): string | undefined;
@@ -1,11 +1,13 @@
1
1
  import type { NotificationMethod, NotificationMethodMap } from "../protocol/notifications.js";
2
2
  import type { ToolBootstrap } from "../runtime/ports/index.js";
3
+ import type { PathService } from "../runtime/ports/index.js";
3
4
  import type { MediaPersistence } from "../runtime/infra/media-persistence.js";
4
5
  import type { ModelPurpose } from "../runtime/infra/model-registry.js";
5
6
  import type { LLMTransport } from "./provider-core-facade.js";
6
7
  export interface BaseToolBootstrapDeps {
7
8
  verbose: boolean;
8
9
  toolBootstrap: ToolBootstrap;
10
+ pathService: PathService;
9
11
  mediaPersistence?: MediaPersistence;
10
12
  log(message: string): void;
11
13
  sendNotification<M extends NotificationMethod>(method: M, params: NotificationMethodMap[M]): void;
@@ -15,5 +17,6 @@ export interface BaseToolBootstrapDeps {
15
17
  model: string;
16
18
  } | null;
17
19
  getTaskScopeKey?(): string | undefined;
20
+ getCurrentTurnId?(): string | undefined;
18
21
  }
19
22
  export declare function configureBaseToolBootstrap(deps: BaseToolBootstrapDeps): void;
@@ -1,32 +1,17 @@
1
- import { type CommunityConsentClient, type CommunityConsentView } from "../../runtime/community/community-consent-client.js";
1
+ import { type CommunityConsentClient } from "../../runtime/community/community-consent-client.js";
2
2
  import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
3
- export type { CommunityConsentClient, CommunityConsentView, CommunityInstallRiskTier, CommunityInstallResolution, CommunityListNoticesInput, CommunityNotice, CommunityPublishSkillInput, CommunityRecordSignalInput, CommunityRecordTelemetryInput, CommunityRegistryMatchInput, CommunitySignalEvent, SetCommunityConsentInput, } from "../../runtime/community/community-consent-client.js";
4
- export type { CommunityTelemetryEvent } from "../../runtime/community/community-telemetry-types.js";
5
- export interface CommunityConsentStore {
6
- read(): Promise<CommunityConsentView>;
7
- write(consent: CommunityConsentView): Promise<void>;
8
- }
3
+ export type { CommunityConsentClient, CommunityInstallRiskTier, CommunityInstallResolution, CommunityRegistryMatchInput, } from "../../runtime/community/community-consent-client.js";
9
4
  export interface CommunityHandlerHost {
10
5
  resolveCommunityConsentClient?: () => CommunityConsentClient | null;
11
- resolveCommunityConsentStore?: () => CommunityConsentStore;
12
6
  sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
13
7
  /** Push a JSON-RPC notification (e.g. pet.asset.updated after a community pet install hydrates the UI store). */
14
8
  sendNotification(method: string, params: Record<string, unknown>): void;
15
9
  /** Active owner id, so community pet install/publish land in the same profile pet.status reads. */
16
10
  memoryUserId?: string;
17
11
  }
18
- export declare const METHOD_CONSENT_REQUIRED_MESSAGE = "Community participation consent is required before publishing shared skills.";
19
- export declare function handleCommunityGetConsent(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
20
- export declare function handleCommunitySetConsent(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
21
- export declare function handleCommunityListShared(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
22
12
  export declare function handleCommunityMatchRegistry(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
23
13
  export declare function handleCommunityResolveInstall(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
24
14
  export declare function handleCommunityListResourceVersions(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
25
- export declare function handleCommunityGetRatingSummary(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
26
- export declare function handleCommunityRateResource(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
27
- export declare function handleCommunityReportResource(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
28
- export declare function handleCommunityListComments(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
29
- export declare function handleCommunityPostComment(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
30
15
  export declare function handleCommunityInstallResource(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
31
16
  /**
32
17
  * Handshake step ① — probe declared runtime dependencies (vetted catalog only).
@@ -36,14 +21,3 @@ export declare function handleCommunityInstallResource(this: CommunityHandlerHos
36
21
  export declare function handleCommunityRuntimeStatus(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
37
22
  /** Handshake step ② — install ONE vetted runtime dependency (catalog recipe only). */
38
23
  export declare function handleCommunityInstallRuntime(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
39
- export declare function handleCommunityPublishSkill(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
40
- export declare function handleCommunityPublishPet(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
41
- export declare function handleCommunityRecordSignal(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
42
- export declare function handleCommunityRecordTelemetry(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
43
- export declare function handleCommunityListPublishAudit(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
44
- export declare function handleCommunityWithdrawShared(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
45
- export declare function handleCommunityWithdrawAllShared(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
46
- export declare function handleCommunityListNotices(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
47
- export declare function handleCommunityMarkNoticeRead(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
48
- export declare function hasMethodSharingConsent(consent: CommunityConsentView): boolean;
49
- export declare function createFileCommunityConsentStore(): CommunityConsentStore;
@@ -5,7 +5,9 @@
5
5
  */
6
6
  import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
7
7
  export interface FilesHandlerHost {
8
+ currentTurnId?: string;
8
9
  getActiveProjectRoot(): string;
10
+ sendNotification?(method: string, params: Record<string, unknown>): void;
9
11
  sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
10
12
  }
11
13
  export declare function resolveProjectDir(projectId: string): string | null;
@@ -14,6 +16,10 @@ export declare function handleFilesCreate(this: FilesHandlerHost, msg: AgentRpcR
14
16
  export declare function handleFilesRead(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
15
17
  export declare function handleFilesRename(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
16
18
  export declare function handleFilesDelete(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
19
+ export declare function handleFilesMove(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
20
+ export declare function handleFilesCopy(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
21
+ export declare function handleFilesUndoOperation(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
22
+ export declare function handleFilesSearch(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
17
23
  export declare function handleFilesGitStatus(this: FilesHandlerHost, msg: AgentRpcRequest): Promise<void>;
18
24
  export declare function handleInstructionsList(this: FilesHandlerHost, msg: AgentRpcRequest): void;
19
25
  export declare function handleInstructionsRead(this: FilesHandlerHost, msg: AgentRpcRequest): void;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * messageFeedback.* RPC handlers — assistant-message 赞/踩 feedback (design §8.1–8.3).
3
+ *
4
+ * The handler assembles each FeedbackEvent's context from two backend-owned sources, so the client
5
+ * never has to snapshot unreliable click-time state (design §7.3):
6
+ * - turn telemetry (by the unified turnId): model / provider / usage / toolSummary / fileContext.
7
+ * - the persisted assistant message (by turnId): messagePreview + messageHash.
8
+ * The click-time UI increment (uiContextPatch) only fills diffOpenState + browserContext.
9
+ *
10
+ * Persistence + the idempotent state machine live in feedback-event-store; this layer validates
11
+ * params, performs the joins, computes telemetryStatus, and delegates.
12
+ *
13
+ * projectId is a param on all three RPCs — consistent with the sibling turnBaseline.* RPCs the
14
+ * frontend already calls — so the handler resolves the project deterministically without relying
15
+ * on ambient active-session state.
16
+ */
17
+ import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
18
+ export interface MessageFeedbackHandlerHost {
19
+ sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
20
+ }
21
+ export declare function handleMessageFeedbackSubmit(this: MessageFeedbackHandlerHost, msg: AgentRpcRequest): Promise<void>;
22
+ export declare function handleMessageFeedbackRetract(this: MessageFeedbackHandlerHost, msg: AgentRpcRequest): Promise<void>;
23
+ export declare function handleMessageFeedbackState(this: MessageFeedbackHandlerHost, msg: AgentRpcRequest): Promise<void>;
24
+ export declare function handleMessageFeedbackSummary(this: MessageFeedbackHandlerHost, msg: AgentRpcRequest): Promise<void>;
25
+ export declare function handleMessageFeedbackMemoryCandidates(this: MessageFeedbackHandlerHost, msg: AgentRpcRequest): Promise<void>;
26
+ /**
27
+ * Ship a pre-redacted batch to llmrouter (design §8.6). Not user-triggered — the redaction worker
28
+ * is the normal caller; this RPC exists for manual/test flushes. Events MUST already be redacted
29
+ * (RedactedFeedbackEvent), since llmrouter rejects un-redacted local events (§9.1 rule 4).
30
+ */
31
+ export declare function handleMessageFeedbackUploadBatch(this: MessageFeedbackHandlerHost, msg: AgentRpcRequest): Promise<void>;
@@ -38,6 +38,7 @@ export declare function handlePetPreferencesUpdate(this: PetHandlerHost, msg: Ag
38
38
  export declare function handlePetJourneySnapshot(this: PetHandlerHost, msg: AgentRpcRequest): Promise<void>;
39
39
  export declare function handlePetJourneyList(this: PetHandlerHost, msg: AgentRpcRequest): Promise<void>;
40
40
  export declare function handlePetJourneyGet(this: PetHandlerHost, msg: AgentRpcRequest): Promise<void>;
41
+ export declare function handlePetJourneyCatchUp(this: PetHandlerHost, msg: AgentRpcRequest): Promise<void>;
41
42
  export declare function handlePetCustomDelete(this: PetHandlerHost, msg: AgentRpcRequest): Promise<void>;
42
43
  export declare function handlePetAssetImport(this: PetHandlerHost, msg: AgentRpcRequest): Promise<void>;
43
44
  /**
@@ -19,6 +19,7 @@ export interface ProjectHandlerHost {
19
19
  }
20
20
  export declare function handleProjectCreate(this: ProjectHandlerHost, msg: AgentRpcRequest): Promise<void>;
21
21
  export declare function handleProjectList(this: ProjectHandlerHost, msg: AgentRpcRequest): void;
22
+ export declare function handleProjectSwitch(this: ProjectHandlerHost, msg: AgentRpcRequest): void;
22
23
  /**
23
24
  * Reliable recursive directory removal for Windows. fs.rmSync({recursive,force}) cannot be trusted
24
25
  * here: on git repos it silently leaves read-only object/pack files (and whole subtrees) behind
@@ -0,0 +1,8 @@
1
+ import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
2
+ export interface TurnBaselineHandlerHost {
3
+ sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
4
+ }
5
+ export declare function handleTurnBaselineGetSummary(this: TurnBaselineHandlerHost, msg: AgentRpcRequest): Promise<void>;
6
+ export declare function handleTurnBaselineListRecent(this: TurnBaselineHandlerHost, msg: AgentRpcRequest): Promise<void>;
7
+ export declare function handleTurnBaselineGetFileBaseline(this: TurnBaselineHandlerHost, msg: AgentRpcRequest): Promise<void>;
8
+ export declare function handleTurnBaselineGetFileDiff(this: TurnBaselineHandlerHost, msg: AgentRpcRequest): Promise<void>;
@@ -18,6 +18,11 @@ export interface TurnControlHandlerHost {
18
18
  sendResponse(id: string | number, result?: unknown, error?: unknown): void;
19
19
  }
20
20
  export declare function hydrateTurnConfigFromModelMetadata(config: TurnConfig): TurnConfig;
21
+ export declare function resolveAutoToolChoice(params: {
22
+ currentToolChoice?: TurnConfig["toolChoice"];
23
+ explicitNoToolTurn: boolean;
24
+ looksLikeBuildIntent: boolean;
25
+ }): TurnConfig["toolChoice"] | undefined;
21
26
  export declare function hydrateAttachmentReferenceUrlsForTurn(messages: ChatMessage[]): ChatMessage[];
22
27
  export declare function getFocusedAttachmentToolNamesForTurn(messages: ChatMessage[]): Set<string> | null;
23
28
  type FocusedAttachmentModelPurpose = "imageUnderstanding" | "videoUnderstanding";
@@ -49,9 +49,6 @@ export interface WorkflowCoordinatorHost {
49
49
  }
50
50
  export interface WorkflowHandlerHost extends WorkflowCoordinatorHost {
51
51
  sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
52
- /** Community hub access for workflow.publishHub (same injection seam as CommunityHandlerHost). */
53
- resolveCommunityConsentClient?: () => import("../../runtime/community/community-consent-client.js").CommunityConsentClient | null;
54
- resolveCommunityConsentStore?: () => import("./community-handler.js").CommunityConsentStore;
55
52
  }
56
53
  /** A resolved workflow routing target: which project root an RPC operates on. */
57
54
  interface WorkflowTarget {
@@ -126,14 +123,6 @@ export declare function handleWorkflowSetPermissionScope(this: WorkflowHandlerHo
126
123
  export declare function handleWorkflowCapabilities(this: WorkflowHandlerHost, msg: AgentRpcRequest): Promise<void>;
127
124
  /** `workflow.export` — serialize one workflow as a sanitized portable bundle (no credentials). */
128
125
  export declare function handleWorkflowExport(this: WorkflowHandlerHost, msg: AgentRpcRequest): Promise<void>;
129
- /**
130
- * `workflow.publishHub` — publish a workflow to the community Hub (IT-5, spec D35):
131
- * sanitized bundle (D23 — credential values already stripped) becomes the gzip payload;
132
- * the WorkflowManifest is DERIVED from the record (trigger summary, node count, sensitive
133
- * capability kinds as declaredPermissions, credential/capability requirements), so the
134
- * publisher only supplies presentation fields. Same consent + review pipeline as skills.
135
- */
136
- export declare function handleWorkflowPublishHub(this: WorkflowHandlerHost, msg: AgentRpcRequest): Promise<void>;
137
126
  /**
138
127
  * `workflow.import` — materialize a portable bundle (or raw n8n JSON, format:"n8n") into a target
139
128
  * project. The caller creates/owns the project (frontend: WorkspaceStep → POST /api/projects);
@@ -0,0 +1,9 @@
1
+ import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
2
+ export interface WorkingMaterialsHandlerHost {
3
+ sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
4
+ }
5
+ export declare function handleWorkingMaterialsGet(this: WorkingMaterialsHandlerHost, msg: AgentRpcRequest): Promise<void>;
6
+ export declare function handleWorkingMaterialsReplace(this: WorkingMaterialsHandlerHost, msg: AgentRpcRequest): Promise<void>;
7
+ export declare function handleWorkingMaterialsUpsert(this: WorkingMaterialsHandlerHost, msg: AgentRpcRequest): Promise<void>;
8
+ export declare function handleWorkingMaterialsRemove(this: WorkingMaterialsHandlerHost, msg: AgentRpcRequest): Promise<void>;
9
+ export declare function handleWorkingMaterialsReorder(this: WorkingMaterialsHandlerHost, msg: AgentRpcRequest): Promise<void>;
@@ -28,6 +28,12 @@ export interface IdleDreamCoordinatorOptions {
28
28
  sessionId: string;
29
29
  }>>;
30
30
  runDream(message: AgentRpcRequest): Promise<void>;
31
+ /**
32
+ * Optional idle-time hook run on every idle fire BEFORE the dream gates (so it is not blocked by
33
+ * dream cooldown / missing LLM transport). Used for the feedback redaction+upload sweep
34
+ * (design §9 item 5). Errors are swallowed so a sweep failure never breaks dream.
35
+ */
36
+ onIdle?(): Promise<void>;
31
37
  }
32
38
  export declare class IdleDreamCoordinator {
33
39
  private readonly options;
@@ -13,6 +13,7 @@ export interface McpBootstrapDeps {
13
13
  }
14
14
  export declare const mcpToolRegistrationModule: import("../runtime/ports/tool-contracts.js").ToolRegistrationModule<McpBootstrapDeps>;
15
15
  export declare function configureMcpBootstrap(deps: McpBootstrapDeps): void;
16
+ export declare function readUserMcpConfig(pathService: PathService, log?: RuntimeLogger): unknown;
16
17
  export declare function buildMcpBootstrapEntries(params: {
17
18
  turnMcpConfig?: unknown;
18
19
  userMcpConfig?: unknown;
@@ -29,6 +29,7 @@ export interface RegisterMemoryRuntimeHooksDeps {
29
29
  export declare function registerMemoryRuntimeHooks(deps: RegisterMemoryRuntimeHooksDeps): MemoryProviderState;
30
30
  export interface RegisterMemoryToolDeps {
31
31
  memdir: ProjectMemoryStore;
32
+ getMemdir?: () => ProjectMemoryStore;
32
33
  memoryProvider: MemoryToolProvider | null;
33
34
  memoryUserId: string;
34
35
  toolCatalog: ToolCatalog;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copy global template files (~/.qlogicagent/INSTRUCTIONS.md + rules/) into a new project's
3
- * .qlogicagent/ directory. Only copies if the target does NOT already exist.
2
+ * Copy profile-scoped template files and packaged defaults into a project's
3
+ * .qlogicagent/ directory. Only copies files that do NOT already exist.
4
4
  */
5
5
  export declare function seedProjectFromGlobalTemplates(workspaceDir: string): void;
@@ -12,7 +12,10 @@ import { type ProjectHandlerHost } from "./handlers/project-handler.js";
12
12
  import { type SessionHandlerHost } from "./handlers/session-handler.js";
13
13
  import { type SettingsHandlerHost } from "./handlers/settings-handler.js";
14
14
  import { type SkillsHandlerHost } from "./handlers/skills-handler.js";
15
+ import { type TurnBaselineHandlerHost } from "./handlers/turn-baseline-handler.js";
16
+ import { type MessageFeedbackHandlerHost } from "./handlers/message-feedback-handler.js";
15
17
  import { type TurnControlHandlerHost } from "./handlers/turn-handler.js";
18
+ import { type WorkingMaterialsHandlerHost } from "./handlers/working-materials-handler.js";
16
19
  import { type DreamHandlerHost } from "./handlers/dream-handler.js";
17
20
  import type { MultiAgentHandlerHost } from "./multi-agent-handler-host.js";
18
21
  export type RpcMethodHandler = (msg: AgentRpcRequest) => void;
@@ -48,6 +51,9 @@ export interface RpcHandlerHosts {
48
51
  settings: SettingsHandlerHost;
49
52
  dream: DreamHandlerHost;
50
53
  turn: TurnControlHandlerHost;
54
+ turnBaseline: TurnBaselineHandlerHost;
55
+ messageFeedback: MessageFeedbackHandlerHost;
56
+ workingMaterials: WorkingMaterialsHandlerHost;
51
57
  /** agents/solo/product are served by the multi-agent sub-host. */
52
58
  multiAgent: MultiAgentHandlerHost;
53
59
  /**
@@ -12,6 +12,7 @@ export interface RuntimeHookBootstrapDeps {
12
12
  sessionId: string;
13
13
  projectRoot: string;
14
14
  memdir: ProjectMemoryStore;
15
+ getMemdir?: () => ProjectMemoryStore | null;
15
16
  toolCatalog: ToolCatalog;
16
17
  currentUserId: string;
17
18
  prefetchState: MemoryPrefetchState;
@@ -28,6 +28,7 @@ export interface StdioAgentSessionBootstrapDeps {
28
28
  projectRoot: string;
29
29
  pathService: PathService;
30
30
  memdir: ProjectMemoryStore;
31
+ getMemdir?: () => ProjectMemoryStore | null;
31
32
  currentUserId: string;
32
33
  memoryPrefetchState: MemoryPrefetchState;
33
34
  getLastUserMessage(): string | undefined;
@@ -2,6 +2,7 @@ import type { LLMRequest } from "../agent/types.js";
2
2
  import type { ModelPurpose } from "../runtime/infra/model-registry.js";
3
3
  import type { RpcHandlerHosts } from "./rpc-registry.js";
4
4
  type DirectStdioRpcHost = RpcHandlerHosts["config"] & RpcHandlerHosts["control"] & RpcHandlerHosts["files"] & RpcHandlerHosts["skills"] & RpcHandlerHosts["project"] & RpcHandlerHosts["community"] & RpcHandlerHosts["settings"] & RpcHandlerHosts["petConfirm"] & {
5
+ currentTurnId?: string;
5
6
  readonly multiAgentHandlerHost: RpcHandlerHosts["multiAgent"];
6
7
  readonly workflowHandlerHost: RpcHandlerHosts["workflow"];
7
8
  };
@@ -6,6 +6,7 @@ export interface StdioRuntimeBootstrapDeps {
6
6
  verbose: boolean;
7
7
  getActiveProjectRoot(): string;
8
8
  getCurrentSessionId?(): string | undefined;
9
+ getCurrentTurnId?(): string | undefined;
9
10
  resolveClientForPurpose(purpose: ModelPurpose): {
10
11
  transport: LLMTransport;
11
12
  apiKey: string;
@@ -1,15 +1,9 @@
1
1
  import type { PortableTool } from "../skills/portable-tool.js";
2
- import { type CommunitySeekAnswerCandidate } from "../skills/tools/community-seek-tool.js";
3
2
  import { type CommunityDiscoveryResult } from "../runtime/community/community-discovery-coordinator.js";
4
- import { type PetActivitySink } from "../runtime/community/pet-activity-sink.js";
5
3
  export interface LocalCommunityToolRegistrationContext {
6
4
  tools: PortableTool<any>[];
7
5
  /** 测试可注入的发现实现;默认从 env consent client 构造协调器。 */
8
6
  discover?: (intent: string) => Promise<CommunityDiscoveryResult>;
9
- /** 测试可注入的经验答案源;默认经 consent client 调 hub /reviews/search(bge-m3 语义检索)。 */
10
- findAnswers?: (intent: string, topK: number) => Promise<CommunitySeekAnswerCandidate[]>;
11
- /** 测试可注入的活动发射 sink;默认从 env 解析 actorPetId 构造(无身份→null,不发)。 */
12
- petActivitySink?: PetActivitySink | null;
13
7
  }
14
8
  export declare const localCommunityToolRegistrationModule: import("../runtime/ports/tool-contracts.js").ToolRegistrationModule<LocalCommunityToolRegistrationContext>;
15
9
  export declare function registerLocalCommunityTools(context: LocalCommunityToolRegistrationContext): void;
@@ -11,9 +11,11 @@ export interface LocalCoreToolRegistrationContext {
11
11
  backgroundTaskRuntime: BackgroundTaskManager | null;
12
12
  getBackgroundTaskRuntime?: () => BackgroundTaskManager | null;
13
13
  getTaskScopeKey?: () => string | undefined;
14
+ getCurrentTurnId?: () => string | undefined;
14
15
  askUserCallback: ((questions: AskUserQuestion[]) => Promise<Record<string, string> | null>) | null;
15
16
  getAskUserCallback?: () => ((questions: AskUserQuestion[]) => Promise<Record<string, string> | null>) | null;
16
17
  onExecProgress?: (progress: ExecProgress) => void;
18
+ sendNotification?(method: string, params: Record<string, unknown>): void;
17
19
  getCwd(): string;
18
20
  activeProjectRoot(): string;
19
21
  resolveSandboxConfig(): SandboxConfig | undefined;
@@ -52,6 +52,8 @@ export interface BootstrapConfig {
52
52
  model: string;
53
53
  } | null;
54
54
  getTaskScopeKey?(): string | undefined;
55
+ getCurrentTurnId?(): string | undefined;
56
+ sendNotification?(method: string, params: Record<string, unknown>): void;
55
57
  }
56
58
  /**
57
59
  * Create all locally-executable tools and install into centralized tool pool.
@@ -1,11 +1,6 @@
1
- import { type CommunityPublishSkillInput, type CommunityPublishSkillResult } from "../runtime/community/community-consent-client.js";
2
- import { type CommunityTelemetryRecorder } from "../runtime/community/community-telemetry-recorder.js";
3
1
  export interface TurnSkillAutoPersistHost {
4
2
  log(message: string): void;
5
3
  }
6
- export interface CommunitySkillPublisher {
7
- publishSkill(input: CommunityPublishSkillInput): Promise<CommunityPublishSkillResult>;
8
- }
9
4
  export type AutoPersistResult = {
10
5
  status: "ignored";
11
6
  } | {
@@ -14,34 +9,14 @@ export type AutoPersistResult = {
14
9
  } | {
15
10
  status: "created";
16
11
  skillPath: string;
17
- } | {
18
- status: "blocked";
19
- skillPath: string;
20
- reason: string;
21
12
  } | {
22
13
  status: "skipped";
23
14
  skillPath: string;
24
15
  reason: string;
25
16
  };
26
- export type CommunityPublishAuditDecision = "published" | "blocked" | "skipped";
27
- export interface CommunityPublishAuditEntry {
28
- eventTurnId: string;
29
- skillName: string;
30
- decision: CommunityPublishAuditDecision;
31
- reason: string;
32
- resourceId?: string;
33
- createdAt: string;
34
- }
35
- export declare const COMMUNITY_PUBLISH_AUDIT_FILE = "community-publish-audit.jsonl";
36
17
  export declare function maybeAutoPersistSkillInstruction(params: {
37
18
  instruction: unknown;
38
19
  eventTurnId: string;
39
20
  projectRoot: string;
40
21
  host: TurnSkillAutoPersistHost;
41
- communityPublisher?: CommunitySkillPublisher | null;
42
- communityTelemetryRecorder?: CommunityTelemetryRecorder | null;
43
22
  }): Promise<AutoPersistResult>;
44
- export declare function createDefaultCommunitySkillPublisher(): CommunitySkillPublisher | null;
45
- export declare function listCommunityPublishAuditEntries(input?: {
46
- limit?: number;
47
- }): CommunityPublishAuditEntry[];