@tencent-ai/agent-sdk 0.3.272 → 0.3.273

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.
Files changed (142) hide show
  1. package/cli/CHANGELOG.md +17 -0
  2. package/cli/dist/codebuddy-headless.js +23 -23
  3. package/cli/dist/codebuddy-lite-wb.mjs +25 -25
  4. package/cli/dist/web-ui/assets/{CanvasPaneStandaloneView-DIn545ua.js → CanvasPaneStandaloneView-dyWkk4PZ.js} +1 -1
  5. package/cli/dist/web-ui/assets/{CanvasView-hnvCmPSV.js → CanvasView-DkhyH_1F.js} +1 -1
  6. package/cli/dist/web-ui/assets/{ChangesView-CtIfLmOc.js → ChangesView-CaHOWv2Z.js} +1 -1
  7. package/cli/dist/web-ui/assets/{DocsView-HBxNI97Q.js → DocsView-DiGzijj1.js} +1 -1
  8. package/cli/dist/web-ui/assets/{EditorView-DvwpvafF.js → EditorView-CUu0ekRP.js} +1 -1
  9. package/cli/dist/web-ui/assets/HoverHint-LssI0qEE.js +1 -0
  10. package/cli/dist/web-ui/assets/{KeybindingsView-B88MXgWr.js → KeybindingsView-DWUI1JpY.js} +1 -1
  11. package/cli/dist/web-ui/assets/{LogsView-DjF_5-Jd.js → LogsView-CEHx06nm.js} +1 -1
  12. package/cli/dist/web-ui/assets/{MetricsView-DImkPyZM.js → MetricsView-BZuMTUvp.js} +1 -1
  13. package/cli/dist/web-ui/assets/{PluginsView-2uPy3XvK.js → PluginsView-DPWy3FBq.js} +1 -1
  14. package/cli/dist/web-ui/assets/{RemoteControlView-kPy9GUlN.js → RemoteControlView-C1NdBeJw.js} +1 -1
  15. package/cli/dist/web-ui/assets/{SettingsView-CWRqL0oA.js → SettingsView-BJCKKgWV.js} +1 -1
  16. package/cli/dist/web-ui/assets/{SplitContainer-Dm1TgCaG.js → SplitContainer-BpAMtGSs.js} +1 -1
  17. package/cli/dist/web-ui/assets/{StatsView-okhz7xRe.js → StatsView-C-HzWG8r.js} +1 -1
  18. package/cli/dist/web-ui/assets/{TasksView-CICNpZ9N.js → TasksView-BnFNp4fv.js} +1 -1
  19. package/cli/dist/web-ui/assets/{TerminalPaneView-BFSDyqOG.js → TerminalPaneView-ALwEzbwH.js} +1 -1
  20. package/cli/dist/web-ui/assets/{TracesView-Burz_yeC.js → TracesView-t3wi7Kes.js} +1 -1
  21. package/cli/dist/web-ui/assets/{WorkersView-BqddwtUV.js → WorkersView-d7IuRA1g.js} +1 -1
  22. package/cli/dist/web-ui/assets/{abnfDiagram-O67JEVCF-33nTnJ2S.js → abnfDiagram-O67JEVCF-DlRX5Clr.js} +1 -1
  23. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-4118Qje4.js +1 -0
  24. package/cli/dist/web-ui/assets/{architectureDiagram-NJMV4G6O-FzGcEis5.js → architectureDiagram-NJMV4G6O-CvzoqRYj.js} +1 -1
  25. package/cli/dist/web-ui/assets/{blockDiagram-BEXU5L5S-DSx6FBt9.js → blockDiagram-BEXU5L5S-Dmo7FSbu.js} +1 -1
  26. package/cli/dist/web-ui/assets/{c4Diagram-YGBWAQC7-CF2SLLtS.js → c4Diagram-YGBWAQC7-D-rNXRo3.js} +1 -1
  27. package/cli/dist/web-ui/assets/{canvas-store-CTF2gk3l.js → canvas-store-C-T5LSPT.js} +1 -1
  28. package/cli/dist/web-ui/assets/channel-CzlEOE5Z.js +1 -0
  29. package/cli/dist/web-ui/assets/{chunk-3FUC2YCW-BSfDfOZA.js → chunk-3FUC2YCW-44Og191I.js} +1 -1
  30. package/cli/dist/web-ui/assets/{chunk-5DYCD2WN-Cw4uUnBv.js → chunk-5DYCD2WN-BMcJMkic.js} +1 -1
  31. package/cli/dist/web-ui/assets/{chunk-742MDFTN-Crj_2MBX.js → chunk-742MDFTN-C9Feux5F.js} +1 -1
  32. package/cli/dist/web-ui/assets/{chunk-7INBJB4K-CQzVOJr6.js → chunk-7INBJB4K-DFzU3uUY.js} +1 -1
  33. package/cli/dist/web-ui/assets/{chunk-7M6MHVWA-C0J56L0S.js → chunk-7M6MHVWA-BP_hs_Zh.js} +1 -1
  34. package/cli/dist/web-ui/assets/{chunk-7PRAP22T-CcX4ntNx.js → chunk-7PRAP22T-DhCB5ggZ.js} +1 -1
  35. package/cli/dist/web-ui/assets/{chunk-GTNCS2PH-UUmiv_WZ.js → chunk-GTNCS2PH-CgRQhFK-.js} +1 -1
  36. package/cli/dist/web-ui/assets/{chunk-GWA4HPMP-Cj2HSbZB.js → chunk-GWA4HPMP-DVQFlNrg.js} +1 -1
  37. package/cli/dist/web-ui/assets/{chunk-MBY4JIJT-BeWwQI_5.js → chunk-MBY4JIJT-ClsX9AV0.js} +1 -1
  38. package/cli/dist/web-ui/assets/{chunk-NETBCI7D-BXoE0wX2.js → chunk-NETBCI7D-Ok_AlsOs.js} +1 -1
  39. package/cli/dist/web-ui/assets/{chunk-O7XYJQB3-BkJCF4Hl.js → chunk-O7XYJQB3-BrUoQZlx.js} +1 -1
  40. package/cli/dist/web-ui/assets/{chunk-UA2S7LBM-BiEZLJdx.js → chunk-UA2S7LBM-CcImKd_4.js} +1 -1
  41. package/cli/dist/web-ui/assets/{chunk-WEXAMYUT-CVYmgL88.js → chunk-WEXAMYUT-DuMzoDxl.js} +1 -1
  42. package/cli/dist/web-ui/assets/{chunk-Z7XXMR3K-CNWwStqk.js → chunk-Z7XXMR3K-DNFavXEr.js} +1 -1
  43. package/cli/dist/web-ui/assets/{chunk-ZIGJFQKS-B2DOCzA_.js → chunk-ZIGJFQKS-C7Y7rwsz.js} +1 -1
  44. package/cli/dist/web-ui/assets/{classDiagram-v2-NBCMYWYE-Cg87JbAk.js → classDiagram-v2-NBCMYWYE-DtdQ5tsO.js} +1 -1
  45. package/cli/dist/web-ui/assets/{cssMode-CRv4tEjN.js → cssMode-DqpFSny4.js} +1 -1
  46. package/cli/dist/web-ui/assets/{cynefin-OW5HDTMX-CzRVph15.js → cynefin-OW5HDTMX-D-khVVHT.js} +1 -1
  47. package/cli/dist/web-ui/assets/{cynefinDiagram-VND7K2PF-CNBPnBJq.js → cynefinDiagram-VND7K2PF-D4SBf27A.js} +1 -1
  48. package/cli/dist/web-ui/assets/{dagre-6A5THRUB-Din1Iojv.js → dagre-6A5THRUB-DVdcjlZz.js} +1 -1
  49. package/cli/dist/web-ui/assets/{diagram-22UHCM2B-DYXr4hLX.js → diagram-22UHCM2B-N9qNPFGx.js} +1 -1
  50. package/cli/dist/web-ui/assets/{diagram-3UASUU5V-Q_QpApP2.js → diagram-3UASUU5V-BOrM2fJW.js} +1 -1
  51. package/cli/dist/web-ui/assets/{diagram-ATOU4E4O-B0cBUUAl.js → diagram-ATOU4E4O-BnlFCQjV.js} +1 -1
  52. package/cli/dist/web-ui/assets/{diagram-CDSNMT55-CqpNUvJt.js → diagram-CDSNMT55-Db7azPHL.js} +1 -1
  53. package/cli/dist/web-ui/assets/{diagram-MLGK6HIB-4ZDRCl9v.js → diagram-MLGK6HIB-Awr2vnnw.js} +1 -1
  54. package/cli/dist/web-ui/assets/{diagram-MPIPVDR6-t-N00d6f.js → diagram-MPIPVDR6-mMEzAWkb.js} +1 -1
  55. package/cli/dist/web-ui/assets/{ebnfDiagram-ZINNZB2B-DPflRvsG.js → ebnfDiagram-ZINNZB2B-DDcxPluf.js} +1 -1
  56. package/cli/dist/web-ui/assets/{editor-store-Bnu4yw4O.js → editor-store-BVy4DJoP.js} +1 -1
  57. package/cli/dist/web-ui/assets/{editor.main-BES2SJR1.js → editor.main-BPCdeUv0.js} +2 -2
  58. package/cli/dist/web-ui/assets/{elk-276RUBZZ-DMGj1qO4.js → elk-276RUBZZ-1ObyfSih.js} +1 -1
  59. package/cli/dist/web-ui/assets/{erDiagram-OPXOYQCR-DhPB_L2_.js → erDiagram-OPXOYQCR-85QZesG5.js} +1 -1
  60. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-DzcNhtMG.js +1 -0
  61. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-C7gZq6zs.js +1 -0
  62. package/cli/dist/web-ui/assets/{ganttDiagram-FUAMR5RP-BuNFnD8o.js → ganttDiagram-FUAMR5RP-CWKxEm2a.js} +1 -1
  63. package/cli/dist/web-ui/assets/{gitGraph-4MIJSDKK-DvwoNKUh.js → gitGraph-4MIJSDKK-Va9MqQP7.js} +1 -1
  64. package/cli/dist/web-ui/assets/{gitGraphDiagram-X574FWY7-CMVV2pN8.js → gitGraphDiagram-X574FWY7-CxDUZnv6.js} +1 -1
  65. package/cli/dist/web-ui/assets/{htmlMode-RPgBxfFT.js → htmlMode-CcmjLBK1.js} +1 -1
  66. package/cli/dist/web-ui/assets/index-BUL8iy6o.css +1 -0
  67. package/cli/dist/web-ui/assets/{index-BI5Z_cST.js → index-CcT-vg3O.js} +88 -88
  68. package/cli/dist/web-ui/assets/{info-A6RAGUB7-BkTwTvGc.js → info-A6RAGUB7-KlhzL_St.js} +1 -1
  69. package/cli/dist/web-ui/assets/{infoDiagram-VRGFBTTK-B9qpTfBj.js → infoDiagram-VRGFBTTK-COv85ylX.js} +1 -1
  70. package/cli/dist/web-ui/assets/{ishikawaDiagram-OU5B5YK6-CQYN-WJG.js → ishikawaDiagram-OU5B5YK6-B6LK0Dp0.js} +1 -1
  71. package/cli/dist/web-ui/assets/{journeyDiagram-ZHPQQLJL-Bhhb_1ix.js → journeyDiagram-ZHPQQLJL-7_gx-X1b.js} +1 -1
  72. package/cli/dist/web-ui/assets/{jsonMode-BmcV16dZ.js → jsonMode-DjeQHeec.js} +1 -1
  73. package/cli/dist/web-ui/assets/{kanban-definition-PNTS6WVX-2sWMVFOP.js → kanban-definition-PNTS6WVX-BuoY2Y9n.js} +1 -1
  74. package/cli/dist/web-ui/assets/{line-dyZ1bUO3.js → line-U1NpPN9F.js} +1 -1
  75. package/cli/dist/web-ui/assets/loader-circle-CbX-mRDA.js +1 -0
  76. package/cli/dist/web-ui/assets/{mermaid-parser.core-DCSwPqyy.js → mermaid-parser.core-CWo09gq-.js} +3 -3
  77. package/cli/dist/web-ui/assets/{mermaid.core-00vr9ukx.js → mermaid.core-ChqNs8I4.js} +4 -4
  78. package/cli/dist/web-ui/assets/{mindmap-definition-NLK3R4M7-CxnIh2aq.js → mindmap-definition-NLK3R4M7-CqCx8Oby.js} +1 -1
  79. package/cli/dist/web-ui/assets/{packet-AYTQ26CC-CMmSJjVl.js → packet-AYTQ26CC-7UVU8Lay.js} +1 -1
  80. package/cli/dist/web-ui/assets/{pegDiagram-GJSIUBJH-D4cdj7vr.js → pegDiagram-GJSIUBJH-BBJmKZzK.js} +1 -1
  81. package/cli/dist/web-ui/assets/{pie-WAS4IAKB-BesuGcpz.js → pie-WAS4IAKB-CWoQ0mW0.js} +1 -1
  82. package/cli/dist/web-ui/assets/{pieDiagram-5QR66LMP-BGskFaPj.js → pieDiagram-5QR66LMP-BbAkRCRb.js} +1 -1
  83. package/cli/dist/web-ui/assets/power-GWOABL7s.js +1 -0
  84. package/cli/dist/web-ui/assets/{quadrantDiagram-O4NWA36T-Bkvvkyx-.js → quadrantDiagram-O4NWA36T-Bcgl9szm.js} +1 -1
  85. package/cli/dist/web-ui/assets/{radar-RG4KPBEZ-Bj7UyIL-.js → radar-RG4KPBEZ-B0sDFvbJ.js} +1 -1
  86. package/cli/dist/web-ui/assets/{railroad-74A4TZTK-D2D2Em5k.js → railroad-74A4TZTK-C0abYTLu.js} +1 -1
  87. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-BhEAzBPy.js +1 -0
  88. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-BQshAF1C.js +1 -0
  89. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-BhzEUl06.js +1 -0
  90. package/cli/dist/web-ui/assets/{railroadDiagram-XR7U4H2S-kdQApYhY.js → railroadDiagram-XR7U4H2S-Xdtrah7h.js} +1 -1
  91. package/cli/dist/web-ui/assets/{requirementDiagram-PLB6GJNP-BqBC3CXU.js → requirementDiagram-PLB6GJNP-Dmm_Xtdj.js} +1 -1
  92. package/cli/dist/web-ui/assets/{sankeyDiagram-IPEJSGJF-DVzCsx-G.js → sankeyDiagram-IPEJSGJF-BExPBGN1.js} +1 -1
  93. package/cli/dist/web-ui/assets/{sequenceDiagram-PO4LG4MO-yG_YwbRF.js → sequenceDiagram-PO4LG4MO-DjyWwluL.js} +1 -1
  94. package/cli/dist/web-ui/assets/{server-CnUlxMCB.js → server-BYrFK9uI.js} +1 -1
  95. package/cli/dist/web-ui/assets/{sidebar-store-BECS2ZHH.js → sidebar-store-bTJzulZp.js} +1 -1
  96. package/cli/dist/web-ui/assets/{stateDiagram-v2-GCMORJYK-CTmS4-3L.js → stateDiagram-v2-GCMORJYK-BKgBFDVg.js} +1 -1
  97. package/cli/dist/web-ui/assets/{swimlanes-2SLR337P-B8qdR1JY.js → swimlanes-2SLR337P-vVovFCNH.js} +1 -1
  98. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-DRp2HW8M.js +8 -0
  99. package/cli/dist/web-ui/assets/{terminal-store-C9T3TvZG.js → terminal-store-CCHDZeLq.js} +1 -1
  100. package/cli/dist/web-ui/assets/{theme-store-e89BUV83.js → theme-store-Cvh0uW_P.js} +1 -1
  101. package/cli/dist/web-ui/assets/{timeline-definition-EJHVYXUP-DBuW2EtA.js → timeline-definition-EJHVYXUP-DkMh7Iif.js} +1 -1
  102. package/cli/dist/web-ui/assets/{timer-hXQHNuTF.js → timer-BJmcyIbv.js} +1 -1
  103. package/cli/dist/web-ui/assets/{treeView-Q6P3EWNA-DZwOY3Vo.js → treeView-Q6P3EWNA-DkhVSMV1.js} +1 -1
  104. package/cli/dist/web-ui/assets/{treemap-WGGIJYW6-KzsufT0z.js → treemap-WGGIJYW6-CWTt7auX.js} +1 -1
  105. package/cli/dist/web-ui/assets/{triangle-alert-Bgaqn5eg.js → triangle-alert-CGAm2zgw.js} +1 -1
  106. package/cli/dist/web-ui/assets/{tsMode-DmXjlKw6.js → tsMode-92q32nO9.js} +1 -1
  107. package/cli/dist/web-ui/assets/use-i18n-pIrmaYmw.js +10 -0
  108. package/cli/dist/web-ui/assets/{usecaseDiagram-POWQR4AR-CMUsnek4.js → usecaseDiagram-POWQR4AR-Cmkzn47X.js} +1 -1
  109. package/cli/dist/web-ui/assets/{vennDiagram-UO4OBE2U-DfvnmEI-.js → vennDiagram-UO4OBE2U-krvLAVN1.js} +1 -1
  110. package/cli/dist/web-ui/assets/{wardley-WFR3VGLG-gMMXWBBC.js → wardley-WFR3VGLG-D5c13zW9.js} +1 -1
  111. package/cli/dist/web-ui/assets/{wardleyDiagram-VNRHLVJA-Dg12ciAd.js → wardleyDiagram-VNRHLVJA-CrnhHeux.js} +1 -1
  112. package/cli/dist/web-ui/assets/{workspace-dock-store-uPe33-_O.js → workspace-dock-store-DnFjd3tC.js} +1 -1
  113. package/cli/dist/web-ui/assets/{xychartDiagram-PMCCYNJV-DF6GiPla.js → xychartDiagram-PMCCYNJV-CUWbjTrP.js} +1 -1
  114. package/cli/dist/web-ui/assets/{zap-nSKVK-41.js → zap-BbNNHf5_.js} +1 -1
  115. package/cli/dist/web-ui/index.html +11 -11
  116. package/cli/dist/web-ui/sw.js +1 -1
  117. package/cli/dist-server/3163.codebuddy.js +1 -1
  118. package/cli/dist-server/3209.codebuddy.js +2 -2
  119. package/cli/dist-server/codebuddy.js +7 -7
  120. package/cli/dist-server/types/node/agent-home/agent-home-agent-create.d.ts +5 -0
  121. package/cli/dist-server/types/vendor/cbc-core/node/session/session-admission-service.d.ts +6 -0
  122. package/cli/dist-server/types/vendor/cbc-shared/node/model/model-errors.d.ts +5 -2
  123. package/cli/package.json +1 -1
  124. package/cli/product.cloudhosted.json +2 -2
  125. package/cli/product.internal.json +2 -2
  126. package/cli/product.ioa.json +2 -2
  127. package/cli/product.json +2 -2
  128. package/cli/product.selfhosted.json +2 -2
  129. package/package.json +1 -1
  130. package/cli/dist/web-ui/assets/HoverHint-D2G73lbr.js +0 -1
  131. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-DIJIAReN.js +0 -1
  132. package/cli/dist/web-ui/assets/channel-Oqc_5uJL.js +0 -1
  133. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-DhJKLgIL.js +0 -1
  134. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-C8j8-NKs.js +0 -1
  135. package/cli/dist/web-ui/assets/index-_kDd5loD.css +0 -1
  136. package/cli/dist/web-ui/assets/loader-circle-OavGeXCF.js +0 -1
  137. package/cli/dist/web-ui/assets/power-f1Ij2Msg.js +0 -1
  138. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-qU-l3gTW.js +0 -1
  139. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-Co7bnXh9.js +0 -1
  140. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-BE_5lCh8.js +0 -1
  141. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-B2Lj57-K.js +0 -8
  142. package/cli/dist/web-ui/assets/use-i18n-BvN1piiI.js +0 -10
