@tencent-ai/codebuddy-code 2.93.7-next.394de9c.20260427 → 2.94.0

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.
@@ -642,7 +642,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
642
642
  disabled:opacity-50 disabled:cursor-not-allowed text-xs font-medium rounded-lg transition-all`,children:l("interruption.exitPlanMode")})]}),g=()=>r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("button",{onClick:()=>c("allow"),disabled:d,className:`px-4 py-[6px] bg-text-primary hover:brightness-110 disabled:opacity-50
643
643
  disabled:cursor-not-allowed text-bg-primary text-xs font-medium rounded-lg transition-all`,children:l("interruption.allow")}),r.jsx("button",{onClick:()=>c("allowAll"),disabled:d,className:`px-4 py-[6px] border border-border-muted text-text-secondary hover:bg-bg-hover
644
644
  disabled:opacity-50 disabled:cursor-not-allowed text-xs font-medium rounded-lg transition-all`,children:l("interruption.allowAll")}),r.jsx("button",{onClick:()=>c("deny"),disabled:d,className:`px-4 py-[6px] border border-border-muted text-text-tertiary hover:bg-bg-hover
645
- disabled:opacity-50 disabled:cursor-not-allowed text-xs font-medium rounded-lg transition-all`,children:l("interruption.deny")})]});return r.jsxs("div",{className:"my-1.5 rounded-xl border border-border-muted bg-bg-card shadow-sm overflow-hidden",children:[r.jsxs("div",{className:"px-3.5 pt-3.5 pb-3",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[k&&r.jsx(Qf,{size:16,strokeWidth:1.8,className:"text-accent-brand flex-shrink-0"}),r.jsx("span",{className:"text-[13px] font-semibold text-text-primary",children:k?l("interruption.readyToCode"):y})]}),(b==null?void 0:b.subtitle)&&!k&&r.jsx("p",{className:"text-xs text-text-tertiary mt-1.5 leading-relaxed",children:b.subtitle}),(b==null?void 0:b.content)&&r.jsx("div",{className:"mt-2",children:b.content})]}),r.jsx("div",{className:"px-3.5 py-2.5 bg-bg-secondary/30 border-t border-border-muted/40",children:k?v():g()})]})}function Gv({q:e,value:t,customText:n,onChangeValue:i,onChangeCustomText:s}){const{t:l}=ne(),d=e.options.length>0,a=T.useCallback(p=>{if(e.multiSelect){const h=Array.isArray(t)?t:[];h.includes(p)?i(h.filter(b=>b!==p)):i([...h,p])}else i(p),s("")},[e.multiSelect,t,i,s]),o=T.useCallback(p=>{s(p),e.multiSelect||i(p)},[e.multiSelect,i,s]),c=T.useCallback(p=>e.multiSelect?Array.isArray(t)&&t.includes(p):t===p&&!n,[e.multiSelect,t,n]);return r.jsxs("div",{className:"space-y-2",children:[r.jsxs("p",{className:"text-[13px] text-text-primary font-medium leading-relaxed",children:[e.header&&r.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded bg-accent-brand/10 text-accent-brand text-[11px] font-medium mr-1.5",children:e.header}),e.question,e.multiSelect&&r.jsxs("span",{className:"text-[10px] text-text-tertiary ml-1",children:["(",l("question.multiple"),")"]})]}),d&&r.jsx("div",{className:"space-y-1",children:e.options.map(p=>{const h=c(p.label);return r.jsx("button",{type:"button",onClick:()=>a(p.label),className:`w-full text-left px-3 py-2 rounded-lg border text-xs transition-colors ${h?"border-accent-brand bg-accent-brand/10 text-text-primary":"border-border-default bg-bg-card hover:bg-bg-hover text-text-secondary"}`,children:r.jsxs("span",{className:"flex items-center gap-2",children:[r.jsx("span",{className:`flex-shrink-0 w-3.5 h-3.5 rounded-${e.multiSelect?"sm":"full"} border ${h?"border-accent-brand bg-accent-brand":"border-border-muted"} flex items-center justify-center`,children:h&&r.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",children:r.jsx("path",{d:"M1.5 4L3 5.5L6.5 2",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),r.jsxs("span",{className:"flex-1",children:[r.jsx("span",{className:"font-medium",children:p.label}),p.description&&r.jsxs("span",{className:"text-text-tertiary ml-1",children:["— ",p.description]})]})]})},p.label)})}),r.jsx("div",{className:"mt-1.5",children:r.jsx("input",{type:"text",placeholder:l("question.customAnswer"),value:n,onChange:p=>o(p.target.value),className:"w-full px-3 py-2 rounded-lg border border-border-default bg-bg-card text-text-primary text-xs placeholder:text-text-tertiary focus:outline-none focus:border-accent-brand transition-colors"})})]})}function Wv({questions:e,answers:t,customTexts:n}){const{t:i}=ne();return r.jsxs("div",{className:"space-y-2",children:[r.jsx("p",{className:"text-[13px] text-text-primary font-medium",children:i("question.reviewAnswers")}),r.jsx("div",{className:"space-y-1.5",children:e.map(s=>{const l=t[s.id],d=n[s.id]||"";let a;if(s.multiSelect){const o=Array.isArray(l)?[...l]:[];d.trim()&&o.push(d.trim()),a=o.length>0?o.join(", "):"—"}else a=d.trim()||(typeof l=="string"?l:"")||"—";return r.jsxs("div",{className:"flex items-start gap-2 text-xs",children:[s.header&&r.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded bg-accent-brand/10 text-accent-brand text-[10px] font-medium flex-shrink-0 mt-0.5",children:s.header}),r.jsxs("div",{className:"flex-1",children:[r.jsx("span",{className:"text-text-secondary",children:s.question}),r.jsxs("div",{className:"flex items-center gap-1 mt-0.5",children:[a!=="—"&&r.jsx(Bt,{size:12,className:"text-accent-green flex-shrink-0"}),r.jsx("span",{className:`font-medium ${a==="—"?"text-text-tertiary":"text-text-primary"}`,children:a})]})]})]},s.id)})})]})}function qv(e,t,n){const i={};for(const s of e){const l=t[s.id],d=n[s.id]||"",a=s.question;if(s.multiSelect){const o=Array.isArray(l)?[...l]:[];d.trim()&&o.push(d.trim()),i[a]=o}else i[a]=d.trim()||(typeof l=="string"?l:"")||""}return i}function Vv({question:e}){const{t}=ne(),{sessionId:n}=nt(),i=e.sessionId||n,{submitQuestion:s,cancelQuestion:l}=tt(),[d,a]=T.useState(!1),[o,c]=T.useState(()=>{const _={};for(const S of e.questions)_[S.id]=S.multiSelect?[]:"";return _}),[p,h]=T.useState(()=>{const _={};for(const S of e.questions)_[S.id]="";return _}),b=e.questions.length>1,[y,k]=T.useState(0),v=e.questions.length,g=T.useCallback((_,S)=>{c(w=>({...w,[_]:S}))},[]),m=T.useCallback((_,S)=>{h(w=>({...w,[_]:S}))},[]),u=T.useCallback(async()=>{if(!(!i||d)){a(!0);try{const _=qv(e.questions,o,p);e.source==="interruption"?await Re().resolveInterruption(i,e.toolCallId,"allow",_):await Re().submitQuestionAnswers(i,e.toolCallId,_),s(e.id,_)}catch(_){console.error("Question submit failed:",_),a(!1)}}},[i,e.source,e.toolCallId,e.id,e.questions,o,p,s,d]),f=T.useCallback(async()=>{if(!(!i||d)){a(!0);try{e.source==="interruption"?await Re().resolveInterruption(i,e.toolCallId,"deny"):await Re().cancelQuestionAnswers(i,e.toolCallId),l(e.id)}catch(_){console.error("Question cancel failed:",_),a(!1)}}},[i,e.source,e.toolCallId,e.id,l,d]);if(e.status!=="pending")return e.status==="answered"&&e.answers?r.jsx("div",{className:"my-1.5 rounded-xl border border-border-muted/40 bg-bg-card/50 overflow-hidden",children:r.jsxs("div",{className:"px-3.5 py-2.5",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Xr,{size:14,strokeWidth:1.8,className:"text-text-tertiary flex-shrink-0"}),r.jsx("span",{className:"text-xs font-medium text-text-tertiary",children:b?t("question.titleWithCount").replace("{count}",String(e.questions.length)):t("question.singleTitle")}),r.jsx("span",{className:"text-[10px] text-accent-green font-medium",children:t("question.answered")})]}),r.jsx("div",{className:"space-y-1",children:e.questions.map(_=>{const S=e.answers[_.question]??e.answers[_.id],w=Array.isArray(S)?S.join(", "):S||"—";return r.jsxs("div",{className:"flex items-baseline gap-1.5 text-xs",children:[_.header&&r.jsx("span",{className:"inline-block px-1 py-0.5 rounded bg-accent-brand/10 text-accent-brand text-[10px] font-medium",children:_.header}),r.jsx("span",{className:"text-text-primary font-medium",children:w})]},_.id)})})]})}):r.jsx("div",{className:"my-1.5 rounded-xl border border-border-muted/40 bg-bg-card/50 overflow-hidden",children:r.jsxs("div",{className:"px-3.5 py-2.5 flex items-center gap-2",children:[r.jsx(Xr,{size:14,strokeWidth:1.8,className:"text-text-tertiary flex-shrink-0"}),r.jsx("span",{className:"text-xs text-text-tertiary",children:t("question.cancelled")})]})});const x=e.questions[b?Math.min(y,e.questions.length-1):0],E=b&&y===v;return r.jsxs("div",{className:"my-1.5 rounded-xl border border-accent-brand/50 bg-bg-card shadow-sm overflow-hidden animate-[borderGlow_2s_ease-in-out_infinite]",children:[r.jsxs("div",{className:"px-3.5 pt-3.5 pb-3",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(Xr,{size:16,strokeWidth:1.8,className:"text-accent-brand flex-shrink-0"}),r.jsx("span",{className:"text-[13px] font-semibold text-text-primary",children:b?t("question.titleWithCount").replace("{count}",String(e.questions.length)):t("question.singleTitle")})]}),b&&r.jsxs("div",{className:"flex items-center gap-1 mt-2.5 mb-2 overflow-x-auto",children:[e.questions.map((_,S)=>r.jsx("button",{type:"button",onClick:()=>k(S),className:`px-2.5 py-1 rounded-md text-[11px] font-medium whitespace-nowrap transition-colors ${y===S?"bg-accent-brand text-white":"bg-bg-secondary/50 text-text-secondary hover:text-text-primary"}`,children:_.header||`Q${S+1}`},_.id)),r.jsx("button",{type:"button",onClick:()=>k(v),className:`px-2.5 py-1 rounded-md text-[11px] font-medium whitespace-nowrap transition-colors ${E?"bg-accent-brand text-white":"bg-bg-secondary/50 text-text-secondary hover:text-text-primary"}`,children:t("question.reviewTab")})]}),r.jsx("div",{className:"mt-2",children:E?r.jsx(Wv,{questions:e.questions,answers:o,customTexts:p}):r.jsx(Gv,{q:x,value:o[x.id]??"",customText:p[x.id]??"",onChangeValue:_=>g(x.id,_),onChangeCustomText:_=>m(x.id,_)})})]}),r.jsx("div",{className:"px-3.5 py-2.5 bg-bg-secondary/30 border-t border-border-muted/40",children:r.jsxs("div",{className:"flex items-center gap-2",children:[b&&!E?r.jsx("button",{type:"button",onClick:()=>k(_=>Math.min(_+1,v)),className:"px-4 py-[6px] bg-accent-brand hover:brightness-110 text-white text-xs font-medium rounded-lg transition-all",children:t("question.next")}):r.jsx("button",{type:"button",onClick:u,disabled:d,className:"px-4 py-[6px] bg-accent-brand hover:brightness-110 disabled:opacity-50 disabled:cursor-not-allowed text-white text-xs font-medium rounded-lg transition-all",children:t("question.submit")}),r.jsx("button",{type:"button",onClick:f,disabled:d,className:"px-4 py-[6px] border border-border-default bg-bg-card hover:bg-bg-hover disabled:opacity-50 disabled:cursor-not-allowed text-text-tertiary text-xs font-medium rounded-lg transition-colors",children:t("question.cancel")})]})})]})}function uu(e){try{const t=JSON.parse(e);if(t&&typeof t=="object"&&typeof t.text=="string")return t.text;if(Array.isArray(t)){const n=t.filter(i=>i&&typeof i.text=="string").map(i=>i.text);if(n.length>0)return n.join(`
645
+ disabled:opacity-50 disabled:cursor-not-allowed text-xs font-medium rounded-lg transition-all`,children:l("interruption.deny")})]});return r.jsxs("div",{className:"my-1.5 rounded-xl border border-border-muted bg-bg-card shadow-sm overflow-hidden",children:[r.jsxs("div",{className:"px-3.5 pt-3.5 pb-3",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[k&&r.jsx(Qf,{size:16,strokeWidth:1.8,className:"text-accent-brand flex-shrink-0"}),r.jsx("span",{className:"text-[13px] font-semibold text-text-primary",children:k?l("interruption.readyToCode"):y})]}),(b==null?void 0:b.subtitle)&&!k&&r.jsx("p",{className:"text-xs text-text-tertiary mt-1.5 leading-relaxed",children:b.subtitle}),(b==null?void 0:b.content)&&r.jsx("div",{className:"mt-2",children:b.content})]}),r.jsx("div",{className:"px-3.5 py-2.5 bg-bg-secondary/30 border-t border-border-muted/40",children:k?v():g()})]})}function Gv({q:e,value:t,customText:n,onChangeValue:i,onChangeCustomText:s}){const{t:l}=ne(),d=e.options.length>0,a=T.useCallback(p=>{if(e.multiSelect){const h=Array.isArray(t)?t:[];h.includes(p)?i(h.filter(b=>b!==p)):i([...h,p])}else i(p),s("")},[e.multiSelect,t,i,s]),o=T.useCallback(p=>{s(p),e.multiSelect||i(p)},[e.multiSelect,i,s]),c=T.useCallback(p=>e.multiSelect?Array.isArray(t)&&t.includes(p):t===p&&!n,[e.multiSelect,t,n]);return r.jsxs("div",{className:"space-y-2",children:[r.jsxs("p",{className:"text-[13px] text-text-primary font-medium leading-relaxed",children:[e.header&&r.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded bg-accent-brand/10 text-accent-brand text-[11px] font-medium mr-1.5",children:e.header}),e.question,e.multiSelect&&r.jsxs("span",{className:"text-[10px] text-text-tertiary ml-1",children:["(",l("question.multiple"),")"]})]}),d&&r.jsx("div",{className:"space-y-1",children:e.options.map(p=>{const h=c(p.label);return r.jsx("button",{type:"button",onClick:()=>a(p.label),className:`w-full text-left px-3 py-2 rounded-lg border text-xs transition-colors ${h?"border-accent-brand bg-accent-brand/10 text-text-primary":"border-border-default bg-bg-card hover:bg-bg-hover text-text-secondary"}`,children:r.jsxs("span",{className:"flex items-center gap-2",children:[r.jsx("span",{className:`flex-shrink-0 w-3.5 h-3.5 rounded-${e.multiSelect?"sm":"full"} border ${h?"border-accent-brand bg-accent-brand":"border-border-muted"} flex items-center justify-center`,children:h&&r.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",children:r.jsx("path",{d:"M1.5 4L3 5.5L6.5 2",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),r.jsxs("span",{className:"flex-1",children:[r.jsx("span",{className:"font-medium",children:p.label}),p.description&&r.jsxs("span",{className:"text-text-tertiary ml-1",children:["— ",p.description]})]})]})},p.label)})}),r.jsx("div",{className:"mt-1.5",children:r.jsx("input",{type:"text",placeholder:l("question.customAnswer"),value:n,onChange:p=>o(p.target.value),className:"w-full px-3 py-2 rounded-lg border border-border-default bg-bg-card text-text-primary text-xs placeholder:text-text-tertiary focus:outline-none focus:border-accent-brand transition-colors"})})]})}function Wv({questions:e,answers:t,customTexts:n}){const{t:i}=ne();return r.jsxs("div",{className:"space-y-2",children:[r.jsx("p",{className:"text-[13px] text-text-primary font-medium",children:i("question.reviewAnswers")}),r.jsx("div",{className:"space-y-1.5",children:e.map(s=>{const l=t[s.id],d=n[s.id]||"";let a;if(s.multiSelect){const o=Array.isArray(l)?[...l]:[];d.trim()&&o.push(d.trim()),a=o.length>0?o.join(", "):"—"}else a=d.trim()||(typeof l=="string"?l:"")||"—";return r.jsxs("div",{className:"flex items-start gap-2 text-xs",children:[s.header&&r.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded bg-accent-brand/10 text-accent-brand text-[10px] font-medium flex-shrink-0 mt-0.5",children:s.header}),r.jsxs("div",{className:"flex-1",children:[r.jsx("span",{className:"text-text-secondary",children:s.question}),r.jsxs("div",{className:"flex items-center gap-1 mt-0.5",children:[a!=="—"&&r.jsx(Bt,{size:12,className:"text-accent-green flex-shrink-0"}),r.jsx("span",{className:`font-medium ${a==="—"?"text-text-tertiary":"text-text-primary"}`,children:a})]})]})]},s.id)})})]})}function qv(e,t,n){const i={};return e.forEach((s,l)=>{const d=t[s.id],a=n[s.id]||"",o=`q_${l}`;if(s.multiSelect){const c=Array.isArray(d)?[...d]:[];a.trim()&&c.push(a.trim()),i[o]=c}else i[o]=a.trim()||(typeof d=="string"?d:"")||""}),i}function Vv({question:e}){const{t}=ne(),{sessionId:n}=nt(),i=e.sessionId||n,{submitQuestion:s,cancelQuestion:l}=tt(),[d,a]=T.useState(!1),[o,c]=T.useState(()=>{const _={};for(const S of e.questions)_[S.id]=S.multiSelect?[]:"";return _}),[p,h]=T.useState(()=>{const _={};for(const S of e.questions)_[S.id]="";return _}),b=e.questions.length>1,[y,k]=T.useState(0),v=e.questions.length,g=T.useCallback((_,S)=>{c(w=>({...w,[_]:S}))},[]),m=T.useCallback((_,S)=>{h(w=>({...w,[_]:S}))},[]),u=T.useCallback(async()=>{if(!(!i||d)){a(!0);try{const _=qv(e.questions,o,p);e.source==="interruption"?await Re().resolveInterruption(i,e.toolCallId,"allow",_):await Re().submitQuestionAnswers(i,e.toolCallId,_),s(e.id,_)}catch(_){console.error("Question submit failed:",_),a(!1)}}},[i,e.source,e.toolCallId,e.id,e.questions,o,p,s,d]),f=T.useCallback(async()=>{if(!(!i||d)){a(!0);try{e.source==="interruption"?await Re().resolveInterruption(i,e.toolCallId,"deny"):await Re().cancelQuestionAnswers(i,e.toolCallId),l(e.id)}catch(_){console.error("Question cancel failed:",_),a(!1)}}},[i,e.source,e.toolCallId,e.id,l,d]);if(e.status!=="pending")return e.status==="answered"&&e.answers?r.jsx("div",{className:"my-1.5 rounded-xl border border-border-muted/40 bg-bg-card/50 overflow-hidden",children:r.jsxs("div",{className:"px-3.5 py-2.5",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Xr,{size:14,strokeWidth:1.8,className:"text-text-tertiary flex-shrink-0"}),r.jsx("span",{className:"text-xs font-medium text-text-tertiary",children:b?t("question.titleWithCount").replace("{count}",String(e.questions.length)):t("question.singleTitle")}),r.jsx("span",{className:"text-[10px] text-accent-green font-medium",children:t("question.answered")})]}),r.jsx("div",{className:"space-y-1",children:e.questions.map((_,S)=>{const w=e.answers[`q_${S}`]??e.answers[_.question]??e.answers[_.id],N=Array.isArray(w)?w.join(", "):w||"—";return r.jsxs("div",{className:"flex items-baseline gap-1.5 text-xs",children:[_.header&&r.jsx("span",{className:"inline-block px-1 py-0.5 rounded bg-accent-brand/10 text-accent-brand text-[10px] font-medium",children:_.header}),r.jsx("span",{className:"text-text-primary font-medium",children:N})]},_.id)})})]})}):r.jsx("div",{className:"my-1.5 rounded-xl border border-border-muted/40 bg-bg-card/50 overflow-hidden",children:r.jsxs("div",{className:"px-3.5 py-2.5 flex items-center gap-2",children:[r.jsx(Xr,{size:14,strokeWidth:1.8,className:"text-text-tertiary flex-shrink-0"}),r.jsx("span",{className:"text-xs text-text-tertiary",children:t("question.cancelled")})]})});const x=e.questions[b?Math.min(y,e.questions.length-1):0],E=b&&y===v;return r.jsxs("div",{className:"my-1.5 rounded-xl border border-accent-brand/50 bg-bg-card shadow-sm overflow-hidden animate-[borderGlow_2s_ease-in-out_infinite]",children:[r.jsxs("div",{className:"px-3.5 pt-3.5 pb-3",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(Xr,{size:16,strokeWidth:1.8,className:"text-accent-brand flex-shrink-0"}),r.jsx("span",{className:"text-[13px] font-semibold text-text-primary",children:b?t("question.titleWithCount").replace("{count}",String(e.questions.length)):t("question.singleTitle")})]}),b&&r.jsxs("div",{className:"flex items-center gap-1 mt-2.5 mb-2 overflow-x-auto",children:[e.questions.map((_,S)=>r.jsx("button",{type:"button",onClick:()=>k(S),className:`px-2.5 py-1 rounded-md text-[11px] font-medium whitespace-nowrap transition-colors ${y===S?"bg-accent-brand text-white":"bg-bg-secondary/50 text-text-secondary hover:text-text-primary"}`,children:_.header||`Q${S+1}`},_.id)),r.jsx("button",{type:"button",onClick:()=>k(v),className:`px-2.5 py-1 rounded-md text-[11px] font-medium whitespace-nowrap transition-colors ${E?"bg-accent-brand text-white":"bg-bg-secondary/50 text-text-secondary hover:text-text-primary"}`,children:t("question.reviewTab")})]}),r.jsx("div",{className:"mt-2",children:E?r.jsx(Wv,{questions:e.questions,answers:o,customTexts:p}):r.jsx(Gv,{q:x,value:o[x.id]??"",customText:p[x.id]??"",onChangeValue:_=>g(x.id,_),onChangeCustomText:_=>m(x.id,_)})})]}),r.jsx("div",{className:"px-3.5 py-2.5 bg-bg-secondary/30 border-t border-border-muted/40",children:r.jsxs("div",{className:"flex items-center gap-2",children:[b&&!E?r.jsx("button",{type:"button",onClick:()=>k(_=>Math.min(_+1,v)),className:"px-4 py-[6px] bg-accent-brand hover:brightness-110 text-white text-xs font-medium rounded-lg transition-all",children:t("question.next")}):r.jsx("button",{type:"button",onClick:u,disabled:d,className:"px-4 py-[6px] bg-accent-brand hover:brightness-110 disabled:opacity-50 disabled:cursor-not-allowed text-white text-xs font-medium rounded-lg transition-all",children:t("question.submit")}),r.jsx("button",{type:"button",onClick:f,disabled:d,className:"px-4 py-[6px] border border-border-default bg-bg-card hover:bg-bg-hover disabled:opacity-50 disabled:cursor-not-allowed text-text-tertiary text-xs font-medium rounded-lg transition-colors",children:t("question.cancel")})]})})]})}function uu(e){try{const t=JSON.parse(e);if(t&&typeof t=="object"&&typeof t.text=="string")return t.text;if(Array.isArray(t)){const n=t.filter(i=>i&&typeof i.text=="string").map(i=>i.text);if(n.length>0)return n.join(`
646
646
  `)}}catch{}return e}function Qn(e){return e.replace(/\\r\\n/g,`
