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.

4 lines (3 loc) 1.82 kB
const i="[[quoted_message_id:",n="[[message_id:",d=/\[\[message_id:[^\]]*\]\]\r?\n?/g;class f{mode="pending";buffer="";quotedMessageId;idTail="";consume(t){if(!t)return{deltaContent:"",quotedMessageId:this.quotedMessageId};if(this.mode==="streaming")return{deltaContent:this.stripMessageIdMarkers(t,!0),quotedMessageId:this.quotedMessageId};this.buffer+=t;const s=this.tryParseBuffer();return s.status==="need_more"?{deltaContent:"",quotedMessageId:this.quotedMessageId}:(this.mode="streaming",this.buffer="",s.status==="matched"&&(this.quotedMessageId=s.quotedMessageId),{deltaContent:this.stripMessageIdMarkers(s.remainingContent,!0),quotedMessageId:this.quotedMessageId})}flush(){let t="";return this.mode!=="streaming"&&this.buffer&&(t=this.buffer,this.buffer="",this.mode="streaming"),{deltaContent:this.stripMessageIdMarkers(t,!1),quotedMessageId:this.quotedMessageId}}getQuotedMessageId(){return this.quotedMessageId}stripMessageIdMarkers(t,s){let e=this.idTail+t;if(this.idTail="",e=e.replace(d,""),s){const a=e.lastIndexOf("[[");if(a>=0){const r=e.slice(a);!r.includes("]]")&&(n.startsWith(r)||r.startsWith(n))&&(this.idTail=r,e=e.slice(0,a))}}return e}tryParseBuffer(){if(!this.buffer.startsWith("[["))return{status:"plain_text",remainingContent:this.buffer};if(!i.startsWith(this.buffer)&&!this.buffer.startsWith(i))return{status:"plain_text",remainingContent:this.buffer};if(i.startsWith(this.buffer))return{status:"need_more"};const t=this.buffer.indexOf("]]",i.length);if(t<0)return{status:"need_more"};const s=this.buffer.slice(i.length,t).trim();if(!s)return{status:"plain_text",remainingContent:this.buffer};let e=this.buffer.slice(t+2);return e.startsWith(`\r `)?e=e.slice(2):e.startsWith(` `)&&(e=e.slice(1)),{status:"matched",quotedMessageId:s,remainingContent:e}}}export{f as QuotedMessageStream};