@miomioos/mio-agent 0.3.16 → 0.3.17

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/index.js CHANGED
@@ -503,10 +503,11 @@ Your cwd is your **persistent, agent-owned workspace** \u2014 files you create h
503
503
  \u4F60\u5728\u8FD9\u91CC\u7684\u8EAB\u4EFD\u662F\u300C\u9879\u76EE\u987E\u95EE\u300D,\u5BF9\u8BDD\u7684\u662F\u5BA2\u6237,\u4E0D\u662F\u540C\u4E8B\u3002\u94C1\u5F8B:
504
504
  1. \u7EDD\u4E0D\u63D0\u53CA/\u6697\u793A:AI \u7F16\u7A0B\u3001\u6570\u5B57\u4EBA\u56E2\u961F\u3001\u6A21\u578B\u540D\u3001\u4EE3\u7801\u3001\u6587\u4EF6\u540D\u3001\u6280\u672F\u6808\u3001\u5B9E\u73B0\u65B9\u5F0F\u3001\u5185\u90E8\u9891\u9053\u3001\u5DE5\u4F5C\u91CF\u7684\u6280\u672F\u8868\u8FF0\u3002\u53EA\u7528\u4E1A\u52A1\u8BED\u8A00(\u529F\u80FD/\u9875\u9762/\u6D41\u7A0B)\u3002
505
505
  2. \u5BA2\u6237\u4F1A\u65AD\u65AD\u7EED\u7EED\u5730\u63CF\u8FF0\u3002\u4F60\u8981\u628A\u788E\u7247\u5F52\u62E2\u6210\u4E8B\u9879\u6E05\u5355;\u53D1\u73B0\u5BA2\u6237\u8BF4\u4E86\u591A\u4EF6\u4E8B\u65F6,\u660E\u786E\u5217\u51FA\u6765\u5E76\u4E00\u4EF6\u4E00\u4EF6\u63A8\u8FDB("\u60A8\u63D0\u5230\u4E86 A\u3001B \u4E24\u4EF6\u4E8B,\u6211\u4EEC\u5148\u628A A \u804A\u6E05\u695A?")\u3002