647
647
  `).replace(/\\n/g,`
648
648
  `)}function lt(e){if(typeof e=="string"){const t=uu(e);return Qn(t)}if(!e)return"";try{if(typeof e=="object"&&e!==null){const t=e,n=Object.keys(t);if(n.length===1&&typeof t[n[0]]=="string"){const i=t[n[0]],s=uu(i);return Qn(s)}if(typeof t.text=="string"&&t.type==="text")return Qn(t.text)}if(Array.isArray(e)){const t=e.filter(n=>n&&typeof n.text=="string").map(n=>n.text);if(t.length>0)return Qn(t.join(`
@@ -17,7 +17,7 @@
17
17
  <link rel="preconnect" href="https://fonts.googleapis.com">
18
18
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
19
19
  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
20
- <script type="module" crossorigin src="/assets/index-DCBQHUWW.js"></script>
20
+ <script type="module" crossorigin src="/assets/index-ysyL0Rz1.js"></script>
21
21
  <link rel="modulepreload" crossorigin href="/assets/markdown-Ce2Umeb2.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/vendor-DpYitQz5.js">
23
23
  <link rel="stylesheet" crossorigin href="/assets/index-pCdeaJFc.css">
package/dist/web-ui/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let t={};const r=e=>i(e,l),u={module:{uri:l},exports:t,require:r};s[l]=Promise.all(n.map(e=>u[e]||r(e))).then(e=>(o(...e),t))}}define(["./workbox-e082a648"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"logo.svg",revision:"6165db837a6039880af9705aa09be574"},{url:"index.html",revision:"0179f4d115dd725d71530c67614943f1"},{url:"assets/vendor-DpYitQz5.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/markdown-Ce2Umeb2.js",revision:null},{url:"assets/logo-iZVLr450.svg",revision:null},{url:"assets/index-pCdeaJFc.css",revision:null},{url:"assets/index-DixJ0kqk.js",revision:null},{url:"assets/index-DCBQHUWW.js",revision:null},{url:"assets/fontawesome-B-jkhYfk.woff2",revision:null},{url:"assets/file-icons-C0jOugUK.woff2",revision:null},{url:"assets/devopicons-QN4QXivI.woff2",revision:null},{url:"logo.svg",revision:"6165db837a6039880af9705aa09be574"},{url:"manifest.webmanifest",revision:"35cfb533d72bccfb26065a3c11b74203"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/gateway/,/^\/docs\//]})),e.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),e.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
1
+ if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let t={};const r=e=>i(e,l),u={module:{uri:l},exports:t,require:r};s[l]=Promise.all(n.map(e=>u[e]||r(e))).then(e=>(o(...e),t))}}define(["./workbox-e082a648"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"logo.svg",revision:"6165db837a6039880af9705aa09be574"},{url:"index.html",revision:"e4426bdd4f98609a1ec4786e896dfeaf"},{url:"assets/vendor-DpYitQz5.js",revision:null},{url:"assets/octicons-CaZ_fok2.woff2",revision:null},{url:"assets/mfixx-CpAhKOZz.woff2",revision:null},{url:"assets/markdown-Ce2Umeb2.js",revision:null},{url:"assets/logo-iZVLr450.svg",revision:null},{url:"assets/index-ysyL0Rz1.js",revision:null},{url:"assets/index-pCdeaJFc.css",revision:null},{url:"assets/index-DixJ0kqk.js",revision:null},{url:"assets/fontawesome-B-jkhYfk.woff2",revision:null},{url:"assets/file-icons-C0jOugUK.woff2",revision:null},{url:"assets/devopicons-QN4QXivI.woff2",revision:null},{url:"logo.svg",revision:"6165db837a6039880af9705aa09be574"},{url:"manifest.webmanifest",revision:"35cfb533d72bccfb26065a3c11b74203"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api/,/^\/gateway/,/^\/docs\//]})),e.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),e.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:20,maxAgeSeconds:31536e3})]}),"GET")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencent-ai/codebuddy-code",
3
- "version": "2.93.7-next.394de9c.20260427",
3
+ "version": "2.94.0",
4
4
  "description": "Use CodeBuddy, Tencent's AI assistant, right from your terminal. CodeBuddy can understand your codebase, edit files, run terminal commands, and handle entire workflows for you.",
5
5
  "main": "lib/node/index.js",
6
6
  "typings": "lib/node/index.d.ts",
@@ -29,8 +29,7 @@
29
29
  "url": "https://cnb.cool/codebuddy/codebuddy-code/-/issues"
30
30
  },
31
31
  "publishConfig": {
32
- "access": "public",
33
- "tag": "next"
32
+ "access": "public"
34
33
  },
35
34
  "scripts": {},
36
35
  "devDependencies": {},
@@ -56,7 +56,8 @@
56
56
  "CronList",
57
57
  "DelegateTool",
58
58
  "WeChatReply",
59
- "WeComReply"
59
+ "WeComReply",
60
+ "ComputerUse"
60
61
  ],
