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.
4 lines (3 loc) • 1.55 kB
JavaScript
const r="[[quoted_message_id:";class n{mode="pending";buffer="";quotedMessageId;consume(e){if(!e)return{deltaContent:"",quotedMessageId:this.quotedMessageId};if(this.mode==="streaming")return{deltaContent:e,quotedMessageId:this.quotedMessageId};this.buffer+=e;const t=this.tryParseBuffer();return t.status==="need_more"?{deltaContent:"",quotedMessageId:this.quotedMessageId}:(this.mode="streaming",this.buffer="",t.status==="matched"?(this.quotedMessageId=t.quotedMessageId,{deltaContent:t.remainingContent,quotedMessageId:this.quotedMessageId}):{deltaContent:t.remainingContent,quotedMessageId:this.quotedMessageId})}flush(){if(this.mode==="streaming"||!this.buffer)return{deltaContent:"",quotedMessageId:this.quotedMessageId};const e=this.buffer;return this.buffer="",this.mode="streaming",{deltaContent:e,quotedMessageId:this.quotedMessageId}}getQuotedMessageId(){return this.quotedMessageId}tryParseBuffer(){if(!this.buffer.startsWith("[["))return{status:"plain_text",remainingContent:this.buffer};if(!r.startsWith(this.buffer)&&!this.buffer.startsWith(r))return{status:"plain_text",remainingContent:this.buffer};if(r.startsWith(this.buffer))return{status:"need_more"};const e=this.buffer.indexOf("]]",r.length);if(e<0)return{status:"need_more"};const t=this.buffer.slice(r.length,e).trim();if(!t)return{status:"plain_text",remainingContent:this.buffer};let s=this.buffer.slice(e+2);return s.startsWith(`\r
`)?s=s.slice(2):s.startsWith(`
`)&&(s=s.slice(1)),{status:"matched",quotedMessageId:t,remainingContent:s}}}export{n as QuotedMessageStream};