@@ -95,7 +95,7 @@ Then confirm to the user: what's scheduled, the cron expression, the human-reada
95
95
  $ARGUMENTS`,ne=class{constructor(){this.scope="runtime",this.priority=i4.ProductProviderPriority.WORKSPACE-1}async provide(){return"1"===process.env[i0.Eb]?{}:{mergeStrategy:i4.MergeStrategy.SmartMerge,skills:[{name:"loop",description:"Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo, defaults to 10m)",instructions:i9,baseDirectory:"",source:"bundled",location:"bundled",userInvocable:!0}]}}};ne=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(i4.ProductProvider)],ne);var nt=r(86482),nr=r(74421);let no=class{constructor(){this.activated=!1,this.activationHandlers=[]}isStandby(){return!this.activated&&process.argv.includes("--prewarm")}onActivated(e){this.activationHandlers.push(e)}markActivated(){if(!this.activated)for(let e of(this.activated=!0,this.activationHandlers))try{e()}catch{}}};no=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)({id:[nr.bo,nt.PrewarmActivationGate,i4.ProductPrewarmActivationGate],scope:iB.Scope.Singleton})],no);var ni=r(70724),nn=r(62279),ns=r(34621),na=r(98979);let nc=class{constructor(){this.connection=null,this.backgroundTerminals={},this.fileContentCache=new Map}setConnection(e){this.connection=e}resolveAcpSessionId(e){return e.context.meta?.parentSessionId??e.context.id}getConnection(){if(!this.connection)throw Error("ACP connection not set. Call setConnection() first.");return this.connection}withTurnMeta(e){let t=(0,iY.currentTurnCarrier)();if(!(0,iY.hasTurnCarrier)(t))return e;let r={...e._meta??{}};return(0,iY.applyTurnCarrierToMeta)(r,t),{...e,_meta:r}}async readTextFile(e){let t=this.getConnection(),r=await t.readTextFile(this.withTurnMeta(e));return e.line||e.limit||this.fileContentCache.set(e.path,r.content),r}async writeTextFile(e){let t=this.getConnection(),r=await t.writeTextFile(this.withTurnMeta(e));return this.fileContentCache.set(e.path,e.content),r}getFileContentCache(){return Object.fromEntries(this.fileContentCache)}setCapabilities(e){this.capabilities=e}getCapabilities(){return this.capabilities}isSupportRead(){return!!this.capabilities?.fs?.readTextFile}async callRead(e,t,r){let o=this.resolveAcpSessionId(t);try{let t=i3.PathUtils.resolveFilePathToWorkDir(e.file_path),r=await this.readTextFile({sessionId:o,path:t,line:e.offset,limit:e.limit}),i=r.content.split(/\r?\n/),n=this.formatContentWithLineNumbers(r.content,e.offset||1);return{title:`Read ${i.length} lines`,content:n,renderer:{type:"code",context:{language:i3.LanguageUtils.getLanguageFromExtension(t)}}}}catch(t){let e=t instanceof Error?t.message:String(t);return{content:e,error:`Error reading file: ${e}`}}}formatContentWithLineNumbers(e,t){return e.split(/\r?\n/).map((e,r)=>{let o=(t+r).toString().padStart(4," ");return`${o}\u{2192}${e}`}).join("\n")}isSupportWrite(){return!!this.capabilities?.fs?.writeTextFile}async callWrite(e,t,r){let o=this.resolveAcpSessionId(t);try{let t=i3.PathUtils.resolveFilePathToWorkDir(e.file_path);await this.writeTextFile({sessionId:o,path:t,content:e.content});let r=e.content.split(/\r?\n/),i=`Successfully wrote to file: ${t}`;return{title:`Wrote ${r.length} lines`,content:i,renderer:{type:"code",context:{language:i3.LanguageUtils.getLanguageFromExtension(t)},value:e.content}}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Write error: ${e}`)}}isSupportEdit(){return!!this.capabilities?.fs?.writeTextFile}async callEdit(e,t,r){let o=this.resolveAcpSessionId(t);try{let t=i3.PathUtils.resolveFilePathToWorkDir(e.file_path),r=(await this.readTextFile({sessionId:o,path:t})).content,{newContent:i}=i3.EditFileUtils.applyTextReplacementWithLocation(r,[{oldString:e.old_string,newString:e.new_string,replaceAll:e.replace_all}]);await this.writeTextFile({sessionId:o,path:t,content:i});let n=`Successfully edited file: ${t}`;return{title:"Edit applied",content:n,renderer:{type:"diff"}}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Edit error: ${e}`)}}isSupportMultiEdit(){return!!this.capabilities?.fs?.writeTextFile}async callMultiEdit(e,t,r){let o=this.resolveAcpSessionId(t);try{let t=i3.PathUtils.resolveFilePathToWorkDir(e.file_path),r=(await this.readTextFile({sessionId:o,path:t})).content,{newContent:i}=i3.EditFileUtils.applyTextReplacementWithLocation(r,e.edits.map(e=>({oldString:e.old_string,newString:e.new_string,replaceAll:e.replace_all})));await this.writeTextFile({sessionId:o,path:t,content:i});let n=`Successfully applied ${e.edits.length} edit(s) to file: ${t}`;return{title:`Applied ${e.edits.length} edits`,content:n,renderer:{type:"diff"}}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`MultiEdit error: ${e}`)}}isSupportBash(){return!!this.capabilities?.terminal}async callBash(e,t,r){let o=this.getConnection(),i=this.resolveAcpSessionId(t);try{let t=r?.toolCall?.callId;if("string"!=typeof t)throw Error("No tool call ID found");if(!o.createTerminal)throw Error("Terminal capability not available");let n=await o.createTerminal(this.withTurnMeta({command:e.command,sessionId:i,outputByteLimit:32e3})),s=(0,na.SS)({sessionUpdate:"tool_call_update",toolCallId:t,status:"in_progress",title:e.description,content:[{type:"terminal",terminalId:n.id}],_meta:{}});(0,iY.applyTurnCarrierToMeta)(s._meta,(0,iY.currentTurnCarrier)()),await o.sessionUpdate({sessionId:i,update:s});let a=e.timeout||12e4,c=new Promise(e=>{setTimeout(async()=>{let t=this.backgroundTerminals[n.id];t&&"started"===t.status&&await n.kill(),e({status:"timedOut",exitStatus:null})},a)}),l=n.waitForExit().then(e=>({status:"exited",exitStatus:e}));if(e.run_in_background)return this.backgroundTerminals[n.id]={handle:n,lastOutput:null,status:"started"},Promise.race([l,c]).then(async({status:e,exitStatus:t})=>{let r=this.backgroundTerminals[n.id];if(!r||"started"!==r.status)return;let o=await n.currentOutput();this.backgroundTerminals[n.id]={status:e,pendingOutput:{...o,output:this.stripCommonPrefix(r.lastOutput?.output??"",o.output),exitStatus:t??o.exitStatus}},await n.release()}),{content:`Command started in background with id: ${n.id}`,renderer:{type:"text",value:`Command started in background with id: ${n.id}`}};let{status:d}=await Promise.race([l,c]),u=await n.currentOutput();await n.release();let p=this.formatToolCommandOutput(d,u);return{content:p,renderer:{type:"text",value:p}}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Bash error: ${e}`)}}isSupportBashOutput(){return!!this.capabilities?.terminal}async callBashOutput(e,t,r){let o=this.backgroundTerminals[e.shell_id];if(!o)throw Error(`Unknown shell ${e.shell_id}`);if("started"===o.status){let e=await o.handle.currentOutput(),t=this.stripCommonPrefix(o.lastOutput?.output??"",e.output);o.lastOutput=e;let r=this.formatToolCommandOutput(o.status,{...e,output:t});return{content:r,renderer:{type:"text",value:r}}}{let e=this.formatToolCommandOutput(o.status,o.pendingOutput);return{content:e,renderer:{type:"text",value:e}}}}isSupportKillShell(){return!!this.capabilities?.terminal}async callKillShell(e,t,r){let o=this.backgroundTerminals[e.shell_id];if(!o)throw Error(`Unknown shell ${e.shell_id}`);switch(o.status){case"started":{await o.handle.kill();let e=await o.handle.currentOutput();return this.backgroundTerminals[o.handle.id]={status:"killed",pendingOutput:{...e,output:this.stripCommonPrefix(o.lastOutput?.output??"",e.output)}},await o.handle.release(),{content:"Command killed successfully.",renderer:{type:"text",value:"Command killed successfully."}}}case"aborted":return{content:"Command aborted by user.",renderer:{type:"text",value:"Command aborted by user."}};case"exited":return{content:"Command had already exited.",renderer:{type:"text",value:"Command had already exited."}};case"killed":return{content:"Command was already killed.",renderer:{type:"text",value:"Command was already killed."}};case"timedOut":return{content:"Command killed by timeout.",renderer:{type:"text",value:"Command killed by timeout."}};default:throw Error(`Unknown background terminal status: ${JSON.stringify(o)}`)}}isSupportAskUserQuestion(){let e=this.capabilities?._meta,t=e?.["codebuddy.ai"];return t?.question===!0}async callAskUserQuestion(e,t,r){let o=this.getConnection(),i=this.resolveAcpSessionId(t),n=r?.toolCall?.callId;if(!n)throw Error("No tool call ID found for AskUserQuestion");try{let t={sessionId:i,toolCallId:n,inputType:"question",schema:{questions:e.questions.map((e,t)=>({id:`q_${t}`,question:e.question,header:e.header,options:e.options,multiSelect:e.multiSelect}))}},r=await o.extMethod(ni.ExtensionMethod.QUESTION,this.withTurnMeta(t));if("submitted"!==r.outcome||!r.answers)return{content:"User declined to answer questions",renderer:{type:"text"}};{let t=new Map(e.questions.map((e,t)=>[`q_${t}`,e.question])),o={};for(let[e,i]of Object.entries(r.answers))o[t.get(e)||e]=Array.isArray(i)?i.join(", "):i;return{content:Object.entries(o).map(([e,t])=>` \xb7 ${e} ${nn.Ay.arrowRight} ${t}`).join("\n"),renderer:{type:"text"}}}}catch(t){let e=t instanceof Error?t.message:String(t);return{content:"User declined to answer questions",error:`Error asking user question: ${e}`,renderer:{type:"text"}}}}stripCommonPrefix(e,t){let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;return t.slice(r)}formatToolCommandOutput(e,t){let{exitStatus:r,output:o,truncated:i}=t,n="";switch(e){case"started":case"exited":r&&(r.exitCode??null)===null&&(n+="Interrupted by the user. ");break;case"killed":n+="Killed. ";break;case"timedOut":n+="Timed out. ";break;case"aborted":break;default:throw Error(`Unknown status: ${e}`)}return r?("number"==typeof r.exitCode&&(n+=`Exited with code ${r.exitCode}. `),"string"==typeof r.signal&&(n+=`Signal \`${r.signal}\`. `),n+="Final output:\n\n"):n+="New output:\n\n",n+=o,i&&(n+=`
96
96
 
97
97
  Command output was too long, so it was truncated to ${o.length} bytes.`),n}};nc=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(ns.EV)],nc);var nl=r(31873),nd=r(23732),nu=r(44293),np=r(53685),ng=r(38073),nh=r(51943),nf=r(26234),nm=r(76233),ny=r(56604),n_=r(41059);function matchShortcut(e,t){for(let r of[...e].reverse())if(r.keyCode===t)return r}let nv=class{constructor(){this.handlers=[]}register(e,t,r){let o=(0,iB.generateUUUID)();return this.handlers.push({id:o,keyCode:e,handler:t,description:r}),{dispose:()=>{this.handlers=this.handlers.filter(e=>e.id!==o)}}}getShortcuts(){return this.handlers.map(e=>({keyCode:e.keyCode,description:e.description}))}dispatch(e){let t=matchShortcut(this.handlers,e);t?.handler()}};nv=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(n_.cU)],nv);var nb=r(79896),nw=r(52018);let nS=/\x1b\[(\d+)(?:;(\d+)(?::\d+)?)?u/g,nC=/\x1b\[\?[\d;]*[a-zA-Z]/g;function filterPrivateModeSequences(e){return e.includes("\x1b[?")?e.replace(nC,"")||null:e}let nP=/\x1b\[27;(\d+);(\d+)~/g;function normalizeKittySequences(e){return e.includes("\x1b[")&&e.includes("u")?e.replace(nS,(e,t,r)=>{let o=parseInt(t,10),i=parseInt(r||"1",10),n=i-1,s=!!(1&n),a=!!(2&n),c=!!(4&n);return 1===i?13===o?"\r":9===o?" ":27===o?"\x1b":127===o?"":32===o?" ":o>=32&&o<127?String.fromCharCode(o):e:9!==o||!s||c||a?!c||a||s||32!==o?c&&!a&&!s&&o>=97&&o<=122?String.fromCharCode(o-96):a&&!c&&o>=32&&o<=127?"\x1b"+(s?String.fromCharCode(o).toUpperCase():String.fromCharCode(o)):e:"\0":"\x1b[Z"}):e}function normalizeFixtermsSequences(e){return e.includes("\x1b[27;")?e.replace(nP,(e,t,r)=>{let o=parseInt(t,10),i=parseInt(r,10),n=o-1,s=!!(1&n),a=!!(2&n),c=!!(4&n);return 13!==i||!s||c||a?9!==i||!s||c||a?c&&!a&&!s&&i>=97&&i<=122?String.fromCharCode(i-96):a&&!c&&i>=32&&i<=127?"\x1b"+(s?String.fromCharCode(i).toUpperCase():String.fromCharCode(i)):!c||a||s||32!==i?e:"\0":"\x1b[Z":"\x1b\r"}):e}function applyKeyMapping(e){if(null===e)return null;if("string"==typeof e){let t=filterPrivateModeSequences(e);return null===t?null:(e=normalizeFixtermsSequences(e=normalizeKittySequences(e=t))).includes("\x10")||e.includes("\x0e")?e.split("\x10").join("\x1b[A").split("\x0e").join("\x1b[B"):e}let t=!1;for(let r of e)if(16===r||14===r){t=!0;break}if(!t)return e;let r=[];for(let t of e)16===t?r.push(27,91,65):14===t?r.push(27,91,66):r.push(t);return Buffer.from(r)}let nO=class{constructor(){this.initialized=!1}getInputStream(){return this.initialized||this.initialize(),this.inputStream}initialize(){if(this.initialized=!0,process.stdin.isTTY&&"function"==typeof process.stdin.setRawMode)this.inputStream=process.stdin;else try{this.ttyFd=nb.openSync("/dev/tty",nb.constants.O_RDWR),this.ttyStream=new nw.ReadStream(this.ttyFd),this.inputStream=this.ttyStream}catch{this.inputStream=void 0}this.inputStream&&this.patchReadForKeyMapping(this.inputStream)}patchReadForKeyMapping(e){let t=e.read.bind(e);e.read=function(e){let r=t(e);if(null===r)return null;let o=applyKeyMapping(r);return null===o?"string"==typeof r?"":Buffer.alloc(0):o}}dispose(){if(this.ttyStream){try{this.ttyStream.destroy()}catch{}this.ttyStream=void 0}if(void 0!==this.ttyFd){try{nb.closeSync(this.ttyFd)}catch{}this.ttyFd=void 0}this.inputStream=void 0}};nO=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(n_.XW)],nO);var dispatch_chain_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},dispatch_chain_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let nA=class{async execute(e){try{this.shortcutManager.register(n_.Lb.CTRL_C,()=>{(0,ny.exitWhenInPlaceWorkersSettled)(0)})}catch{}let t=this.strategyProvider.sortSync();for(let r of t)if(r.canHandle(e)&&!1!==await r.execute(e))return;let r=process.argv.slice(2).join(" "),o=t.map(e=>e.constructor.name).join(", ")||"(none)";throw Error(`[DispatchChain] no strategy matched \u{2014} likely a bundle assembly defect (DispatchStrategy provider is empty or DefaultModeStrategy is not registered). argv=[${r}] candidates=[${o}]`)}};dispatch_chain_decorate([(0,iB.AutowiredProvider)(nm.DispatchStrategy),dispatch_chain_metadata("design:type","function"==typeof(c=void 0!==iB.Provider&&iB.Provider)?c:Object)],nA.prototype,"strategyProvider",void 0),dispatch_chain_decorate([(0,iB.Autowired)(n_.cU),dispatch_chain_metadata("design:type","function"==typeof(l=void 0!==n_.cU&&n_.cU)?l:Object)],nA.prototype,"shortcutManager",void 0),nA=dispatch_chain_decorate([(0,iB.Component)()],nA);var nR=r(43463),nk=r(19542),cli_dispatcher_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},cli_dispatcher_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let nE=class{constructor(){this.pluginBinPaths=[],this.prewarmArgvRewritten=!1}get startupProfiler(){return iB.ContainerUtil.get(nf.LS)}init(){this.logger.setContext("CliDispatcher")}async onStart(e){if(await (0,nk._v)()||this.logger.warn?.("[CredentialProtection] startup bootstrap unavailable; continuing"),this.logger.info?.(`[CredentialBootstrap] CBC receiver ${JSON.stringify((0,nk.HB)())}`),(0,ng.W)()){this.cliRuntimeOptions.set({}),this.logger.info?.(`[LibraryRuntime] library bootstrap pid=${process.pid}, dispatch skipped`),this.startPluginRuntimeRefresh("startup");return}this.startupProfiler.markStart(nf.pw.CLI_PARSE,"CLI Parse");let t=await this.cliProvider.get(),{debug:r,print:o}=t.opts();this.startupProfiler.markEnd(nf.pw.CLI_PARSE);let i=process.env.CLIENT_INFO_PRODUCT_VERSION||"unknown";this.logger.info?.(`[ColdStart] cli onStart pid=${process.pid} version=${i}`);let n=o||!process.stdout.isTTY,s=t.opts(),a=(0,nh.jw)(s);a&&(s.agent=a);let c="stream-json"===s.outputFormat||"stream-json"===s.inputFormat||"stream-json"===s["output-format"]||"stream-json"===s["input-format"];try{(0,nh.Aw)({agentName:"string"==typeof s.agent?s.agent:void 0,print:n,streamJson:!!c,stdoutIsTTY:!!process.stdout.isTTY,stdinIsTTY:!!process.stdin.isTTY,acp:!!s.acp,serve:!!s.serve})}catch(t){let e=t instanceof Error?t.message:String(t);this.logger.error?.(e),process.exit(1)}if(this.cliRuntimeOptions.set({...s,print:n}),await this.applyPluginDirectoryEnvironment(s),await (0,nR.v8)(this.logger),this.consoleManager.interceptGlobalConsole({isDebug:r,isPrint:n}),this.isPrewarmRequested(s))return void await this.runPrewarmStandby(s);let l=t.args[0];"string"==typeof l&&t.commands.some(e=>e.name()===l||e.aliases().includes(l))||this.startPluginRuntimeRefresh("startup"),await this.dispatch()}isPrewarmRequested(e){return!0===e.prewarm}isPrewarmForceRequested(e){return!0===e.prewarmForce}async applyPluginDirectoryEnvironment(e){if(!e.pluginDir)return;let t=(Array.isArray(e.pluginDir)?e.pluginDir:[e.pluginDir]).map(e=>String(e));process.env.CODEBUDDY_PLUGIN_DIRS=t.join(iz.delimiter);let r=(await Promise.all(t.map(async e=>{let t=iz.resolve(e,"bin"),r=await iW.stat(t).catch(()=>void 0);return r?.isDirectory()?t:void 0}))).filter(e=>!!e),o=(process.env.PATH||"").split(iz.delimiter).filter(Boolean),i=new Set(this.pluginBinPaths??[]);if(0===r.length&&0===i.size)return;let n=new Set(r);this.pluginBinPaths=r,process.env.PATH=[...r,...o.filter(e=>!n.has(e)&&!i.has(e))].join(iz.delimiter)}startPluginRuntimeRefresh(e){try{iB.ContainerUtil.get(nd.PluginRuntimeRefreshService).refresh(e).catch(t=>{this.logger?.warn?.(`[PluginRuntime] ${e} activation degraded: ${t instanceof Error?t.message:String(t)}`)})}catch(t){this.logger?.warn?.(`[PluginRuntime] ${e} activation degraded: ${t instanceof Error?t.message:String(t)}`)}}async runPrewarmStandby(e){let t,r=iB.ContainerUtil.get(nr.g$),o=String(e.prewarmId??process.pid),i=this.isPrewarmForceRequested(e);this.logger.info?.(`[Prewarm] prewarm standby pid=${process.pid} prewarmId=${o} force=${i}`),i&&await this.evictExistingPrewarm(o);try{t=await r.listen(o,{force:i})}catch(e){throw e instanceof nr.iZ&&(this.logger.error?.(`[Prewarm] prewarm id "${o}" \u{5DF2}\u{88AB}\u{6D3B}\u{8FDB}\u{7A0B}\u{5360}\u{7528}\u{FF08}${e.socketPath}\u{FF09}\u{3002}\u{5982}\u{9700}\u{63A5}\u{7BA1}\u{8BF7}\u{52A0} --prewarm-force\u{FF0C}\u{6216}\u{6362}\u{4E00}\u{4E2A} --prewarm-id\u{3002}`),process.stderr.write(`[Prewarm] prewarm id "${o}" \u{5DF2}\u{88AB}\u{6D3B}\u{8FDB}\u{7A0B}\u{5360}\u{7528}\u{FF08}${e.socketPath}\u{FF09}\u{3002}\u{5982}\u{9700}\u{63A5}\u{7BA1}\u{8BF7}\u{52A0} --prewarm-force\u{FF0C}\u{6216}\u{6362}\u{4E00}\u{4E2A} --prewarm-id\u{3002}
98
- `),process.exit(1)),e}this.logger.info?.(`[cbc-kw=PREWARM] [Prewarm] standby ready, IPC at ${t} coldStartMs=${Math.round(1e3*process.uptime())}`),await this.registerPrewarmEntry(o,t);let cleanup=()=>{r.close().catch(()=>{})};process.once("SIGINT",()=>{cleanup(),process.exit(0)}),process.once("SIGTERM",()=>{cleanup(),process.exit(0)}),this.maybeEagerPreloadLazyChunks();let n=await r.waitForActivation(),s=this.configurePrewarmBootstrap(n.credentialProtectionBootstrap);if(this.logger.info?.(`[CredentialBootstrap] CBC prewarm receiver ${JSON.stringify((0,nk.HB)())}`),delete n.credentialProtectionBootstrap,!s){let e=this.getPrewarmBootstrapFailure()??Error("WorkBuddy prewarm credential bootstrap failed");throw this.logger.error?.(`[CredentialProtection] prewarm bootstrap rejected: ${e.message}`),await r.close().catch(()=>{}),e}let a=process.cwd(),c=n.cwd;if(this.logger.info?.(`[Prewarm] activated pid=${process.pid} version=${process.env.CLIENT_INFO_PRODUCT_VERSION||"unknown"} \u{2192} prevCwd=${a}, cwd=${c??"(unchanged)"}, cwdChanged=${!!c&&c!==a}, args=${JSON.stringify(n.args??[])}`),await this.unregisterPrewarmEntry(),"ready"!==n.ackMode&&r.close().catch(()=>{}),n.cwd)try{process.chdir(n.cwd)}catch(e){throw this.logger.error?.(`[Prewarm] chdir to "${n.cwd}" failed: ${String(e)}`),e}if(n.env&&Object.keys(n.env).length>0){let e=Object.keys(n.env);for(let[e,t]of Object.entries(n.env))process.env[e]=t;for(let[t,r]of(this.logger.info?.(`[Prewarm] env merged on activate, keys=[${e.join(", ")}]`),Object.entries(n.env)))this.logger.info?.(`[Prewarm] ${t}=${redactEnvValueForLog(t,r)}`)}await this.applyPrewarmArgs(n);try{let e=iB.ContainerUtil.get(nr.Ly);await e.fireActivation(n)}catch(e){throw this.logger.error?.(`[Prewarm] activation coordinator failed: ${String(e)}`),await r.close().catch(()=>{}),e}r.markActivatePhase("dispatch"),await this.dispatch()}configurePrewarmBootstrap(e){return(0,nk.lh)(e)}getPrewarmBootstrapFailure(){return(0,nk.YV)()}maybeEagerPreloadLazyChunks(){let e=String(process.env.CODEBUDDY_PREWARM_PRELOAD_LAZY_CHUNKS??"").toLowerCase();if("1"!==e&&"true"!==e)return;let t=globalThis.__CODEBUDDY_PRELOAD_LAZY_CHUNKS__;if("function"!=typeof t)return void this.logger.info?.("[Prewarm] eager lazy-chunk preload requested but global loader is absent (dev/test)");let r=Date.now();this.logger.info?.("[Prewarm] eager lazy-chunk preload starting (CODEBUDDY_PREWARM_PRELOAD_LAZY_CHUNKS)"),Promise.resolve().then(()=>t()).then(e=>{this.logger.info?.(`[Prewarm] eager lazy-chunk preload done loaded=${e.loaded} failed=${e.failed} source=${e.source} variant=${e.variant} cost=${Date.now()-r}ms`)}).catch(e=>{this.logger.warn?.(`[cbc-kw=PREWARM] [Prewarm] eager lazy-chunk preload failed (non-fatal): ${String(e)}`)})}async evictExistingPrewarm(e){try{let t=iB.ContainerUtil.get(nl.MN),r=iB.ContainerUtil.get(nl.DH);for(let o of(await t.list({kind:"prewarm"})).filter(t=>t.meta?.prewarmId===e&&!t.manual&&t.pid>0&&t.pid!==process.pid))this.logger.warn?.(`[Prewarm] force: terminating stale prewarm pid=${o.pid} (id=${e})`),r.sendSignal(o.pid,"SIGTERM"),await r.waitForExit(o.pid,3e3)||(r.sendSignal(o.pid,"SIGKILL"),await r.waitForExit(o.pid,2e3))}catch(e){this.logger.warn?.(`[Prewarm] force eviction failed: ${String(e)}`)}}async registerPrewarmEntry(e,t){try{let r=iB.ContainerUtil.get(nl.MN);await r.register({sessionId:`prewarm-${e}`,cwd:process.cwd(),startedAt:Date.now(),kind:"prewarm",meta:{prewarmId:e,socketPath:t,status:"idle"}})}catch(e){this.logger.warn?.(`[Prewarm] registry register failed: ${String(e)}`)}}async unregisterPrewarmEntry(){try{let e=iB.ContainerUtil.get(nl.MN);await e.unregister()}catch(e){this.logger.warn?.(`[Prewarm] registry unregister failed: ${String(e)}`)}}stripPrewarmFlags(e){let t=new Set(["--prewarm-id"]),r=new Set(["--prewarm","--prewarm-force"]),o=[];for(let i=0;i<e.length;i++){let n=e[i];if(r.has(n))continue;let s=n.indexOf("="),a=s>=0?n.slice(0,s):n;if(t.has(a)){s<0&&i+1<e.length&&!e[i+1].startsWith("-")&&i++;continue}o.push(n)}return o}rewritePrewarmArgv(e){if(this.prewarmArgvRewritten)return;this.prewarmArgvRewritten=!0;let t=e.args??[],r=this.stripPrewarmFlags(process.argv.slice(2)),o=[...process.argv];process.argv=[process.argv[0],process.argv[1],...r,...t],this.logger.info?.(`[Prewarm] rewritePrewarmArgv: argvBefore=${JSON.stringify(o)} coldStartRest=${JSON.stringify(r)} activationArgs=${summarizeArgs(t)} argvAfter=${JSON.stringify(process.argv)}`)}async applyPrewarmArgs(e){try{this.rewritePrewarmArgv(e);let t=(await this.cliProvider.get()).opts(),r=(0,nh.jw)(t);r&&(t.agent=r);let o=!0===t.print||!process.stdout.isTTY,i="stream-json"===t.outputFormat||"stream-json"===t.inputFormat||"stream-json"===t["output-format"]||"stream-json"===t["input-format"];(0,nh.Aw)({agentName:"string"==typeof t.agent?t.agent:void 0,print:o,streamJson:!!i,stdoutIsTTY:!!process.stdout.isTTY,stdinIsTTY:!!process.stdin.isTTY,acp:!!t.acp,serve:!!t.serve}),e.sessionId&&(t.sessionId=e.sessionId),this.cliRuntimeOptions.set({...t,print:o}),await this.applyPluginDirectoryEnvironment(t),await (0,nR.v8)(this.logger),this.logger.info?.(`[Prewarm] applyPrewarmArgs parsed opts: sessionId=${t.sessionId??"N/A"} serve=${t.serve??!1} permissionMode=${t.permissionMode??"N/A"} model=${t.model??"N/A"} agent=${t.agent??"N/A"} systemPromptFile=${t.systemPromptFile??"N/A"} mcpConfig=${t.mcpConfig??"N/A"} strictMcpConfig=${t.strictMcpConfig??!1} settingsLen=${"string"==typeof t.settings?t.settings.length:"N/A"} allowedTools=${JSON.stringify(t.allowedTools??"N/A")} port=${t.port??"N/A"}`)}catch(e){e instanceof nh.Ts&&(this.logger.error?.(e.message),process.exit(1)),this.logger.warn?.(`[Prewarm] applyPrewarmArgs failed: ${String(e)}`)}}async dispatch(){let e=await this.cliProvider.get(),t=e.opts(),r=(0,nh.jw)(t);r&&(t.agent=r),this.logger.info?.(`[Dispatch] entry opts: sessionId=${t.sessionId??"N/A"} serve=${t.serve??!1} acp=${t.acp??!1} permissionMode=${t.permissionMode??"N/A"} model=${t.model??"N/A"} agent=${t.agent??"N/A"} systemPromptFile=${t.systemPromptFile??"N/A"} mcpConfig=${t.mcpConfig??"N/A"} strictMcpConfig=${t.strictMcpConfig??!1} settingsLen=${"string"==typeof t.settings?t.settings.length:"N/A"} allowedTools=${JSON.stringify(t.allowedTools??"N/A")} port=${t.port??"N/A"} argv=${JSON.stringify(process.argv)}`);let o="stream-json"===t.inputFormat||t.acp||t.a2a,i="";o||(this.startupProfiler.markStart(nf.pw.STDIN_READ,"Stdin Read"),i=await this.readAllStdin(e.commands.map(e=>e.name())),this.startupProfiler.markEnd(nf.pw.STDIN_READ));let n={cli:e,pipeInput:i},s=process.argv[2];if(!nl.xZ.includes(s)&&!(0,nu.KJ)())try{let e,r=iB.ContainerUtil.get(nl.MN),o=process.env[nl.MY]||"interactive",i=(0,nu.L_)(),n=(0,nu.cn)();if("daemon"===o)try{e=iB.ContainerUtil.get(nl.DH).getInheritableArgs()}catch{}let s=process.env[nl.i]??process.env.SERVER__PORT,a="daemon"===o&&void 0!==s?Number(s):void 0;await r.register({sessionId:(0,nu.$3)(t,`${o}-${process.pid}`),cwd:process.cwd(),startedAt:Date.now(),kind:o,name:process.env[nl.BZ],logPath:process.env[nl.sW],...Number.isFinite(a)?{configuredPort:a}:{},..."daemon"===o&&process.env.SERVER__HOST?{configuredHost:process.env.SERVER__HOST}:{},...e?{startupArgs:e}:{},...i||n?{meta:{...i?{jobId:i}:{},...n?{jobGeneration:String(n)}:{}}}:{}})}catch{}await this.dispatchChain.execute(n)}async readAllStdin(e){if(process.stdin.isTTY)return this.logger.info("stdin is TTY, skipping stdin read"),"";let t=process.argv.slice(2).find(e=>!e.startsWith("-"));if(t&&e.includes(t))return this.logger.info(`stdin skipped: sub-command '${t}' does not need stdin`),"";this.logger.info("stdin is not TTY, reading stdin until EOF...");let r=[];process.stdin.setEncoding("utf8");let o=!1,i=!1,createTimeout=e=>setTimeout(()=>{i=!0,this.logger.warn(`stdin read timeout after ${e}ms (received data: ${o}), proceeding`),process.stdin.destroy()},e),n=createTimeout(500);try{for await(let e of process.stdin){if(i)break;o||(o=!0,clearTimeout(n),n=createTimeout(5e3)),r.push(e)}}catch{i||this.logger.warn("stdin read error (non-timeout)")}finally{clearTimeout(n)}return this.logger.info("finished reading stdin"),r.join("").trim()}};function summarizeArgs(e){let t=new Set(["--system-prompt","--append-system-prompt","--settings"]),r=[];for(let o=0;o<e.length;o++){let i=e[o];if(!i.startsWith("-")){r.push(`<positional:${i}>`);continue}let n=e[o+1];if(void 0===n||n.startsWith("-")){r.push(i);continue}t.has(i)?r.push(`${i}=<len=${n.length}>`):r.push(`${i}=${n}`),o++}return r.join(" ")}cli_dispatcher_decorate([(0,iB.Autowired)(nm.CliProvider),cli_dispatcher_metadata("design:type","function"==typeof(d=void 0!==nm.CliProvider&&nm.CliProvider)?d:Object)],nE.prototype,"cliProvider",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(iZ.P0),cli_dispatcher_metadata("design:type","function"==typeof(u=void 0!==iZ.P0&&iZ.P0)?u:Object)],nE.prototype,"cliRuntimeOptions",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(np.dy),cli_dispatcher_metadata("design:type","function"==typeof(p=void 0!==np.dy&&np.dy)?p:Object)],nE.prototype,"consoleManager",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(nA),cli_dispatcher_metadata("design:type","function"==typeof(g=void 0!==nA&&nA)?g:Object)],nE.prototype,"dispatchChain",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(iB.Logger),cli_dispatcher_metadata("design:type","function"==typeof(h=void 0!==iB.Logger&&iB.Logger)?h:Object)],nE.prototype,"logger",void 0),cli_dispatcher_decorate([(0,iB.PostConstruct)(),cli_dispatcher_metadata("design:type",Function),cli_dispatcher_metadata("design:paramtypes",[]),cli_dispatcher_metadata("design:returntype",void 0)],nE.prototype,"init",null),nE=cli_dispatcher_decorate([(0,iB.Component)(nm.CliDispatcher,iB.ApplicationLifecycle)],nE);let nI=["_TOKEN","_API_KEY","_ACCESS_TOKEN","_SECRET","_KEY","_PASS","_PASSWORD"],nM=new Set(["OPENAI_API_KEY","ANTHROPIC_API_KEY","CODEBUDDY_API_KEY","CODEBUDDY_SANDBOX_WEBHOOK_SECRET"]),nT=new Set(["token","accessToken","apiKey","api_key","password","secret","Authorization","authorization"]);function isSensitiveEnvKey(e){let t=e.toUpperCase();if(nM.has(t))return!0;for(let e of nI)if(t.endsWith(e))return!0;return!1}function redactJsonSensitiveFields(e){if(Array.isArray(e))return e.map(redactJsonSensitiveFields);if(e&&"object"==typeof e){let t={};for(let[r,o]of Object.entries(e))nT.has(r)?t[r]="string"==typeof o?`<redacted:${o.length}b>`:"<redacted>":t[r]=redactJsonSensitiveFields(o);return t}return e}function redactEnvValueForLog(e,t){if(isSensitiveEnvKey(e))return`<redacted:${t.length}b>`;let r=t.trim();if(r.startsWith("{")||r.startsWith("["))try{let e=JSON.parse(r);return JSON.stringify(redactJsonSensitiveFields(e))}catch{}return t}var nj=r(75348),nx=r(60188),nD=r(62707);let nL=i3.PackageUtils.getCurrentPackageJson(),nF=(0,nD.Gq)(),n$=new nj.uB;n$.name(nF.binaryName),nF.aliases.forEach(e=>n$.alias(e)),n$.version(nL.version).description(`${nF.cliName} - starts an interactive session by default, use -p/--print for non-interactive output`).argument("[prompt]","Your prompt").option("-d, --debug [filter]",'Enable debug mode with optional category filtering (e.g., "api,hooks" or "!statsig,!file")',e=>{try{let t=JSON.parse(e);if("string"==typeof t)return t;throw Error("Not a string")}catch(t){return e}},!1).addOption(new nj.c$("-d2e, --debug-to-stderr","Enable debug mode (to stderr)").default(!1).hideHelp()).option("--verbose","Override verbose mode setting from config",!1).addOption(new nj.c$(nx.NO_ORPHANS_FLAG,"Enable Windows descendant cleanup at startup").hideHelp()).option("-p, --print","Print response and exit (useful for pipes)",!1).option("--output-format <format>",'Output format (only works with --print): "text" (default), "json" (single result), or "stream-json" (realtime streaming)',"text").option("--input-format <format>",'Input format (only works with --print): "text" (default), or "stream-json" (realtime streaming input) (choices: "text", "stream-json")',"text").option("--json-schema <schema>",'JSON Schema for structured output validation. Example: {"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}').option("--include-partial-messages","Output raw SSE incremental messages from model requests (only works with --output-format stream-json)",!1).option("-y, --dangerously-skip-permissions","Bypass permission prompts (HIGH/CRITICAL still ask). Isolated-sandbox full pass: CODEBUDDY_IS_SANDBOX=1 (process env only; high-risk).",!1).option("--permission-mode <mode>","Default permission mode for this process (TUI, --serve Web, ACP). Choices: acceptEdits, bypassPermissions, default, plan, dontAsk, auto. Does not write settings.").option("--permission-mode-before-plan <mode>","Permission mode to restore when exiting plan mode").option("--subagent-permission-mode <mode>",'Default permission mode for subagents/teammates (choices: "acceptEdits", "bypassPermissions", "default", "plan", "dontAsk", "auto"). Overrides inheritance from main session.').option("--tools <value>",'Restrict which built-in tools CodeBuddy can use. Use "" to disable all, "default" for all, or comma-separated tool names like "Bash,Edit,Read".').option("--allowedTools <tools...>",'Comma or space-separated list of tool names to allow (e.g. "Bash(git:*) Edit")').option("--disallowedTools <tools...>",'Comma or space-separated list of tool names to deny (e.g. "Bash(git:*) Edit")').option("--mcp-config <fileOrString>","Load MCP servers from a JSON file or string").option("--channels <value>","Enable specific channels (comma-separated: plugin:name@marketplace or server:configName)").option("--dangerously-load-development-channels <value>","During research preview: bypass allowlist for specific channels (development only, requires confirmation)").option("-c, --continue","Continue the most recent conversation",!1).option("-r, --resume [sessionId]","Resume a conversation - provide a session ID or interactively select a conversation to resume",!1).option("-w, --worktree [name]",'Create a git worktree and start the session in it (optionally specify a name, PR number like "#123", or PR URL)').option("--worktree-branch <branch>","Base branch for the worktree (defaults to remote default branch, requires --worktree)").option("--tmux","Create worktree in a new tmux session (requires --worktree)",!1).option("--tmux-classic","Use classic tmux mode instead of iTerm2 integration (requires --tmux)",!1).option("--model <model>","Model for the current session. Please provide the model ID.").option("--text-to-image-model <model>","Model for text-to-image generation").option("--image-to-image-model <model>","Model for image-to-image editing").option("--fallback-model <model>","Enable automatic fallback to specified model when default model is overloaded (only works with --print)").option("--add-dir <directories...>","Additional directories to allow tool access to").option("--ide","Automatically connect to IDE on startup if exactly one valid IDE is available",!1).option("-v, --version","Output the version number",!1).option("--strict-mcp-config","Only use MCP servers from --mcp-config, ignoring all other MCP configurations",!1).addOption(new nj.c$("--no-plugin-management","Disable marketplace and plugin lifecycle management in this process").hideHelp()).option("--session-id <uuid>","Use a specific session ID for the conversation (supports letters, numbers, hyphens, underscores, and colons, but must start with a letter or number)").option("--no-session-persistence","Disable session persistence - sessions stay in memory and are not saved to disk").option("-H, --header <headers...>",'Custom HTTP headers for model requests (format: "Header-Key: Header-Value")').option("--serve","Start HTTP server (Web UI, REST API, ACP over HTTP SSE). Without --acp, ACP does not use stdio.",!1).option("--open","Open Web UI in browser after startup",!1).option("--port <number>","Port for HTTP server (default: auto-assign)").option("--host <string>","Host address to bind HTTP server (default: 127.0.0.1)","127.0.0.1").option("--base-path <path>","Public URL path prefix for the Web UI (e.g. /cnb-5gg-1k09dqp5v-001). Also CODEBUDDY_GATEWAY_BASE_PATH.").addOption(new nj.c$("--auth <mode>",'HTTP server authentication mode (only applies with --serve). Defaults to "password"; "none" disables auth and lets any local process execute commands and read/write files through the server').choices(["password","none"])).option("--brief","Enable SendUserMessage tool for agent-to-user communication",!1).option("--acp","Start in ACP (Agent Client Protocol) mode - enables communication via stdin/stdout using ndJsonStream",!1).option("--acp-transport <transport>",'ACP transport (only works with --acp): "stdio" (default) or "streamable-http"',"stdio").addOption(new nj.c$("--a2a",'Accept A2A JSON-RPC over stdio \u2014 SendMessage, GetTask, ListTasks, and CancelTask. Alone: A2A owns stdio exclusively. Combined with --input-format stream-json: stdin carries both protocols, routed per line (a line with "jsonrpc" is A2A, otherwise stream-json), both driving the same session. Mutually exclusive with --acp. SDK/CloudAgent entry point, not for direct terminal use.').default(!1).hideHelp()).option("--sandbox [url]",'Run CodeBuddy in sandbox: "container" for Docker/Podman, or E2B API URL (must be complete URL like https://api.e2b.dev)').option("--sandbox-upload-dir","Upload current working directory to sandbox (E2B only)",!1).option("--sandbox-new","Force create a new sandbox (ignore cached sandbox)",!1).option("--sandbox-id <id>","Connect to specific sandbox ID").option("--sandbox-kill","Kill sandbox on exit (default: keep alive for reuse)",!1).option("--teleport <value>","Teleport to existing sandbox (format: session_{cliSessionId})").option("--max-turns <number>","Limit the number of agentic turns").option("--effort <level>","Reasoning effort level (minimal, low, medium, high, xhigh, max)").option("--autocompact <auto|tokens>",'Auto-compact window size: "auto" follows the model window, or a token count (e.g. 400000, 400k, 1m; clamped to 100k-1M)').option("--teleport <value>","Teleport to existing sandbox (format: 0010${sandboxId}${randomNumber} for e2b, 0020${sandboxId}${randomNumber} for cvm)").option("--system-prompt <prompt>","Override the system prompt for this session").option("--system-prompt-file <path>","Load system prompt from a file").option("--append-system-prompt <prompt>","Append additional content to the system prompt").option("--prompt-vars-file <path>","Load prompt template variables from a JSON file").option("--agent <agent>","Default main agent for this process (TUI, --print/headless, --serve Web, ACP). Headless tool use must be pre-authorized (for example with -y). Overrides lastUsed for new sessions; does not write settings.").option("--multitask","Turn on Multitask overlay (normalized to --agent multitask). Not available in Minimal. Does not change Standard/PTC/Create. Interactive TTY only.",!1).option("--agents <json>",'JSON object defining custom agents (e.g. \'{"reviewer": {"description": "Reviews code", "prompt": "You are a code reviewer"}}\')').option("--settings <file-or-json>","Path to a settings JSON file or a JSON string to load additional settings from").option("--setting-sources <sources>","Comma-separated list of setting sources to load (user, project, local). Default: user,project,local").option("--fork-session","When resuming, create a new session ID instead of reusing the original (use with --resume or --continue)").addOption(new nj.c$("--resume-session-at <message id>","When resuming, only messages up to and including the assistant message with <message.id> (use with --resume in print mode)").argParser(String).hideHelp()).addOption(new nj.c$("--rewind-files <user-message-id>","Restore files to state at the specified user message and exit (requires --resume)").hideHelp()).addOption(new nj.c$("--dry-run","With --rewind-files, only preview the rewind; do not modify the filesystem").hideHelp()).option("--replay-user-messages","Re-emit user messages from stdin back on stdout for acknowledgment (only works with --input-format=stream-json and --output-format=stream-json)").option("--remote-control [client]","Connect to remote control service. Without args: AgentOS mode. With client type (e.g. wecom): auto-connect specified client").option("--plugin-dir <dirs...>","Load plugins from local directories (for development/testing). Can specify multiple paths.").option("--bg","Run the session in the background (detached)",!1).option("--background","Alias for --bg",!1).option("--name <name>","Name for background session (used with --bg)").option("--exec <command>","With --bg: run a shell command as a background job instead of a model session").option("--swarm","Enable swarm mode: teammates run as independent processes (tmux visualization if available, otherwise background with Web UI)",!1).addOption(new nj.c$("--prewarm","Start as a prewarmed standby process: finish cold-start init then wait for IPC activation before binding to a working directory").default(!1).hideHelp()).addOption(new nj.c$("--prewarm-id <id>","Identifier for the prewarm IPC endpoint (defaults to the process PID). Used to build the socket/pipe address.").hideHelp()).addOption(new nj.c$("--prewarm-force","When a live prewarm process already owns the same --prewarm-id, terminate it and take over the address instead of refusing to start.").default(!1).hideHelp()).addOption(new nj.c$("--teammate-mode","Mark this process as a teammate").hideHelp()).addOption(new nj.c$("--team-name <name>","Team name for this teammate").hideHelp()).addOption(new nj.c$("--agent-name <name>","Teammate agent name").hideHelp()).addOption(new nj.c$("--agent-type <type>","Custom agent type for this teammate").hideHelp()).addOption(new nj.c$("--agent-color <color>","Display color for this teammate").hideHelp()).addOption(new nj.c$("--leader-endpoint <url>","Leader HTTP endpoint for Permission Bridge").hideHelp()).action(()=>{});let nU=n$.command("config").description("Manage configuration (eg. codebuddy config set -g theme dark)");nU.command("get <key>").description("Get a config value"),nU.command("set <key> <value>").description("Set a config value").option("-g, --global","Set global config"),nU.command("remove <key> [values...]").alias("rm").description("Remove a config value or items from a config array").option("-g, --global","Set global config"),nU.command("list").alias("ls").description("List all config values"),nU.command("add <key> <values...>").description("Add items to a config array (space or comma separated)").option("-g, --global","Set global config");let nN=n$.command("mcp").description("Configure and manage MCP servers");nN.command("add <name> <commandOrUrl> [args...]").description("Add an MCP server").option("-s, --scope <scope>","Server scope: local, project, or user","local").option("-t, --transport <transport>","Transport type: stdio, sse, or http","stdio").option("-e, --env <env...>","Environment variables (format: KEY=value)").option("-H, --header <header...>",'Custom HTTP headers for SSE and HTTP transports (format: "Header-Key: Header-Value")').addHelpText("after",'\nExample Call:\n $ codebuddy mcp add myserver --env KEY=value -- python main.py --port 8080\n\n* NOTE:\n Understanding the "\u2014-" parameter:\n The "--" (double dash) separates CodeBuddy\u2019s own CLI flags from the command and arguments that get passed to the MCP server. Everything before "--" are options for CodeBuddy, and everything after "--" is the actual command to run the MCP server.'),nN.command("remove <name>").description("Remove an MCP server").option("-s, --scope <scope>","Server scope: local, project, or user"),nN.command("list").alias("ls").description("List configured MCP servers"),nN.command("get <name>").description("Get details about an MCP server"),nN.command("add-json <name> <json>").description("Add an MCP server (stdio or SSE) with a JSON string").option("-s, --scope <scope>","Server scope: local, project, or user","local");let nH=n$.command("sandbox").description("Manage sandboxes");nH.command("list").alias("ls").description("List all sandboxes"),nH.command("info [sandboxId]").description("Show sandbox information"),nH.command("kill <sandboxId>").description("Kill a running sandbox"),nH.command("clean").description("Clean up stopped/expired sandboxes from state file");let nB=n$.command("plugin").description(`Manage ${nF.cliName} plugins`);nB.command("validate <path>").description("Validate a plugin or marketplace manifest"),nB.command("list").alias("ls").option("--json","Output as JSON").description("List installed plugins");let nq=nB.command("marketplace").description(`Manage ${nF.cliName} marketplaces`);nq.command("add <source>").option("-n, --name <name>","Marketplace name").description("Add a marketplace"),nq.command("list").alias("ls").description("List all marketplaces"),nq.command("update <name>").description("Update a marketplace"),nq.command("remove <name>").alias("rm").description("Remove a marketplace"),nB.command("install <plugin>").alias("i").option("-s, --scope <scope>","Install scope: user, project, or local","user").description("Install a plugin from available marketplaces (use plugin@marketplace for specific marketplace)"),nB.command("uninstall <plugin>").aliases(["remove","rm"]).option("-s, --scope <scope>","Uninstall scope: user, project, or local","user").option("--prune","Also remove auto-installed dependencies that are no longer needed").option("--keep-data","Preserve plugin data after removing the final installed scope").option("-y, --yes","Skip the --prune confirmation prompt").description("Uninstall an installed plugin"),nB.command("prune").aliases(["autoremove"]).option("-s, --scope <scope>","Prune at scope: user, project, or local","user").option("--dry-run","List what would be removed without removing").option("-y, --yes","Skip the confirmation prompt").description("Remove auto-installed dependencies that are no longer needed"),nB.command("enable <plugin>").option("-s, --scope <scope>","Enable scope: user, project, or local (default: auto-detect)").description("Enable a disabled plugin"),nB.command("disable <plugin>").option("-s, --scope <scope>","Disable scope: user, project, or local (default: auto-detect)").description("Disable an enabled plugin"),nB.command("update <plugin>").option("-s, --scope <scope>","Update scope: user, project, or local","user").description("Update a plugin to the latest version (restart required to apply)"),n$.command("project").description(`Manage ${nF.cliName} project state`).command("purge [path]").description("Delete local CodeBuddy Code state for a project").option("--all","Purge state for every project (mutually exclusive with [path])").option("--dry-run","List what would be deleted without deleting anything").option("-i, --interactive","Prompt for each cleanup category before deleting").option("-y, --yes","Skip confirmation prompt"),n$.command("doctor").description("Check the health of your CodeBuddy Code auto-updater"),n$.command("update").description("Check for updates and install if available"),n$.command("install [target]").description("Install CodeBuddy Code native build. Use [target] to specify version (latest, or specific version)"),n$.command("cleanup").description("Clean up expired local CodeBuddy data").option("--days <number>","Delete local data older than this many days (defaults to cleanupPeriodDays)").option("--dry-run","Preview cleanup without deleting files",!1);let nW=n$.command("daemon").description("Manage the daemon supervisor process");nW.command("start").description("Start the daemon supervisor").option("--port <number>","Port for daemon HTTP server (default: auto)").option("--host <string>","Host address to bind (default: 127.0.0.1)"),nW.command("stop").description("Stop the daemon supervisor").option("--keep-workers","Leave background session workers running; stop only the daemon itself",!1),nW.command("status").description("Show daemon supervisor status"),nW.command("restart").description("Restart the daemon supervisor"),nW.command("install").description("Register daemon as a system service (auto-start on login)").option("--port <number>","Port for daemon HTTP server").option("--permission-mode <mode>","Permission mode for daemon sessions"),nW.command("uninstall").description("Remove daemon system service registration"),n$.command("ps").description("List all active sessions (interactive, background, daemon)").option("--json","Output in JSON format",!1),n$.command("logs <pidOrName>").description("Show logs for a background session").option("-f, --follow","Follow log output",!1),n$.command("attach <pidOrName>").description("Attach to a running background session"),n$.command("kill <pidOrName>").description("Terminate a background session"),n$.command("stop <pidOrName>").description("Stop a background session (alias for kill)"),n$.command("rm <idOrName>").description("Remove a background session from agent view (the transcript stays on your machine)"),n$.command("respawn [idOrName]").description("Restart a background session with its conversation intact").option("--all","Restart every running background session (e.g. after a binary update)"),n$.command("agents").description("Open agent view to dispatch and manage background sessions").option("--jobs","Print sessions as a JSON array and exit",!1).option("--all","Include completed sessions in --jobs output",!1).option("--cwd <path>","Only list sessions started under this directory").option("--model <model>","Model used for sessions dispatched from agent view").option("--permission-mode <mode>","Permission mode for sessions dispatched from agent view").option("--agent <agent>","Default main agent for dispatched sessions");let nz=n$.command("auto-mode").description("Inspect auto mode classifier configuration");nz.command("defaults").description("Print the built-in default auto mode rules as JSON"),nz.command("config").description("Print the effective auto mode config as JSON (your settings where set, defaults otherwise)"),nz.command("critique").description("Get AI feedback on your custom auto mode rules"),n$.command("agents").description("List configured agents grouped by source (user, project, managed, plugin, cli-arg, built-in); requires --json").option("--json","Output as JSON",!1),n$.on("command:*",e=>{});let nK=class{constructor(){this.CURRENTLY_SUPPORTED_PATTERN=/ Currently supported: \([^)]*\)$/}async get(){if(this.isHelpRequested()){let sigintHandler=()=>process.exit(0);process.on("SIGINT",sigintHandler),await this.updateModelOptionDescription(),process.off("SIGINT",sigintHandler)}let e=process.env.ELECTRON_RUN_AS_NODE?"node":void 0;return n$.parse(process.argv,e?{from:e}:void 0),n$}parseOpts(){let e=n$.args;return n$.parseOptions(process.argv),{arg:e,opts:n$.opts()}}isHelpRequested(){let e=process.argv;return e.includes("-h")||e.includes("--help")||e.includes("help")||e.some(e=>e.endsWith("--help")||e.endsWith("-h"))}async updateModelOptionDescription(){try{let e=n$.options.find(e=>"--model"===e.long);if(!e)return;let t=new Promise((e,t)=>{let r=setTimeout(()=>t(Error("timeout")),1e4);"function"==typeof r.unref&&r.unref()}),r=iB.ContainerUtil.get(iY.AgentManager),o=await Promise.race([r.getDefault(),t]),i=await Promise.race([r.getModels(o.name),t]);if(0===i.length)return;let n=i.map(e=>e.id).join(", ");e.description=e.description.replace(this.CURRENTLY_SUPPORTED_PATTERN,""),e.description+=` Currently supported: (${n})`}catch{}}};nK=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(nm.CliProvider)],nK),r(12028);var nG=r(74839);let nV=Symbol("StdoutWriter"),nY=class{constructor(){this.queue=[],this.queuedBytes=0,this.inFlightBytes=0,this.pumping=!1,this.idleWaiters=[],this.progressListeners=[],this._failedWrites=0,this.loggedFailures=0,this.persistChannel=null,this.outputPrebuffer=[],this._persistArmed=!1}static{f=this}static{this.PREBUFFER_CAP=4096}get bufferedCharacters(){return this.queuedBytes+this.inFlightBytes}get persistenceBufferedCharacters(){return this.persistChannel?.bufferedCharacters??0}get failedWrites(){return this._failedWrites}attachPersistChannel(e,t){if(this.persistChannel=e,e){if(this.outputPrebuffer.length>0){for(let t of this.outputPrebuffer)this.appendChunkToChannel(t,e);this.outputPrebuffer=[]}if(t&&t.length>0)for(let r of t)e.append("out",r)}}armPersistPrebuffer(){this._persistArmed=!0}async flushPersistChannel(){if(this.persistChannel)try{await this.persistChannel.flush()}catch{}}tapPersist(e){this.persistChannel?this.appendChunkToChannel(e,this.persistChannel):this._persistArmed&&this.outputPrebuffer.length<f.PREBUFFER_CAP&&this.outputPrebuffer.push(e)}appendChunkToChannel(e,t){let r,o=e.endsWith("\n")?e.slice(0,-1):e;if(t.appendSerialized)return void t.appendSerialized("out",o);try{r=JSON.parse(o)}catch{r=o}t.append("out",r)}write(e){let t;try{t=JSON.stringify(e)}catch(e){this.reportFailure(e,"serialize");return}this.writeLine(t)}writeLine(e,t){let r=e.endsWith("\n")?e:e+"\n";this.queue.push({chunk:r,onWritten:t}),this.queuedBytes+=r.length,this.tapPersist(r),this.kickPump()}flush(){return this.pumping||0!==this.queue.length?new Promise(e=>{this.idleWaiters.push(e)}):Promise.resolve()}flushOrStall(e){return this.pumping||0!==this.queue.length?new Promise(t=>{let r,o=!1,finish=e=>{if(o)return;o=!0,r&&clearTimeout(r);let i=this.progressListeners.indexOf(onProgress);i>=0&&this.progressListeners.splice(i,1),t(e)},armStallTimer=()=>{r=setTimeout(()=>{finish({complete:!1,remainingBytes:this.queuedBytes+this.inFlightBytes})},e),r.unref?.()},onProgress=()=>{o||(r&&clearTimeout(r),armStallTimer())};this.progressListeners.push(onProgress),this.idleWaiters.push(()=>finish({complete:!0,remainingBytes:0})),armStallTimer()}):Promise.resolve({complete:!0,remainingBytes:0})}kickPump(){this.pumping||(this.pumping=!0,this.pump().catch(()=>void 0))}async pump(){try{for(;this.queue.length>0;){let e=this.queue.shift(),t=e.chunk,r=e.onWritten?[e.onWritten]:[];for(this.queuedBytes-=t.length;this.queue.length>0&&t.length+this.queue[0].chunk.length<=262144;){let e=this.queue.shift();this.queuedBytes-=e.chunk.length,t+=e.chunk,e.onWritten&&r.push(e.onWritten)}this.inFlightBytes=t.length;let o=await this.writeChunk(t);for(let e of(this.inFlightBytes=0,r))try{e(o)}catch{}for(let e of[...this.progressListeners])e()}}finally{if(this.pumping=!1,this.queue.length>0)this.kickPump();else{let e=this.idleWaiters;for(let t of(this.idleWaiters=[],e))t()}}}writeChunk(e){return new Promise(t=>{let r=!1,settle=e=>{r||(r=!0,e&&(this._failedWrites++,this.reportFailure(e,"write")),t(e?"failed":"written"))};try{process.stdout.write(e,settle)}catch(e){settle(e instanceof Error?e:Error(String(e)))}})}reportFailure(e,t){if(this.loggedFailures++,1===this.loggedFailures||this.loggedFailures%100==0)try{let{ContainerUtil:o}=r(88523),{Logger:i}=r(92735),n=o.get(i);n.error?.(`[StdoutWriter] ${t} failure #${this.loggedFailures} (failedWrites=${this._failedWrites}): `+(e instanceof Error?`${e.code??""} ${e.message}`:String(e)))}catch{}}};nY=f=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(nV)],nY);var sdk_elicitation_client_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let nJ=class{constructor(){this.pendingRequests=new Map,this.requestIdCounter=0}async createElicitation(e,t){let r,o=t?.signal;if(o?.aborted)throw Error("Elicitation request aborted");let i=`elic_${Date.now()}_${++this.requestIdCounter}`,n=new iB.Deferred;if(o){let onAbort=()=>{this.pendingRequests.delete(i),n.reject(Error("Elicitation request aborted"))};o.addEventListener("abort",onAbort,{once:!0}),r=()=>o.removeEventListener("abort",onAbort)}this.pendingRequests.set(i,{deferred:n,cleanup:r});let s=(0,iY.currentTurnCarrier)(),a={type:"control_request",request_id:i,request:{subtype:"elicitation_create",...e},...(0,iY.hasTurnCarrier)(s)?{_meta:s}:{}};return this.stdoutWriter.write(a),n.promise}completeElicitation(e){this.stdoutWriter.write({type:"control_notification",channel:"elicitation",data:e})}handleResponse(e,t){let r=this.pendingRequests.get(e);if(!r)return;if(r.cleanup?.(),this.pendingRequests.delete(e),"error"===t.subtype)return void r.deferred.reject(Error(t.error));let o=t.response??{};r.deferred.resolve(o)}cancelAllPending(e){for(let[,t]of this.pendingRequests)t.cleanup?.(),t.deferred.reject(Error(e));this.pendingRequests.clear()}};sdk_elicitation_client_decorate([(0,iB.Autowired)(nV),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(m=void 0!==nV&&nV)?m:Object)],nJ.prototype,"stdoutWriter",void 0),nJ=sdk_elicitation_client_decorate([(0,iB.Component)(nG.bQ)],nJ);var sdk_hooks_manager_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},sdk_hooks_manager_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let nX=class{constructor(){this.hooksConfig=new Map,this.pendingRequests=new Map,this.requestIdCounter=0}setHooks(e){for(let[t,r]of(this.hooksConfig.clear(),Object.entries(e)))r&&r.length>0&&this.hooksConfig.set(t,r);this.logger.info(`SDK hooks configured: ${Array.from(this.hooksConfig.keys()).join(", ")}`)}clearHooks(){for(let[e,t]of(this.hooksConfig.clear(),this.pendingRequests))clearTimeout(t.timeoutId),t.deferred.reject(Error("Hooks cleared")),this.pendingRequests.delete(e)}hasHooks(e){return this.hooksConfig.has(e)}getHooks(e){return this.hooksConfig.get(e)||[]}async invokeCallback(e,t,r,o=6e4){let i=this.generateRequestId(),n=new iB.Deferred,s=setTimeout(()=>{this.pendingRequests.delete(i),n.reject(Error(`Hook callback timeout: ${e}`))},o);this.pendingRequests.set(i,{deferred:n,timeoutId:s,callbackId:e});let a={subtype:"hook_callback",callback_id:e,input:t,...r&&{tool_use_id:r}},c=(0,iY.currentTurnCarrier)(),l={type:"control_request",request_id:i,request:a,...(0,iY.hasTurnCarrier)(c)?{_meta:c}:{}};return this.sendRequest(l),n.promise}async executeHooks(e,t){let r=e.hook_event_name,o=this.hooksConfig.get(r),i={shouldContinue:!0,systemMessages:[],additionalContext:[],suppressOutput:!1};if(!o||0===o.length)return i;let n=this.getToolName(e),s=[];for(let e of o)if(this.matchesTool(e.matcher,n))for(let t of e.hookCallbackIds)s.push({callbackId:t,timeout:(e.timeout??60)*1e3});if(0===s.length)return i;let a=await Promise.allSettled(s.map(({callbackId:r,timeout:o})=>this.invokeCallback(r,e,t,o)));return this.aggregateResults(a,i)}handleResponse(e,t){let r=this.pendingRequests.get(e);if(!r)return;if(clearTimeout(r.timeoutId),this.pendingRequests.delete(e),"error"===t.subtype)return void r.deferred.reject(Error(t.error));let o=t.response??{};r.deferred.resolve(o)}aggregateResults(e,t){for(let r of e){if("rejected"===r.status){this.logger.warn(`Hook execution failed: ${r.reason}`);continue}let e=r.value;!1===e.continue&&(t.shouldContinue=!1,t.stopReason=e.stopReason),e.suppressOutput&&(t.suppressOutput=!0),e.systemMessage&&t.systemMessages.push(e.systemMessage);let o=e.hookSpecificOutput;o&&(o.permissionDecision&&("deny"===o.permissionDecision?(t.permissionDecision="deny",t.permissionDecisionReason=o.permissionDecisionReason):"ask"===o.permissionDecision&&"deny"!==t.permissionDecision?(t.permissionDecision="ask",t.permissionDecisionReason=o.permissionDecisionReason):"allow"!==o.permissionDecision||t.permissionDecision||(t.permissionDecision="allow",t.permissionDecisionReason=o.permissionDecisionReason)),o.updatedInput&&"allow"===o.permissionDecision&&(t.updatedInput=o.updatedInput),o.additionalContext&&t.additionalContext.push(o.additionalContext))}return t}matchesTool(e,t){if(!e)return!0;if(!t)return!1;try{return new RegExp(e).test(t)}catch{return t===e}}getToolName(e){if("tool_name"in e)return e.tool_name}generateRequestId(){return`hook_${Date.now()}_${++this.requestIdCounter}`}sendRequest(e){this.stdoutWriter.write(e)}setCapabilities(e){this.sdkCapabilities=e,e&&this.logger.info(`SDK capabilities set: ${JSON.stringify(e)}`)}getCapabilities(){return this.sdkCapabilities}};sdk_hooks_manager_decorate([(0,iB.Autowired)(i8.Logger),sdk_hooks_manager_metadata("design:type","function"==typeof(y=void 0!==i8.Logger&&i8.Logger)?y:Object)],nX.prototype,"logger",void 0),sdk_hooks_manager_decorate([(0,iB.Autowired)(nV),sdk_hooks_manager_metadata("design:type","function"==typeof(_=void 0!==nV&&nV)?_:Object)],nX.prototype,"stdoutWriter",void 0),nX=sdk_hooks_manager_decorate([(0,iB.Component)(nG.Yl)],nX);let nQ=class{constructor(){this.state={},this.lastSyncedFingerprint=JSON.stringify({})}set(e){let t={systemPrompt:e.systemPrompt,appendSystemPrompt:e.appendSystemPrompt,agents:e.agents};return this.state=t,JSON.stringify(t)!==this.lastSyncedFingerprint}markSynced(){this.lastSyncedFingerprint=JSON.stringify(this.state)}clear(){return(this.lastSyncedFingerprint!==JSON.stringify({})||0!==Object.keys(this.state).length)&&(this.state={},!0)}get(){return this.state}};nQ=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(nG.Pl)],nQ);var sdk_permission_client_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let nZ=class{constructor(){this.pendingRequests=new Map,this.requestIdCounter=0}async requestPermission(e,t,r,o){let i,n=this.generateRequestId(),s=new iB.Deferred,a=o?.timeout;void 0!==a&&a>0&&(i=setTimeout(()=>{this.pendingRequests.delete(n),s.reject(Error(`Permission request timeout: ${e}`))},a)),this.pendingRequests.set(n,{deferred:s,timeoutId:i,toolUseId:r});let c={subtype:"can_use_tool",tool_name:e,input:t,tool_use_id:r,...o?.agentId&&{agent_id:o.agentId},...o?.permissionSuggestions&&{permission_suggestions:o.permissionSuggestions},...o?.blockedPath&&{blocked_path:o.blockedPath},...o?.decisionReason&&{decision_reason:o.decisionReason}},l=(0,iY.currentTurnCarrier)(),d={type:"control_request",request_id:n,request:c,...(0,iY.hasTurnCarrier)(l)?{_meta:l}:{}};return this.sendRequest(d),s.promise}handleResponse(e,t){let r=this.pendingRequests.get(e);if(!r)return;if(r.timeoutId&&clearTimeout(r.timeoutId),this.pendingRequests.delete(e),"error"===t.subtype)return void r.deferred.reject(Error(t.error));let o=t.response;r.deferred.resolve({allowed:o?.allowed??!1,reason:o?.reason,interrupt:o?.interrupt,updatedInput:o?.updatedInput})}cancelRequest(e){let t=this.pendingRequests.get(e);t&&(t.timeoutId&&clearTimeout(t.timeoutId),t.deferred.reject(Error("Permission request cancelled")),this.pendingRequests.delete(e))}cancelByToolUseId(e,t,r="allow"){let o=[...this.pendingRequests.entries()].find(([,t])=>t.toolUseId===e);if(!o)return;let[i,n]=o;n.timeoutId&&clearTimeout(n.timeoutId),this.pendingRequests.delete(i),n.deferred.reject(Error(`Permission request resolved by ${t}`)),this.stdoutWriter.write({type:"control_notification",channel:"permission",data:{toolCallId:e,requestId:i,decision:r,resolvedBy:t}})}cancelAllPending(e){for(let[,t]of this.pendingRequests)t.timeoutId&&clearTimeout(t.timeoutId),t.deferred.reject(Error(e));this.pendingRequests.clear()}generateRequestId(){return`perm_${Date.now()}_${++this.requestIdCounter}`}sendRequest(e){this.stdoutWriter.write(e)}};sdk_permission_client_decorate([(0,iB.Autowired)(nV),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(v=void 0!==nV&&nV)?v:Object)],nZ.prototype,"stdoutWriter",void 0),nZ=sdk_permission_client_decorate([(0,iB.Component)(nG.RH)],nZ),r(46190);var n0=r(72854),n1=r(26205),a2a_agent_registry_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let n3={list:()=>[],get:()=>void 0,getSkill:()=>void 0},n2=class{constructor(){this.agents=new Map,this.sourceAgents=new Map}register(e){let t=[];if(!e||0===e.length)return this.agents=new Map,this.notifyAgentsChanged(),{registered:[],issues:t};let r=this.buildValidatedMap(e,t);return this.agents=r,this.warnIssues(t,e.length),this.notifyAgentsChanged(),{registered:[...r.keys()],issues:t}}registerForSource(e,t){let r=[],o=this.buildValidatedMap(t??[],r);if(!this.sourceAgents.has(e)&&this.sourceAgents.size>=32){let e=this.sourceAgents.keys().next().value;void 0!==e&&(this.sourceAgents.delete(e),this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] source partition cap hit; evicted oldest source ${e}`))}return this.sourceAgents.set(e,o),this.warnIssues(r,t?.length??0),{registered:[...o.keys()],issues:r}}resolveView(e){let t=(0,n0.cw)(e);if("process"===t.kind)return this;if("none"===t.kind)return n3;let{url:r}=t;return{list:()=>[...this.sourceAgents.get(r)?.values()??[]],get:e=>this.sourceAgents.get(r)?.get(e),getSkill:(e,t)=>this.sourceAgents.get(r)?.get(e)?.agentCard.skills?.find(e=>e.id===t)}}buildValidatedMap(e,t){let r=new Map;for(let o of e){let e=this.validate(o,r,t);e&&r.set(o.agentId,e)}return r}warnIssues(e,t){e.length>0&&this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] rejected ${e.length} of ${t} agent(s): `+e.map(e=>`${e.agentId}: ${e.reason}`).join("; "))}setOnAgentsChanged(e){this.onAgentsChanged=e}notifyAgentsChanged(){if(this.onAgentsChanged)try{Promise.resolve(this.onAgentsChanged()).catch(e=>{this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] onAgentsChanged listener rejected: ${e?.message??e}`)})}catch(e){this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] onAgentsChanged listener threw: ${e?.message??e}`)}}list(){return[...this.agents.values()]}get(e){return this.agents.get(e)}getSkill(e,t){let r=this.get(e);return r?.agentCard.skills?.find(e=>e.id===t)}clear(){this.agents=new Map,this.notifyAgentsChanged()}validate(e,t,r){let o="string"==typeof e?.agentId?e.agentId.trim():"";if(!o)return void r.push({agentId:String(e?.agentId??"(missing)"),reason:"agentId is required and must be a non-empty string"});if(t.has(o))return void r.push({agentId:o,reason:"duplicate agentId in the same registration batch"});let i=e.agentCard;if(!i||"object"!=typeof i)return void r.push({agentId:o,reason:"agentCard is required"});if("string"!=typeof i.name||""===i.name.trim())return void r.push({agentId:o,reason:"agentCard.name is required"});let n=i.supportedInterfaces;if(!Array.isArray(n)||0===n.length)return void r.push({agentId:o,reason:"agentCard.supportedInterfaces must be a non-empty array"});for(let e of n)if(!e||"object"!=typeof e||"string"!=typeof e.url||!e.url)return void r.push({agentId:o,reason:"every supportedInterfaces entry must declare a url"});if(void 0!==i.skills&&!Array.isArray(i.skills))return void r.push({agentId:o,reason:"agentCard.skills must be an array when present"});for(let e of i.skills??[])if(!e||"string"!=typeof e.id||!e.id)return void r.push({agentId:o,reason:"every skill must declare a non-empty id"});return{agentId:o,agentCard:i}}};a2a_agent_registry_decorate([(0,iB.Autowired)(i8.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(b=void 0!==i8.Logger&&i8.Logger)?b:Object)],n2.prototype,"logger",void 0),n2=a2a_agent_registry_decorate([(0,iB.Component)(n1.Dr)],n2);var n8=r(77598),n5=r(90753),n4=r(73401),n7=r(69780);let n6=new Set([429,502,503,504]),n9=new Set(["ECONNREFUSED","ENOTFOUND","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","UND_ERR_CONNECT_TIMEOUT"]),se=new Set(["ECONNRESET","EPIPE","ETIMEDOUT","UND_ERR_SOCKET","UND_ERR_HEADERS_TIMEOUT"]),st=/\b(fetch failed|socket hang up|terminated|network( |-)?error)\b/i;function codeOf(e){if(e&&"object"==typeof e){let t=e.code;if("string"==typeof t)return t;let r=e.cause;if(r&&"string"==typeof r.code)return r.code}}function isRetryableSendError(e){let t=e instanceof Error?e.message:String(e),r=(0,n7.s)(e,t);if(void 0!==r)return n6.has(r);let o=codeOf(e);return!!(o&&(n9.has(o)||se.has(o)))||st.test(t)}function resolveSendMaxRetries(e=process.env.CODEBUDDY_A2A_SEND_MAX_RETRIES){if(void 0===e||""===e.trim())return 2;let t=Number(e);return Number.isFinite(t)&&Number.isInteger(t)&&!(t<0)?Math.min(t,10):2}function sendRetryDelayMs(e){let t=500*2**e;return t/2+t/2*Math.random()}var a2a_client_service_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let sr=["traceparent","tracestate","baggage"];function presentTraceContext(e){if(!e)return;let t={};for(let r of sr){let o=e[r];"string"==typeof o&&o.length>0&&(t[r]=o)}return Object.keys(t).length>0?t:void 0}let so=["text/plain","text/markdown"];function acceptedOutputModesFor(e){let t=e.defaultOutputModes;if(Array.isArray(t)){let e=t.filter(e=>"string"==typeof e&&e.length>0);if(e.length>0)return e}return[...so]}let si={[n5.Dr.TASK_STATE_UNSPECIFIED]:"unknown",[n5.Dr.TASK_STATE_SUBMITTED]:"submitted",[n5.Dr.TASK_STATE_WORKING]:"working",[n5.Dr.TASK_STATE_COMPLETED]:"completed",[n5.Dr.TASK_STATE_FAILED]:"failed",[n5.Dr.TASK_STATE_CANCELED]:"canceled",[n5.Dr.TASK_STATE_INPUT_REQUIRED]:"input-required",[n5.Dr.TASK_STATE_REJECTED]:"rejected",[n5.Dr.TASK_STATE_AUTH_REQUIRED]:"auth-required",[n5.Dr.UNRECOGNIZED]:"unknown"};function joinTextParts(e){if(!e)return"";let t=[];for(let r of e)r.content?.$case==="text"?t.push(r.content.value):r.content?.$case==="data"&&void 0!==r.content.value&&t.push(JSON.stringify(r.content.value));return t.join("\n")}function renderStatusMessageParts(e){if(!e)return"";let t=[];for(let r of e){let e=r.content;if(e){if("text"===e.$case)e.value&&t.push(e.value);else if("url"===e.$case)e.value&&t.push(r.filename?`[${r.filename}](${e.value})`:e.value);else if("data"===e.$case&&void 0!==e.value){let r=e.value;if(r&&"object"==typeof r&&"string"==typeof r.description)t.push(r.description);else if(r&&"object"==typeof r&&Array.isArray(r.token_id_list)){let e=r.token_id_list.length;t.push(`(${e} pending approval${1===e?"":"s"})`)}else t.push(JSON.stringify(e.value))}}}return t.join("\n")}function attachmentParts(e){if(!e||0===e.length)return[];let t=[];for(let r of e){let e=r.url?.trim();e&&t.push({content:{$case:"url",value:e},metadata:void 0,filename:r.filename??"",mediaType:r.mediaType??""})}return t}function artifactSummariesOf(e){if(!e||0===e.length)return;let t=[];for(let r of e)for(let e of r.parts)e.content?.$case==="url"&&t.push({filename:e.filename||void 0,name:r.name,mediaType:e.mediaType||void 0,url:e.content.value});return t.length>0?t:void 0}function clarificationOf(e){let t=renderStatusMessageParts(e?.message?.parts);return t?{question:t}:void 0}function approvalInterruptOf(e){let t=e?.message?.parts;if(!t)return;let r=[],o=[];for(let e of t){let t=e.content;if(t?.$case!=="data"||void 0===t.value)continue;let i=t.value;if(i&&"object"==typeof i&&Array.isArray(i.token_id_list)){for(let e of i.token_id_list)r.push(e);o.push(e)}}return o.length>0?{tokenIds:r,parts:o}:void 0}function normalizeTask(e){let t,r=e.status?si[e.status.state]:void 0,o=artifactSummariesOf(e.artifacts),i="input-required"===r||"auth-required"===r?clarificationOf(e.status):void 0,n=renderStatusMessageParts(e.status?.message?.parts),s=(o??[]).map(e=>e.url).filter(e=>!!e);if(i?.question)t=i.question;else if(n){let e=s.filter(e=>!n.includes(e));t=e.length>0?`${n}
98
+ `),process.exit(1)),e}this.logger.info?.(`[cbc-kw=PREWARM] [Prewarm] standby ready, IPC at ${t} coldStartMs=${Math.round(1e3*process.uptime())}`),await this.registerPrewarmEntry(o,t);let cleanup=()=>{r.close().catch(()=>{})};process.once("SIGINT",()=>{cleanup(),process.exit(0)}),process.once("SIGTERM",()=>{cleanup(),process.exit(0)}),this.maybeEagerPreloadLazyChunks();let n=await r.waitForActivation(),s=this.configurePrewarmBootstrap(n.credentialProtectionBootstrap);if(this.logger.info?.(`[CredentialBootstrap] CBC prewarm receiver ${JSON.stringify((0,nk.HB)())}`),delete n.credentialProtectionBootstrap,!s){let e=this.getPrewarmBootstrapFailure()??Error("WorkBuddy prewarm credential bootstrap failed");throw this.logger.error?.(`[CredentialProtection] prewarm bootstrap rejected: ${e.message}`),await r.close().catch(()=>{}),e}let a=process.cwd(),c=n.cwd;if(this.logger.info?.(`[Prewarm] activated pid=${process.pid} version=${process.env.CLIENT_INFO_PRODUCT_VERSION||"unknown"} \u{2192} prevCwd=${a}, cwd=${c??"(unchanged)"}, cwdChanged=${!!c&&c!==a}, args=${JSON.stringify(n.args??[])}`),await this.unregisterPrewarmEntry(),"ready"!==n.ackMode&&r.close().catch(()=>{}),n.cwd)try{process.chdir(n.cwd)}catch(e){throw this.logger.error?.(`[Prewarm] chdir to "${n.cwd}" failed: ${String(e)}`),e}if(n.env&&Object.keys(n.env).length>0){let e=Object.keys(n.env);for(let[e,t]of Object.entries(n.env))process.env[e]=t;for(let[t,r]of(this.logger.info?.(`[Prewarm] env merged on activate, keys=[${e.join(", ")}]`),Object.entries(n.env)))this.logger.info?.(`[Prewarm] ${t}=${redactEnvValueForLog(t,r)}`)}await this.applyPrewarmArgs(n);try{let e=iB.ContainerUtil.get(nr.Ly);await e.fireActivation(n)}catch(e){throw this.logger.error?.(`[Prewarm] activation coordinator failed: ${String(e)}`),await r.close().catch(()=>{}),e}r.markActivatePhase("dispatch"),await this.dispatch()}configurePrewarmBootstrap(e){return(0,nk.lh)(e)}getPrewarmBootstrapFailure(){return(0,nk.YV)()}maybeEagerPreloadLazyChunks(){let e=String(process.env.CODEBUDDY_PREWARM_PRELOAD_LAZY_CHUNKS??"").toLowerCase();if("1"!==e&&"true"!==e)return;let t=globalThis.__CODEBUDDY_PRELOAD_LAZY_CHUNKS__;if("function"!=typeof t)return void this.logger.info?.("[Prewarm] eager lazy-chunk preload requested but global loader is absent (dev/test)");let r=Date.now();this.logger.info?.("[Prewarm] eager lazy-chunk preload starting (CODEBUDDY_PREWARM_PRELOAD_LAZY_CHUNKS)"),Promise.resolve().then(()=>t()).then(e=>{this.logger.info?.(`[Prewarm] eager lazy-chunk preload done loaded=${e.loaded} failed=${e.failed} source=${e.source} variant=${e.variant} cost=${Date.now()-r}ms`)}).catch(e=>{this.logger.warn?.(`[cbc-kw=PREWARM] [Prewarm] eager lazy-chunk preload failed (non-fatal): ${String(e)}`)})}async evictExistingPrewarm(e){try{let t=iB.ContainerUtil.get(nl.MN),r=iB.ContainerUtil.get(nl.DH);for(let o of(await t.list({kind:"prewarm"})).filter(t=>t.meta?.prewarmId===e&&!t.manual&&t.pid>0&&t.pid!==process.pid))this.logger.warn?.(`[Prewarm] force: terminating stale prewarm pid=${o.pid} (id=${e})`),r.sendSignal(o.pid,"SIGTERM"),await r.waitForExit(o.pid,3e3)||(r.sendSignal(o.pid,"SIGKILL"),await r.waitForExit(o.pid,2e3))}catch(e){this.logger.warn?.(`[Prewarm] force eviction failed: ${String(e)}`)}}async registerPrewarmEntry(e,t){try{let r=iB.ContainerUtil.get(nl.MN);await r.register({sessionId:`prewarm-${e}`,cwd:process.cwd(),startedAt:Date.now(),kind:"prewarm",meta:{prewarmId:e,socketPath:t,status:"idle"}})}catch(e){this.logger.warn?.(`[Prewarm] registry register failed: ${String(e)}`)}}async unregisterPrewarmEntry(){try{let e=iB.ContainerUtil.get(nl.MN);await e.unregister()}catch(e){this.logger.warn?.(`[Prewarm] registry unregister failed: ${String(e)}`)}}stripPrewarmFlags(e){let t=new Set(["--prewarm-id"]),r=new Set(["--prewarm","--prewarm-force"]),o=[];for(let i=0;i<e.length;i++){let n=e[i];if(r.has(n))continue;let s=n.indexOf("="),a=s>=0?n.slice(0,s):n;if(t.has(a)){s<0&&i+1<e.length&&!e[i+1].startsWith("-")&&i++;continue}o.push(n)}return o}rewritePrewarmArgv(e){if(this.prewarmArgvRewritten)return;this.prewarmArgvRewritten=!0;let t=e.args??[],r=this.stripPrewarmFlags(process.argv.slice(2)),o=[...process.argv];process.argv=[process.argv[0],process.argv[1],...r,...t],this.logger.info?.(`[Prewarm] rewritePrewarmArgv: argvBefore=${JSON.stringify(o)} coldStartRest=${JSON.stringify(r)} activationArgs=${summarizeArgs(t)} argvAfter=${JSON.stringify(process.argv)}`)}async applyPrewarmArgs(e){try{this.rewritePrewarmArgv(e);let t=(await this.cliProvider.get()).opts(),r=(0,nh.jw)(t);r&&(t.agent=r);let o=!0===t.print||!process.stdout.isTTY,i="stream-json"===t.outputFormat||"stream-json"===t.inputFormat||"stream-json"===t["output-format"]||"stream-json"===t["input-format"];(0,nh.Aw)({agentName:"string"==typeof t.agent?t.agent:void 0,print:o,streamJson:!!i,stdoutIsTTY:!!process.stdout.isTTY,stdinIsTTY:!!process.stdin.isTTY,acp:!!t.acp,serve:!!t.serve}),e.sessionId&&(t.sessionId=e.sessionId),this.cliRuntimeOptions.set({...t,print:o}),await this.applyPluginDirectoryEnvironment(t),await (0,nR.v8)(this.logger),this.logger.info?.(`[Prewarm] applyPrewarmArgs parsed opts: sessionId=${t.sessionId??"N/A"} serve=${t.serve??!1} permissionMode=${t.permissionMode??"N/A"} model=${t.model??"N/A"} agent=${t.agent??"N/A"} systemPromptFile=${t.systemPromptFile??"N/A"} mcpConfig=${t.mcpConfig??"N/A"} strictMcpConfig=${t.strictMcpConfig??!1} settingsLen=${"string"==typeof t.settings?t.settings.length:"N/A"} allowedTools=${JSON.stringify(t.allowedTools??"N/A")} port=${t.port??"N/A"}`)}catch(e){e instanceof nh.Ts&&(this.logger.error?.(e.message),process.exit(1)),this.logger.warn?.(`[Prewarm] applyPrewarmArgs failed: ${String(e)}`)}}async dispatch(){let e=await this.cliProvider.get(),t=e.opts(),r=(0,nh.jw)(t);r&&(t.agent=r),this.logger.info?.(`[Dispatch] entry opts: sessionId=${t.sessionId??"N/A"} serve=${t.serve??!1} acp=${t.acp??!1} permissionMode=${t.permissionMode??"N/A"} model=${t.model??"N/A"} agent=${t.agent??"N/A"} systemPromptFile=${t.systemPromptFile??"N/A"} mcpConfig=${t.mcpConfig??"N/A"} strictMcpConfig=${t.strictMcpConfig??!1} settingsLen=${"string"==typeof t.settings?t.settings.length:"N/A"} allowedTools=${JSON.stringify(t.allowedTools??"N/A")} port=${t.port??"N/A"} argv=${JSON.stringify(process.argv)}`);let o="stream-json"===t.inputFormat||t.acp||t.a2a,i="";o||(this.startupProfiler.markStart(nf.pw.STDIN_READ,"Stdin Read"),i=await this.readAllStdin(e.commands.map(e=>e.name())),this.startupProfiler.markEnd(nf.pw.STDIN_READ));let n={cli:e,pipeInput:i},s=process.argv[2];if(!nl.xZ.includes(s)&&!(0,nu.KJ)())try{let e,r=iB.ContainerUtil.get(nl.MN),o=process.env[nl.MY]||"interactive",i=(0,nu.L_)(),n=(0,nu.cn)();if("daemon"===o)try{e=iB.ContainerUtil.get(nl.DH).getInheritableArgs()}catch{}let s=process.env[nl.i]??process.env.SERVER__PORT,a="daemon"===o&&void 0!==s?Number(s):void 0;await r.register({sessionId:(0,nu.$3)(t,`${o}-${process.pid}`),cwd:process.cwd(),startedAt:Date.now(),kind:o,name:process.env[nl.BZ],logPath:process.env[nl.sW],...Number.isFinite(a)?{configuredPort:a}:{},..."daemon"===o&&process.env.SERVER__HOST?{configuredHost:process.env.SERVER__HOST}:{},...e?{startupArgs:e}:{},...i||n?{meta:{...i?{jobId:i}:{},...n?{jobGeneration:String(n)}:{}}}:{}})}catch{}await this.dispatchChain.execute(n)}async readAllStdin(e){if(process.stdin.isTTY)return this.logger.info("stdin is TTY, skipping stdin read"),"";let t=process.argv.slice(2).find(e=>!e.startsWith("-"));if(t&&e.includes(t))return this.logger.info(`stdin skipped: sub-command '${t}' does not need stdin`),"";this.logger.info("stdin is not TTY, reading stdin until EOF...");let r=[];process.stdin.setEncoding("utf8");let o=!1,i=!1,createTimeout=e=>setTimeout(()=>{i=!0,this.logger.warn(`stdin read timeout after ${e}ms (received data: ${o}), proceeding`),process.stdin.destroy()},e),n=createTimeout(500);try{for await(let e of process.stdin){if(i)break;o||(o=!0,clearTimeout(n),n=createTimeout(5e3)),r.push(e)}}catch{i||this.logger.warn("stdin read error (non-timeout)")}finally{clearTimeout(n)}return this.logger.info("finished reading stdin"),r.join("").trim()}};function summarizeArgs(e){let t=new Set(["--system-prompt","--append-system-prompt","--settings"]),r=[];for(let o=0;o<e.length;o++){let i=e[o];if(!i.startsWith("-")){r.push(`<positional:${i}>`);continue}let n=e[o+1];if(void 0===n||n.startsWith("-")){r.push(i);continue}t.has(i)?r.push(`${i}=<len=${n.length}>`):r.push(`${i}=${n}`),o++}return r.join(" ")}cli_dispatcher_decorate([(0,iB.Autowired)(nm.CliProvider),cli_dispatcher_metadata("design:type","function"==typeof(d=void 0!==nm.CliProvider&&nm.CliProvider)?d:Object)],nE.prototype,"cliProvider",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(iZ.P0),cli_dispatcher_metadata("design:type","function"==typeof(u=void 0!==iZ.P0&&iZ.P0)?u:Object)],nE.prototype,"cliRuntimeOptions",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(np.dy),cli_dispatcher_metadata("design:type","function"==typeof(p=void 0!==np.dy&&np.dy)?p:Object)],nE.prototype,"consoleManager",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(nA),cli_dispatcher_metadata("design:type","function"==typeof(g=void 0!==nA&&nA)?g:Object)],nE.prototype,"dispatchChain",void 0),cli_dispatcher_decorate([(0,iB.Autowired)(iB.Logger),cli_dispatcher_metadata("design:type","function"==typeof(h=void 0!==iB.Logger&&iB.Logger)?h:Object)],nE.prototype,"logger",void 0),cli_dispatcher_decorate([(0,iB.PostConstruct)(),cli_dispatcher_metadata("design:type",Function),cli_dispatcher_metadata("design:paramtypes",[]),cli_dispatcher_metadata("design:returntype",void 0)],nE.prototype,"init",null),nE=cli_dispatcher_decorate([(0,iB.Component)(nm.CliDispatcher,iB.ApplicationLifecycle)],nE);let nI=["_TOKEN","_API_KEY","_ACCESS_TOKEN","_SECRET","_KEY","_PASS","_PASSWORD"],nM=new Set(["OPENAI_API_KEY","ANTHROPIC_API_KEY","CODEBUDDY_API_KEY","CODEBUDDY_SANDBOX_WEBHOOK_SECRET"]),nT=new Set(["token","accessToken","apiKey","api_key","password","secret","Authorization","authorization"]);function isSensitiveEnvKey(e){let t=e.toUpperCase();if(nM.has(t))return!0;for(let e of nI)if(t.endsWith(e))return!0;return!1}function redactJsonSensitiveFields(e){if(Array.isArray(e))return e.map(redactJsonSensitiveFields);if(e&&"object"==typeof e){let t={};for(let[r,o]of Object.entries(e))nT.has(r)?t[r]="string"==typeof o?`<redacted:${o.length}b>`:"<redacted>":t[r]=redactJsonSensitiveFields(o);return t}return e}function redactEnvValueForLog(e,t){if(isSensitiveEnvKey(e))return`<redacted:${t.length}b>`;let r=t.trim();if(r.startsWith("{")||r.startsWith("["))try{let e=JSON.parse(r);return JSON.stringify(redactJsonSensitiveFields(e))}catch{}return t}var nj=r(75348),nx=r(60188),nD=r(62707);let nL=i3.PackageUtils.getCurrentPackageJson(),nF=(0,nD.Gq)(),n$=new nj.uB;n$.name(nF.binaryName),nF.aliases.forEach(e=>n$.alias(e)),n$.version(nL.version).description(`${nF.cliName} - starts an interactive session by default, use -p/--print for non-interactive output`).argument("[prompt]","Your prompt").option("-d, --debug [filter]",'Enable debug mode with optional category filtering (e.g., "api,hooks" or "!statsig,!file")',e=>{try{let t=JSON.parse(e);if("string"==typeof t)return t;throw Error("Not a string")}catch(t){return e}},!1).addOption(new nj.c$("-d2e, --debug-to-stderr","Enable debug mode (to stderr)").default(!1).hideHelp()).option("--verbose","Override verbose mode setting from config",!1).addOption(new nj.c$(nx.NO_ORPHANS_FLAG,"Enable Windows descendant cleanup at startup").hideHelp()).option("-p, --print","Print response and exit (useful for pipes)",!1).option("--output-format <format>",'Output format (only works with --print): "text" (default), "json" (single result), or "stream-json" (realtime streaming)',"text").option("--input-format <format>",'Input format (only works with --print): "text" (default), or "stream-json" (realtime streaming input) (choices: "text", "stream-json")',"text").option("--json-schema <schema>",'JSON Schema for structured output validation. Example: {"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}').option("--include-partial-messages","Output raw SSE incremental messages from model requests (only works with --output-format stream-json)",!1).option("-y, --dangerously-skip-permissions","Bypass permission prompts (HIGH/CRITICAL still ask). Isolated-sandbox full pass: CODEBUDDY_IS_SANDBOX=1 (process env only; high-risk).",!1).option("--permission-mode <mode>","Default permission mode for this process (TUI, --serve Web, ACP). Choices: acceptEdits, bypassPermissions, default, plan, dontAsk, auto. Does not write settings.").option("--permission-mode-before-plan <mode>","Permission mode to restore when exiting plan mode").option("--subagent-permission-mode <mode>",'Default permission mode for subagents/teammates (choices: "acceptEdits", "bypassPermissions", "default", "plan", "dontAsk", "auto"). Overrides inheritance from main session.').option("--tools <value>",'Restrict which built-in tools CodeBuddy can use. Use "" to disable all, "default" for all, or comma-separated tool names like "Bash,Edit,Read".').option("--allowedTools <tools...>",'Comma or space-separated list of tool names to allow (e.g. "Bash(git:*) Edit")').option("--disallowedTools <tools...>",'Comma or space-separated list of tool names to deny (e.g. "Bash(git:*) Edit")').option("--mcp-config <fileOrString>","Load MCP servers from a JSON file or string").option("--channels <value>","Enable specific channels (comma-separated: plugin:name@marketplace or server:configName)").option("--dangerously-load-development-channels <value>","During research preview: bypass allowlist for specific channels (development only, requires confirmation)").option("-c, --continue","Continue the most recent conversation",!1).option("-r, --resume [sessionId]","Resume a conversation - provide a session ID or interactively select a conversation to resume",!1).option("-w, --worktree [name]",'Create a git worktree and start the session in it (optionally specify a name, PR number like "#123", or PR URL)').option("--worktree-branch <branch>","Base branch for the worktree (defaults to remote default branch, requires --worktree)").option("--tmux","Create worktree in a new tmux session (requires --worktree)",!1).option("--tmux-classic","Use classic tmux mode instead of iTerm2 integration (requires --tmux)",!1).option("--model <model>","Model for the current session. Please provide the model ID.").option("--text-to-image-model <model>","Model for text-to-image generation").option("--image-to-image-model <model>","Model for image-to-image editing").option("--fallback-model <model>","Enable automatic fallback to specified model when default model is overloaded (only works with --print)").option("--add-dir <directories...>","Additional directories to allow tool access to").option("--ide","Automatically connect to IDE on startup if exactly one valid IDE is available",!1).option("-v, --version","Output the version number",!1).option("--strict-mcp-config","Only use MCP servers from --mcp-config, ignoring all other MCP configurations",!1).addOption(new nj.c$("--no-plugin-management","Disable marketplace and plugin lifecycle management in this process").hideHelp()).option("--session-id <uuid>","Use a specific session ID for the conversation (supports letters, numbers, hyphens, underscores, and colons, but must start with a letter or number)").option("--resume-create-missing","With --resume: when the target session no longer exists, start a new empty session with the same id instead of failing (job worker respawn recovery path; explicit user --resume still errors)").option("--no-session-persistence","Disable session persistence - sessions stay in memory and are not saved to disk").option("-H, --header <headers...>",'Custom HTTP headers for model requests (format: "Header-Key: Header-Value")').option("--serve","Start HTTP server (Web UI, REST API, ACP over HTTP SSE). Without --acp, ACP does not use stdio.",!1).option("--open","Open Web UI in browser after startup",!1).option("--port <number>","Port for HTTP server (default: auto-assign)").option("--host <string>","Host address to bind HTTP server (default: 127.0.0.1)","127.0.0.1").option("--base-path <path>","Public URL path prefix for the Web UI (e.g. /cnb-5gg-1k09dqp5v-001). Also CODEBUDDY_GATEWAY_BASE_PATH.").addOption(new nj.c$("--auth <mode>",'HTTP server authentication mode (only applies with --serve). Defaults to "password"; "none" disables auth and lets any local process execute commands and read/write files through the server').choices(["password","none"])).option("--brief","Enable SendUserMessage tool for agent-to-user communication",!1).option("--acp","Start in ACP (Agent Client Protocol) mode - enables communication via stdin/stdout using ndJsonStream",!1).option("--acp-transport <transport>",'ACP transport (only works with --acp): "stdio" (default) or "streamable-http"',"stdio").addOption(new nj.c$("--a2a",'Accept A2A JSON-RPC over stdio \u2014 SendMessage, GetTask, ListTasks, and CancelTask. Alone: A2A owns stdio exclusively. Combined with --input-format stream-json: stdin carries both protocols, routed per line (a line with "jsonrpc" is A2A, otherwise stream-json), both driving the same session. Mutually exclusive with --acp. SDK/CloudAgent entry point, not for direct terminal use.').default(!1).hideHelp()).option("--sandbox [url]",'Run CodeBuddy in sandbox: "container" for Docker/Podman, or E2B API URL (must be complete URL like https://api.e2b.dev)').option("--sandbox-upload-dir","Upload current working directory to sandbox (E2B only)",!1).option("--sandbox-new","Force create a new sandbox (ignore cached sandbox)",!1).option("--sandbox-id <id>","Connect to specific sandbox ID").option("--sandbox-kill","Kill sandbox on exit (default: keep alive for reuse)",!1).option("--teleport <value>","Teleport to existing sandbox (format: session_{cliSessionId})").option("--max-turns <number>","Limit the number of agentic turns").option("--effort <level>","Reasoning effort level (minimal, low, medium, high, xhigh, max)").option("--autocompact <auto|tokens>",'Auto-compact window size: "auto" follows the model window, or a token count (e.g. 400000, 400k, 1m; clamped to 100k-1M)').option("--teleport <value>","Teleport to existing sandbox (format: 0010${sandboxId}${randomNumber} for e2b, 0020${sandboxId}${randomNumber} for cvm)").option("--system-prompt <prompt>","Override the system prompt for this session").option("--system-prompt-file <path>","Load system prompt from a file").option("--append-system-prompt <prompt>","Append additional content to the system prompt").option("--prompt-vars-file <path>","Load prompt template variables from a JSON file").option("--agent <agent>","Default main agent for this process (TUI, --print/headless, --serve Web, ACP). Headless tool use must be pre-authorized (for example with -y). Overrides lastUsed for new sessions; does not write settings.").option("--multitask","Turn on Multitask overlay (normalized to --agent multitask). Not available in Minimal. Does not change Standard/PTC/Create. Interactive TTY only.",!1).option("--agents <json>",'JSON object defining custom agents (e.g. \'{"reviewer": {"description": "Reviews code", "prompt": "You are a code reviewer"}}\')').option("--settings <file-or-json>","Path to a settings JSON file or a JSON string to load additional settings from").option("--setting-sources <sources>","Comma-separated list of setting sources to load (user, project, local). Default: user,project,local").option("--fork-session","When resuming, create a new session ID instead of reusing the original (use with --resume or --continue)").addOption(new nj.c$("--resume-session-at <message id>","When resuming, only messages up to and including the assistant message with <message.id> (use with --resume in print mode)").argParser(String).hideHelp()).addOption(new nj.c$("--rewind-files <user-message-id>","Restore files to state at the specified user message and exit (requires --resume)").hideHelp()).addOption(new nj.c$("--dry-run","With --rewind-files, only preview the rewind; do not modify the filesystem").hideHelp()).option("--replay-user-messages","Re-emit user messages from stdin back on stdout for acknowledgment (only works with --input-format=stream-json and --output-format=stream-json)").option("--remote-control [client]","Connect to remote control service. Without args: AgentOS mode. With client type (e.g. wecom): auto-connect specified client").option("--plugin-dir <dirs...>","Load plugins from local directories (for development/testing). Can specify multiple paths.").option("--bg","Run the session in the background (detached)",!1).option("--background","Alias for --bg",!1).option("--name <name>","Name for background session (used with --bg)").option("--exec <command>","With --bg: run a shell command as a background job instead of a model session").option("--swarm","Enable swarm mode: teammates run as independent processes (tmux visualization if available, otherwise background with Web UI)",!1).addOption(new nj.c$("--prewarm","Start as a prewarmed standby process: finish cold-start init then wait for IPC activation before binding to a working directory").default(!1).hideHelp()).addOption(new nj.c$("--prewarm-id <id>","Identifier for the prewarm IPC endpoint (defaults to the process PID). Used to build the socket/pipe address.").hideHelp()).addOption(new nj.c$("--prewarm-force","When a live prewarm process already owns the same --prewarm-id, terminate it and take over the address instead of refusing to start.").default(!1).hideHelp()).addOption(new nj.c$("--teammate-mode","Mark this process as a teammate").hideHelp()).addOption(new nj.c$("--team-name <name>","Team name for this teammate").hideHelp()).addOption(new nj.c$("--agent-name <name>","Teammate agent name").hideHelp()).addOption(new nj.c$("--agent-type <type>","Custom agent type for this teammate").hideHelp()).addOption(new nj.c$("--agent-color <color>","Display color for this teammate").hideHelp()).addOption(new nj.c$("--leader-endpoint <url>","Leader HTTP endpoint for Permission Bridge").hideHelp()).action(()=>{});let nU=n$.command("config").description("Manage configuration (eg. codebuddy config set -g theme dark)");nU.command("get <key>").description("Get a config value"),nU.command("set <key> <value>").description("Set a config value").option("-g, --global","Set global config"),nU.command("remove <key> [values...]").alias("rm").description("Remove a config value or items from a config array").option("-g, --global","Set global config"),nU.command("list").alias("ls").description("List all config values"),nU.command("add <key> <values...>").description("Add items to a config array (space or comma separated)").option("-g, --global","Set global config");let nN=n$.command("mcp").description("Configure and manage MCP servers");nN.command("add <name> <commandOrUrl> [args...]").description("Add an MCP server").option("-s, --scope <scope>","Server scope: local, project, or user","local").option("-t, --transport <transport>","Transport type: stdio, sse, or http","stdio").option("-e, --env <env...>","Environment variables (format: KEY=value)").option("-H, --header <header...>",'Custom HTTP headers for SSE and HTTP transports (format: "Header-Key: Header-Value")').addHelpText("after",'\nExample Call:\n $ codebuddy mcp add myserver --env KEY=value -- python main.py --port 8080\n\n* NOTE:\n Understanding the "\u2014-" parameter:\n The "--" (double dash) separates CodeBuddy\u2019s own CLI flags from the command and arguments that get passed to the MCP server. Everything before "--" are options for CodeBuddy, and everything after "--" is the actual command to run the MCP server.'),nN.command("remove <name>").description("Remove an MCP server").option("-s, --scope <scope>","Server scope: local, project, or user"),nN.command("list").alias("ls").description("List configured MCP servers"),nN.command("get <name>").description("Get details about an MCP server"),nN.command("add-json <name> <json>").description("Add an MCP server (stdio or SSE) with a JSON string").option("-s, --scope <scope>","Server scope: local, project, or user","local");let nH=n$.command("sandbox").description("Manage sandboxes");nH.command("list").alias("ls").description("List all sandboxes"),nH.command("info [sandboxId]").description("Show sandbox information"),nH.command("kill <sandboxId>").description("Kill a running sandbox"),nH.command("clean").description("Clean up stopped/expired sandboxes from state file");let nB=n$.command("plugin").description(`Manage ${nF.cliName} plugins`);nB.command("validate <path>").description("Validate a plugin or marketplace manifest"),nB.command("list").alias("ls").option("--json","Output as JSON").description("List installed plugins");let nq=nB.command("marketplace").description(`Manage ${nF.cliName} marketplaces`);nq.command("add <source>").option("-n, --name <name>","Marketplace name").description("Add a marketplace"),nq.command("list").alias("ls").description("List all marketplaces"),nq.command("update <name>").description("Update a marketplace"),nq.command("remove <name>").alias("rm").description("Remove a marketplace"),nB.command("install <plugin>").alias("i").option("-s, --scope <scope>","Install scope: user, project, or local","user").description("Install a plugin from available marketplaces (use plugin@marketplace for specific marketplace)"),nB.command("uninstall <plugin>").aliases(["remove","rm"]).option("-s, --scope <scope>","Uninstall scope: user, project, or local","user").option("--prune","Also remove auto-installed dependencies that are no longer needed").option("--keep-data","Preserve plugin data after removing the final installed scope").option("-y, --yes","Skip the --prune confirmation prompt").description("Uninstall an installed plugin"),nB.command("prune").aliases(["autoremove"]).option("-s, --scope <scope>","Prune at scope: user, project, or local","user").option("--dry-run","List what would be removed without removing").option("-y, --yes","Skip the confirmation prompt").description("Remove auto-installed dependencies that are no longer needed"),nB.command("enable <plugin>").option("-s, --scope <scope>","Enable scope: user, project, or local (default: auto-detect)").description("Enable a disabled plugin"),nB.command("disable <plugin>").option("-s, --scope <scope>","Disable scope: user, project, or local (default: auto-detect)").description("Disable an enabled plugin"),nB.command("update <plugin>").option("-s, --scope <scope>","Update scope: user, project, or local","user").description("Update a plugin to the latest version (restart required to apply)"),n$.command("project").description(`Manage ${nF.cliName} project state`).command("purge [path]").description("Delete local CodeBuddy Code state for a project").option("--all","Purge state for every project (mutually exclusive with [path])").option("--dry-run","List what would be deleted without deleting anything").option("-i, --interactive","Prompt for each cleanup category before deleting").option("-y, --yes","Skip confirmation prompt"),n$.command("doctor").description("Check the health of your CodeBuddy Code auto-updater"),n$.command("update").description("Check for updates and install if available"),n$.command("install [target]").description("Install CodeBuddy Code native build. Use [target] to specify version (latest, or specific version)"),n$.command("cleanup").description("Clean up expired local CodeBuddy data").option("--days <number>","Delete local data older than this many days (defaults to cleanupPeriodDays)").option("--dry-run","Preview cleanup without deleting files",!1);let nW=n$.command("daemon").description("Manage the daemon supervisor process");nW.command("start").description("Start the daemon supervisor").option("--port <number>","Port for daemon HTTP server (default: auto)").option("--host <string>","Host address to bind (default: 127.0.0.1)"),nW.command("stop").description("Stop the daemon supervisor").option("--keep-workers","Leave background session workers running; stop only the daemon itself",!1),nW.command("status").description("Show daemon supervisor status"),nW.command("restart").description("Restart the daemon supervisor"),nW.command("install").description("Register daemon as a system service (auto-start on login)").option("--port <number>","Port for daemon HTTP server").option("--permission-mode <mode>","Permission mode for daemon sessions"),nW.command("uninstall").description("Remove daemon system service registration"),n$.command("ps").description("List all active sessions (interactive, background, daemon)").option("--json","Output in JSON format",!1),n$.command("logs <pidOrName>").description("Show logs for a background session").option("-f, --follow","Follow log output",!1),n$.command("attach <pidOrName>").description("Attach to a running background session"),n$.command("kill <pidOrName>").description("Terminate a background session"),n$.command("stop <pidOrName>").description("Stop a background session (alias for kill)"),n$.command("rm <idOrName>").description("Remove a background session from agent view (the transcript stays on your machine)"),n$.command("respawn [idOrName]").description("Restart a background session with its conversation intact").option("--all","Restart every running background session (e.g. after a binary update)"),n$.command("agents").description("Open agent view to dispatch and manage background sessions").option("--jobs","Print sessions as a JSON array and exit",!1).option("--all","Include completed sessions in --jobs output",!1).option("--cwd <path>","Only list sessions started under this directory").option("--model <model>","Model used for sessions dispatched from agent view").option("--permission-mode <mode>","Permission mode for sessions dispatched from agent view").option("--agent <agent>","Default main agent for dispatched sessions");let nz=n$.command("auto-mode").description("Inspect auto mode classifier configuration");nz.command("defaults").description("Print the built-in default auto mode rules as JSON"),nz.command("config").description("Print the effective auto mode config as JSON (your settings where set, defaults otherwise)"),nz.command("critique").description("Get AI feedback on your custom auto mode rules"),n$.command("agents").description("List configured agents grouped by source (user, project, managed, plugin, cli-arg, built-in); requires --json").option("--json","Output as JSON",!1),n$.on("command:*",e=>{});let nK=class{constructor(){this.CURRENTLY_SUPPORTED_PATTERN=/ Currently supported: \([^)]*\)$/}async get(){if(this.isHelpRequested()){let sigintHandler=()=>process.exit(0);process.on("SIGINT",sigintHandler),await this.updateModelOptionDescription(),process.off("SIGINT",sigintHandler)}let e=process.env.ELECTRON_RUN_AS_NODE?"node":void 0;return n$.parse(process.argv,e?{from:e}:void 0),n$}parseOpts(){let e=n$.args;return n$.parseOptions(process.argv),{arg:e,opts:n$.opts()}}isHelpRequested(){let e=process.argv;return e.includes("-h")||e.includes("--help")||e.includes("help")||e.some(e=>e.endsWith("--help")||e.endsWith("-h"))}async updateModelOptionDescription(){try{let e=n$.options.find(e=>"--model"===e.long);if(!e)return;let t=new Promise((e,t)=>{let r=setTimeout(()=>t(Error("timeout")),1e4);"function"==typeof r.unref&&r.unref()}),r=iB.ContainerUtil.get(iY.AgentManager),o=await Promise.race([r.getDefault(),t]),i=await Promise.race([r.getModels(o.name),t]);if(0===i.length)return;let n=i.map(e=>e.id).join(", ");e.description=e.description.replace(this.CURRENTLY_SUPPORTED_PATTERN,""),e.description+=` Currently supported: (${n})`}catch{}}};nK=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(nm.CliProvider)],nK),r(12028);var nG=r(74839);let nV=Symbol("StdoutWriter"),nY=class{constructor(){this.queue=[],this.queuedBytes=0,this.inFlightBytes=0,this.pumping=!1,this.idleWaiters=[],this.progressListeners=[],this._failedWrites=0,this.loggedFailures=0,this.persistChannel=null,this.outputPrebuffer=[],this._persistArmed=!1}static{f=this}static{this.PREBUFFER_CAP=4096}get bufferedCharacters(){return this.queuedBytes+this.inFlightBytes}get persistenceBufferedCharacters(){return this.persistChannel?.bufferedCharacters??0}get failedWrites(){return this._failedWrites}attachPersistChannel(e,t){if(this.persistChannel=e,e){if(this.outputPrebuffer.length>0){for(let t of this.outputPrebuffer)this.appendChunkToChannel(t,e);this.outputPrebuffer=[]}if(t&&t.length>0)for(let r of t)e.append("out",r)}}armPersistPrebuffer(){this._persistArmed=!0}async flushPersistChannel(){if(this.persistChannel)try{await this.persistChannel.flush()}catch{}}tapPersist(e){this.persistChannel?this.appendChunkToChannel(e,this.persistChannel):this._persistArmed&&this.outputPrebuffer.length<f.PREBUFFER_CAP&&this.outputPrebuffer.push(e)}appendChunkToChannel(e,t){let r,o=e.endsWith("\n")?e.slice(0,-1):e;if(t.appendSerialized)return void t.appendSerialized("out",o);try{r=JSON.parse(o)}catch{r=o}t.append("out",r)}write(e){let t;try{t=JSON.stringify(e)}catch(e){this.reportFailure(e,"serialize");return}this.writeLine(t)}writeLine(e,t){let r=e.endsWith("\n")?e:e+"\n";this.queue.push({chunk:r,onWritten:t}),this.queuedBytes+=r.length,this.tapPersist(r),this.kickPump()}flush(){return this.pumping||0!==this.queue.length?new Promise(e=>{this.idleWaiters.push(e)}):Promise.resolve()}flushOrStall(e){return this.pumping||0!==this.queue.length?new Promise(t=>{let r,o=!1,finish=e=>{if(o)return;o=!0,r&&clearTimeout(r);let i=this.progressListeners.indexOf(onProgress);i>=0&&this.progressListeners.splice(i,1),t(e)},armStallTimer=()=>{r=setTimeout(()=>{finish({complete:!1,remainingBytes:this.queuedBytes+this.inFlightBytes})},e),r.unref?.()},onProgress=()=>{o||(r&&clearTimeout(r),armStallTimer())};this.progressListeners.push(onProgress),this.idleWaiters.push(()=>finish({complete:!0,remainingBytes:0})),armStallTimer()}):Promise.resolve({complete:!0,remainingBytes:0})}kickPump(){this.pumping||(this.pumping=!0,this.pump().catch(()=>void 0))}async pump(){try{for(;this.queue.length>0;){let e=this.queue.shift(),t=e.chunk,r=e.onWritten?[e.onWritten]:[];for(this.queuedBytes-=t.length;this.queue.length>0&&t.length+this.queue[0].chunk.length<=262144;){let e=this.queue.shift();this.queuedBytes-=e.chunk.length,t+=e.chunk,e.onWritten&&r.push(e.onWritten)}this.inFlightBytes=t.length;let o=await this.writeChunk(t);for(let e of(this.inFlightBytes=0,r))try{e(o)}catch{}for(let e of[...this.progressListeners])e()}}finally{if(this.pumping=!1,this.queue.length>0)this.kickPump();else{let e=this.idleWaiters;for(let t of(this.idleWaiters=[],e))t()}}}writeChunk(e){return new Promise(t=>{let r=!1,settle=e=>{r||(r=!0,e&&(this._failedWrites++,this.reportFailure(e,"write")),t(e?"failed":"written"))};try{process.stdout.write(e,settle)}catch(e){settle(e instanceof Error?e:Error(String(e)))}})}reportFailure(e,t){if(this.loggedFailures++,1===this.loggedFailures||this.loggedFailures%100==0)try{let{ContainerUtil:o}=r(88523),{Logger:i}=r(92735),n=o.get(i);n.error?.(`[StdoutWriter] ${t} failure #${this.loggedFailures} (failedWrites=${this._failedWrites}): `+(e instanceof Error?`${e.code??""} ${e.message}`:String(e)))}catch{}}};nY=f=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(nV)],nY);var sdk_elicitation_client_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let nJ=class{constructor(){this.pendingRequests=new Map,this.requestIdCounter=0}async createElicitation(e,t){let r,o=t?.signal;if(o?.aborted)throw Error("Elicitation request aborted");let i=`elic_${Date.now()}_${++this.requestIdCounter}`,n=new iB.Deferred;if(o){let onAbort=()=>{this.pendingRequests.delete(i),n.reject(Error("Elicitation request aborted"))};o.addEventListener("abort",onAbort,{once:!0}),r=()=>o.removeEventListener("abort",onAbort)}this.pendingRequests.set(i,{deferred:n,cleanup:r});let s=(0,iY.currentTurnCarrier)(),a={type:"control_request",request_id:i,request:{subtype:"elicitation_create",...e},...(0,iY.hasTurnCarrier)(s)?{_meta:s}:{}};return this.stdoutWriter.write(a),n.promise}completeElicitation(e){this.stdoutWriter.write({type:"control_notification",channel:"elicitation",data:e})}handleResponse(e,t){let r=this.pendingRequests.get(e);if(!r)return;if(r.cleanup?.(),this.pendingRequests.delete(e),"error"===t.subtype)return void r.deferred.reject(Error(t.error));let o=t.response??{};r.deferred.resolve(o)}cancelAllPending(e){for(let[,t]of this.pendingRequests)t.cleanup?.(),t.deferred.reject(Error(e));this.pendingRequests.clear()}};sdk_elicitation_client_decorate([(0,iB.Autowired)(nV),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(m=void 0!==nV&&nV)?m:Object)],nJ.prototype,"stdoutWriter",void 0),nJ=sdk_elicitation_client_decorate([(0,iB.Component)(nG.bQ)],nJ);var sdk_hooks_manager_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},sdk_hooks_manager_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let nX=class{constructor(){this.hooksConfig=new Map,this.pendingRequests=new Map,this.requestIdCounter=0}setHooks(e){for(let[t,r]of(this.hooksConfig.clear(),Object.entries(e)))r&&r.length>0&&this.hooksConfig.set(t,r);this.logger.info(`SDK hooks configured: ${Array.from(this.hooksConfig.keys()).join(", ")}`)}clearHooks(){for(let[e,t]of(this.hooksConfig.clear(),this.pendingRequests))clearTimeout(t.timeoutId),t.deferred.reject(Error("Hooks cleared")),this.pendingRequests.delete(e)}hasHooks(e){return this.hooksConfig.has(e)}getHooks(e){return this.hooksConfig.get(e)||[]}async invokeCallback(e,t,r,o=6e4){let i=this.generateRequestId(),n=new iB.Deferred,s=setTimeout(()=>{this.pendingRequests.delete(i),n.reject(Error(`Hook callback timeout: ${e}`))},o);this.pendingRequests.set(i,{deferred:n,timeoutId:s,callbackId:e});let a={subtype:"hook_callback",callback_id:e,input:t,...r&&{tool_use_id:r}},c=(0,iY.currentTurnCarrier)(),l={type:"control_request",request_id:i,request:a,...(0,iY.hasTurnCarrier)(c)?{_meta:c}:{}};return this.sendRequest(l),n.promise}async executeHooks(e,t){let r=e.hook_event_name,o=this.hooksConfig.get(r),i={shouldContinue:!0,systemMessages:[],additionalContext:[],suppressOutput:!1};if(!o||0===o.length)return i;let n=this.getToolName(e),s=[];for(let e of o)if(this.matchesTool(e.matcher,n))for(let t of e.hookCallbackIds)s.push({callbackId:t,timeout:(e.timeout??60)*1e3});if(0===s.length)return i;let a=await Promise.allSettled(s.map(({callbackId:r,timeout:o})=>this.invokeCallback(r,e,t,o)));return this.aggregateResults(a,i)}handleResponse(e,t){let r=this.pendingRequests.get(e);if(!r)return;if(clearTimeout(r.timeoutId),this.pendingRequests.delete(e),"error"===t.subtype)return void r.deferred.reject(Error(t.error));let o=t.response??{};r.deferred.resolve(o)}aggregateResults(e,t){for(let r of e){if("rejected"===r.status){this.logger.warn(`Hook execution failed: ${r.reason}`);continue}let e=r.value;!1===e.continue&&(t.shouldContinue=!1,t.stopReason=e.stopReason),e.suppressOutput&&(t.suppressOutput=!0),e.systemMessage&&t.systemMessages.push(e.systemMessage);let o=e.hookSpecificOutput;o&&(o.permissionDecision&&("deny"===o.permissionDecision?(t.permissionDecision="deny",t.permissionDecisionReason=o.permissionDecisionReason):"ask"===o.permissionDecision&&"deny"!==t.permissionDecision?(t.permissionDecision="ask",t.permissionDecisionReason=o.permissionDecisionReason):"allow"!==o.permissionDecision||t.permissionDecision||(t.permissionDecision="allow",t.permissionDecisionReason=o.permissionDecisionReason)),o.updatedInput&&"allow"===o.permissionDecision&&(t.updatedInput=o.updatedInput),o.additionalContext&&t.additionalContext.push(o.additionalContext))}return t}matchesTool(e,t){if(!e)return!0;if(!t)return!1;try{return new RegExp(e).test(t)}catch{return t===e}}getToolName(e){if("tool_name"in e)return e.tool_name}generateRequestId(){return`hook_${Date.now()}_${++this.requestIdCounter}`}sendRequest(e){this.stdoutWriter.write(e)}setCapabilities(e){this.sdkCapabilities=e,e&&this.logger.info(`SDK capabilities set: ${JSON.stringify(e)}`)}getCapabilities(){return this.sdkCapabilities}};sdk_hooks_manager_decorate([(0,iB.Autowired)(i8.Logger),sdk_hooks_manager_metadata("design:type","function"==typeof(y=void 0!==i8.Logger&&i8.Logger)?y:Object)],nX.prototype,"logger",void 0),sdk_hooks_manager_decorate([(0,iB.Autowired)(nV),sdk_hooks_manager_metadata("design:type","function"==typeof(_=void 0!==nV&&nV)?_:Object)],nX.prototype,"stdoutWriter",void 0),nX=sdk_hooks_manager_decorate([(0,iB.Component)(nG.Yl)],nX);let nQ=class{constructor(){this.state={},this.lastSyncedFingerprint=JSON.stringify({})}set(e){let t={systemPrompt:e.systemPrompt,appendSystemPrompt:e.appendSystemPrompt,agents:e.agents};return this.state=t,JSON.stringify(t)!==this.lastSyncedFingerprint}markSynced(){this.lastSyncedFingerprint=JSON.stringify(this.state)}clear(){return(this.lastSyncedFingerprint!==JSON.stringify({})||0!==Object.keys(this.state).length)&&(this.state={},!0)}get(){return this.state}};nQ=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s}([(0,iB.Component)(nG.Pl)],nQ);var sdk_permission_client_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let nZ=class{constructor(){this.pendingRequests=new Map,this.requestIdCounter=0}async requestPermission(e,t,r,o){let i,n=this.generateRequestId(),s=new iB.Deferred,a=o?.timeout;void 0!==a&&a>0&&(i=setTimeout(()=>{this.pendingRequests.delete(n),s.reject(Error(`Permission request timeout: ${e}`))},a)),this.pendingRequests.set(n,{deferred:s,timeoutId:i,toolUseId:r});let c={subtype:"can_use_tool",tool_name:e,input:t,tool_use_id:r,...o?.agentId&&{agent_id:o.agentId},...o?.permissionSuggestions&&{permission_suggestions:o.permissionSuggestions},...o?.blockedPath&&{blocked_path:o.blockedPath},...o?.decisionReason&&{decision_reason:o.decisionReason}},l=(0,iY.currentTurnCarrier)(),d={type:"control_request",request_id:n,request:c,...(0,iY.hasTurnCarrier)(l)?{_meta:l}:{}};return this.sendRequest(d),s.promise}handleResponse(e,t){let r=this.pendingRequests.get(e);if(!r)return;if(r.timeoutId&&clearTimeout(r.timeoutId),this.pendingRequests.delete(e),"error"===t.subtype)return void r.deferred.reject(Error(t.error));let o=t.response;r.deferred.resolve({allowed:o?.allowed??!1,reason:o?.reason,interrupt:o?.interrupt,updatedInput:o?.updatedInput})}cancelRequest(e){let t=this.pendingRequests.get(e);t&&(t.timeoutId&&clearTimeout(t.timeoutId),t.deferred.reject(Error("Permission request cancelled")),this.pendingRequests.delete(e))}cancelByToolUseId(e,t,r="allow"){let o=[...this.pendingRequests.entries()].find(([,t])=>t.toolUseId===e);if(!o)return;let[i,n]=o;n.timeoutId&&clearTimeout(n.timeoutId),this.pendingRequests.delete(i),n.deferred.reject(Error(`Permission request resolved by ${t}`)),this.stdoutWriter.write({type:"control_notification",channel:"permission",data:{toolCallId:e,requestId:i,decision:r,resolvedBy:t}})}cancelAllPending(e){for(let[,t]of this.pendingRequests)t.timeoutId&&clearTimeout(t.timeoutId),t.deferred.reject(Error(e));this.pendingRequests.clear()}generateRequestId(){return`perm_${Date.now()}_${++this.requestIdCounter}`}sendRequest(e){this.stdoutWriter.write(e)}};sdk_permission_client_decorate([(0,iB.Autowired)(nV),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(v=void 0!==nV&&nV)?v:Object)],nZ.prototype,"stdoutWriter",void 0),nZ=sdk_permission_client_decorate([(0,iB.Component)(nG.RH)],nZ),r(46190);var n0=r(72854),n1=r(26205),a2a_agent_registry_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let n3={list:()=>[],get:()=>void 0,getSkill:()=>void 0},n2=class{constructor(){this.agents=new Map,this.sourceAgents=new Map}register(e){let t=[];if(!e||0===e.length)return this.agents=new Map,this.notifyAgentsChanged(),{registered:[],issues:t};let r=this.buildValidatedMap(e,t);return this.agents=r,this.warnIssues(t,e.length),this.notifyAgentsChanged(),{registered:[...r.keys()],issues:t}}registerForSource(e,t){let r=[],o=this.buildValidatedMap(t??[],r);if(!this.sourceAgents.has(e)&&this.sourceAgents.size>=32){let e=this.sourceAgents.keys().next().value;void 0!==e&&(this.sourceAgents.delete(e),this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] source partition cap hit; evicted oldest source ${e}`))}return this.sourceAgents.set(e,o),this.warnIssues(r,t?.length??0),{registered:[...o.keys()],issues:r}}resolveView(e){let t=(0,n0.cw)(e);if("process"===t.kind)return this;if("none"===t.kind)return n3;let{url:r}=t;return{list:()=>[...this.sourceAgents.get(r)?.values()??[]],get:e=>this.sourceAgents.get(r)?.get(e),getSkill:(e,t)=>this.sourceAgents.get(r)?.get(e)?.agentCard.skills?.find(e=>e.id===t)}}buildValidatedMap(e,t){let r=new Map;for(let o of e){let e=this.validate(o,r,t);e&&r.set(o.agentId,e)}return r}warnIssues(e,t){e.length>0&&this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] rejected ${e.length} of ${t} agent(s): `+e.map(e=>`${e.agentId}: ${e.reason}`).join("; "))}setOnAgentsChanged(e){this.onAgentsChanged=e}notifyAgentsChanged(){if(this.onAgentsChanged)try{Promise.resolve(this.onAgentsChanged()).catch(e=>{this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] onAgentsChanged listener rejected: ${e?.message??e}`)})}catch(e){this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentRegistry] onAgentsChanged listener threw: ${e?.message??e}`)}}list(){return[...this.agents.values()]}get(e){return this.agents.get(e)}getSkill(e,t){let r=this.get(e);return r?.agentCard.skills?.find(e=>e.id===t)}clear(){this.agents=new Map,this.notifyAgentsChanged()}validate(e,t,r){let o="string"==typeof e?.agentId?e.agentId.trim():"";if(!o)return void r.push({agentId:String(e?.agentId??"(missing)"),reason:"agentId is required and must be a non-empty string"});if(t.has(o))return void r.push({agentId:o,reason:"duplicate agentId in the same registration batch"});let i=e.agentCard;if(!i||"object"!=typeof i)return void r.push({agentId:o,reason:"agentCard is required"});if("string"!=typeof i.name||""===i.name.trim())return void r.push({agentId:o,reason:"agentCard.name is required"});let n=i.supportedInterfaces;if(!Array.isArray(n)||0===n.length)return void r.push({agentId:o,reason:"agentCard.supportedInterfaces must be a non-empty array"});for(let e of n)if(!e||"object"!=typeof e||"string"!=typeof e.url||!e.url)return void r.push({agentId:o,reason:"every supportedInterfaces entry must declare a url"});if(void 0!==i.skills&&!Array.isArray(i.skills))return void r.push({agentId:o,reason:"agentCard.skills must be an array when present"});for(let e of i.skills??[])if(!e||"string"!=typeof e.id||!e.id)return void r.push({agentId:o,reason:"every skill must declare a non-empty id"});return{agentId:o,agentCard:i}}};a2a_agent_registry_decorate([(0,iB.Autowired)(i8.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(b=void 0!==i8.Logger&&i8.Logger)?b:Object)],n2.prototype,"logger",void 0),n2=a2a_agent_registry_decorate([(0,iB.Component)(n1.Dr)],n2);var n8=r(77598),n5=r(90753),n4=r(73401),n7=r(69780);let n6=new Set([429,502,503,504]),n9=new Set(["ECONNREFUSED","ENOTFOUND","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","UND_ERR_CONNECT_TIMEOUT"]),se=new Set(["ECONNRESET","EPIPE","ETIMEDOUT","UND_ERR_SOCKET","UND_ERR_HEADERS_TIMEOUT"]),st=/\b(fetch failed|socket hang up|terminated|network( |-)?error)\b/i;function codeOf(e){if(e&&"object"==typeof e){let t=e.code;if("string"==typeof t)return t;let r=e.cause;if(r&&"string"==typeof r.code)return r.code}}function isRetryableSendError(e){let t=e instanceof Error?e.message:String(e),r=(0,n7.s)(e,t);if(void 0!==r)return n6.has(r);let o=codeOf(e);return!!(o&&(n9.has(o)||se.has(o)))||st.test(t)}function resolveSendMaxRetries(e=process.env.CODEBUDDY_A2A_SEND_MAX_RETRIES){if(void 0===e||""===e.trim())return 2;let t=Number(e);return Number.isFinite(t)&&Number.isInteger(t)&&!(t<0)?Math.min(t,10):2}function sendRetryDelayMs(e){let t=500*2**e;return t/2+t/2*Math.random()}var a2a_client_service_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let sr=["traceparent","tracestate","baggage"];function presentTraceContext(e){if(!e)return;let t={};for(let r of sr){let o=e[r];"string"==typeof o&&o.length>0&&(t[r]=o)}return Object.keys(t).length>0?t:void 0}let so=["text/plain","text/markdown"];function acceptedOutputModesFor(e){let t=e.defaultOutputModes;if(Array.isArray(t)){let e=t.filter(e=>"string"==typeof e&&e.length>0);if(e.length>0)return e}return[...so]}let si={[n5.Dr.TASK_STATE_UNSPECIFIED]:"unknown",[n5.Dr.TASK_STATE_SUBMITTED]:"submitted",[n5.Dr.TASK_STATE_WORKING]:"working",[n5.Dr.TASK_STATE_COMPLETED]:"completed",[n5.Dr.TASK_STATE_FAILED]:"failed",[n5.Dr.TASK_STATE_CANCELED]:"canceled",[n5.Dr.TASK_STATE_INPUT_REQUIRED]:"input-required",[n5.Dr.TASK_STATE_REJECTED]:"rejected",[n5.Dr.TASK_STATE_AUTH_REQUIRED]:"auth-required",[n5.Dr.UNRECOGNIZED]:"unknown"};function joinTextParts(e){if(!e)return"";let t=[];for(let r of e)r.content?.$case==="text"?t.push(r.content.value):r.content?.$case==="data"&&void 0!==r.content.value&&t.push(JSON.stringify(r.content.value));return t.join("\n")}function renderStatusMessageParts(e){if(!e)return"";let t=[];for(let r of e){let e=r.content;if(e){if("text"===e.$case)e.value&&t.push(e.value);else if("url"===e.$case)e.value&&t.push(r.filename?`[${r.filename}](${e.value})`:e.value);else if("data"===e.$case&&void 0!==e.value){let r=e.value;if(r&&"object"==typeof r&&"string"==typeof r.description)t.push(r.description);else if(r&&"object"==typeof r&&Array.isArray(r.token_id_list)){let e=r.token_id_list.length;t.push(`(${e} pending approval${1===e?"":"s"})`)}else t.push(JSON.stringify(e.value))}}}return t.join("\n")}function attachmentParts(e){if(!e||0===e.length)return[];let t=[];for(let r of e){let e=r.url?.trim();e&&t.push({content:{$case:"url",value:e},metadata:void 0,filename:r.filename??"",mediaType:r.mediaType??""})}return t}function artifactSummariesOf(e){if(!e||0===e.length)return;let t=[];for(let r of e)for(let e of r.parts)e.content?.$case==="url"&&t.push({filename:e.filename||void 0,name:r.name,mediaType:e.mediaType||void 0,url:e.content.value});return t.length>0?t:void 0}function clarificationOf(e){let t=renderStatusMessageParts(e?.message?.parts);return t?{question:t}:void 0}function approvalInterruptOf(e){let t=e?.message?.parts;if(!t)return;let r=[],o=[];for(let e of t){let t=e.content;if(t?.$case!=="data"||void 0===t.value)continue;let i=t.value;if(i&&"object"==typeof i&&Array.isArray(i.token_id_list)){for(let e of i.token_id_list)r.push(e);o.push(e)}}return o.length>0?{tokenIds:r,parts:o}:void 0}function normalizeTask(e){let t,r=e.status?si[e.status.state]:void 0,o=artifactSummariesOf(e.artifacts),i="input-required"===r||"auth-required"===r?clarificationOf(e.status):void 0,n=renderStatusMessageParts(e.status?.message?.parts),s=(o??[]).map(e=>e.url).filter(e=>!!e);if(i?.question)t=i.question;else if(n){let e=s.filter(e=>!n.includes(e));t=e.length>0?`${n}
99
99
 
100
100
  Attachments:
101
101
  ${e.join("\n")}`:n}else t=s.length>0?s.join("\n"):e.artifacts.map(e=>joinTextParts(e.parts)).filter(Boolean).join("\n")||`Task ${e.id} reached status: ${r??"unknown"}`;return{text:t,taskId:e.id,contextId:e.contextId,status:r??"submitted",clarification:i,artifacts:o,approval:approvalInterruptOf(e.status),raw:e}}let sn=class{constructor(){this.clients=new WeakMap}async sendMessage(e,t){return this.withAbortAndClient("sendMessage",e,t,async(r,o)=>{let i=!!t.skillId&&(0,n1.AG)(e.agentCard),n=presentTraceContext(t.traceContext),s=i||n?{...i?{"codebuddy.ai/skillId":t.skillId}:{},...n}:void 0,a={content:{$case:"text",value:t.text},metadata:void 0,filename:"",mediaType:"text/plain"},c={tenant:"",message:{messageId:(0,n8.randomUUID)(),contextId:t.contextId??"",taskId:t.taskId??"",role:n5.Xh.ROLE_USER,parts:[a,...attachmentParts(t.attachments)],metadata:s,extensions:i?[n1.S4]:[],referenceTaskIds:[]},configuration:{acceptedOutputModes:acceptedOutputModesFor(e.agentCard),returnImmediately:!0,taskPushNotificationConfig:void 0},metadata:void 0},l=await this.sendWithRetry(e.agentId,r,c,n?{signal:o,serviceParameters:n}:{signal:o},o);return"status"in l?{...normalizeTask(l),kind:"task"}:{text:joinTextParts(l.parts)||"(empty response)",kind:"message",raw:l}})}async getTask(e,t){return this.withAbortAndClient("getTask",e,t,(e,r)=>e.getTask({tenant:"",id:t.taskId,historyLength:0},{signal:r}).then(normalizeTask))}async cancelTask(e,t){return this.withAbortAndClient("cancelTask",e,t,(e,r)=>e.cancelTask({tenant:"",id:t.taskId,metadata:void 0},{signal:r}).then(normalizeTask))}clear(){this.clients=new WeakMap}async withAbortAndClient(e,t,r,o){let i=t.agentId,n=r.timeoutMs??12e4;this.logger.debug?.(`[A2AClientService] ${e} start | agentId=${i} | timeoutMs=${n}`);let s=new AbortController,a=r.signal,onExternalAbort=()=>s.abort();a?.aborted?s.abort():a?.addEventListener("abort",onExternalAbort);let c=setTimeout(()=>s.abort(),n);try{let r=await this.getOrCreateClient(t),n=await o(r,s.signal),a=n&&"object"==typeof n&&"status"in n?`status=${n.status}`:"ok";return this.logger.debug?.(`[A2AClientService] ${e} succeeded | agentId=${i} | ${a}`),n}catch(t){if(s.signal.aborted){let t=Error(`A2A call to agent "${i}" timed out or was aborted after ${n}ms`);throw this.logger.warn?.(`[cbc-kw=A2A] [A2AClientService] ${e} timed out/aborted | agentId=${i} | timeoutMs=${n}`),t}throw this.logger.warn?.(`[cbc-kw=A2A] [A2AClientService] ${e} failed | agentId=${i} | error=${t?.message??t}`),t}finally{clearTimeout(c),a?.removeEventListener("abort",onExternalAbort)}}async sendWithRetry(e,t,r,o,i){let n=resolveSendMaxRetries();for(let s=0;;s++)try{return await t.sendMessage(r,o)}catch(r){if(i.aborted||s>=n||!isRetryableSendError(r))throw r;let t=sendRetryDelayMs(s);this.logger.warn?.(`[cbc-kw=A2A] [A2AClientService] sendMessage transient failure, retrying | agentId=${e} | attempt=${s+1}/${n} | delayMs=${Math.round(t)} | error=${r instanceof Error?r.message:String(r)}`),await this.abortableSleep(t,i)}}abortableSleep(e,t){return new Promise((r,o)=>{if(t.aborted)return void o(Error("A2A send aborted during backoff."));let onAbort=()=>{clearTimeout(i),o(Error("A2A send aborted during backoff."))},i=setTimeout(()=>{t.removeEventListener("abort",onAbort),r()},e);"function"==typeof i.unref&&i.unref(),t.addEventListener("abort",onAbort,{once:!0})})}async getOrCreateClient(e){let t=this.clients.get(e);return t||(t=this.createClient(e),this.clients.set(e,t),t.catch(()=>{this.clients.get(e)===t&&this.clients.delete(e)})),t}async createClient(e){return this.logger.debug?.(`[A2AClientService] creating SDK client (transport negotiation) | agentId=${e.agentId}`),new n4.S2({transports:[new n4.nm,new n4.wO({fetchImpl:makeBodyPreservingFetch(this.logger,e.agentId)})]}).createFromAgentCard(e.agentCard)}};function previewForLog(e){return e.length<=300?e:`${e.slice(0,300)}\u{2026}(+${e.length-300} bytes)`}function makeBodyPreservingFetch(e,t){let r="[cbc-kw=A2A] [A2AClientService] bodyPreservingFetch";return async function(o,i){let n=await fetch(o,i);if(n.ok)return n;let s="string"==typeof o?o:o instanceof URL?o.href:o.url??"(unknown)";try{let o=await n.clone().text();if(401===n.status?e.info?.(`${r} 401 raw body | agentId=${t} | url=${s} | bodyLen=${o.length} | body=${o||"(empty)"}`):e.info?.(`${r} non-2xx raw body | agentId=${t} | status=${n.status} | url=${s} | bodyLen=${o.length} | preview=${previewForLog(o)}`),!o)return n;let i=JSON.stringify({error:{message:`HTTP error. Response: ${o}`}});return new Response(i,{status:n.status,statusText:n.statusText,headers:n.headers})}catch(o){return e.warn?.(`${r} failed to read non-2xx body \u{2014} passing through | agentId=${t} | status=${n.status} | url=${s} | err=${o?.message??o}`),n}}}function deriveA2aAgentId(e){let t="string"==typeof e.name?e.name:"";return`${slugifyAgentName(t)}-${shortHash(canonicalAgentUrl(e))}`}function slugifyAgentName(e){return e.trim().toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/gu,"")||"agent"}function canonicalAgentUrl(e){let t=e.url;if("string"==typeof t&&""!==t.trim())return normalizeUrl(t);let r=e.supportedInterfaces;return Array.isArray(r)?r.map(e=>e&&"string"==typeof e.url?e.url:"").filter(e=>""!==e.trim()).map(normalizeUrl).sort()[0]??"":""}function normalizeUrl(e){let t=e.trim();try{let e=new URL(t);e.protocol=e.protocol.toLowerCase(),e.hostname=e.hostname.toLowerCase(),e.search="",e.hash="";let r=e.toString();return r.endsWith("/")&&"/"===e.pathname?r=r.slice(0,-1):"/"!==e.pathname&&e.pathname.endsWith("/")&&(r=r.replace(/\/+$/,"")),r}catch{return t}}function shortHash(e){return(0,n8.createHash)("sha256").update(e).digest("hex").slice(0,8)}a2a_client_service_decorate([(0,iB.Autowired)(i8.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(w=void 0!==i8.Logger&&i8.Logger)?w:Object)],sn.prototype,"logger",void 0),sn=a2a_client_service_decorate([(0,iB.Component)(n1.FE)],sn);var a2a_agent_discovery_service_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},a2a_agent_discovery_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ss=class{async discover(e){let t=process.env[n0.qk],r=e?.shouldApply??(()=>!0);if(!t)return this.logger.info?.(`[cbc-kw=A2A] [A2AAgentDiscoveryService] discovery skipped | ${n0.qk} is unset`),{ok:!0};this.logger.debug?.(`[A2AAgentDiscoveryService] discovery starting | url=${t}`);let o=await this.fetchDefinitions(t,e?.signal);if(!o.ok)return r()&&this.registry.register([]),{ok:!1};if(!r())return this.logger.debug?.(`[A2AAgentDiscoveryService] discarded obsolete discovery response | url=${t}`),{ok:!1};let{registered:i,issues:n}=this.registry.register(o.definitions);return this.logger.info?.(`[cbc-kw=A2A] [A2AAgentDiscoveryService] discovered ${i.length} of ${o.cardsCount} agent(s) from ${t}`+(n.length>0?`; rejected ${n.length}: ${n.map(e=>`${e.agentId}: ${e.reason}`).join("; ")}`:"")),{ok:!0}}async discoverSource(e,t){if(!e)return{ok:!0};this.logger.debug?.(`[A2AAgentDiscoveryService] session-source discovery starting | url=${e}`);let r=await this.fetchDefinitions(e,t?.signal);if(!r.ok)return{ok:!1};let{registered:o,issues:i}=this.registry.registerForSource(e,r.definitions);return this.logger.info?.(`[cbc-kw=A2A] [A2AAgentDiscoveryService] discovered ${o.length} of ${r.cardsCount} agent(s) from session source ${e}`+(i.length>0?`; rejected ${i.length}: ${i.map(e=>`${e.agentId}: ${e.reason}`).join("; ")}`:"")),{ok:!0}}async fetchDefinitions(e,t){let r;try{let o=await fetch(e,{signal:t});if(!o.ok)throw Error(`discovery endpoint returned HTTP ${o.status}`);r=await o.json()}catch(t){return this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentDiscoveryService] fetch failed | url=${e} | error=${t?.message??t}`),{ok:!1}}let o=Array.isArray(r)?r:r?.cards;if(!Array.isArray(o))return this.logger.warn?.(`[cbc-kw=A2A] [A2AAgentDiscoveryService] discovery response has no cards array | url=${e}`),{ok:!1};let i=[];for(let e of o){if(!("string"==typeof e?.name?e.name.trim():""))continue;let t=deriveA2aAgentId(e);i.push({agentId:t,agentCard:e})}return{ok:!0,definitions:i,cardsCount:o.length}}};a2a_agent_discovery_service_decorate([(0,iB.Autowired)(i8.Logger),a2a_agent_discovery_service_metadata("design:type","function"==typeof(S=void 0!==i8.Logger&&i8.Logger)?S:Object)],ss.prototype,"logger",void 0),a2a_agent_discovery_service_decorate([(0,iB.Autowired)(n1.Dr),a2a_agent_discovery_service_metadata("design:type","function"==typeof(C=void 0!==n1.Dr&&n1.Dr)?C:Object)],ss.prototype,"registry",void 0),ss=a2a_agent_discovery_service_decorate([(0,iB.Component)(n1.Vn)],ss);var a2a_discovery_ready_service_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},a2a_discovery_ready_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};function resolveNonNegativeMilliseconds(e,t){if(void 0===e||""===e.trim())return t;let r=Number(e);return!Number.isFinite(r)||r<0?t:r}let sa=class{constructor(){this.sourceSlots=new Map,this.generation=0}scheduleStartupDiscovery(){let fire=()=>{this.fireStartupDiscovery().catch(()=>{})};this.prewarmState?.isStandby()?this.prewarmState.onActivated(fire):fire()}async fireStartupDiscovery(){try{if(!await (0,n0.SR)(this.abTestService))return;this.logger.debug?.("[A2ADiscoveryReadyService] startup: kicking off background discovery"),this.waitForDiscovery().catch(()=>{})}catch(e){this.logger.warn?.(`[cbc-kw=A2A] [A2ADiscoveryReadyService] startup discovery trigger failed | error=${e?.message??e}`)}}async waitForDiscovery(e){let t=(0,n0.cw)(e);if("session"===t.kind)return this.waitForSourceDiscovery(t.url);if("none"!==t.kind)for(;;){let e=process.env[n0.qk],t=this.generation,r=this.inFlight;if(r&&!this.isCurrentFlight(r,e,t)&&(this.inFlight=void 0,r.controller.abort(),r=void 0),this.isFresh(e,t)||(r||(r={sourceUrl:e,generation:t,controller:new AbortController,promise:Promise.resolve()},this.inFlight=r,r.promise=this.runDiscoveryOnce(r)),await r.promise,this.isCurrentFlight(r,process.env[n0.qk],this.generation)))return}}async waitForSourceDiscovery(e){let t=this.sourceSlots.get(e);if(!(t?.completedAt!==void 0&&this.isWithinTtl(t.completedAt))){if(!t){if(this.sourceSlots.size>=64){let e=this.sourceSlots.keys().next().value;void 0!==e&&this.sourceSlots.delete(e)}t={},this.sourceSlots.set(e,t)}if(!t.flight){let r=t;r.flight=(async()=>{try{let t=await this.discoveryService.discoverSource(e);(null==t||!1!==t.ok)&&(r.completedAt=Date.now())}catch(t){this.logger.warn?.(`[cbc-kw=A2A] [A2ADiscoveryReadyService] discoverSource() rejected unexpectedly | url=${e} | error=${t?.message??t}`)}finally{r.flight=void 0}})()}await t.flight}}async runDiscoveryOnce(e){let t=!1;try{let r=await this.discoveryService.discover({signal:e.controller.signal,shouldApply:()=>this.isCurrentFlight(e,process.env[n0.qk],this.generation)});t=null==r||!1!==r.ok}catch(e){this.logger.warn?.(`[cbc-kw=A2A] [A2ADiscoveryReadyService] discover() rejected unexpectedly | error=${e?.message??e}`)}finally{this.isCurrentFlight(e,process.env[n0.qk],this.generation)&&(this.lastSuccessfulDiscovery=t?{sourceUrl:e.sourceUrl,generation:e.generation,completedAt:Date.now()}:void 0),this.inFlight===e&&(this.inFlight=void 0)}}isCurrentFlight(e,t,r){return!e.controller.signal.aborted&&e.sourceUrl===t&&e.generation===r}isFresh(e,t){let r=this.lastSuccessfulDiscovery;return!!r&&r.sourceUrl===e&&r.generation===t&&this.isWithinTtl(r.completedAt)}isWithinTtl(e){let t=Date.now()-e;return t>=0&&t<this.resolveDiscoveryTtlMs()}async prewarmForFirstRun(e){if(!await (0,n0.SR)(this.abTestService,void 0,e?.session))return!1;let t=e?.timeoutMs??this.resolvePrewaitTimeoutMs();return await this.raceWithBudget(this.waitForDiscovery(e?.session),t,e?.signal),!0}reset(){this.generation+=1,this.lastSuccessfulDiscovery=void 0;let e=this.inFlight;this.inFlight=void 0,e?.controller.abort()}resolveDiscoveryTtlMs(){return resolveNonNegativeMilliseconds(process.env.CODEBUDDY_A2A_DISCOVERY_TTL_MS,432e5)}resolvePrewaitTimeoutMs(){return resolveNonNegativeMilliseconds(process.env.CODEBUDDY_A2A_DISCOVERY_PREWAIT_MS,2e3)}raceWithBudget(e,t,r){return r?.aborted||t<=0?Promise.resolve():new Promise(o=>{let i=!1,finish=()=>{i||(i=!0,clearTimeout(n),r?.removeEventListener("abort",finish),o())},n=setTimeout(finish,t);n.unref?.(),r?.addEventListener("abort",finish,{once:!0}),e.then(finish,finish)})}};a2a_discovery_ready_service_decorate([(0,iB.Autowired)(i8.Logger),a2a_discovery_ready_service_metadata("design:type","function"==typeof(P=void 0!==i8.Logger&&i8.Logger)?P:Object)],sa.prototype,"logger",void 0),a2a_discovery_ready_service_decorate([(0,iB.Autowired)(n1.Vn),a2a_discovery_ready_service_metadata("design:type","function"==typeof(O=void 0!==n1.Vn&&n1.Vn)?O:Object)],sa.prototype,"discoveryService",void 0),a2a_discovery_ready_service_decorate([(0,iB.Autowired)(i4.AbTestService),(0,iB.Optional)(),a2a_discovery_ready_service_metadata("design:type","function"==typeof(A=void 0!==i4.AbTestService&&i4.AbTestService)?A:Object)],sa.prototype,"abTestService",void 0),a2a_discovery_ready_service_decorate([(0,iB.Autowired)(nr.bo),(0,iB.Optional)(),a2a_discovery_ready_service_metadata("design:type",Object)],sa.prototype,"prewarmState",void 0),a2a_discovery_ready_service_decorate([(0,iB.PostConstruct)(),a2a_discovery_ready_service_metadata("design:type",Function),a2a_discovery_ready_service_metadata("design:paramtypes",[]),a2a_discovery_ready_service_metadata("design:returntype",void 0)],sa.prototype,"scheduleStartupDiscovery",null),sa=a2a_discovery_ready_service_decorate([(0,iB.Component)({id:n1.Vh,scope:iB.Scope.Singleton})],sa),r(34598);var sc=r(78214),sl=r(11270),sd=r(28985),su=r(68634),sp=r(22844),sg=r(96535),sh=r(17913),sf=r(45904),sm=r(82141),sy=r(67317);function agent_home_acp_forward_tryGetAcpBroadcastService(){try{return iB.ContainerUtil.get(iX.xO)}catch{return}}function attachInboxTurnToAcp(e,t,r){let o,i;if(!(0,iY.isAgentHomeColleagueEnvelope)(t))return;let n=agent_home_acp_forward_tryGetAcpBroadcastService();if(!n)return;let s=t.match(/\bmessage_id="([^"]+)"/)?.[1]?.trim(),a=s?`agent-home-mail:${s}`:(0,iJ.nH)(),c={requestId:a,messageRequestId:a};if(n.broadcastUserMessage(e.id,t,"",void 0,c,e,Date.now()).catch(()=>void 0),r?.stream===!1||n.hasActiveBroadcast(e))return;try{o=n.startBroadcasting(e,"",c)}catch{return}let finish=()=>{o&&n.stopBroadcasting(e,o),n.broadcastSessionEnd(e.id,"",e,Date.now(),"end_turn").catch(()=>void 0)};try{let e=iB.ContainerUtil.get(iY.SessionRunStateMachine);e&&"function"==typeof e.isIdle&&"function"==typeof e.getChange$&&(i=e)}catch{i=void 0}if(i){let t=i,r=t.getChange$(e).subscribe(()=>{if(t.isIdle(e)){try{r.unsubscribe()}catch{}finish()}});return}let l=e.agentStateSubject;if(!l)return;let d=!1,u=l.subscribe(e=>{if(!d){d=!0;return}if("agent_end"===e){try{u.unsubscribe()}catch{}finish()}})}var s_=r(6271);r(32026);let sv=new Set(["issue","file","pr","commit","url"]);function agentHomeChannelTasksPath(e,t){let r=t.replace(/[/\\]/g,"").trim();return(0,iz.join)(e,"agent-home","channels",`${r}.tasks.json`)}let sb={version:1,tasks:[]};function sanitizeTask(e){if(!e||"object"!=typeof e)return;let t="string"==typeof e.id?e.id.trim():"",r="string"==typeof e.subject?e.subject.trim():"";if(!t||!r||"open"!==e.status&&"claimed"!==e.status&&"done"!==e.status)return;let o={};for(let[t,r]of Object.entries(e.wakeCounts??{}))t&&Number.isFinite(r)&&r>0&&(o[t]=Math.floor(r));return{id:t,subject:r,status:e.status,createdBy:"agent"===e.createdBy?"agent":"user",createdAt:Number.isFinite(e.createdAt)?Number(e.createdAt):0,updatedAt:Number.isFinite(e.updatedAt)?Number(e.updatedAt):0,..."string"==typeof e.detail&&e.detail.trim()?{detail:e.detail.trim()}:{},..."string"==typeof e.ownerId&&e.ownerId.trim()?{ownerId:e.ownerId.trim()}:{},..."string"==typeof e.assigneeId&&e.assigneeId.trim()?{assigneeId:e.assigneeId.trim()}:{},..."string"==typeof e.creatorAgentId&&e.creatorAgentId.trim()?{creatorAgentId:e.creatorAgentId.trim()}:{},..."string"==typeof e.requestId&&e.requestId.trim()?{requestId:e.requestId.trim()}:{},...Array.isArray(e.refs)&&e.refs.length>0?{refs:e.refs.filter(e=>e&&sv.has(e.kind)&&"string"==typeof e.value&&e.value.trim()).map(e=>({kind:e.kind,value:e.value.trim()})).slice(0,20)}:{},...Number.isFinite(e.sortIndex)?{sortIndex:Math.trunc(Number(e.sortIndex))}:{},...Object.keys(o).length>0?{wakeCounts:o}:{},...!0===e.stalled?{stalled:!0,stalledReason:"wake_budget"}:{},...Number.isFinite(e.doneAt)?{doneAt:Number(e.doneAt)}:{}}}function parseAgentHomeChannelTaskBoard(e){try{let t=JSON.parse(e),r=(Array.isArray(t?.tasks)?t.tasks.map(sanitizeTask).filter(e=>!!e):[]).slice(0,50),o=Number(t?.nextTaskId);if(Number.isFinite(o)&&o>0)return{version:1,tasks:r,nextTaskId:Math.floor(o)};let i=0;for(let e of r){let t=/^t(\d+)$/.exec(e.id);t&&(i=Math.max(i,Number(t[1])))}return{version:1,tasks:r,nextTaskId:i+1}}catch{return{...sb}}}function readAgentHomeChannelTasksSync(e,t){try{return parseAgentHomeChannelTaskBoard((0,nb.readFileSync)(agentHomeChannelTasksPath(e,t),"utf8"))}catch{return{...sb}}}var sw=r(38096),sS=r(77900),sC=r(36459),sP=r(46204),sO=r(39260),sA=r(73876);async function registerAgentHomeSessionOwner(e,t,r){return!!t&&!!r&&await (0,sA.HE)(e,async()=>{let o=await (0,sC.OE)(e);if(!o||r===o.defaultAgentId||!o.agents.some(e=>e.id===r))return!1;let i=o.sessionAssignments??{};return i[t]!==r&&(await (0,sC.x7)(e,{...o,sessionAssignments:{...i,[t]:r}}),!0)})}async function readAgentHomeCodebuddySettings(e){if(e)try{return await e.get("codebuddy")}catch{return}}function surfaceEnabledFrom(e){let t=process.env.CODEBUDDY_AGENT_HOME_ENABLED;if("1"===t||"true"===t)return!0;if("0"===t||"false"===t||e?.agentHome?.enabled===!1)return!1;if(e?.agentHome?.enabled===!0)return!0;let r=process.env.CODEBUDDY_AGENT_HOME_ORCHESTRATION_ENABLED;return"1"===r||"true"===r||e?.agentHome?.orchestration===!0}async function agent_home_settings_isAgentHomeOrchestrationEnabled(e){if(!(0,sO.oq)())return!1;let t=await readAgentHomeCodebuddySettings(e);if(!surfaceEnabledFrom(t))return!1;if("1"===process.env.CODEBUDDY_AGENT_HOME_ENABLED||"true"===process.env.CODEBUDDY_AGENT_HOME_ENABLED)return!0;let r=process.env.CODEBUDDY_AGENT_HOME_ORCHESTRATION_ENABLED;return"1"===r||"true"===r||"0"!==r&&"false"!==r&&t?.agentHome?.orchestration===!0}var agent_home_room_context_interceptor_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let sR='data-role="agent-home-room"',sk='data-role="agent-home-channel"',sE=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.TeamContext-3}async intercept(e){if(!Array.isArray(e.input)||!(0,sO.El)(e.session)||!await agent_home_settings_isAgentHomeOrchestrationEnabled(this.settingsManager))return;let t=this.lastUserMessageText(e.input);if((0,iY.isAgentHomeChannelEnvelope)(t)||(0,s_.EB)(e.input)){if(e.skipRun)return;if(this.channelMailIsForSomeoneElse(t,e.session?.id)){e.skipRun=!0;return}this.attachChannelReminder(e,t);return}let r=(0,iY.isAgentHomeColleagueEnvelope)(t)?t:(0,sw.wv)(e.input);r&&e.session&&!e.skipAddHistory&&attachInboxTurnToAcp(e.session,r,{stream:!0!==e.skipRun}),e.skipRun||this.attachRoomRoster(e)}channelMailIsForSomeoneElse(e,t){let r=(0,s_.rZ)(e);if(!r?.mentionIds.length)return!1;let o=(0,sC.PI)(i3.PathUtils.getHomeDir()),i=(0,sC.RO)(o,(0,nu.L_)(),t);return!!i&&!r.mentionIds.includes(i.id)}lastUserMessageText(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if("message"===r.type&&"user"===r.role)return(0,sP.C)(r)}return""}attachRoomRoster(e){if((0,sy.isMinimalStandingAgent)(e.session,e.agent?.name))return;let t=e.input.at(-1);if(t?.role!=="user"||t.providerData?.isMeta===!0||this.lastUserMessageHasReminder(e.input))return;let r=(0,sC.PI)(i3.PathUtils.getHomeDir()),o=(0,nu.L_)(),i=e.session?.id,n=(0,sC.D5)(r,o,i),s=(0,sC.Or)(r,o,i),a=(0,sC.RO)(r,o,i);a&&r&&a.id!==r.defaultAgentId&&i&&r.sessionAssignments?.[i]!==a.id&&registerAgentHomeSessionOwner(i3.PathUtils.getHomeDir(),i,a.id).catch(()=>void 0);let c=a?.name,l=(0,sy.codeModeSpecOf)(e.session,e.agent?.name)?.mode===iY.AgentNames.PTC,d=(r?.agents??[]).filter(e=>e.id!==a?.id).map(e=>({id:e.id,name:e.name})),u=[c?(0,sS.j9)(n,c,{viaRepl:l,selfId:a?.id,defaultAgentId:r?.defaultAgentId}):"",(0,sS.E1)(s,{viaRepl:l,self:a?{id:a.id,name:a.name}:void 0,defaultAgentId:r?.defaultAgentId}),a&&d.length>0?(0,sS.U_)(d,{viaRepl:l}):""].filter(Boolean).join("\n\n");u&&(this.detachLastUserMessage(e.input),iY.MessageUtils.addSystemReminder(e.input,`<system-reminder ${sR}>
@@ -195,7 +195,7 @@ ${o}
195
195
 
196
196
  ${o.content}`;else{if(!Array.isArray(o.content))return;o.content.unshift({type:"input_text",text:`${r}
197
197
 
198
- `})}this.logger.info("[InitialPromptInterceptor] prepended agent initialPrompt to first user turn")}catch(e){this.logger.warn("[InitialPromptInterceptor] skipped initialPrompt injection due to error",e)}}async resolveInitialPrompt(e){let t=this.agentManager.getSettingsAgentName(),r=t&&e.agent.name===this.agentManager.getDefaultAgentName()?t:e.agent.name,o=await this.agentManager.getAgentConfig(r);return o?.initialPrompt}};initial_prompt_interceptor_decorate([(0,iB.Autowired)(iY.AgentManager),initial_prompt_interceptor_metadata("design:type","function"==typeof(e8=void 0!==iY.AgentManager&&iY.AgentManager)?e8:Object)],a7.prototype,"agentManager",void 0),initial_prompt_interceptor_decorate([(0,iB.Autowired)(i8.Logger),initial_prompt_interceptor_metadata("design:type","function"==typeof(e5=void 0!==i8.Logger&&i8.Logger)?e5:Object)],a7.prototype,"logger",void 0),a7=initial_prompt_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],a7);var a6=r(42685),a9=r(19677),ce=r(59771),sensitive_user_input_interceptor_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let ct=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.SensitiveUserInput}async intercept(e){if(!this.sensitiveUserInputReview||!Array.isArray(e.input)||iY.SessionUtils.isSubAgent(e.session))return;let t=e.input.filter(e=>iY.InputItemUtils.isExternalUserPromptItem(e)&&(0,ce.gP)(e)?.sensitiveUserInputReviewed!==!0);if(0===t.length)return;let r=t.map(e=>iY.MessageContentUtils.extractTextContent(e,!0).trim()).filter(Boolean).join("\n\n"),o="string"==typeof e.session.meta?.sensitiveGrantSessionId&&e.session.meta.sensitiveGrantSessionId?e.session.meta.sensitiveGrantSessionId:e.session.id,i=await this.sensitiveUserInputReview.review({sessionId:e.session.id,grantSessionId:o,decisionScopeId:e.session.promptRequestId??e.session.conversationRequestId,inspectionContent:r,signal:e.session.abortSignal});if("deny"===i.kind)throw e.skipAddHistory=!0,new a6.id(i.code,i.safeMessage);for(let e of t)(0,a9.markSensitiveUserInputReviewed)(e,i)}};sensitive_user_input_interceptor_decorate([(0,iB.Autowired)(a6.IN),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type",Object)],ct.prototype,"sensitiveUserInputReview",void 0),ct=sensitive_user_input_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],ct);var cr=r(96802);let co="codebuddy.ai/teamResumeIntent",ci=`human-${(0,n8.randomUUID)()}`,cn="codebuddy.ai/teamResumeIntentOriginalString";function markHumanTeamResumeIntent(e){for(let t of e)if("message"===t.type&&"user"===t.role){if(t.providerData={...t.providerData??{},[co]:ci},"string"==typeof t.content)t.content=[{type:"input_text",text:t.content,_meta:{[co]:ci,[cn]:ci}}];else if(Array.isArray(t.content))for(let e of t.content)e&&"object"==typeof e&&(e._meta={...e._meta??{},[co]:ci})}}function hasHumanTeamResumeIntent(e){for(let t of e){if(t.providerData?.[co]===ci)return!0;if(Array.isArray(t.content))for(let e of t.content){if(!e||"object"!=typeof e)continue;let t=e._meta;if(t?.[co]===ci)return!0}}return!1}function consumeHumanTeamResumeIntent(e){let t=!1;for(let r of e){let e=r.providerData;if(e&&(e[co]===ci&&(t=!0),delete e[co],0===Object.keys(e).length&&delete r.providerData),!Array.isArray(r.content))continue;let o=1===r.content.length&&r.content[0]&&"object"==typeof r.content[0]?r.content[0]:void 0,i=o?._meta?.[co]===ci&&o._meta?.[cn]===ci&&"string"==typeof o.text?o.text:void 0;for(let e of r.content){if(!e||"object"!=typeof e)continue;let r=e._meta;r&&(r[co]===ci&&(t=!0),delete r[co],delete r[cn],0===Object.keys(r).length&&delete e._meta)}void 0!==i&&(r.content=i)}return t?"human":void 0}var team_resume_intent_interceptor_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},team_resume_intent_interceptor_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let cs=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.HumanInputProvenance}async intercept(e){"human"!==e.inputOrigin||e.skipRun||!Array.isArray(e.input)||iY.SessionUtils.resolveTeamLeadTeamName(e.session)&&markHumanTeamResumeIntent(e.input)}};cs=team_resume_intent_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],cs);let ca=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.TeamRuntimeResume}async intercept(e){if(e.skipRun||!Array.isArray(e.input)||!hasHumanTeamResumeIntent(e.input)||!iY.SessionUtils.resolveTeamLeadTeamName(e.session))return;let t=e.agentOptions?.signal;if(t?.aborted)return;let r=await (0,cr.J)(e.session,this.logger);if(t?.aborted)return;let o=(0,cr.B)(e.session,r,this.logger);o&&e.input.unshift(o)}};team_resume_intent_interceptor_decorate([(0,iB.Autowired)(i8.Logger),team_resume_intent_interceptor_metadata("design:type","function"==typeof(e4=void 0!==i8.Logger&&i8.Logger)?e4:Object)],ca.prototype,"logger",void 0),ca=team_resume_intent_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],ca);let cc=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.TeamResumeIntent}async intercept(e){if(e.skipRun||!Array.isArray(e.input))return;let t=e.agentOptions?.signal;if(t?.aborted)return;let o=iY.SessionUtils.resolveTeamLeadTeamName(e.session);if("human"===consumeHumanTeamResumeIntent(e.input)){this.agentRunScope?.activateHuman({session:e.session,agent:e.agent});try{let{resumeTeamLeadFollowUpDispatch:i}=await Promise.resolve().then(r.bind(r,8714)),{markTeamRuntimeActiveAfterHumanResume:n}=await Promise.resolve().then(r.bind(r,45327));if(t?.aborted)return;i(e.session),o&&await n(o,e.session.id),e.session.teamCancelled&&(e.session.teamCancelled=!1)}catch(t){this.logger.warn?.(`[TeamResumeIntent] Failed to resume lead dispatch for session ${e.session.id}: ${t instanceof Error?t.message:String(t)}`)}}}};team_resume_intent_interceptor_decorate([(0,iB.Autowired)(iY.AgentRunScope),(0,iB.Optional)(),team_resume_intent_interceptor_metadata("design:type",Object)],cc.prototype,"agentRunScope",void 0),team_resume_intent_interceptor_decorate([(0,iB.Autowired)(i8.Logger),team_resume_intent_interceptor_metadata("design:type","function"==typeof(e7=void 0!==i8.Logger&&i8.Logger)?e7:Object)],cc.prototype,"logger",void 0),cc=team_resume_intent_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],cc);var cl=r(61220),manual_compact_request_handler_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},manual_compact_request_handler_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let cd=/^<channel[^>]*>\s*([\s\S]*?)\s*<\/channel>$/,cu=/^([\s\S]*?)<user_query>([\s\S]*?)<\/user_query>$/,extractEnvelopeCommandText=e=>{let t=e.trim(),r=cd.exec(t),o=r?.[1]?.trim()??t,i=cu.exec(o);return i?.[2]?.trim()??o},cp=class{async tryHandle(e,t){let r=(e=>{if("string"==typeof e){let t=/^\/compact(?:\s+([\s\S]*))?$/.exec(extractEnvelopeCommandText(e));return t?{customInstructions:t[1]?.trim()||void 0}:void 0}let t=e.filter(e=>"message"===e.type&&"user"===e.role&&e.providerData?.isCompactInternal!==!0);if(1!==t.length)return;let r=t[0],o="string"==typeof r.content?[r.content]:r.content.filter(e=>"input_text"===e.type).map(e=>e.text);if(1!==o.length)return;let i=/^\/compact(?:\s+([\s\S]*))?$/.exec(extractEnvelopeCommandText(o[0]));return i?{customInstructions:i[1]?.trim()||void 0}:void 0})(e);if(!r)return!1;let o=t.agentName??t.resultSubject?.value?.lastAgent?.name??(await this.agentManager.getDefault()).name,i=(await this.agentManager.getCommands(o)).filter(e=>"/compact"===e.name),n=i.find(e=>e.tags?.includes(sF.CUSTOM_COMMAND_TAG))??i[0];return!(!n||n.tags?.includes(sF.CUSTOM_COMMAND_TAG))&&!!n.tags?.some(e=>e===`${iY.AgentNames.COMPACT}${iY.AGENT_TAG_SUFFIX}`)&&(await this.compact(t,{customInstructions:r.customInstructions}),!0)}async compact(e,t={}){let r=this.operations??=new WeakMap,o=r.get(e);if(o)return this.logger.info(`[Compact] coalescing duplicate manual request session=${e.id}`),o;let i=this.runCompact(e,t.customInstructions,t.waitForIdle??!0);r.set(e,i);try{return await i}finally{r.get(e)===i&&r.delete(e)}}async runCompact(e,t,r){if(!await this.claimIdleCompactWindow(e,r))return this.hasPendingApproval(e)&&this.consoleManager.warn("A tool approval is pending. Complete it before running /compact."),!1;let o=!1;try{let r=await this.contextCompactSummarizer.compactWithResult(e,{force:!0,skipContinue:!0,type:iY.CompactType.USER_COMMAND,customInstructions:t});if(o="completed"===r.status,"skipped"===r.status&&"pending_interruption"===r.reason)return this.consoleManager.warn("A tool approval is pending. Complete it before running /compact."),!1;"completed"!==r.status&&this.logger.info(`[Compact] manual request did not run session=${e.id} reason=${r.reason}`)}finally{this.stateMachine.transition(e,{type:o?iY.SessionRunEventType.COMPACT_ENDED:iY.SessionRunEventType.COMPACT_FAILED,reason:o?"manual-compact-completed":"manual-compact-not-completed"}),this.idleQueueDrainService?.requestDrain(e)}return o}async claimIdleCompactWindow(e,t){for(;;){if(this.hasPendingApproval(e))return!1;if(!this.stateMachine.isIdle(e)||e.isCompressing){if(!t||"pending-approval"===await this.waitForIdleOrApproval(e))return!1;continue}let r=this.stateMachine.getSnapshot(e).status,o=this.stateMachine.transition(e,{type:iY.SessionRunEventType.COMPACT_STARTED,reason:"manual-compact-idle-gate"}).status;if(r===iY.SessionRunStatus.IDLE&&o===iY.SessionRunStatus.COMPACTING)return!0}}waitForIdleOrApproval(e){return new Promise(t=>{let r,o=new cl.y,i=!1,finish=e=>{i||(i=!0,clearTimeout(r),o.unsubscribe(),t(e))},check=()=>{this.hasPendingApproval(e)?finish("pending-approval"):this.stateMachine.isIdle(e)&&!e.isCompressing?finish("idle"):i||(clearTimeout(r),r=setTimeout(check,50),r.unref?.())};o.add(this.stateMachine.getChange$(e).subscribe({next:check,error:e=>{this.logger.warn("[Compact] idle gate state subscription failed:",e),check()}})),this.interruptionService&&o.add(this.interruptionService.pending$.subscribe(()=>check())),check()})}hasPendingApproval(e){let t=this.interruptionService?.pending$?.value;if(t){let r=this.interruptionService?.findMainSession(e)??e;if(t.mainSessionId===r.id)return!0}return e.interruptionSubject?.value!==void 0}};manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.AgentManager),manual_compact_request_handler_metadata("design:type","function"==typeof(e6=void 0!==iY.AgentManager&&iY.AgentManager)?e6:Object)],cp.prototype,"agentManager",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.ContextCompactSummarizer),manual_compact_request_handler_metadata("design:type","function"==typeof(e9=void 0!==iY.ContextCompactSummarizer&&iY.ContextCompactSummarizer)?e9:Object)],cp.prototype,"contextCompactSummarizer",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(i8.Logger),manual_compact_request_handler_metadata("design:type","function"==typeof(te=void 0!==i8.Logger&&i8.Logger)?te:Object)],cp.prototype,"logger",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(np.dy),manual_compact_request_handler_metadata("design:type","function"==typeof(tt=void 0!==np.dy&&np.dy)?tt:Object)],cp.prototype,"consoleManager",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.SessionRunStateMachine),manual_compact_request_handler_metadata("design:type","function"==typeof(tr=void 0!==iY.SessionRunStateMachine&&iY.SessionRunStateMachine)?tr:Object)],cp.prototype,"stateMachine",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.InterruptionService),(0,iB.Optional)(),manual_compact_request_handler_metadata("design:type",Object)],cp.prototype,"interruptionService",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.IdleQueueDrainService),(0,iB.Optional)(),manual_compact_request_handler_metadata("design:type",Object)],cp.prototype,"idleQueueDrainService",void 0),cp=manual_compact_request_handler_decorate([(0,iB.Component)(iY.ManualCompactRequestHandler)],cp),r(26611);var cg=r(53945),ch=r(73098),cf=r(25866),custom_agent_manager_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},custom_agent_manager_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let cm=["default","inherit","lite","reasoning"],cy=[i2.L3.READ,i2.L3.WRITE,i2.L3.EDIT,i2.L3.MULTI_EDIT,i2.L3.BASH,i2.L3.GLOB,i2.L3.GREP,i2.L3.LS,i2.L3.WEB_FETCH,i2.L3.WEB_SEARCH,i2.L3.TODO_WRITE,i2.L3.NOTEBOOK_READ,i2.L3.NOTEBOOK_EDIT],c_=class{constructor(){this.customAgents=[]}static{to=this}init(){this.loadCustomAgents(),this.productManager.onDidChange(()=>this.loadCustomAgents())}getAiModelChoices(){return(this.productManager?.getCurrentConfiguration?.()?.models??[]).filter(e=>"string"==typeof e?.id&&e.id.trim().length>0).map(e=>({id:e.id,...e.name&&{name:e.name},...e.aliases?.length?{aliases:[...e.aliases]}:{},...e.disabled?{disabled:!0}:{},...e.disabledReason?{disabledReason:e.disabledReason}:{}}))}resolveAiModel(e){if("string"!=typeof e)return;let t=e.trim();if(!t)return;let r=t.toLowerCase();if(cm.includes(r))return"default"===r||"inherit"===r?void 0:r;let o=this.getAiModelChoices().find(e=>[e.id,e.name,...e.aliases??[]].some(e=>e?.toLowerCase()===r));return!o||o.disabled?void this.logger.warn(`[CustomAgentManager] generated model '${t}' is not available; the agent will inherit the parent model.`):o.id}buildAiModelPrompt(e){let t=this.getAiModelChoices(),r=t.length>0?t.map(e=>{let t=[e.id,e.name,...e.aliases??[]].filter(Boolean),r=e.disabled?` [UNAVAILABLE${e.disabledReason?`: ${e.disabledReason}`:""}]`:"";return`- ${t.join(" | ")}${r}`}).join("\n"):"- (The model catalog is temporarily unavailable; use inherit.)",o=e.requestOptions?.model||e.options?.model;return`Model selection rules:
198
+ `})}this.logger.info("[InitialPromptInterceptor] prepended agent initialPrompt to first user turn")}catch(e){this.logger.warn("[InitialPromptInterceptor] skipped initialPrompt injection due to error",e)}}async resolveInitialPrompt(e){let t=this.agentManager.getSettingsAgentName(),r=t&&e.agent.name===this.agentManager.getDefaultAgentName()?t:e.agent.name,o=await this.agentManager.getAgentConfig(r);return o?.initialPrompt}};initial_prompt_interceptor_decorate([(0,iB.Autowired)(iY.AgentManager),initial_prompt_interceptor_metadata("design:type","function"==typeof(e8=void 0!==iY.AgentManager&&iY.AgentManager)?e8:Object)],a7.prototype,"agentManager",void 0),initial_prompt_interceptor_decorate([(0,iB.Autowired)(i8.Logger),initial_prompt_interceptor_metadata("design:type","function"==typeof(e5=void 0!==i8.Logger&&i8.Logger)?e5:Object)],a7.prototype,"logger",void 0),a7=initial_prompt_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],a7);var a6=r(42685),a9=r(19677),ce=r(59771),sensitive_user_input_interceptor_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};let ct=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.SensitiveUserInput}async intercept(e){if(!this.sensitiveUserInputReview||!Array.isArray(e.input)||iY.SessionUtils.isSubAgent(e.session))return;let t=e.input.filter(e=>iY.InputItemUtils.isExternalUserPromptItem(e)&&(0,ce.gP)(e)?.sensitiveUserInputReviewed!==!0);if(0===t.length)return;let r=t.map(e=>iY.MessageContentUtils.extractTextContent(e,!0).trim()).filter(Boolean).join("\n\n"),o="string"==typeof e.session.meta?.sensitiveGrantSessionId&&e.session.meta.sensitiveGrantSessionId?e.session.meta.sensitiveGrantSessionId:e.session.id,i=await this.sensitiveUserInputReview.review({sessionId:e.session.id,grantSessionId:o,decisionScopeId:e.session.promptRequestId??e.session.conversationRequestId,inspectionContent:r,signal:e.session.abortSignal});if("deny"===i.kind)throw e.skipAddHistory=!0,new a6.id(i.code,i.safeMessage);for(let e of t)(0,a9.markSensitiveUserInputReviewed)(e,i)}};sensitive_user_input_interceptor_decorate([(0,iB.Autowired)(a6.IN),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type",Object)],ct.prototype,"sensitiveUserInputReview",void 0),ct=sensitive_user_input_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],ct);var cr=r(96802);let co="codebuddy.ai/teamResumeIntent",ci=`human-${(0,n8.randomUUID)()}`,cn="codebuddy.ai/teamResumeIntentOriginalString";function markHumanTeamResumeIntent(e){for(let t of e)if("message"===t.type&&"user"===t.role){if(t.providerData={...t.providerData??{},[co]:ci},"string"==typeof t.content)t.content=[{type:"input_text",text:t.content,_meta:{[co]:ci,[cn]:ci}}];else if(Array.isArray(t.content))for(let e of t.content)e&&"object"==typeof e&&(e._meta={...e._meta??{},[co]:ci})}}function hasHumanTeamResumeIntent(e){for(let t of e){if(t.providerData?.[co]===ci)return!0;if(Array.isArray(t.content))for(let e of t.content){if(!e||"object"!=typeof e)continue;let t=e._meta;if(t?.[co]===ci)return!0}}return!1}function consumeHumanTeamResumeIntent(e){let t=!1;for(let r of e){let e=r.providerData;if(e&&(e[co]===ci&&(t=!0),delete e[co],0===Object.keys(e).length&&delete r.providerData),!Array.isArray(r.content))continue;let o=1===r.content.length&&r.content[0]&&"object"==typeof r.content[0]?r.content[0]:void 0,i=o?._meta?.[co]===ci&&o._meta?.[cn]===ci&&"string"==typeof o.text?o.text:void 0;for(let e of r.content){if(!e||"object"!=typeof e)continue;let r=e._meta;r&&(r[co]===ci&&(t=!0),delete r[co],delete r[cn],0===Object.keys(r).length&&delete e._meta)}void 0!==i&&(r.content=i)}return t?"human":void 0}var team_resume_intent_interceptor_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},team_resume_intent_interceptor_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let cs=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.HumanInputProvenance}async intercept(e){"human"!==e.inputOrigin||e.skipRun||!Array.isArray(e.input)||iY.SessionUtils.resolveTeamLeadTeamName(e.session)&&markHumanTeamResumeIntent(e.input)}};cs=team_resume_intent_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],cs);let ca=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.TeamRuntimeResume}async intercept(e){if(e.skipRun||!Array.isArray(e.input)||!hasHumanTeamResumeIntent(e.input)||!iY.SessionUtils.resolveTeamLeadTeamName(e.session))return;let t=e.agentOptions?.signal;if(t?.aborted)return;let r=await (0,cr.J)(e.session,this.logger);if(t?.aborted)return;let o=(0,cr.B)(e.session,r,this.logger);o&&e.input.unshift(o)}};team_resume_intent_interceptor_decorate([(0,iB.Autowired)(i8.Logger),team_resume_intent_interceptor_metadata("design:type","function"==typeof(e4=void 0!==i8.Logger&&i8.Logger)?e4:Object)],ca.prototype,"logger",void 0),ca=team_resume_intent_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],ca);let cc=class{constructor(){this.priority=iY.AgentRunInterceptorPriority.TeamResumeIntent}async intercept(e){if(e.skipRun||!Array.isArray(e.input))return;let t=e.agentOptions?.signal;if(t?.aborted)return;let o=iY.SessionUtils.resolveTeamLeadTeamName(e.session);if("human"===consumeHumanTeamResumeIntent(e.input)){this.agentRunScope?.activateHuman({session:e.session,agent:e.agent});try{let{resumeTeamLeadFollowUpDispatch:i}=await Promise.resolve().then(r.bind(r,8714)),{markTeamRuntimeActiveAfterHumanResume:n}=await Promise.resolve().then(r.bind(r,45327));if(t?.aborted)return;i(e.session),o&&await n(o,e.session.id),e.session.teamCancelled&&(e.session.teamCancelled=!1)}catch(t){this.logger.warn?.(`[TeamResumeIntent] Failed to resume lead dispatch for session ${e.session.id}: ${t instanceof Error?t.message:String(t)}`)}}}};team_resume_intent_interceptor_decorate([(0,iB.Autowired)(iY.AgentRunScope),(0,iB.Optional)(),team_resume_intent_interceptor_metadata("design:type",Object)],cc.prototype,"agentRunScope",void 0),team_resume_intent_interceptor_decorate([(0,iB.Autowired)(i8.Logger),team_resume_intent_interceptor_metadata("design:type","function"==typeof(e7=void 0!==i8.Logger&&i8.Logger)?e7:Object)],cc.prototype,"logger",void 0),cc=team_resume_intent_interceptor_decorate([(0,iB.Component)(iY.AgentRunInterceptor)],cc);var cl=r(61220),manual_compact_request_handler_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},manual_compact_request_handler_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let cd=/^<channel[^>]*>\s*([\s\S]*?)\s*<\/channel>$/,cu=/^([\s\S]*?)<user_query>([\s\S]*?)<\/user_query>$/,extractEnvelopeCommandText=e=>{let t=e.trim(),r=cd.exec(t),o=r?.[1]?.trim()??t,i=cu.exec(o);return i?.[2]?.trim()??o},cp=class{async tryHandle(e,t){let r=(e=>{if("string"==typeof e){let t=/^\/compact(?:\s+([\s\S]*))?$/.exec(extractEnvelopeCommandText(e));return t?{customInstructions:t[1]?.trim()||void 0}:void 0}let t=e.filter(e=>"message"===e.type&&"user"===e.role&&e.providerData?.isCompactInternal!==!0);if(1!==t.length)return;let r=t[0],o="string"==typeof r.content?[r.content]:r.content.filter(e=>"input_text"===e.type).map(e=>e.text);if(1!==o.length)return;let i=/^\/compact(?:\s+([\s\S]*))?$/.exec(extractEnvelopeCommandText(o[0]));return i?{customInstructions:i[1]?.trim()||void 0}:void 0})(e);if(!r)return!1;let o=t.agentName??t.resultSubject?.value?.lastAgent?.name??(await this.agentManager.getDefault()).name,i=(await this.agentManager.getCommands(o)).filter(e=>"/compact"===e.name),n=i.find(e=>e.tags?.includes(sF.CUSTOM_COMMAND_TAG))??i[0];return!(!n||n.tags?.includes(sF.CUSTOM_COMMAND_TAG))&&!!n.tags?.some(e=>e===`${iY.AgentNames.COMPACT}${iY.AGENT_TAG_SUFFIX}`)&&(await this.compact(t,{customInstructions:r.customInstructions}),!0)}async compact(e,t={}){let r=this.operations??=new WeakMap,o=r.get(e);if(o)return this.logger.info(`[Compact] coalescing duplicate manual request session=${e.id}`),o;let i=this.runCompact(e,t.customInstructions,t.waitForIdle??!0);r.set(e,i);try{return await i}finally{r.get(e)===i&&r.delete(e)}}async runCompact(e,t,r){if(!await this.claimIdleCompactWindow(e,r))return this.hasPendingApproval(e)&&this.consoleManager.warn("A tool approval is pending. Complete it before running /compact."),!1;let o=!1;try{let r=await this.contextCompactSummarizer.compactWithResult(e,{force:!0,skipContinue:!0,type:iY.CompactType.USER_COMMAND,customInstructions:t});if(o="completed"===r.status,"skipped"===r.status&&"pending_interruption"===r.reason)return this.consoleManager.warn("A tool approval is pending. Complete it before running /compact."),!1;"completed"!==r.status&&(this.logger.info(`[Compact] manual request did not run session=${e.id} reason=${r.reason}`),"failed"===r.status&&this.consoleManager.warn("Compaction failed. Check the logs for details."))}finally{this.stateMachine.transition(e,{type:o?iY.SessionRunEventType.COMPACT_ENDED:iY.SessionRunEventType.COMPACT_FAILED,reason:o?"manual-compact-completed":"manual-compact-not-completed"}),this.idleQueueDrainService?.requestDrain(e)}return o}async claimIdleCompactWindow(e,t){for(;;){if(this.hasPendingApproval(e))return!1;if(!this.stateMachine.isIdle(e)||e.isCompressing){if(!t||"pending-approval"===await this.waitForIdleOrApproval(e))return!1;continue}let r=this.stateMachine.getSnapshot(e).status,o=this.stateMachine.transition(e,{type:iY.SessionRunEventType.COMPACT_STARTED,reason:"manual-compact-idle-gate"}).status;if(r===iY.SessionRunStatus.IDLE&&o===iY.SessionRunStatus.COMPACTING)return!0}}waitForIdleOrApproval(e){return new Promise(t=>{let r,o=new cl.y,i=!1,finish=e=>{i||(i=!0,clearTimeout(r),o.unsubscribe(),t(e))},check=()=>{this.hasPendingApproval(e)?finish("pending-approval"):this.stateMachine.isIdle(e)&&!e.isCompressing?finish("idle"):i||(clearTimeout(r),r=setTimeout(check,50),r.unref?.())};o.add(this.stateMachine.getChange$(e).subscribe({next:check,error:e=>{this.logger.warn("[Compact] idle gate state subscription failed:",e),check()}})),this.interruptionService&&o.add(this.interruptionService.pending$.subscribe(()=>check())),check()})}hasPendingApproval(e){let t=this.interruptionService?.pending$?.value;if(t){let r=this.interruptionService?.findMainSession(e)??e;if(t.mainSessionId===r.id)return!0}return e.interruptionSubject?.value!==void 0}};manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.AgentManager),manual_compact_request_handler_metadata("design:type","function"==typeof(e6=void 0!==iY.AgentManager&&iY.AgentManager)?e6:Object)],cp.prototype,"agentManager",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.ContextCompactSummarizer),manual_compact_request_handler_metadata("design:type","function"==typeof(e9=void 0!==iY.ContextCompactSummarizer&&iY.ContextCompactSummarizer)?e9:Object)],cp.prototype,"contextCompactSummarizer",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(i8.Logger),manual_compact_request_handler_metadata("design:type","function"==typeof(te=void 0!==i8.Logger&&i8.Logger)?te:Object)],cp.prototype,"logger",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(np.dy),manual_compact_request_handler_metadata("design:type","function"==typeof(tt=void 0!==np.dy&&np.dy)?tt:Object)],cp.prototype,"consoleManager",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.SessionRunStateMachine),manual_compact_request_handler_metadata("design:type","function"==typeof(tr=void 0!==iY.SessionRunStateMachine&&iY.SessionRunStateMachine)?tr:Object)],cp.prototype,"stateMachine",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.InterruptionService),(0,iB.Optional)(),manual_compact_request_handler_metadata("design:type",Object)],cp.prototype,"interruptionService",void 0),manual_compact_request_handler_decorate([(0,iB.Autowired)(iY.IdleQueueDrainService),(0,iB.Optional)(),manual_compact_request_handler_metadata("design:type",Object)],cp.prototype,"idleQueueDrainService",void 0),cp=manual_compact_request_handler_decorate([(0,iB.Component)(iY.ManualCompactRequestHandler)],cp),r(26611);var cg=r(53945),ch=r(73098),cf=r(25866),custom_agent_manager_decorate=function(e,t,r,o){var i,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(n<3?i(s):n>3?i(t,r,s):i(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s},custom_agent_manager_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let cm=["default","inherit","lite","reasoning"],cy=[i2.L3.READ,i2.L3.WRITE,i2.L3.EDIT,i2.L3.MULTI_EDIT,i2.L3.BASH,i2.L3.GLOB,i2.L3.GREP,i2.L3.LS,i2.L3.WEB_FETCH,i2.L3.WEB_SEARCH,i2.L3.TODO_WRITE,i2.L3.NOTEBOOK_READ,i2.L3.NOTEBOOK_EDIT],c_=class{constructor(){this.customAgents=[]}static{to=this}init(){this.loadCustomAgents(),this.productManager.onDidChange(()=>this.loadCustomAgents())}getAiModelChoices(){return(this.productManager?.getCurrentConfiguration?.()?.models??[]).filter(e=>"string"==typeof e?.id&&e.id.trim().length>0).map(e=>({id:e.id,...e.name&&{name:e.name},...e.aliases?.length?{aliases:[...e.aliases]}:{},...e.disabled?{disabled:!0}:{},...e.disabledReason?{disabledReason:e.disabledReason}:{}}))}resolveAiModel(e){if("string"!=typeof e)return;let t=e.trim();if(!t)return;let r=t.toLowerCase();if(cm.includes(r))return"default"===r||"inherit"===r?void 0:r;let o=this.getAiModelChoices().find(e=>[e.id,e.name,...e.aliases??[]].some(e=>e?.toLowerCase()===r));return!o||o.disabled?void this.logger.warn(`[CustomAgentManager] generated model '${t}' is not available; the agent will inherit the parent model.`):o.id}buildAiModelPrompt(e){let t=this.getAiModelChoices(),r=t.length>0?t.map(e=>{let t=[e.id,e.name,...e.aliases??[]].filter(Boolean),r=e.disabled?` [UNAVAILABLE${e.disabledReason?`: ${e.disabledReason}`:""}]`:"";return`- ${t.join(" | ")}${r}`}).join("\n"):"- (The model catalog is temporarily unavailable; use inherit.)",o=e.requestOptions?.model||e.options?.model;return`Model selection rules:
199
199
  - Current conversation model: ${o||"unknown"}.
200
200
  - Available model values (use the exact model ID, not a guessed name):
201
201
  ${r}