61
62
  "tags": [
62
63
  "cli",
@@ -88,7 +89,8 @@
88
89
  "DeferExecuteTool",
89
90
  "SendMessage",
90
91
  "NotebookEdit",
91
- "LSP"
92
+ "LSP",
93
+ "ComputerUse"
92
94
  ],
93
95
  "tags": [
94
96
  "cli",
@@ -390,11 +392,12 @@
390
392
  "productFeatures": {
391
393
  "BillingNotice": false,
392
394
  "CustomModelsJSON": true,
395
+ "CustomModelIdPrefix": true,
393
396
  "DeferToolLoading": true,
394
397
  "ImageGen": true,
395
398
  "ScheduledTasks": true,
396
399
  "SkillManage": false
397
400
  },
398
- "commit": "394de9c4f2d39409a6d4d34b73ea44a94ad7d670",
399
- "date": "2026-04-27T10:22:00.273Z"
401
+ "commit": "a9d554ee29db4840a2a490f59968fb67bededc0a",
402
+ "date": "2026-04-27T17:25:04.842Z"
400
403
  }
@@ -65,7 +65,8 @@
65
65
  "CronList",
66
66
  "DelegateTool",
67
67
  "WeChatReply",
68
- "WeComReply"
68
+ "WeComReply",
69
+ "ComputerUse"
69
70
  ],