506
- 3. \u6BCF\u8F6E\u6700\u591A\u95EE 1-2 \u4E2A\u542F\u53D1\u5F0F\u95EE\u9898(\u76EE\u6807/\u8303\u56F4/\u9A8C\u6536\u6807\u51C6/\u8FB9\u754C\u60C5\u51B5),\u7136\u540E\u66F4\u65B0\u4E00\u4EFD\u7ED3\u6784\u5316\u8349\u6848(\u6807\u9898/\u80CC\u666F/\u8981\u505A\u4EC0\u4E48/\u600E\u6837\u7B97\u5B8C\u6210)\u8D34\u7ED9\u5BA2\u6237\u786E\u8BA4\u3002
507
- 4. \u6279\u51C6\u95E8:\u53EA\u6709\u5BA2\u6237\u660E\u786E\u8868\u793A\u540C\u610F/\u786E\u8BA4/\u6279\u51C6\u540E,\u624D\u7528 mio task create --channel "#<\u672C\u9891\u9053>" --title "<\u9700\u6C42\u6807\u9898>" --attach <\u6279\u51C6\u90A3\u6761\u6D88\u606F\u7684 id> \u7ACB\u9700\u6C42\u5355(\u4E0D\u52A0 --self,\u9700\u6C42\u5355\u7B49\u771F\u4EBA\u6392\u671F,\u4E0D\u662F\u4F60\u6267\u884C)\u3002\u6279\u51C6\u524D\u7EDD\u4E0D\u5EFA\u5355\u3002
508
- 5. \u7ACB\u5355\u540E\u56DE\u590D:"\u5DF2\u8BB0\u5F55\u4E3A\u9700\u6C42 #N,\u8FDB\u5165\u6392\u671F,\u6709\u8FDB\u5C55\u6211\u4F1A\u540C\u6B65\u60A8\u3002" \u4E0D\u627F\u8BFA\u65F6\u95F4,\u4E0D\u8BA8\u8BBA\u600E\u4E48\u5B9E\u73B0\u3002
509
- 6. \u5224\u65AD\u9700\u6C42\u65F6\u5141\u8BB8\u4F60\u9759\u9ED8\u67E5\u9605\u8D44\u6599\u7406\u89E3\u4E1A\u52A1,\u4F46\u8F93\u51FA\u53EA\u8C08:\u8FD9\u4E2A\u9700\u6C42\u662F\u5426\u5408\u7406\u3001\u662F\u5168\u65B0\u529F\u80FD\u8FD8\u662F\u73B0\u6709\u529F\u80FD\u7684\u4F18\u5316\u3001\u5F71\u54CD\u54EA\u4E9B\u4E1A\u52A1\u6A21\u5757\u3002`;async function le(R){let B=O.get(R);if(B!==void 0)return B;let M=await J(R);return M!==void 0&&O.set(R,M),M}let ue=l??(async()=>new Set((await e.getAgentChannels(r)).map(R=>R.id))),$=null,Q=new Set,y=250,b=5e3,T=y,D=R=>new Promise(B=>{let M=setTimeout(B,R);typeof M.unref=="function"&&M.unref()});function q(){let R=ue().then(B=>(T=y,B)).catch(B=>{E(Z,"failed to resolve agent channel membership \u2014 failing safe (deliver nothing), will retry",B);let M=T;return T=Math.min(T*2,b),$===R&&($=D(M).then(()=>(q(),$??new Set))),new Set});$=R}let I=n.hostFor??(()=>t),U;t.onInjected(R=>{U?.(R)}),d&&(U=d);async function z(R){if(R.topic==="reminder.upserted"||R.topic==="reminder.canceled"){if(u){let K=R.payload;if(R.topic==="reminder.upserted")if(K.reminder){if(K.reminder.agentId!==r)return;u.upsert(K.reminder)}else h("warn",Z,"reminder.upserted event missing reminder payload",{payload:R.payload});else if(K.reminderId){if(K.agentId!==r)return;u.cancel(K.reminderId,K.version)}else h("warn",Z,"reminder.canceled event missing reminderId",{payload:R.payload})}return}if(R.topic==="channel.member_added"||R.topic==="channel.member_removed"||R.topic==="roster.member_added"||R.topic==="roster.member_removed"){let K=R.payload;K.member_id===r&&(h("info",Z,"membership changed for self \u2014 invalidating membership cache",{topic:R.topic,channelId:K.channel_id}),Q.clear(),q());return}if(R.topic!=="message.created"&&R.topic!=="thread.reply")return;let B=R.payload,M=B.channel_id,F=B.seq,ye=B.message_id,xe=B.parent_message_id;if(!M||!F){h("warn",Z,"message.created event missing channel_id or seq",{payload:B});return}ne(r,"event_received",{topic:R.topic,channel_id:M,seq:F,message_id:ye??null,parent_message_id:xe??null});let We=(await($??Promise.resolve(new Set))).has(M);if(!We&&!Q.has(M)){h("info",Z,"re-verifying membership for unknown channel before skip",{channelId:M,seq:F});try{let K=await ue();$=Promise.resolve(K),T=y,We=K.has(M),We?h("info",Z,"self-healed stale membership \u2014 channel IS a member, delivering",{channelId:M,seq:F}):Q.add(M)}catch(K){E(Z,"self-heal membership re-resolve failed \u2014 skipping this message (will retry next)",K)}}if(!We){h("debug",Z,"skip not-a-member channel",{channelId:M,seq:F,topic:R.topic}),ne(r,"skip",{reason:"not_a_member",channel_id:M,seq:F,topic:R.topic});return}if(B.sender_id&&B.sender_id===r){h("debug",Z,"skip self-authored message (pre-fetch)",{seq:F,sender_id:B.sender_id}),ne(r,"skip",{reason:"self_authored_prefetch",channel_id:M,seq:F,message_id:ye??null});return}let N,ft;if(R.topic==="thread.reply"){if(!xe){h("warn",Z,"thread.reply event missing parent_message_id",{payload:B});return}if(!e.getThreadReplies){h("warn",Z,"thread.reply received but gateway has no getThreadReplies \u2014 dropping",{channelId:M,messageSeq:F});return}try{let K=(BigInt(F)>31n?BigInt(F)-31n:0n).toString(),Me=await e.getThreadReplies(r,xe,50,K);ft=Me,N=ye&&Me.find(Ue=>Ue.id===ye)||Me.find(Ue=>Ue.seq===F),N&&!N.parent_message_id&&(N={...N,parent_message_id:xe})}catch(K){E(Z,"failed to fetch thread replies after thread.reply event",K);return}}else{let K=(BigInt(F)-1n).toString();try{N=(await x(o,M,K,1)).messages.find(Ue=>Ue.seq===F)}catch(Me){E(Z,"failed to fetch message after message.created event",Me);return}}if(!N){h("warn",Z,"message not found in GET response",{channelId:M,messageSeq:F,topic:R.topic});return}if(N.sender_id===r){h("debug",Z,"skip self-authored message",{seq:F,sender_id:N.sender_id}),ne(r,"skip",{reason:"self_authored",channel_id:M,seq:F,message_id:N.id});return}let st=_u(N.content,s,i),Zt=!!N.parent_message_id;if(N.sender_kind==="system"&&!f.deliverSystemMessages){h("debug",Z,"skip system message by context policy",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"context_policy_system_message",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}let ht=B.wake_agent_ids;if(!Zt&&N.sender_kind!=="system"){if(Array.isArray(ht)){if(!(ht.includes(r)||st)){h("debug",Z,"skip: not in server wake set",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"not_in_wake_set",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}}else if(!f.deliverBroadcastMessages&&!st){h("debug",Z,"skip broadcast message by context policy",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"context_policy_broadcast_message",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}}if(Zt&&N.sender_kind!=="system"&&Array.isArray(ht)){if(!(ht.includes(r)||st)){h("debug",Z,"skip thread reply: not in server wake set",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"thread_not_in_wake_set",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}}else if(Zt&&N.sender_kind!=="system"&&!f.deliverThreadBroadcastMessages&&!st){h("debug",Z,"skip thread broadcast message by context policy",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"context_policy_thread_broadcast_message",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}let Be;try{Be=await le(M)}catch(K){E(Z,"failed to resolve channel name \u2014 dropping message",K);return}if(!Be){h("warn",Z,"channel name unresolvable \u2014 dropping message (unreplyable target)",{channelId:M,messageSeq:F});return}let ke;if(N.parent_message_id){let K,Me=[],Ue=!1;if(e.getMessageById)try{K=await e.getMessageById(r,N.parent_message_id)}catch(it){Ue=!0,h("warn",Z,"thread parent fetch failed \u2014 degrading thread context",{parent_message_id:N.parent_message_id,err:it instanceof Error?it.message:String(it)})}else Ue=!0;if(ft&&N.parent_message_id===xe)Me=ft.slice(0,f.threadReplyLimit);else if(e.getThreadReplies)try{Me=await e.getThreadReplies(r,N.parent_message_id,f.threadReplyLimit)}catch(it){Ue=!0,h("warn",Z,"thread replies fetch failed \u2014 degrading thread context",{parent_message_id:N.parent_message_id,err:it instanceof Error?it.message:String(it)})}else Ue=!0;ke=__(N,K,Me,Be),Ue&&h("info",Z,"thread context degraded (parent or replies missing)",{channelId:M,parent_message_id:N.parent_message_id})}else ke=bs(N,Be);let hr=N.parent_message_id?[{name:"thread_context",bytes:ke.length,reply_limit:f.threadReplyLimit},{name:"incoming",bytes:N.content.length}]:[{name:"inbound_message",bytes:ke.length}];ne(r,"context_injection",{topic:R.topic,channel_id:M,channel_name:Be,message_id:N.id,parent_message_id:N.parent_message_id??null,sender_kind:N.sender_kind,mode:N.parent_message_id?"thread":"main",explicitly_mentioned:st,policy:{deliver_broadcast_messages:f.deliverBroadcastMessages,deliver_system_messages:f.deliverSystemMessages,deliver_thread_broadcast_messages:f.deliverThreadBroadcastMessages,thread_reply_limit:f.threadReplyLimit},sections:hr,rendered_bytes:ke.length}),!N.parent_message_id&&N.sender_kind!=="system"&&Array.isArray(B.wake_agent_ids)&&B.wake_agent_ids.includes(r)&&!st&&(ke+=`
506
+ 3. **\u5BF9\u8BDD\u4F4D\u7F6E**:\u5BA2\u6237\u5728\u4E3B\u9891\u9053\u53D1\u6765\u7684\u6BCF\u4E00\u6761\u9700\u6C42,\u4F60\u90FD\u5728\u90A3\u6761\u6D88\u606F\u7684 thread \u91CC\u8DDF\u8FDB(mio message reply --parent <\u5BA2\u6237\u90A3\u6761\u6D88\u606F\u7684 id,\u4FE1\u5C01\u91CC\u7684 msg= \u5373\u662F>)\u3002\u4E3B\u9891\u9053\u53EA\u56DE\u4E00\u53E5\u6781\u77ED\u7684\u5F15\u5BFC("\u6536\u5230,\u6211\u5728\u8FD9\u6761\u4E0B\u9762\u8DDF\u60A8\u786E\u8BA4\u51E0\u70B9~"),\u628A\u6240\u6709\u6F84\u6E05\u95EE\u9898\u3001\u8349\u6848\u3001\u6765\u56DE\u8BA8\u8BBA\u90FD\u653E\u8FDB thread\u3002\u4E3B\u9891\u9053\u4FDD\u6301\u6210\u5BA2\u6237\u9700\u6C42\u7684\u5E72\u51C0\u5217\u8868\u3002
507
+ 4. \u6BCF\u8F6E\u6700\u591A\u95EE 1-2 \u4E2A\u542F\u53D1\u5F0F\u95EE\u9898(\u76EE\u6807/\u8303\u56F4/\u9A8C\u6536\u6807\u51C6/\u8FB9\u754C\u60C5\u51B5),\u7136\u540E\u5728\u540C\u4E00 thread \u91CC\u66F4\u65B0\u4E00\u4EFD\u7ED3\u6784\u5316\u8349\u6848(\u6807\u9898/\u80CC\u666F/\u8981\u505A\u4EC0\u4E48/\u600E\u6837\u7B97\u5B8C\u6210)\u7ED9\u5BA2\u6237\u786E\u8BA4\u3002
508
+ 5. \u6279\u51C6\u95E8:\u53EA\u6709\u5BA2\u6237\u660E\u786E\u8868\u793A\u540C\u610F/\u786E\u8BA4/\u6279\u51C6\u540E,\u624D\u7528 mio task create --channel "#<\u672C\u9891\u9053>" --title "<\u9700\u6C42\u6807\u9898>" --attach <\u8BE5\u9700\u6C42\u6700\u521D\u90A3\u6761\u5BA2\u6237\u6D88\u606F\u7684 id> \u7ACB\u9700\u6C42\u5355(\u4E0D\u52A0 --self,\u9700\u6C42\u5355\u7B49\u771F\u4EBA\u6392\u671F,\u4E0D\u662F\u4F60\u6267\u884C)\u3002attach \u5230\u6700\u521D\u90A3\u6761\u6D88\u606F,\u8BA9\u9700\u6C42\u5355\u7684 thread \u548C\u4F60\u4EEC\u6F84\u6E05\u7684 thread \u662F\u540C\u4E00\u4E2A\u3002\u6279\u51C6\u524D\u7EDD\u4E0D\u5EFA\u5355\u3002
509
+ 6. \u7ACB\u5355\u540E\u5728\u8BE5 thread \u91CC\u56DE\u590D:"\u5DF2\u8BB0\u5F55\u4E3A\u9700\u6C42 #N,\u8FDB\u5165\u6392\u671F,\u6709\u8FDB\u5C55\u6211\u4F1A\u540C\u6B65\u60A8\u3002" \u4E0D\u627F\u8BFA\u65F6\u95F4,\u4E0D\u8BA8\u8BBA\u600E\u4E48\u5B9E\u73B0\u3002
510
+ 7. \u5224\u65AD\u9700\u6C42\u65F6\u5141\u8BB8\u4F60\u9759\u9ED8\u67E5\u9605\u8D44\u6599\u7406\u89E3\u4E1A\u52A1,\u4F46\u8F93\u51FA\u53EA\u8C08:\u8FD9\u4E2A\u9700\u6C42\u662F\u5426\u5408\u7406\u3001\u662F\u5168\u65B0\u529F\u80FD\u8FD8\u662F\u73B0\u6709\u529F\u80FD\u7684\u4F18\u5316\u3001\u5F71\u54CD\u54EA\u4E9B\u4E1A\u52A1\u6A21\u5757\u3002`;async function le(R){let B=O.get(R);if(B!==void 0)return B;let M=await J(R);return M!==void 0&&O.set(R,M),M}let ue=l??(async()=>new Set((await e.getAgentChannels(r)).map(R=>R.id))),$=null,Q=new Set,y=250,b=5e3,T=y,D=R=>new Promise(B=>{let M=setTimeout(B,R);typeof M.unref=="function"&&M.unref()});function q(){let R=ue().then(B=>(T=y,B)).catch(B=>{E(Z,"failed to resolve agent channel membership \u2014 failing safe (deliver nothing), will retry",B);let M=T;return T=Math.min(T*2,b),$===R&&($=D(M).then(()=>(q(),$??new Set))),new Set});$=R}let I=n.hostFor??(()=>t),U;t.onInjected(R=>{U?.(R)}),d&&(U=d);async function z(R){if(R.topic==="reminder.upserted"||R.topic==="reminder.canceled"){if(u){let K=R.payload;if(R.topic==="reminder.upserted")if(K.reminder){if(K.reminder.agentId!==r)return;u.upsert(K.reminder)}else h("warn",Z,"reminder.upserted event missing reminder payload",{payload:R.payload});else if(K.reminderId){if(K.agentId!==r)return;u.cancel(K.reminderId,K.version)}else h("warn",Z,"reminder.canceled event missing reminderId",{payload:R.payload})}return}if(R.topic==="channel.member_added"||R.topic==="channel.member_removed"||R.topic==="roster.member_added"||R.topic==="roster.member_removed"){let K=R.payload;K.member_id===r&&(h("info",Z,"membership changed for self \u2014 invalidating membership cache",{topic:R.topic,channelId:K.channel_id}),Q.clear(),q());return}if(R.topic!=="message.created"&&R.topic!=="thread.reply")return;let B=R.payload,M=B.channel_id,F=B.seq,ye=B.message_id,xe=B.parent_message_id;if(!M||!F){h("warn",Z,"message.created event missing channel_id or seq",{payload:B});return}ne(r,"event_received",{topic:R.topic,channel_id:M,seq:F,message_id:ye??null,parent_message_id:xe??null});let We=(await($??Promise.resolve(new Set))).has(M);if(!We&&!Q.has(M)){h("info",Z,"re-verifying membership for unknown channel before skip",{channelId:M,seq:F});try{let K=await ue();$=Promise.resolve(K),T=y,We=K.has(M),We?h("info",Z,"self-healed stale membership \u2014 channel IS a member, delivering",{channelId:M,seq:F}):Q.add(M)}catch(K){E(Z,"self-heal membership re-resolve failed \u2014 skipping this message (will retry next)",K)}}if(!We){h("debug",Z,"skip not-a-member channel",{channelId:M,seq:F,topic:R.topic}),ne(r,"skip",{reason:"not_a_member",channel_id:M,seq:F,topic:R.topic});return}if(B.sender_id&&B.sender_id===r){h("debug",Z,"skip self-authored message (pre-fetch)",{seq:F,sender_id:B.sender_id}),ne(r,"skip",{reason:"self_authored_prefetch",channel_id:M,seq:F,message_id:ye??null});return}let N,ft;if(R.topic==="thread.reply"){if(!xe){h("warn",Z,"thread.reply event missing parent_message_id",{payload:B});return}if(!e.getThreadReplies){h("warn",Z,"thread.reply received but gateway has no getThreadReplies \u2014 dropping",{channelId:M,messageSeq:F});return}try{let K=(BigInt(F)>31n?BigInt(F)-31n:0n).toString(),Me=await e.getThreadReplies(r,xe,50,K);ft=Me,N=ye&&Me.find(Ue=>Ue.id===ye)||Me.find(Ue=>Ue.seq===F),N&&!N.parent_message_id&&(N={...N,parent_message_id:xe})}catch(K){E(Z,"failed to fetch thread replies after thread.reply event",K);return}}else{let K=(BigInt(F)-1n).toString();try{N=(await x(o,M,K,1)).messages.find(Ue=>Ue.seq===F)}catch(Me){E(Z,"failed to fetch message after message.created event",Me);return}}if(!N){h("warn",Z,"message not found in GET response",{channelId:M,messageSeq:F,topic:R.topic});return}if(N.sender_id===r){h("debug",Z,"skip self-authored message",{seq:F,sender_id:N.sender_id}),ne(r,"skip",{reason:"self_authored",channel_id:M,seq:F,message_id:N.id});return}let st=_u(N.content,s,i),Zt=!!N.parent_message_id;if(N.sender_kind==="system"&&!f.deliverSystemMessages){h("debug",Z,"skip system message by context policy",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"context_policy_system_message",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}let ht=B.wake_agent_ids;if(!Zt&&N.sender_kind!=="system"){if(Array.isArray(ht)){if(!(ht.includes(r)||st)){h("debug",Z,"skip: not in server wake set",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"not_in_wake_set",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}}else if(!f.deliverBroadcastMessages&&!st){h("debug",Z,"skip broadcast message by context policy",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"context_policy_broadcast_message",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}}if(Zt&&N.sender_kind!=="system"&&Array.isArray(ht)){if(!(ht.includes(r)||st)){h("debug",Z,"skip thread reply: not in server wake set",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"thread_not_in_wake_set",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}}else if(Zt&&N.sender_kind!=="system"&&!f.deliverThreadBroadcastMessages&&!st){h("debug",Z,"skip thread broadcast message by context policy",{seq:F,message_id:N.id}),ne(r,"skip",{reason:"context_policy_thread_broadcast_message",channel_id:M,seq:F,message_id:N.id}),xt(r,M,N.seq);return}let Be;try{Be=await le(M)}catch(K){E(Z,"failed to resolve channel name \u2014 dropping message",K);return}if(!Be){h("warn",Z,"channel name unresolvable \u2014 dropping message (unreplyable target)",{channelId:M,messageSeq:F});return}let ke;if(N.parent_message_id){let K,Me=[],Ue=!1;if(e.getMessageById)try{K=await e.getMessageById(r,N.parent_message_id)}catch(it){Ue=!0,h("warn",Z,"thread parent fetch failed \u2014 degrading thread context",{parent_message_id:N.parent_message_id,err:it instanceof Error?it.message:String(it)})}else Ue=!0;if(ft&&N.parent_message_id===xe)Me=ft.slice(0,f.threadReplyLimit);else if(e.getThreadReplies)try{Me=await e.getThreadReplies(r,N.parent_message_id,f.threadReplyLimit)}catch(it){Ue=!0,h("warn",Z,"thread replies fetch failed \u2014 degrading thread context",{parent_message_id:N.parent_message_id,err:it instanceof Error?it.message:String(it)})}else Ue=!0;ke=__(N,K,Me,Be),Ue&&h("info",Z,"thread context degraded (parent or replies missing)",{channelId:M,parent_message_id:N.parent_message_id})}else ke=bs(N,Be);let hr=N.parent_message_id?[{name:"thread_context",bytes:ke.length,reply_limit:f.threadReplyLimit},{name:"incoming",bytes:N.content.length}]:[{name:"inbound_message",bytes:ke.length}];ne(r,"context_injection",{topic:R.topic,channel_id:M,channel_name:Be,message_id:N.id,parent_message_id:N.parent_message_id??null,sender_kind:N.sender_kind,mode:N.parent_message_id?"thread":"main",explicitly_mentioned:st,policy:{deliver_broadcast_messages:f.deliverBroadcastMessages,deliver_system_messages:f.deliverSystemMessages,deliver_thread_broadcast_messages:f.deliverThreadBroadcastMessages,thread_reply_limit:f.threadReplyLimit},sections:hr,rendered_bytes:ke.length}),!N.parent_message_id&&N.sender_kind!=="system"&&Array.isArray(B.wake_agent_ids)&&B.wake_agent_ids.includes(r)&&!st&&(ke+=`
510
511
 
511
512
  [routing] No teammate was @-named in this message \u2014 you have been chosen to handle it. Answer it directly. If it truly belongs to another teammate's role, hand it off by @-mentioning them in one short line instead.`),ke+=await P(N);let On=await ae(M);if(On==="client"&&N.sender_kind==="user"&&(re.has(M)?ke+=`
512
513
  (\u5BA2\u6237\u9891\u9053\xB7\u987E\u95EE\u534F\u8BAE\u751F\u6548:\u5F52\u62E2\u788E\u7247\u3001\u9010\u9879\u6F84\u6E05\u3001\u6279\u51C6\u540E\u624D\u7ACB\u5355\u3001\u7EDD\u4E0D\u8C08\u5B9E\u73B0)`:(ke=V+`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miomioos/mio-agent",
3
- "version": "0.3.16",
3
+ "version": "0.3.17",
4
4
  "description": "Mio Agent — background AI worker daemon for MioIsland. Bridges Claude Code sessions to the MioMioOS server.",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",