UNPKG

grix-connector

Version:

Connect local AI coding agents (Claude, Codex, Gemini, Qwen, DeepSeek, Cursor, OpenCode, Pi, OpenHuman, Reasonix) to the Grix scheduling platform. Also serves as an OpenClaw plugin for Grix channel transport.

2 lines (1 loc) 2.64 kB
import{splitTextForAibotProtocol as a}from"../protocol/protocol-text.js";import{PHASE2_TOOL_NAMES as f,ACCESS_CONTROL_ACTION_MAP as p}from"./tools.js";const v=f;function E(n){return v.has(n)}function C(n,e,t){switch(e){case"grix_reply":return m(n,t);case"grix_complete":return g(n,t);case"grix_event_ack":return S(n,t);case"grix_composing":return x(n,t);case"grix_access_control":return k(n,t);case"grix_status":return h(n);default:return r(`Unknown event tool: ${e}`)}}function m(n,e){const t=String(e.event_id??""),i=String(e.session_id??""),o=String(e.text??""),_=e.quoted_message_id;if(!i)return r("Missing required parameter: session_id");if(!o)return r("Missing required parameter: text");const c=a(o),u=`reply_${t||"proactive"}_${Date.now()}`;if(!t){for(let s=0;s<c.length;s++)n.sendMsg({session_id:i,client_msg_id:`${u}_${s+1}`,msg_type:1,content:c[s],quoted_message_id:s===0?_:void 0});return d({ok:!0,direct:!0,chunks:c.length,client_msg_id:u})}for(let s=0;s<c.length;s++){const l=s===c.length-1;n.sendStreamChunk({event_id:t||void 0,session_id:i,delta_content:c[s],chunk_seq:s+1,is_finish:l,client_msg_id:u,quoted_message_id:s===0?_:void 0})}return d({ok:!0,chunks:c.length,client_msg_id:u})}function g(n,e){const t=String(e.event_id??""),i=String(e.status??""),o=e.msg;return t?["responded","canceled","failed"].includes(i)?(n.sendEventResult({event_id:t,status:i,msg:o}),d({ok:!0,event_id:t,status:i})):r("status must be one of: responded, canceled, failed"):r("Missing required parameter: event_id")}function S(n,e){const t=String(e.event_id??""),i=e.session_id;return t?(n.sendEventAck({event_id:t,session_id:i,received_at:Date.now()}),d({ok:!0,event_id:t})):r("Missing required parameter: event_id")}function x(n,e){const t=String(e.session_id??""),i=e.active===!0,o=e.event_id;return t?(n.sendSessionActivitySet({session_id:t,kind:"composing",active:i,ref_event_id:o,ttl_ms:i?3e4:void 0}),d({ok:!0,session_id:t,active:i})):r("Missing required parameter: session_id")}function k(n,e){const t=String(e.action??""),i=p[t];if(!i)return r(`Unknown access_control action: ${t}`);const o={};return e.code!=null&&(o.code=e.code),e.sender_id!=null&&(o.sender_id=e.sender_id),e.policy!=null&&(o.policy=e.policy),{content:[{type:"text",text:"__ASYNC_ACCESS_CONTROL__"}],_async:{verb:i,payload:o}}}function h(n){const e=n.status,t=n.getStatusSnapshot();return d({connected:e==="ready",status:e,connected_at:t.connectedAt})}function d(n){return{content:[{type:"text",text:JSON.stringify(n)}],isError:!1}}function r(n){return{content:[{type:"text",text:n}],isError:!0}}export{v as EVENT_TOOL_NAMES,C as executeEventTool,E as isEventTool};