70
71
  "tags": [
71
72
  "cli",
@@ -97,7 +98,8 @@
97
98
  "DeferExecuteTool",
98
99
  "SendMessage",
99
100
  "NotebookEdit",
100
- "LSP"
101
+ "LSP",
102
+ "ComputerUse"
101
103
  ],
102
104
  "tags": [
103
105
  "cli",
@@ -574,6 +576,7 @@
574
576
  "productFeatures": {
575
577
  "BillingNotice": false,
576
578
  "CustomModelsJSON": true,
579
+ "CustomModelIdPrefix": true,
577
580
  "DeferToolLoading": true,
578
581
  "ImageGen": true,
579
582
  "RequestBodyGzip": true,
@@ -602,6 +605,6 @@
602
605
  }
603
606
  }
604
607
  },
605
- "commit": "394de9c4f2d39409a6d4d34b73ea44a94ad7d670",
606
- "date": "2026-04-27T10:22:00.284Z"
608
+ "commit": "a9d554ee29db4840a2a490f59968fb67bededc0a",
609
+ "date": "2026-04-27T17:25:04.840Z"
607
610
  }
package/product.ioa.json CHANGED
@@ -24,6 +24,7 @@
24
24
  "gemini-3.0-flash",
25
25
  "gemini-2.5-pro",
26
26
  "gemini-3.1-flash-lite",
27
+ "gpt-5.5",
27
28
  "gpt-5.4",
28
29
  "gpt-5.2",
29
30
  "gpt-5.3-codex",
@@ -90,7 +91,8 @@
90
91
  "CronList",
91
92
  "DelegateTool",
92
93
  "WeChatReply",
93
- "WeComReply"
94
+ "WeComReply",
95
+ "ComputerUse"
94
96
  ],
95
97
  "tags": [
96
98
  "cli",
@@ -123,7 +125,8 @@
123
125
  "SendMessage",
124
126
  "NotebookEdit",
125
127
  "LSP",
126
- "SkillManage"
128
+ "SkillManage",
129
+ "ComputerUse"
127
130
  ],
128
131
  "tags": [
129
132
  "cli",
@@ -737,6 +740,25 @@
737
740
  "lite"
738
741
  ]
739
742
  },
743
+ {
744
+ "credits": "x3.31 credits",
745
+ "id": "gpt-5.5",
746
+ "name": "GPT-5.5",
747
+ "vendor": "e",
748
+ "maxOutputTokens": 72000,
749
+ "maxInputTokens": 1000000,
750
+ "supportsToolCall": true,
751
+ "supportsImages": true,
752
+ "supportsReasoning": true,
753
+ "onlyReasoning": true,
754
+ "reasoning": {
755
+ "effort": "high",
756
+ "summary": "auto"
757
+ },
758
+ "descriptionEn": "OpenAI's flagship model, excelling at long-horizon tasks",
759
+ "descriptionZh": "OpenAI 旗舰编码模型,擅长长程任务",
760
+ "maxAllowedSize": 1000000
761
+ },
740
762
  {
741
763
  "credits": "x1.65 credits",
742
764
  "id": "gpt-5.4",
@@ -974,6 +996,7 @@
974
996
  "productFeatures": {
975
997
  "BillingNotice": false,
976
998
  "CustomModelsJSON": true,
999
+ "CustomModelIdPrefix": true,
977
1000
  "DeferToolLoading": true,
978
1001
  "ImageGen": true,
979
1002
  "ImageEdit": true,
@@ -1004,6 +1027,6 @@
1004
1027
  }
1005
1028
  }
1006
1029
  },
1007
- "commit": "394de9c4f2d39409a6d4d34b73ea44a94ad7d670",
1008
- "date": "2026-04-27T10:22:00.257Z"
1030
+ "commit": "a9d554ee29db4840a2a490f59968fb67bededc0a",
1031
+ "date": "2026-04-27T17:25:04.791Z"
1009
1032
  }
package/product.json CHANGED
@@ -158,6 +158,25 @@
158
158
  "lite"
159
159
  ]
160
160
  },
161
+ {
162
+ "credits": "x3.31 credits",
163
+ "id": "gpt-5.5",
164
+ "name": "GPT-5.5",
165
+ "vendor": "e",
166
+ "maxOutputTokens": 72000,
167
+ "maxInputTokens": 1000000,
168
+ "supportsToolCall": true,
169
+ "supportsImages": true,
170
+ "supportsReasoning": true,
171
+ "onlyReasoning": true,
172
+ "reasoning": {
173
+ "effort": "high",
174
+ "summary": "auto"
175
+ },
176
+ "descriptionEn": "OpenAI's flagship model, excelling at long-horizon tasks",
177
+ "descriptionZh": "OpenAI 旗舰编码模型,擅长长程任务",
178
+ "maxAllowedSize": 1000000
179
+ },
161
180
  {
162
181
  "credits": "x1.65 credits",
163
182
  "id": "gpt-5.4",
@@ -749,6 +768,10 @@
749
768
  "name": "tool-imageedit-description",
750
769
  "template": "Edit or modify an existing image using AI models. Use this tool when you have an image and want to transform it based on text instructions (e.g., style transfer, add elements, modify colors, etc.).\n"
751
770
  },
771
+ {
772
+ "name": "tool-computeruse-description",
773
+ "template": "Control the macOS desktop by taking screenshots and simulating mouse/keyboard\ninput. This tool follows Anthropic's `computer_20250124` parameter schema.\n\n**Experimental.** This tool is macOS-only and disabled unless\n`CODEBUDDY_COMPUTER_USE_ENABLED=1` is set in the environment. Behavior may\nchange in future releases. Each action requires the user's approval unless an\nallow rule is configured.\n\n## Actions\n\n- `screenshot` — Capture the current display. The image is returned\n directly in the tool_result so you can see it immediately — you do NOT\n need a separate Read call. Images are downscaled to 1280px on the longest\n edge and returned as JPEG to keep context costs low.\n\n **MANDATORY observation protocol (防幻视):**\n After EVERY screenshot, BEFORE any click/type/key action, your first\n response MUST be a literal pixel-level observation of what is actually\n visible in the returned image:\n - Top menu bar: which app name, which menu items\n - Active window: title bar text, which app owns it\n - Key regions: what text, buttons, input fields are visible; what is\n in each input; where the cursor/focus is\n - For list/candidate UIs (search results, contact lists, file pickers):\n describe the items near the coordinate you plan to click, including\n ±20px neighbors\n Do NOT skip observation and jump to the next action based on an expected\n workflow. Do NOT describe the screen from memory or assumption. If you\n cannot see an element you expected, say so and take another screenshot\n rather than guessing coordinates.\n\n- `left_click` / `right_click` / `middle_click` / `double_click` /\n `triple_click` / `mouse_move` — Interact with a point. Requires\n `coordinate: [x, y]` in logical pixels (top-left origin). Before any\n irreversible click (send message, confirm, submit), take a fresh\n screenshot and observe again.\n\n- `left_click_drag` — Press at `start_coordinate`, drag to `coordinate`,\n release. Both are `[x, y]` arrays.\n\n- `type` — Type arbitrary text (`text` field) at the current focus.\n Supports Unicode (including CJK). Do NOT use this for keyboard shortcuts.\n\n- `key` — Press a key or shortcut with xdotool syntax in the `text` field:\n `\"escape\"`, `\"return\"`, `\"cmd+shift+a\"`, `\"ctrl+c\"`. Supported modifiers:\n `cmd`, `ctrl`, `alt`/`option`, `shift`, `fn`. Supported named keys: return,\n tab, space, delete/backspace, escape, left, right, up, down, home, end,\n pageup, pagedown, f1-f12. Single characters use the character directly.\n\n- `hold_key` — Hold a single named key (`text`) for `duration` seconds.\n Modifiers are not supported in hold_key.\n\n- `scroll` — Scroll at `coordinate: [x, y]` in `scroll_direction`\n (up/down/left/right) for `scroll_amount` ticks (default 3). Requires\n cliclick (`brew install cliclick`).\n\n- `wait` — Pause for `duration` seconds. Use this to let UI transitions\n settle before another action.\n\n- `cursor_position` — Return the current mouse position.\n\n## Usage notes\n\n- Coordinates use LOGICAL pixels, not physical. Always take a fresh\n `screenshot` first — never reuse old coordinates.\n\n- Launching an app: prefer `key: \"cmd+space\"` (Spotlight) → `type: \"<app>\"`\n → `key: \"return\"` over hunting for Dock/desktop icons, which depends on\n unreliable UI layout.\n\n- Brand confusion on macOS: searching \"WeChat\" in Spotlight opens **企业\n 微信 (WeCom)**, not personal 微信 (WeChat). Search \"微信\" for personal\n WeChat. Always confirm the opened app by reading the top menu bar app\n name in the next screenshot.\n\n- First-time invocation may trigger macOS Accessibility / Screen Recording\n permission prompts. If an action returns a permission error, ask the user\n to open System Settings → Privacy & Security → Accessibility and enable\n their terminal application, then restart it.\n\n- `cliclick` is an optional dependency. When installed, it provides faster\n and more reliable mouse control and is required for `mouse_move`,\n `middle_click`, `triple_click`, `left_click_drag`, and `scroll`. Without\n it, the other actions fall back to AppleScript (osascript).\n"
774
+ },
752
775
  {
753
776
  "name": "tool-teamcreate-description",
754
777
  "template": "# TeamCreate\n\n## When to Use\n\nUse this tool proactively whenever:\n- The user explicitly asks to use a team, swarm, or group of agents\n- The user mentions wanting agents to work together, coordinate, or collaborate\n- A task is complex enough that it would benefit from parallel work by multiple agents (e.g., building a full-stack feature with frontend and backend work, refactoring a codebase while keeping tests passing, implementing a multi-step project with research, planning, and coding phases)\n\nWhen in doubt about whether a task warrants a team, prefer spawning a team.\n\n## Choosing Agent Types for Teammates\n\nWhen spawning teammates via the Agent tool, choose the `subagent_type` based on what tools the agent needs for its task. Each agent type has a different set of available tools — match the agent to the work:\n\n- **Read-only agents** (e.g., Explore, Plan) cannot edit or write files. Only assign them research, search, or planning tasks. Never assign them implementation work.\n- **Full-capability agents** (e.g., general-purpose) have access to all tools including file editing, writing, and bash. Use these for tasks that require making changes.\n- **Custom agents** defined in `.codebuddy/agents/` may have their own tool restrictions. Check their descriptions to understand what they can and cannot do.\n\nAlways review the agent type descriptions and their available tools listed in the Agent tool prompt before selecting a `subagent_type` for a teammate.\n\nCreate a new team to coordinate multiple agents working on a project. Teams have a 1:1 correspondence with task lists (Team = TaskList).\n\n```\n{\n \"team_name\": \"my-project\",\n \"description\": \"Working on feature X\"\n}\n```\n\nThis creates:\n- A team file at `~/.codebuddy/teams/{team-name}.json`\n- A corresponding task list directory at `~/.codebuddy/tasks/{team-name}/`\n\n## Team Workflow\n\n1. **Create a team** with TeamCreate - this creates both the team and its task list\n2. **Create tasks** using the Task tools (TaskCreate, TaskList, etc.) - they automatically use the team's task list\n3. **Spawn teammates** using the Agent tool with `team_name` and `name` parameters to create teammates that join the team\n4. **Assign tasks** using TaskUpdate with `owner` to give tasks to idle teammates\n5. **Teammates work on assigned tasks** and mark them completed via TaskUpdate\n6. **Teammates go idle between turns** - after each turn, teammates automatically go idle and send a notification. IMPORTANT: Be patient with idle teammates! Don't comment on their idleness until it actually impacts your work.\n7. **Shutdown your team** - when the task is completed, gracefully shut down your teammates via SendMessage with type: \"shutdown_request\".\n\n## Task Ownership\n\nTasks are assigned using TaskUpdate with the `owner` parameter. Any agent can set or change task ownership via TaskUpdate.\n\n## Automatic Message Delivery\n\n**IMPORTANT**: Messages from teammates are automatically delivered to you. You do NOT need to manually check your inbox.\n\nWhen you spawn teammates:\n- They will send you messages when they complete tasks or need help\n- These messages appear automatically as new conversation turns (like user messages)\n- If you're busy (mid-turn), messages are queued and delivered when your turn ends\n- The UI shows a brief notification with the sender's name when messages are waiting\n\nMessages will be delivered automatically.\n\nWhen reporting on teammate messages, you do NOT need to quote the original message—it's already rendered to the user.\n\n## Teammate Idle State\n\nTeammates go idle after every turn—this is completely normal and expected. A teammate going idle immediately after sending you a message does NOT mean they are done or unavailable. Idle simply means they are waiting for input.\n\n- **Idle teammates can receive messages.** Sending a message to an idle teammate wakes them up and they will process it normally.\n- **Idle notifications are automatic.** The system sends an idle notification whenever a teammate's turn ends. You do not need to react to idle notifications unless you want to assign new work or send a follow-up message.\n- **Do not treat idle as an error.** A teammate sending a message and then going idle is the normal flow—they sent their message and are now waiting for a response.\n- **Peer DM visibility.** When a teammate sends a DM to another teammate, a brief summary is included in their idle notification. This gives you visibility into peer collaboration without the full message content. You do not need to respond to these summaries — they are informational.\n\n## Discovering Team Members\n\nTeammates can read the team config file to discover other team members:\n- **Team config location**: `~/.codebuddy/teams/{team-name}/config.json`\n\nThe config file contains a `members` array with each teammate's:\n- `name`: Human-readable name (**always use this** for messaging and task assignment)\n- `agentId`: Unique identifier (for reference only - do not use for communication)\n- `agentType`: Role/type of the agent\n\n**IMPORTANT**: Always refer to teammates by their NAME (e.g., \"team-lead\", \"researcher\", \"tester\"). Names are used for:\n- `target_agent_id` when sending messages\n- Identifying task owners\n\nExample of reading team config:\n```\nUse the Read tool to read ~/.codebuddy/teams/{team-name}/config.json\n```\n\n## Task List Coordination\n\nTeams share a task list that all teammates can access at `~/.codebuddy/tasks/{team-name}/`.\n\nTeammates should:\n1. Check TaskList periodically, **especially after completing each task**, to find available work or see newly unblocked tasks\n2. Claim unassigned, unblocked tasks with TaskUpdate (set `owner` to your name). **Prefer tasks in ID order** (lowest ID first) when multiple tasks are available, as earlier tasks often set up context for later ones\n3. Create new tasks with `TaskCreate` when identifying additional work\n4. Mark tasks as completed with `TaskUpdate` when done, then check TaskList for next work\n5. Coordinate with other teammates by reading the task list status\n6. If all available tasks are blocked, notify the team lead or help resolve blocking tasks\n\n**IMPORTANT notes for communication with your team**:\n- Do not use terminal tools to view your team's activity; always send a message to your teammates (and remember, refer to them by name).\n- Your team cannot hear you if you do not use the SendMessage tool. Always send a message to your teammates if you are responding to them.\n- Do NOT send structured JSON status messages like `{\"type\":\"idle\",...}` or `{\"type\":\"task_completed\",...}`. Just communicate in plain text when you need to message teammates.\n- Use TaskUpdate to mark tasks completed.\n- If you are an agent in the team, the system will automatically send idle notifications to the team lead when you stop."
@@ -872,6 +895,7 @@
872
895
  "gemini-2.5-pro",
873
896
  "gemini-2.5-flash",
874
897
  "gemini-3.1-flash-lite",
898
+ "gpt-5.5",
875
899
  "gpt-5.4",
876
900
  "gpt-5.2",
877
901
  "gpt-5.3-codex",
@@ -930,7 +954,8 @@
930
954
  "CronList",
931
955
  "DelegateTool",
932
956
  "WeChatReply",
933
- "WeComReply"
957
+ "WeComReply",
958
+ "ComputerUse"
934
959
  ],
935
960
  "tags": [
936
961
  "cli",
@@ -964,7 +989,8 @@
964
989
  "NotebookEdit",
965
990
  "LSP",
966
991
  "WeChatReply",
967
- "WeComReply"
992
+ "WeComReply",
993
+ "ComputerUse"
968
994
  ],
969
995
  "tags": [
970
996
  "cli",
@@ -1290,6 +1316,7 @@
1290
1316
  "Connector": true,
1291
1317
  "Agents": true,
1292
1318
  "BillingNotice": true,
1319
+ "CustomModelIdPrefix": true,
1293
1320
  "DeferToolLoading": true,
1294
1321
  "ImageEdit": false,
1295
1322
  "ScheduledTasks": true,
@@ -1481,6 +1508,11 @@
1481
1508
  "description": "tool-imageedit-description",
1482
1509
  "deferLoading": true
1483
1510
  },
1511
+ {
1512
+ "name": "ComputerUse",
1513
+ "description": "tool-computeruse-description",
1514
+ "deferLoading": true
1515
+ },
1484
1516
  {
1485
1517
  "name": "TeamCreate",
1486
1518
  "description": "tool-teamcreate-description",
@@ -1533,6 +1565,6 @@
1533
1565
  "description": "Send a reply to a WeCom (企业微信) user. For text: pass text (markdown supported)."
1534
1566
  }
1535
1567
  ],
1536
- "commit": "394de9c4f2d39409a6d4d34b73ea44a94ad7d670",
1537
- "date": "2026-04-27T10:22:00.282Z"
1568
+ "commit": "a9d554ee29db4840a2a490f59968fb67bededc0a",
1569
+ "date": "2026-04-27T17:25:04.707Z"
1538
1570
  }
@@ -50,7 +50,8 @@
50
50
  "CronList",
51
51
  "DelegateTool",
52
52
  "WeChatReply",
53
- "WeComReply"
53
+ "WeComReply",
54
+ "ComputerUse"
54
55
  ],
55
56
  "tags": [
56
57
  "cli",
@@ -82,7 +83,8 @@
82
83
  "DeferExecuteTool",
83
84
  "SendMessage",
84
85
  "NotebookEdit",
85
- "LSP"
86
+ "LSP",
87
+ "ComputerUse"
86
88
  ],
87
89
  "tags": [
88
90
  "cli",
@@ -279,9 +281,10 @@
279
281
  "productFeatures": {
280
282
  "BillingNotice": false,
281
283
  "CustomModelsJSON": true,
284
+ "CustomModelIdPrefix": true,
282
285
  "DeferToolLoading": true,
283
286
  "ScheduledTasks": true
284
287
  },
285
- "commit": "394de9c4f2d39409a6d4d34b73ea44a94ad7d670",
286
- "date": "2026-04-27T10:22:00.302Z"
288
+ "commit": "a9d554ee29db4840a2a490f59968fb67bededc0a",
289
+ "date": "2026-04-27T17:25:04.708Z"
287
290
  }