@tencent-ai/agent-sdk 0.3.252 → 0.3.253

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 (208) hide show
  1. package/cli/CHANGELOG.md +22 -0
  2. package/cli/dist/codebuddy-headless.js +73 -58
  3. package/cli/dist/codebuddy-lite-wb.mjs +96 -81
  4. package/cli/dist/lazy/{427.68132a34.js → 427.74b982af.js} +4 -4
  5. package/cli/dist/lazy-headless/{834.391fb41e.js → 834.3b674e07.js} +9 -9
  6. package/cli/dist-server/3556.codebuddy.js +1 -1
  7. package/cli/dist-server/6037.codebuddy.js +1 -1
  8. package/cli/dist-server/6784.codebuddy.js +1 -1
  9. package/cli/dist-server/codebuddy.js +45 -30
  10. package/cli/dist-server/types/node/agent/openai-agents-types.d.ts +5 -5
  11. package/cli/dist-server/types/node/mcp/mcp-sdk-values.d.ts +1 -1
  12. package/cli/dist-server/types/node/model/model-provider.d.ts +3 -1
  13. package/cli/dist-server/types/node/tools/a2a-get-task-tool.d.ts +139 -34
  14. package/cli/dist-server/types/node/tools/a2a-poll-retry.d.ts +46 -0
  15. package/cli/package.json +1 -1
  16. package/cli/product.cloudhosted.json +2 -2
  17. package/cli/product.internal.json +2 -2
  18. package/cli/product.ioa.json +2 -2
  19. package/cli/product.json +4 -4
  20. package/cli/product.selfhosted.json +2 -2
  21. package/package.json +1 -1
  22. package/cli/dist-server/types/node/acp/acp-view-rewind-to.d.ts +0 -34
  23. package/cli/dist-server/types/node/acp/acp-web-ui-client.d.ts +0 -22
  24. package/cli/dist-server/types/node/acp/usage-by-category-calculator.d.ts +0 -45
  25. package/cli/dist-server/types/node/acp/usage-by-category-char-weight.d.ts +0 -9
  26. package/cli/dist-server/types/node/acp/usage-by-category-distribute.d.ts +0 -6
  27. package/cli/dist-server/types/node/acp/usage-by-category-tools-split.d.ts +0 -11
  28. package/cli/dist-server/types/node/agent-home/agent-home-envelope-body.d.ts +0 -54
  29. package/cli/dist-server/types/node/agent-home/agent-home-inbox-events.d.ts +0 -14
  30. package/cli/dist-server/types/node/agent-home/agent-home-room-contacts.d.ts +0 -30
  31. package/cli/dist-server/types/node/agent-team/permission-bridge-client.d.ts +0 -32
  32. package/cli/dist-server/types/node/agent-team/permission-bridge-protocol.d.ts +0 -47
  33. package/cli/dist-server/types/node/agent-view/handoff-policy.d.ts +0 -80
  34. package/cli/dist-server/types/node/agent-view/job-respawn-prefs.d.ts +0 -12
  35. package/cli/dist-server/types/node/agent-view/session-handoff.d.ts +0 -161
  36. package/cli/dist-server/types/node/ask/index.d.ts +0 -3
  37. package/cli/dist-server/types/node/bash-sandbox/bash-sandbox-manager.d.ts +0 -125
  38. package/cli/dist-server/types/node/bash-sandbox/legacy-sandbox-shell-service.d.ts +0 -33
  39. package/cli/dist-server/types/node/bash-sandbox/managed-security-policy.d.ts +0 -6
  40. package/cli/dist-server/types/node/bash-sandbox/workbuddy-directory-protection.d.ts +0 -12
  41. package/cli/dist-server/types/node/checkpoint/checkpoint-service.d.ts +0 -70
  42. package/cli/dist-server/types/node/checkpoint/file-changes-controller.d.ts +0 -29
  43. package/cli/dist-server/types/node/checkpoint/file-track-service.d.ts +0 -11
  44. package/cli/dist-server/types/node/checkpoint/file-version-manager.d.ts +0 -10
  45. package/cli/dist-server/types/node/checkpoint/file-version-store.d.ts +0 -9
  46. package/cli/dist-server/types/node/checkpoint/file-version-update-strategies.d.ts +0 -62
  47. package/cli/dist-server/types/node/command/add-dir-command-executor.d.ts +0 -11
  48. package/cli/dist-server/types/node/command/agents-command-executor.d.ts +0 -9
  49. package/cli/dist-server/types/node/command/auto-compact-command-executor.d.ts +0 -20
  50. package/cli/dist-server/types/node/command/background-command-executor.d.ts +0 -29
  51. package/cli/dist-server/types/node/command/btw-command-executor.d.ts +0 -19
  52. package/cli/dist-server/types/node/command/clear-command-executor.d.ts +0 -17
  53. package/cli/dist-server/types/node/command/config-command-executor.d.ts +0 -15
  54. package/cli/dist-server/types/node/command/context-command-executor.d.ts +0 -42
  55. package/cli/dist-server/types/node/command/copy-command-executor.d.ts +0 -10
  56. package/cli/dist-server/types/node/command/cost-command-executor.d.ts +0 -13
  57. package/cli/dist-server/types/node/command/debug-command-executor.d.ts +0 -15
  58. package/cli/dist-server/types/node/command/deep-research-command-executor.d.ts +0 -25
  59. package/cli/dist-server/types/node/command/doctor-command-executor.d.ts +0 -7
  60. package/cli/dist-server/types/node/command/effort-command-executor.d.ts +0 -46
  61. package/cli/dist-server/types/node/command/exit-command-executor.d.ts +0 -14
  62. package/cli/dist-server/types/node/command/export-command-executor.d.ts +0 -7
  63. package/cli/dist-server/types/node/command/feedback-command-executor.d.ts +0 -9
  64. package/cli/dist-server/types/node/command/fork-bg-command-executor.d.ts +0 -30
  65. package/cli/dist-server/types/node/command/fork-command-executor.d.ts +0 -28
  66. package/cli/dist-server/types/node/command/goal-command-executor.d.ts +0 -50
  67. package/cli/dist-server/types/node/command/handoff-message-adapter.d.ts +0 -9
  68. package/cli/dist-server/types/node/command/help-command-executor.d.ts +0 -9
  69. package/cli/dist-server/types/node/command/hooks-command-executor.d.ts +0 -9
  70. package/cli/dist-server/types/node/command/ide-command-executor.d.ts +0 -11
  71. package/cli/dist-server/types/node/command/mcp-command-executor.d.ts +0 -15
  72. package/cli/dist-server/types/node/command/memory-command-executor.d.ts +0 -17
  73. package/cli/dist-server/types/node/command/mode-command-executor.d.ts +0 -11
  74. package/cli/dist-server/types/node/command/model-command-executor.d.ts +0 -11
  75. package/cli/dist-server/types/node/command/model-image-to-image-command-executor.d.ts +0 -17
  76. package/cli/dist-server/types/node/command/model-image-to-video-command-executor.d.ts +0 -17
  77. package/cli/dist-server/types/node/command/model-lite-command-executor.d.ts +0 -17
  78. package/cli/dist-server/types/node/command/model-reasoning-command-executor.d.ts +0 -17
  79. package/cli/dist-server/types/node/command/model-text-to-image-command-executor.d.ts +0 -17
  80. package/cli/dist-server/types/node/command/model-text-to-video-command-executor.d.ts +0 -17
  81. package/cli/dist-server/types/node/command/multitask-command-executor.d.ts +0 -9
  82. package/cli/dist-server/types/node/command/permissions-command-executor.d.ts +0 -9
  83. package/cli/dist-server/types/node/command/plan-command-executor.d.ts +0 -11
  84. package/cli/dist-server/types/node/command/plugin-command-executor.d.ts +0 -25
  85. package/cli/dist-server/types/node/command/plugin-validate-command-executor.d.ts +0 -21
  86. package/cli/dist-server/types/node/command/release-notes-command-executor.d.ts +0 -18
  87. package/cli/dist-server/types/node/command/reload-plugins-command-executor.d.ts +0 -24
  88. package/cli/dist-server/types/node/command/remote-control-command-executor.d.ts +0 -44
  89. package/cli/dist-server/types/node/command/rename-command-executor.d.ts +0 -11
  90. package/cli/dist-server/types/node/command/reset-command-executor.d.ts +0 -9
  91. package/cli/dist-server/types/node/command/resume-command-executor.d.ts +0 -21
  92. package/cli/dist-server/types/node/command/rewind-command-executor.d.ts +0 -10
  93. package/cli/dist-server/types/node/command/sandbox-command-executor.d.ts +0 -20
  94. package/cli/dist-server/types/node/command/save-workflow-command-executor.d.ts +0 -43
  95. package/cli/dist-server/types/node/command/session-reset-notifier.d.ts +0 -23
  96. package/cli/dist-server/types/node/command/skills-command-executor.d.ts +0 -9
  97. package/cli/dist-server/types/node/command/stats-command-executor.d.ts +0 -11
  98. package/cli/dist-server/types/node/command/status-command-executor.d.ts +0 -11
  99. package/cli/dist-server/types/node/command/tasks-command-executor.d.ts +0 -9
  100. package/cli/dist-server/types/node/command/terminal-setup-command-executor.d.ts +0 -7
  101. package/cli/dist-server/types/node/command/theme-command-executor.d.ts +0 -7
  102. package/cli/dist-server/types/node/command/todos-command-executor.d.ts +0 -16
  103. package/cli/dist-server/types/node/command/upgrade-command-executor.d.ts +0 -13
  104. package/cli/dist-server/types/node/command/vim-command-executor.d.ts +0 -11
  105. package/cli/dist-server/types/node/command/workflows-command-executor.d.ts +0 -26
  106. package/cli/dist-server/types/node/feedback/feedback-protocol.d.ts +0 -32
  107. package/cli/dist-server/types/node/feedback/feedback-service.d.ts +0 -19
  108. package/cli/dist-server/types/node/feedback/index.d.ts +0 -2
  109. package/cli/dist-server/types/node/goal/goal-policy.d.ts +0 -55
  110. package/cli/dist-server/types/node/goal/goal-protocol.d.ts +0 -178
  111. package/cli/dist-server/types/node/goal/goal-service.d.ts +0 -201
  112. package/cli/dist-server/types/node/goal/goal-session-start-hook.d.ts +0 -24
  113. package/cli/dist-server/types/node/hooks/parse-frontmatter-hooks.d.ts +0 -42
  114. package/cli/dist-server/types/node/install/index.d.ts +0 -6
  115. package/cli/dist-server/types/node/install/install-controller.d.ts +0 -15
  116. package/cli/dist-server/types/node/install/install-env.d.ts +0 -12
  117. package/cli/dist-server/types/node/install/install-errors.d.ts +0 -46
  118. package/cli/dist-server/types/node/install/install-protocol.d.ts +0 -83
  119. package/cli/dist-server/types/node/install/install-service.d.ts +0 -36
  120. package/cli/dist-server/types/node/install/install-utils.d.ts +0 -7
  121. package/cli/dist-server/types/node/install/releases-service.d.ts +0 -18
  122. package/cli/dist-server/types/node/install/shell-setup.d.ts +0 -36
  123. package/cli/dist-server/types/node/mcp/mcp-cancellation.d.ts +0 -65
  124. package/cli/dist-server/types/node/mcp/mcp-controller.d.ts +0 -56
  125. package/cli/dist-server/types/node/mcp/mcp-model-id-header-helper.d.ts +0 -12
  126. package/cli/dist-server/types/node/mcp/mcp-oauth-callback-html.d.ts +0 -6
  127. package/cli/dist-server/types/node/mcp/mcp-oauth-controller.d.ts +0 -26
  128. package/cli/dist-server/types/node/mcp/mcp-output-storage.d.ts +0 -57
  129. package/cli/dist-server/types/node/mcp/mcp-server-override-impl.d.ts +0 -136
  130. package/cli/dist-server/types/node/mcp/mcp-server-override.d.ts +0 -29
  131. package/cli/dist-server/types/node/mcp/mcp-tool-result-sideband.d.ts +0 -26
  132. package/cli/dist-server/types/node/mcp/mcp-validate-middleware.d.ts +0 -25
  133. package/cli/dist-server/types/node/mcp/models/mcp-server.d.ts +0 -18
  134. package/cli/dist-server/types/node/mcp/node-websocket-transport.d.ts +0 -38
  135. package/cli/dist-server/types/node/mcp/official-mcp-egress-policy.d.ts +0 -17
  136. package/cli/dist-server/types/node/mcp/sdk-mcp-server.d.ts +0 -143
  137. package/cli/dist-server/types/node/mcp/sdk-mcp-transport.d.ts +0 -97
  138. package/cli/dist-server/types/node/message-queue/followup-queue.d.ts +0 -35
  139. package/cli/dist-server/types/node/message-queue/index.d.ts +0 -11
  140. package/cli/dist-server/types/node/plugins/concurrency.d.ts +0 -1
  141. package/cli/dist-server/types/node/plugins/dependency-resolver.d.ts +0 -43
  142. package/cli/dist-server/types/node/plugins/directory-plugin-cache-projection.d.ts +0 -2
  143. package/cli/dist-server/types/node/plugins/guards/index.d.ts +0 -2
  144. package/cli/dist-server/types/node/plugins/guards/weixinpay-integrity-guard.d.ts +0 -15
  145. package/cli/dist-server/types/node/plugins/installers/git-plugin-installer.d.ts +0 -42
  146. package/cli/dist-server/types/node/plugins/installers/git-subdir-plugin-installer.d.ts +0 -19
  147. package/cli/dist-server/types/node/plugins/installers/index.d.ts +0 -4
  148. package/cli/dist-server/types/node/plugins/installers/local-plugin-installer.d.ts +0 -40
  149. package/cli/dist-server/types/node/plugins/installers/npm-plugin-installer.d.ts +0 -23
  150. package/cli/dist-server/types/node/plugins/loaders/agent-loader.d.ts +0 -43
  151. package/cli/dist-server/types/node/plugins/loaders/command-loader.d.ts +0 -37
  152. package/cli/dist-server/types/node/plugins/loaders/hook-loader.d.ts +0 -55
  153. package/cli/dist-server/types/node/plugins/loaders/index.d.ts +0 -8
  154. package/cli/dist-server/types/node/plugins/loaders/lsp-loader.d.ts +0 -47
  155. package/cli/dist-server/types/node/plugins/loaders/mcp-loader.d.ts +0 -75
  156. package/cli/dist-server/types/node/plugins/loaders/output-style-loader.d.ts +0 -49
  157. package/cli/dist-server/types/node/plugins/loaders/plugin-loader-manager.d.ts +0 -49
  158. package/cli/dist-server/types/node/plugins/loaders/skill-loader.d.ts +0 -45
  159. package/cli/dist-server/types/node/plugins/marketplace-name-validator.d.ts +0 -50
  160. package/cli/dist-server/types/node/plugins/marketplace-path-safety.d.ts +0 -86
  161. package/cli/dist-server/types/node/plugins/marketplaces/base-marketplace.d.ts +0 -43
  162. package/cli/dist-server/types/node/plugins/marketplaces/builtin-marketplace-provider.d.ts +0 -22
  163. package/cli/dist-server/types/node/plugins/marketplaces/directory-marketplace.d.ts +0 -19
  164. package/cli/dist-server/types/node/plugins/marketplaces/git-availability-detector.d.ts +0 -62
  165. package/cli/dist-server/types/node/plugins/marketplaces/git-fallback-coordinator.d.ts +0 -42
  166. package/cli/dist-server/types/node/plugins/marketplaces/git-to-zip-url-converter.d.ts +0 -50
  167. package/cli/dist-server/types/node/plugins/marketplaces/github-marketplace.d.ts +0 -41
  168. package/cli/dist-server/types/node/plugins/marketplaces/http-marketplace.d.ts +0 -47
  169. package/cli/dist-server/types/node/plugins/marketplaces/index.d.ts +0 -13
  170. package/cli/dist-server/types/node/plugins/marketplaces/marketplace-config-manager.d.ts +0 -39
  171. package/cli/dist-server/types/node/plugins/marketplaces/marketplace-factory.d.ts +0 -11
  172. package/cli/dist-server/types/node/plugins/marketplaces/marketplace-storage.d.ts +0 -141
  173. package/cli/dist-server/types/node/plugins/marketplaces/marketplace-update-checker.d.ts +0 -38
  174. package/cli/dist-server/types/node/plugins/marketplaces/workspace-project-root.d.ts +0 -14
  175. package/cli/dist-server/types/node/plugins/marketplaces/zip-marketplace.d.ts +0 -134
  176. package/cli/dist-server/types/node/plugins/mcpb-handler.d.ts +0 -29
  177. package/cli/dist-server/types/node/plugins/plugin-controller.d.ts +0 -75
  178. package/cli/dist-server/types/node/plugins/plugin-error-collector.d.ts +0 -17
  179. package/cli/dist-server/types/node/plugins/plugin-install-stats-service.d.ts +0 -20
  180. package/cli/dist-server/types/node/plugins/plugin-manager.d.ts +0 -692
  181. package/cli/dist-server/types/node/plugins/plugin-policy-service.d.ts +0 -53
  182. package/cli/dist-server/types/node/plugins/plugin-validator.d.ts +0 -48
  183. package/cli/dist-server/types/node/plugins/zip-utils.d.ts +0 -93
  184. package/cli/dist-server/types/node/remote-control/clients/liveness-watchdog.d.ts +0 -56
  185. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-activity.d.ts +0 -23
  186. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-auth.d.ts +0 -64
  187. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-client-factory.d.ts +0 -47
  188. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-client.d.ts +0 -191
  189. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-inbound.d.ts +0 -7
  190. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-interaction.d.ts +0 -142
  191. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-live.d.ts +0 -78
  192. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-media.d.ts +0 -35
  193. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-qr-bind.d.ts +0 -49
  194. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-respond-queue.d.ts +0 -33
  195. package/cli/dist-server/types/node/remote-control/clients/wecom-bot/wecom-bot-types.d.ts +0 -207
  196. package/cli/dist-server/types/node/remote-control/remote-control-protocol.d.ts +0 -288
  197. package/cli/dist-server/types/node/remote-gateway/gateway-protocol.d.ts +0 -502
  198. package/cli/dist-server/types/node/remote-gateway/utils/qrcode-utils.d.ts +0 -16
  199. package/cli/dist-server/types/node/session/session-preview-utils.d.ts +0 -30
  200. package/cli/dist-server/types/node/settings/model-setting-utils.d.ts +0 -2
  201. package/cli/dist-server/types/node/tool-control/tool-control-policy.d.ts +0 -35
  202. package/cli/dist-server/types/node/tools/auto-mode/auto-mode-critique-client.d.ts +0 -51
  203. package/cli/dist-server/types/node/tools/auto-mode/auto-mode-strategy.d.ts +0 -19
  204. package/cli/dist-server/types/node/utils/add-dir-utils.d.ts +0 -20
  205. package/cli/dist-server/types/node/utils/compress-path.source.d.ts +0 -59
  206. package/cli/dist-server/types/node/vim/index.d.ts +0 -2
  207. package/cli/dist-server/types/node/vim/vim-manager.d.ts +0 -12
  208. package/cli/dist-server/types/node/vim/vim-protocol.d.ts +0 -24
@@ -13,7 +13,7 @@ Command output was too long, so it was truncated to ${o.length} bytes.`),n}};t1=
13
13
 
14
14
  Attachments:
15
15
  ${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 rH=class{constructor(){this.clients=new WeakMap}async sendMessage(e,t){return this.withAbortAndClient("sendMessage",e,t,async(r,o)=>{let i=!!t.skillId&&(0,rI.AG)(e.agentCard),n=i?{"codebuddy.ai/skillId":t.skillId}:void 0,s={content:{$case:"text",value:t.text},metadata:void 0,filename:"",mediaType:"text/plain"},a={messageId:(0,r$.randomUUID)(),contextId:t.contextId??"",taskId:t.taskId??"",role:rx.Xh.ROLE_USER,parts:[s,...attachmentParts(t.attachments)],metadata:n,extensions:i?[rI.S4]:[],referenceTaskIds:[]},c=await r.sendMessage({tenant:"",message:a,configuration:{acceptedOutputModes:acceptedOutputModesFor(e.agentCard),returnImmediately:!0,taskPushNotificationConfig:void 0},metadata:void 0},{signal:o});return"status"in c?{...normalizeTask(c),kind:"task"}:{text:joinTextParts(c.parts)||"(empty response)",kind:"message",raw:c}})}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?.(`[A2aClientService] ${e} timed out/aborted | agentId=${i} | timeoutMs=${n}`),t}throw this.logger.warn?.(`[A2aClientService] ${e} failed | agentId=${i} | error=${t?.message??t}`),t}finally{clearTimeout(c),a?.removeEventListener("abort",onExternalAbort)}}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 new rU.S2({transports:[new rU.nm,new rU.wO]}).createFromAgentCard(e.agentCard)}};a2a_client_service_decorate([(0,tM.Autowired)(tT.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(S=void 0!==tT.Logger&&tT.Logger)?S:Object)],rH.prototype,"logger",void 0),rH=a2a_client_service_decorate([(0,tM.Component)(rI.FE)],rH);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 rW=class{async discover(e){let t=process.env[rD.qk],r=e?.shouldApply??(()=>!0);if(!t)return this.logger.info?.(`[A2aAgentDiscoveryService] discovery skipped | ${rD.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?.(`[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?.(`[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?.(`[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?.(`[A2aAgentDiscoveryService] discovery response has no cards array | url=${e}`),{ok:!1};let i=[];for(let e of o){let t="string"==typeof e?.name?e.name.trim():"";if(!t)continue;let r=e.aliases,o=Array.isArray(r)?r.filter(e=>"string"==typeof e&&""!==e.trim()):void 0;i.push({agentId:t,agentCard:e,...o&&o.length>0?{aliases:o}:{}})}return{ok:!0,definitions:i,cardsCount:o.length}}};a2a_agent_discovery_service_decorate([(0,tM.Autowired)(tT.Logger),a2a_agent_discovery_service_metadata("design:type","function"==typeof(P=void 0!==tT.Logger&&tT.Logger)?P:Object)],rW.prototype,"logger",void 0),a2a_agent_discovery_service_decorate([(0,tM.Autowired)(rI.Dr),a2a_agent_discovery_service_metadata("design:type","function"==typeof(C=void 0!==rI.Dr&&rI.Dr)?C:Object)],rW.prototype,"registry",void 0),rW=a2a_agent_discovery_service_decorate([(0,tM.Component)(rI.Vn)],rW);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 rK=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,rD.SR)(this.abTestService))return;this.logger.debug?.("[A2aDiscoveryReadyService] startup: kicking off background discovery"),this.waitForDiscovery().catch(()=>{})}catch(e){this.logger.warn?.(`[A2aDiscoveryReadyService] startup discovery trigger failed | error=${e?.message??e}`)}}async waitForDiscovery(e){let t=(0,rD.cw)(e);if("session"===t.kind)return this.waitForSourceDiscovery(t.url);if("none"!==t.kind)for(;;){let e=process.env[rD.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[rD.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?.(`[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[rD.qk],this.generation)});t=null==r||!1!==r.ok}catch(e){this.logger.warn?.(`[A2aDiscoveryReadyService] discover() rejected unexpectedly | error=${e?.message??e}`)}finally{this.isCurrentFlight(e,process.env[rD.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,rD.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,tM.Autowired)(tT.Logger),a2a_discovery_ready_service_metadata("design:type","function"==typeof(O=void 0!==tT.Logger&&tT.Logger)?O:Object)],rK.prototype,"logger",void 0),a2a_discovery_ready_service_decorate([(0,tM.Autowired)(rI.Vn),a2a_discovery_ready_service_metadata("design:type","function"==typeof(E=void 0!==rI.Vn&&rI.Vn)?E:Object)],rK.prototype,"discoveryService",void 0),a2a_discovery_ready_service_decorate([(0,tM.Autowired)(tY.AbTestService),(0,tM.Optional)(),a2a_discovery_ready_service_metadata("design:type","function"==typeof(k=void 0!==tY.AbTestService&&tY.AbTestService)?k:Object)],rK.prototype,"abTestService",void 0),a2a_discovery_ready_service_decorate([(0,tM.Autowired)(tJ.bo),(0,tM.Optional)(),a2a_discovery_ready_service_metadata("design:type",Object)],rK.prototype,"prewarmState",void 0),a2a_discovery_ready_service_decorate([(0,tM.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)],rK.prototype,"scheduleStartupDiscovery",null),rK=a2a_discovery_ready_service_decorate([(0,tM.Component)({id:rI.Vh,scope:tM.Scope.Singleton})],rK),r(47095),r(48540);var fetch_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},fetch_interceptor_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let rq=class{async initialize(){let e=globalThis.fetch;this.originFetch=e;let fetchLike=async(t,r)=>{r=r||{};let o=await e(t,r);if(401===o.status&&this.matchEndPoint(t)){let e=t.toString();this.logger.warn(`[FetchInterceptor] 401 \u{2192} logout, url: ${e}`),this.authenticationManager.logout()}return o};globalThis.fetch=fetchLike}async onStop(){this.originFetch&&(globalThis.fetch=this.originFetch)}matchEndPoint(e){let t=e.toString(),r=this.productManager.getEndpoint();return t.startsWith(r)}};fetch_interceptor_decorate([(0,tM.Autowired)(tV.AuthenticationManager),fetch_interceptor_metadata("design:type","function"==typeof(j=void 0!==tV.AuthenticationManager&&tV.AuthenticationManager)?j:Object)],rq.prototype,"authenticationManager",void 0),fetch_interceptor_decorate([(0,tM.Autowired)(tT.Logger),fetch_interceptor_metadata("design:type","function"==typeof(R=void 0!==tT.Logger&&tT.Logger)?R:Object)],rq.prototype,"logger",void 0),fetch_interceptor_decorate([(0,tM.Autowired)(tY.ProductManager),fetch_interceptor_metadata("design:type","function"==typeof(A=void 0!==tY.ProductManager&&tY.ProductManager)?A:Object)],rq.prototype,"productManager",void 0),rq=fetch_interceptor_decorate([(0,tM.Component)(tM.ApplicationLifecycle)],rq);var rz=r(79814),userinfo_provider_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 rV=class{async provide(){let e=this.authenticationManager.currentSessionSubject.getValue();if(e?.account?.uid)return{userId:e?.account.uid??"",userName:e?.account.nickname??"",userNickname:e?.account.nickname??"",enterpriseId:e?.account.enterpriseId,token:e?.auth.accessToken??"",enterprise:e?.account?.departmentFullName}}};userinfo_provider_decorate([(0,tM.Autowired)(tV.AuthenticationManager),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(M=void 0!==tV.AuthenticationManager&&tV.AuthenticationManager)?M:Object)],rV.prototype,"authenticationManager",void 0),rV=userinfo_provider_decorate([(0,tM.Component)({id:rz.UserinfoProvider,rebind:!0})],rV),(T||(T={})).CLI_EXTERNAL_LINK="cli-external-link";var rY=r(54202),rJ=r(73024),rG=r(48161),rX=r.n(rG),rZ=r(76760),rQ=r.n(rZ),r0=r(83424),r1=r(6529),r3=r(88415),product_env_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},product_env_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let r2=class{earlyEnvInit(){if(!process.env[r0.qL])try{let e=resolveEnvFromSessionFileSync();e&&(process.env[r0.qL]=e,this.lastSwitchedEnv=e)}catch{}}async switch(e){if(e){if(e===this.lastSwitchedEnv||process.env[r0.qL]===e){this.lastSwitchedEnv=e;return}this.lastSwitchedEnv=e,process.env[r0.qL]=e,this.logger.info(`[ProductEnvService] Environment switched to: ${e}`);try{await this.productManager.sync()}catch{}}}async switchBySession(e){if(!e)return;let t=process.env[r0.qL]||process.env[r0.i2];if(t&&t!==this.lastSwitchedEnv)return;let r=await this.settingsManager.get("env");if(r?.[r0.qL]||r?.[r0.i2])return;let o=await this.resolveEnvBySession(e);await this.switch(o)}async getCurrent(){let e=await this.settingsManager.get("env");if(e?.[r0.qL])return e?.[r0.qL];if(e?.[r0.i2])return e?.[r0.i2];if(process.env[r0.qL])return process.env[r0.qL];if(process.env[r0.i2])return process.env[r0.i2];let t=await this.productManager.waitConfiguration();if(t.networkEnvironment)return t.networkEnvironment;let r=tM.ContainerUtil.get(tV.AuthenticationManager).currentSessionSubject.getValue();return this.resolveEnvBySession(r)}async resolveEnvBySession(e){if(!e)return;let t=this.productManager.configuration.getValue();if(!t)try{let e=findProductJson(),r=(0,rJ.readFileSync)(e,{encoding:"utf-8"});t=JSON.parse(r)}catch{return}if(!t)return;let r=await this.settingsManager.get(r0.xj);if(this.isDomain(t.authentication?.attributes?.internalDomain,e.auth.domain))return rY.pg.Internal;if(this.isDomain(t.authentication?.attributes?.iOADomain,e.auth.domain))return rY.pg.IOA;if(this.isDomain(t.authentication?.attributes?.cloudHostedDomain,e.auth.domain))return rY.pg.Cloudhosted;if(this.isDomain(t.authentication?.attributes?.externalDomain,e.auth.domain))return rY.pg.External;if(r)return rY.pg.Selfhosted}isDomain(e,t){return!!e&&!!t&&(Array.isArray(e)?e.some(e=>this.matchDomain(e,t)):this.matchDomain(e,t))}matchDomain(e,t){if(e===t)return!0;if(!e.includes("*"))return!1;let r=e.replace(/\./g,"\\.").replace(/\*/g,"[^.]*");return RegExp(`^${r}$`).test(t)}};function findProductJson(){return r3.P.resolveRootPathSync("product.json")}function resolveEnvFromSessionFileSync(){let e,t=findProductJson(),r=JSON.parse((0,rJ.readFileSync)(t,{encoding:"utf-8"})),o=r.authentication?.id;if(!o)return;let i=rX().homedir();switch(process.platform){case"darwin":e=rQ().join(i,"Library/Application Support/CodeBuddyExtension");break;case"win32":e=rQ().join(i,"AppData","Local","CodeBuddyExtension");break;default:e=rQ().join(i,".local","share","CodeBuddyExtension")}let n=rQ().join(e,"Data","Public","auth"),s=rQ().join(n,`${o}.info`);try{let e=rQ().join(r3.P.getHomeDir(),r0.kf);if((0,r0.CM)(r0.I7.USER)&&!(0,r1.WS)()&&(0,rJ.existsSync)(e)&&JSON.parse((0,rJ.readFileSync)(e,{encoding:"utf-8"}))[r0.xj])return rY.pg.Selfhosted}catch{}if(!(0,rJ.existsSync)(s))return;let a=JSON.parse((0,rJ.readFileSync)(s,{encoding:"utf-8"})),c=a?.auth?.domain;if(!c)return;let l=r.authentication?.attributes;return matchDomainList(l?.internalDomain,c)?rY.pg.Internal:matchDomainList(l?.iOADomain,c)?rY.pg.IOA:matchDomainList(l?.cloudHostedDomain,c)?rY.pg.Cloudhosted:matchDomainList(l?.externalDomain,c)?rY.pg.External:void 0}function matchDomainList(e,t){return!!e&&(Array.isArray(e)?e:[e]).some(e=>e===t||!!e.includes("*")&&RegExp("^"+e.replace(/\./g,"\\.").replace(/\*/g,"[^.]*")+"$").test(t))}product_env_service_decorate([(0,tM.Autowired)(tY.ProductManager),product_env_service_metadata("design:type","function"==typeof(D=void 0!==tY.ProductManager&&tY.ProductManager)?D:Object)],r2.prototype,"productManager",void 0),product_env_service_decorate([(0,tM.Autowired)(r0.Vr),product_env_service_metadata("design:type","function"==typeof(I=void 0!==r0.Vr&&r0.Vr)?I:Object)],r2.prototype,"settingsManager",void 0),product_env_service_decorate([(0,tM.Autowired)(tM.Logger),product_env_service_metadata("design:type","function"==typeof(L=void 0!==tM.Logger&&tM.Logger)?L:Object)],r2.prototype,"logger",void 0),product_env_service_decorate([(0,tM.PostConstruct)(),product_env_service_metadata("design:type",Function),product_env_service_metadata("design:paramtypes",[]),product_env_service_metadata("design:returntype",void 0)],r2.prototype,"earlyEnvInit",null),r2=product_env_service_decorate([(0,tM.Component)({id:rY.EA,rebind:!0})],r2);var internet_enviroment_product_provider_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},internet_enviroment_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let r8=["ACC_PRODUCT_CONFIG_V3","ACC_PRODUCT_CONFIG_V2"];function parseAuthoritativeFields(e){if(!e)return{};try{let t=JSON.parse(e),r=t?.endpoint,o=t?.deploymentType;return{endpoint:"string"==typeof r&&r?r:void 0,deploymentType:"string"==typeof o&&o?o:void 0}}catch{return{}}}let r5=class{constructor(){this.priority=tY.ProductProviderPriority.CLIENT_SETTINGS_ENDPOINT+5,this.cachedProductConfigurations=new Map}init(){this.logger.setContext("ClientInternetEnviromentProductProvider")}async provide(e){let t=this.resolveEnterpriseIdFromEndpoint(e.current),r=this.resolveAuthoritativeFieldsFromEnv(),o=r.endpoint,i=(await this.settingsManager.get(r0.TE))?.trim(),finalize=(e,n)=>{let s,a,c,l;return s=n?{...e,deploymentType:n}:e,a=i===r0.qZ.Staging&&s.stagingEndpoint?{...s,endpoint:s.stagingEndpoint}:s,c=o?{...a,endpoint:o}:a,l=r.deploymentType?{...c,deploymentType:r.deploymentType}:c,t?{...l,enterpriseId:t}:l},n=await this.settingsManager.get("env"),s=n?.[r0.qL]||process.env[r0.qL]||n?.[r0.i2]||process.env[r0.i2]||e.current.networkEnvironment||process.env[r0.cm],a=this.getNetworkEnviromentFromConfigEnv(e.current.productConfigEnv);if(!s&&a&&(s=a),!s)return finalize({});a&&a.toLowerCase()!==s.toLowerCase()?this.logger.warn(`[ClientInternetEnviromentProductProvider] internet environment conflict: CODEBUDDY_INTERNET_ENVIRONMENT resolved to "${s}" but V3 env declares networkEnvironment="${a}". Final endpoint/models are decided by provider priority (EnvProductProvider/V3=20000 overrides this provider=6005), which may route the request to the V3-declared environment regardless of the account-level setting.`):this.logger.debug(`[ClientInternetEnviromentProductProvider] resolved internet environment="${s}"${a?` (V3 networkEnvironment="${a}", consistent)`:""}`);let c=r.deploymentType?void 0:await this.resolveDeploymentType(s,e.current),l=s.toLowerCase();if(this.cachedProductConfigurations.has(l))return finalize(this.cachedProductConfigurations.get(l),c);if(!this.fs)return finalize({},c);let d=`product.${l}.json`;try{let e=tU.PathUtils.resolveRootPathSync(d);this.logger.info(`Reading product configuration from ${e}`);let t=this.fs.readFileSync(e,{encoding:"utf-8"}),r=(0,tY.stripBuiltinModelsIfDisabled)(JSON.parse(t.toString()));return this.cachedProductConfigurations.set(l,r),this.logger.info(`Product configuration for environment '${l}' loaded and cached successfully`),finalize(r,c)}catch(t){let e=!!t&&"object"==typeof t&&"ENOENT"===t.code;return this.logger.warn(`[ClientInternetEnviromentProductProvider] Failed to load product config for environment="${l}" from "${d}"${e?" (file not found; this environment may have no dedicated config and reuse product.json)":""}. The endpoint will fall back to the upstream provider's value (typically the default cloud endpoint / the V3 env endpoint), which can cause API requests to be routed to the wrong host (401 endpoint mismatch). Error: ${t}`),finalize({},c)}}async resolveDeploymentType(e,t){let r=this.extractDomain(t.endpoint),o=t.authentication?.attributes?.cloudHostedDomain;if(this.isDomain(o,r))return"Cloud-Hosted";switch(e.toLowerCase()){case rY.pg.Cloudhosted:return"Cloud-Hosted";case rY.pg.Selfhosted:return"Self-Hosted"}}extractDomain(e){if(e)try{return new URL(e).hostname}catch{return}}compileWildcardPattern(e,t){return RegExp("^"+e.replace(/\./g,"\\.").replace(/\*/g,t?"([^.]*)":"[^.]*")+"$")}isDomain(e,t){return!!e&&!!t&&(Array.isArray(e)?e:[e]).some(e=>e===t||!!e.includes("*")&&this.compileWildcardPattern(e,!1).test(t))}resolveEnterpriseIdFromEndpoint(e){let t=this.extractDomain(e.endpoint),r=e.authentication?.attributes?.cloudHostedDomain;if(t&&r)for(let e of Array.isArray(r)?r:[r]){if(!e.includes("*"))continue;let r=this.compileWildcardPattern(e,!0).exec(t);if(r&&r[1])return r[1]}}resolveAuthoritativeFieldsFromEnv(){for(let e of r8){let t=process.env[e];if(t)return parseAuthoritativeFields(t)}return this.resolveAuthoritativeFieldsFromConfigFile()}resolveAuthoritativeFieldsFromConfigFile(){let e=process.env.ACC_PRODUCT_CONFIG_PATH;if(!e||!this.fs)return{};try{if(!this.fs.existsSync(e))return{};let t=this.fs.readFileSync(e,{encoding:"utf-8"}).toString();return parseAuthoritativeFields(t)}catch(t){return this.logger.info(`Failed to read authoritative product fields from ${e}: ${t}`),{}}}getNetworkEnviromentFromConfigEnv(e){if(!e)return;let t="";for(let r of("string"==typeof e&&(t=process.env[e]),e)){let e=process.env[r];if(e){t=e;break}}if(t)try{let e=JSON.parse(t);if(e.networkEnvironment)return e.networkEnvironment}catch(e){}}};internet_enviroment_product_provider_decorate([(0,tM.Autowired)(rz.FileSystem),(0,tM.Optional)(),internet_enviroment_product_provider_metadata("design:type","function"==typeof(F=void 0!==rz.FileSystem&&rz.FileSystem)?F:Object)],r5.prototype,"fs",void 0),internet_enviroment_product_provider_decorate([(0,tM.Autowired)(tM.Logger),internet_enviroment_product_provider_metadata("design:type","function"==typeof($=void 0!==tM.Logger&&tM.Logger)?$:Object)],r5.prototype,"logger",void 0),internet_enviroment_product_provider_decorate([(0,tM.Autowired)(r0.Vr),internet_enviroment_product_provider_metadata("design:type","function"==typeof(x=void 0!==r0.Vr&&r0.Vr)?x:Object)],r5.prototype,"settingsManager",void 0),internet_enviroment_product_provider_decorate([(0,tM.PostConstruct)(),internet_enviroment_product_provider_metadata("design:type",Function),internet_enviroment_product_provider_metadata("design:paramtypes",[]),internet_enviroment_product_provider_metadata("design:returntype",void 0)],r5.prototype,"init",null),r5=internet_enviroment_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],r5);var r4=r(20986),r7=r(74278),api_key_helper_product_provider_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},api_key_helper_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let r9=class{constructor(){this.priority=tY.ProductProviderPriority.ENV+1,this.cachedToken=null,this.lastFetchTime=0}isCacheExpired(){return null===this.cachedToken||Date.now()-this.lastFetchTime>=this.ttl}clearCache(){this.cachedToken=null,this.lastFetchTime=0}cleanBearerToken(e){return e.startsWith("Bearer ")?e.slice(7):e}initializeTTL(){let e=process.env[t$.yS];if(!e){this.ttl=t$.yF;return}let t=parseInt(e,10);isNaN(t)||t<0?(this.logger.warn(`Invalid ${t$.yS} value: "${e}". Using default ${t$.yF}ms`),this.ttl=t$.yF):this.ttl=t}init(){this.logger.setContext("ApiKeyHelperProductProvider"),this.initializeTTL(),this.directoryTrustService.isTrustDirectoryPromise.then(()=>{this.logger.debug("Directory trusted, clearing API Key Helper cache"),this.clearCache();let e=tM.ContainerUtil.get(tY.ProductManager);this.logger.info("[ProductManager.sync] Triggered by directory trust and API Key Helper cache clear"),e.sync()})}async isApiKeyHelperFromProjectOrLocalSettings(){try{let e=await this.settingsManager.get("apiKeyHelper");if(!e)return!1;let t=await this.settingsManager.get("apiKeyHelper",t$.I7.PROJECT),r=await this.settingsManager.get("apiKeyHelper",t$.I7.PROJECT_LOCAL);return t===e||r===e}catch(e){return this.logger.warn(`Failed to determine apiKeyHelper scope, treating as untrusted: ${e}`),!0}}isNonInteractiveSession(){try{if(this.cliProvider.parseOpts().opts.print)return!0}catch{}return"true"===process.env.HEADLESS||!process.stdout.isTTY}async executeHelperScript(){if(process.env[t$.n5])return this.logger.info("apiKeyHelper skipped because helper execution is disabled"),null;let e=await this.settingsManager.get("apiKeyHelper");if(!e||"string"!=typeof e)return null;if(await this.isApiKeyHelperFromProjectOrLocalSettings()){let e=this.isNonInteractiveSession();if(!this.directoryTrustService.isTrustDirectory&&!e)return this.logger.info("apiKeyHelper from project settings skipped until directory trust is confirmed"),null}let t=r3.P.resolveFilePathToWorkDir(e);this.logger.debug(`Executing API Key Helper script: ${t}`);let r=Date.now();this.logger.info(`API key helper execution started. script=${t}`);let o=await this.shellService.execute({command:t,timeout:3e4});this.logger.info(`API key helper shell handle created. handleId=${o.id}, pid=${o.pid}`);try{let e=await o.wait(),t=Date.now()-r;if(this.logger.info(`API key helper execution finished. handleId=${o.id}, pid=${o.pid}, elapsedMs=${t}, exitCode=${e.exitCode}, interrupted=${e.interrupted}`),0!==e.exitCode){let t=e.stderr||e.stdout||"Unknown error";throw Error(`API Key Helper script exited with code ${e.exitCode}: ${t.trim()}`)}e.stderr&&this.logger.warn(`API Key Helper script stderr: ${e.stderr}`);let i=e.stdout.trim();if(!i)return this.logger.warn("API Key Helper script returned empty value"),null;return i}catch(i){let e=Date.now()-r,t=i instanceof Error?i.message:String(i);throw this.logger.error(`API key helper execution failed. handleId=${o.id}, pid=${o.pid}, elapsedMs=${e}, error=${t}`),i}finally{this.logger.debug(`Disposing API key helper shell handle. handleId=${o.id}, pid=${o.pid}`),o.dispose()}}async fetchTokenFromHelper(){if(!this.isCacheExpired())return this.logger.info("Using cached API Key from helper script"),this.cachedToken;if(this.logger.info("Fetching new API Key from helper script due to cache expiration"),this.fetchingDeferred)return this.fetchingDeferred.promise;this.fetchingDeferred=new tM.Deferred;try{let e=await this.executeHelperScript();if(!e)return this.clearCache(),this.fetchingDeferred.resolve(null),null;let t=this.cleanBearerToken(e);return this.cachedToken=t,this.lastFetchTime=Date.now(),this.logger.info(`Successfully obtained API Key through helper script. Cached for ${this.ttl}ms (${Math.round(this.ttl/1e3)}s)`),this.fetchingDeferred.resolve(t),t}catch(e){return this.logger.error(`\u{6267}\u{884C} API Key Helper \u{811A}\u{672C}\u{5F02}\u{5E38}: ${e.message}`),this.clearCache(),this.fetchingDeferred.resolve(null),null}finally{this.fetchingDeferred=void 0}}async provide(e){let t=await this.resolveToken();return t?{mergeStrategy:tY.MergeStrategy.SmartMerge,authentication:{type:tY.AuthenticationType.CUSTOM_TOKEN,attributes:{tokenType:"bearerToken",token:t}}}:{}}async resolveToken(){let e=process.env[t$.fb];if(e)return this.cleanBearerToken(e);let t=await this.settingsManager.get("apiKeyHelper"),r=await this.settingsManager.get("env"),o=r?.[t$.fb];return o||t?o?this.cleanBearerToken(o):process.env[t$.n5]?null:await this.fetchTokenFromHelper()??null:null}};function convertAgentDefinitionToProductAgent(e,t,r,o){let i;if(!t.description)return void o.error(`Agent "${e}" missing required field: description`);if(!t.prompt)return void o.error(`Agent "${e}" missing required field: prompt`);if(void 0!==t.mcpServers)if(Array.isArray(t.mcpServers)){let r=[];for(let i of t.mcpServers)if("string"==typeof i&&""!==i.trim())r.push(i.trim());else if(i&&"object"==typeof i&&!Array.isArray(i)&&1===Object.keys(i).length){let[t,n]=Object.entries(i)[0];t.trim()&&n&&"object"==typeof n&&!Array.isArray(n)?r.push({[t.trim()]:n}):o.warn(`Agent "${e}": invalid inline MCP server entry "${t}"; ignored.`)}else o.warn(`Agent "${e}": unrecognized mcpServers entry; ignored.`);i=r.length>0?r:void 0}else o.warn(`Agent "${e}": mcpServers must be an array; ignoring.`);return{name:e,description:t.description,instructions:t.prompt,tools:t.tools,disallowedTools:t.disallowedTools,...i&&{mcpServers:i},models:t.model?[t.model]:[],...t.model&&{declaredModel:t.model},asTool:!0,color:tU.ColorUtils.generateColorFromName(e),tags:[tD.UxB,tD.HOt,r]}}function buildSystemPromptAgentOverride(e,t,r){if(t||r)return{name:e,...t?{instructions:t}:{},...r?{appendInstructions:r}:{}}}api_key_helper_product_provider_decorate([(0,tM.Autowired)(rz.FileSystem),(0,tM.Optional)(),api_key_helper_product_provider_metadata("design:type","function"==typeof(U=void 0!==rz.FileSystem&&rz.FileSystem)?U:Object)],r9.prototype,"fs",void 0),api_key_helper_product_provider_decorate([(0,tM.Autowired)(tM.Logger),api_key_helper_product_provider_metadata("design:type","function"==typeof(N=void 0!==tM.Logger&&tM.Logger)?N:Object)],r9.prototype,"logger",void 0),api_key_helper_product_provider_decorate([(0,tM.Autowired)(t$.Vr),api_key_helper_product_provider_metadata("design:type","function"==typeof(B=void 0!==t$.Vr&&t$.Vr)?B:Object)],r9.prototype,"settingsManager",void 0),api_key_helper_product_provider_decorate([(0,tM.Autowired)(r7.y8),api_key_helper_product_provider_metadata("design:type","function"==typeof(H=void 0!==r7.y8&&r7.y8)?H:Object)],r9.prototype,"shellService",void 0),api_key_helper_product_provider_decorate([(0,tM.Autowired)(r4.N),api_key_helper_product_provider_metadata("design:type","function"==typeof(W=void 0!==r4.N&&r4.N)?W:Object)],r9.prototype,"directoryTrustService",void 0),api_key_helper_product_provider_decorate([(0,tM.Autowired)(t6.CM),api_key_helper_product_provider_metadata("design:type","function"==typeof(K=void 0!==t6.CM&&t6.CM)?K:Object)],r9.prototype,"cliProvider",void 0),api_key_helper_product_provider_decorate([(0,tM.PostConstruct)(),api_key_helper_product_provider_metadata("design:type",Function),api_key_helper_product_provider_metadata("design:paramtypes",[]),api_key_helper_product_provider_metadata("design:returntype",void 0)],r9.prototype,"init",null),r9=api_key_helper_product_provider_decorate([(0,tM.Component)([tY.ProductProvider,r9])],r9);var cli_options_product_provider_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_options_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let r6=class{constructor(){this.priority=tY.ProductProviderPriority.OPTIONS,this.volatile=!0}async provide(e){let t=this.cliProvider.parseOpts().opts,r={};t.verbose&&(this.logger.info("--verbose option detected, setting log level to debug"),r.log={output:["console","file"],level:"Verbose"});let o=await this.collectSystemPromptOptions(t);if(o){let t=e.current.agents?.find(e=>e.tags?.includes("default"));if(t){let e=buildSystemPromptAgentOverride(t.name,o.systemPrompt,o.appendSystemPrompt);e&&(r.agents||(r.agents=[]),r.agents.push(e))}}let i=this.parseAgentsOption(t);return i&&i.length>0&&(r.agents||(r.agents=[]),r.agents.push(...i)),{...r,mergeStrategy:tY.MergeStrategy.SmartMerge}}async collectSystemPromptOptions(e){let t={},r=!1;if(e.systemPrompt)t.systemPrompt=e.systemPrompt,r=!0;else if(e.systemPromptFile){let o=await this.readSystemPromptFile(e.systemPromptFile);o&&(t.systemPrompt=o,r=!0)}return e.appendSystemPrompt&&(t.appendSystemPrompt=e.appendSystemPrompt,r=!0),r?t:void 0}parseAgentsOption(e){if(e.agents)try{let t=JSON.parse(e.agents);if("object"!=typeof t||null===t||Array.isArray(t))return void this.logger.error("--agents must be a JSON object with agent names as keys");let r=[];for(let[e,o]of Object.entries(t)){let t=convertAgentDefinitionToProductAgent(e,o,tD.afn,this.logger);t&&r.push(t)}return this.logger.info(`Loaded ${r.length} custom agent(s) from --agents option`),r.length>0?r:void 0}catch(e){this.logger.error(`Failed to parse --agents JSON: ${e instanceof Error?e.message:e}`);return}}async readSystemPromptFile(e){try{let t=tU.PathUtils.resolveFilePathToWorkDir(e);await ri.promises.access(t,ri.constants.R_OK);let r=await ri.promises.readFile(t,"utf-8");return this.logger.info(`Successfully read system prompt file: ${t}`),r}catch(t){"ENOENT"===t.code?this.logger.error(`System prompt file not found: ${e}`):"EACCES"===t.code?this.logger.error(`Permission denied reading system prompt file: ${e}`):this.logger.error(`Failed to read system prompt file: ${e}`,t);return}}};cli_options_product_provider_decorate([(0,tM.Autowired)(tM.Logger),cli_options_product_provider_metadata("design:type","function"==typeof(q=void 0!==tM.Logger&&tM.Logger)?q:Object)],r6.prototype,"logger",void 0),cli_options_product_provider_decorate([(0,tM.Autowired)(t6.CM),cli_options_product_provider_metadata("design:type","function"==typeof(z=void 0!==t6.CM&&t6.CM)?z:Object)],r6.prototype,"cliProvider",void 0),r6=cli_options_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],r6);var sdk_initialize_product_provider_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_initialize_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oe=class{constructor(){this.priority=tY.ProductProviderPriority.OPTIONS,this.volatile=!0}async provide(e){let t=this.sdkInitializeState.get(),r=[],o=e.current.agents?.find(e=>e.tags?.includes("default"));if(o){let e=buildSystemPromptAgentOverride(o.name,t.systemPrompt,t.appendSystemPrompt);e&&r.push(e)}if(t.agents){for(let[e,o]of Object.entries(t.agents)){let t=convertAgentDefinitionToProductAgent(e,o,tD.XQ5,this.logger);t&&r.push(t)}r.length>0&&this.logger.info(`Loaded ${r.length} agent override(s) from SDK initialize`)}return{...r.length>0?{agents:r}:{},mergeStrategy:tY.MergeStrategy.SmartMerge}}};sdk_initialize_product_provider_decorate([(0,tM.Autowired)(tM.Logger),sdk_initialize_product_provider_metadata("design:type","function"==typeof(V=void 0!==tM.Logger&&tM.Logger)?V:Object)],oe.prototype,"logger",void 0),sdk_initialize_product_provider_decorate([(0,tM.Autowired)(rk.Pl),sdk_initialize_product_provider_metadata("design:type","function"==typeof(Y=void 0!==rk.Pl&&rk.Pl)?Y:Object)],oe.prototype,"sdkInitializeState",void 0),oe=sdk_initialize_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],oe);var craft_to_cli_agent_models_sync_provider_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 ot=class{constructor(){this.priority=tY.ProductProviderPriority.AGENT_MODEL_RESOLVER+100}async provide(e){let t=e.current.agents;if(!t?.length)return{};let r=t.find(e=>"craft"===e.name),o=t.find(e=>"cli"===e.name);if(!r||!o)return{};let i=r.models??[];if(0===i.length)return{};let n=o.models??[],s=new Set(n),a=i.filter(e=>!s.has(e));return 0===a.length?(this.logger.debug("[CraftToCliSync] cli agent already has all craft models"),{}):(this.logger.info(`[CraftToCliSync] syncing ${a.length} models from craft to cli: ${a.join(", ")}`),{agents:[{name:"cli",models:[...n,...a]}],mergeStrategy:tY.MergeStrategy.SmartMerge})}};craft_to_cli_agent_models_sync_provider_decorate([(0,tM.Autowired)(tM.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(J=void 0!==tM.Logger&&tM.Logger)?J:Object)],ot.prototype,"logger",void 0),ot=craft_to_cli_agent_models_sync_provider_decorate([(0,tM.Component)(tY.ProductProvider)],ot);var or=r(3357),custom_commands_product_provider_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_commands_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oo=class{constructor(){this.priority=tY.ProductProviderPriority.WORKSPACE}async provide(){try{let e=await this.loadCustomCommands();return{mergeStrategy:tY.MergeStrategy.SmartMerge,commands:e}}catch(e){return this.logger.debug("Failed to load custom commands",e),{}}}async loadCustomCommands(){return[...await (0,or.J)((0,tW.join)(process.cwd(),".codebuddy","commands"),"project",this.logger),...await (0,or.J)(tU.PathUtils.getHomeCommandsDir(),"user",this.logger)]}};custom_commands_product_provider_decorate([(0,tM.Autowired)(rz.FileSystem),(0,tM.Optional)(),custom_commands_product_provider_metadata("design:type","function"==typeof(G=void 0!==rz.FileSystem&&rz.FileSystem)?G:Object)],oo.prototype,"fs",void 0),custom_commands_product_provider_decorate([(0,tM.Autowired)(tM.Logger),custom_commands_product_provider_metadata("design:type","function"==typeof(X=void 0!==tM.Logger&&tM.Logger)?X:Object)],oo.prototype,"logger",void 0),oo=custom_commands_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],oo);var oi=r(68225),on=r(23844),os=r(33197),oa=r(81555),oc=r(66555),custom_agents_product_provider_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_agents_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ol=class{constructor(){this.priority=tY.ProductProviderPriority.WORKSPACE}async provide(){try{let e=await this.loadCustomAgents();return{mergeStrategy:tY.MergeStrategy.SmartMerge,agents:e}}catch(e){return this.logger.debug("Failed to load custom agents",e),{}}}async loadCustomAgents(){let e=[];this.customAgentPathRegistry?.clear();let t=tU.PathUtils.getProjectAgentsDir();if(await this.pathExists(t)){let r=await this.scanAgentsDirectory(t,"project");e.push(...r)}let r=tU.PathUtils.getHomeAgentsDir();if(await this.pathExists(r)){let t=await this.scanAgentsDirectory(r,"user");e.push(...t)}return e}async pathExists(e){try{return await r1.Sn.access(e),!0}catch{return!1}}parseMcpServers(e,t){if(void 0===e)return;if(!Array.isArray(e))return void this.logger.warn(`[CustomAgentsProductProvider] agent '${t}' has invalid mcpServers; expected an array.`);let r=[];for(let o of e){if("string"==typeof o){let e=o.trim();e&&r.push(e);continue}if(!o||"object"!=typeof o||Array.isArray(o)){this.logger.warn(`[CustomAgentsProductProvider] agent '${t}' has invalid mcpServers item; expected a server name or single-key object.`);continue}let e=Object.entries(o);if(1!==e.length){this.logger.warn(`[CustomAgentsProductProvider] agent '${t}' has invalid inline MCP server; expected exactly one server name.`);continue}let[i,n]=e[0],s=i.trim();if(!s||!n||"object"!=typeof n||Array.isArray(n)){this.logger.warn(`[CustomAgentsProductProvider] agent '${t}' has invalid inline MCP config for '${i}'.`);continue}r.push({[s]:n})}return r.length>0?r:void 0}async scanAgentsDirectory(e,t){let r=[],o=e;try{o=await (0,tH.realpath)(e)}catch{}for(let e of(await (0,r1.eZ)(o,".md")))try{let o=await this.parseAgentFile(e,t);o&&r.push(o)}catch(t){this.logger.debug(`Failed to parse agent file ${e.fullPath}`,t)}return r}async parseAgentFile(e,t){try{let r=await r1.Sn.readFile(e.fullPath,"utf-8"),o=tU.MarkdownUtils.extractFrontMatterFull(r);o.parseError&&this.logger.warn(`[CustomAgentsProductProvider] YAML parse error in ${e.fullPath}: ${o.parseError}`);let i=o.data,n=e.relativePath,s=e.fileName.replace(/\.md$/,""),a=i.name||s;if(!(0,on.sr)(a))return void this.logger.warn(`[CustomAgentsProductProvider] skipping ${e.fullPath}: unsafe agent name ${JSON.stringify(a)}`);let c=this.generateSourceLabel(n,t),l=i.description||a;l.includes(c)||(l=`${l} ${c}`);let d=tU.MarkdownUtils.parseListField(i.tools),u=d.length>0?d:void 0,p=tU.MarkdownUtils.parseListField(i.disallowedTools),h=tU.MarkdownUtils.parseListField(i.skills),g=this.parseMcpServers(i.mcpServers,a),f=(0,tY.normalizeReasoningEffort)(i.effort);i.effort&&!f&&this.logger.warn(`[CustomAgentsProductProvider] agent '${a}' has invalid effort '${i.effort}' (expected minimal/low/medium/high/xhigh/max); ignoring.`);let m="worktree"===i.isolation?i.isolation:void 0;i.isolation&&!m&&this.logger.warn(`[CustomAgentsProductProvider] agent '${a}' has invalid isolation '${i.isolation}' (expected 'worktree'); ignoring.`);let y=tU.MarkdownUtils.parsePositiveIntField(i.maxTurns);void 0!==i.maxTurns&&void 0===y&&this.logger.warn(`[CustomAgentsProductProvider] agent '${a}' has invalid maxTurns '${i.maxTurns}' (expected a positive integer); ignoring.`);let _=tU.MarkdownUtils.parseBooleanField(i.background);void 0!==i.background&&void 0===_&&this.logger.warn(`[CustomAgentsProductProvider] agent '${a}' has invalid background '${i.background}' (expected true/false); ignoring.`);let v="string"==typeof i.initialPrompt&&i.initialPrompt.trim()?i.initialPrompt:void 0,b=(0,oi.Ic)(i.memory);void 0===i.memory||b||this.logger.warn(`[CustomAgentsProductProvider] agent '${a}' has invalid memory '${i.memory}' (expected user/project/local); ignoring.`);let w=i.model?.trim(),S=(0,oa.cn)(i);void 0!==S.invalidRaw&&this.logger.warn(`[CustomAgentsProductProvider] agent '${a}' has invalid ${oa.l} ${JSON.stringify(S.invalidRaw)} (expected true/false); ignoring. Without mainAgent: true this file will not appear in the mode picker.`);let P=(0,oc.r)(o.content.trim(),e.fullPath),C={name:a,description:l,instructions:S.enabled?oa.S6:P,...S.enabled&&P?{appendInstructions:P}:{},...u&&{tools:u},...p.length>0&&{disallowedTools:p},models:w?[w]:[],...w&&{declaredModel:w},asTool:!0,color:i.color||tU.ColorUtils.generateColorFromName(a),tags:(0,oa.gU)([tD.UxB,tD.HOt,t],S.enabled),source:t,...f&&{effort:f},...void 0!==y&&{maxTurns:y},..._&&{background:_},...v&&{initialPrompt:v},...i.permissionMode&&{permissionMode:i.permissionMode},...h.length>0&&{skills:h},...g&&{mcpServers:g},...b&&{memory:b},...m&&{isolation:m},...i.hooks&&{hooks:i.hooks}};return this.customAgentPathRegistry?.set(a,e.fullPath),C}catch(t){this.logger.debug(`Failed to parse agent file ${e.fullPath}`,t);return}}generateSourceLabel(e,t){let r=e.split(/[\\/]/);if(r.pop(),0===r.length)return`(${t})`;let o=r.join(":");return`(${t}:${o})`}};custom_agents_product_provider_decorate([(0,tM.Autowired)(rz.FileSystem),(0,tM.Optional)(),custom_agents_product_provider_metadata("design:type","function"==typeof(Z=void 0!==rz.FileSystem&&rz.FileSystem)?Z:Object)],ol.prototype,"fs",void 0),custom_agents_product_provider_decorate([(0,tM.Autowired)(tM.Logger),custom_agents_product_provider_metadata("design:type","function"==typeof(Q=void 0!==tM.Logger&&tM.Logger)?Q:Object)],ol.prototype,"logger",void 0),custom_agents_product_provider_decorate([(0,tM.Autowired)(os.J),(0,tM.Optional)(),custom_agents_product_provider_metadata("design:type","function"==typeof(ee=void 0!==os.J&&os.J)?ee:Object)],ol.prototype,"customAgentPathRegistry",void 0),ol=custom_agents_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],ol);var od=r(69835),ou=r(51147),settings_endpoint_product_provider_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},settings_endpoint_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let op=class{constructor(){this.priority=tY.ProductProviderPriority.CLIENT_SETTINGS_ENDPOINT,this.cachedAt=0}static{et=this}static{this.CACHE_TTL_MS=1e4}init(){this.settingsManager.onDidChange(async()=>{this.cachedConfig=void 0;let e=await this.generateConfig();ou.ObjectUtils.isChanged(this.lastConfig,e)&&(this.logger.info("[ProductManager.sync] Triggered by settings endpoint configuration changes"),tM.ContainerUtil.get(tY.ProductManager).sync())})}async provide(e){let t=process.env[r0.qL],r=Date.now();if(this.cachedConfig&&r-this.cachedAt<et.CACHE_TTL_MS&&this.cachedEnv===t)return this.lastConfig=this.cachedConfig,this.cachedConfig;let o=await this.generateConfig();return this.cachedConfig=o,this.cachedAt=r,this.cachedEnv=t,this.lastConfig=o,o}async generateConfig(){let e=tM.ContainerUtil.get(tY.ProductManager).getCurrentConfiguration(),t={},r=(await this.settingsManager.get(r0.TE))?.trim(),o=(await this.settingsManager.get(r0.zY))?.trim(),i=(await this.settingsManager.get(r0.xj))?.trim();return(process.env[r0.qL]===rY.pg.Selfhosted||process.env[r0.qL]===rY.pg.Cloudhosted)&&i?t.endpoint=i:r===r0.qZ.Staging&&e?.stagingEndpoint?(t.endpoint=e.stagingEndpoint,t.stagingEndpoint=e.stagingEndpoint):o&&(t.endpoint=o),this.logger.info(`[SettingsEndpointProductProvider] resolved endpoint=${t.endpoint||"<unset>"} env=${process.env[r0.qL]||"<unset>"} settingScopes=${await this.resolveSettingScopes()} | settings: enterpriseEndpoint=${i||"<unset>"} endpoint=${o||"<unset>"} envRouteMode=${r||"<unset>"}`),t}async resolveSettingScopes(){try{let e=await this.cliSettingSourcesProvider.getSettingScopes();return e.length>0?e.join(","):"none"}catch{return"unknown"}}};settings_endpoint_product_provider_decorate([(0,tM.Autowired)(r0.Vr),settings_endpoint_product_provider_metadata("design:type","function"==typeof(er=void 0!==r0.Vr&&r0.Vr)?er:Object)],op.prototype,"settingsManager",void 0),settings_endpoint_product_provider_decorate([(0,tM.Autowired)(r0.UW),settings_endpoint_product_provider_metadata("design:type","function"==typeof(eo=void 0!==r0.UW&&r0.UW)?eo:Object)],op.prototype,"cliSettingSourcesProvider",void 0),settings_endpoint_product_provider_decorate([(0,tM.Autowired)(tM.Logger),settings_endpoint_product_provider_metadata("design:type","function"==typeof(ei=void 0!==tM.Logger&&tM.Logger)?ei:Object)],op.prototype,"logger",void 0),settings_endpoint_product_provider_decorate([(0,tM.PostConstruct)(),settings_endpoint_product_provider_metadata("design:type",Function),settings_endpoint_product_provider_metadata("design:paramtypes",[]),settings_endpoint_product_provider_metadata("design:returntype",void 0)],op.prototype,"init",null),op=et=settings_endpoint_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],op);var oh=r(24099),og=r(25302),of=r(28463),om=r(72314),config_watch_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},config_watch_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oy=[".mcp.json","mcp.json"],o_=["agents","skills","commands","rules"];function configSubdirChangeType(e){let t=e.toLowerCase();return o_.includes(t)?t:void 0}let ov=class{constructor(){this.watchers=new Map,this.watchedPaths=new Set,this.debounceTimer=null,this.debounceDelay=3e3,this.watchersInitialized=!1,this.hotReloadEnabled=!0,this.onDidHotReloadEmitter=new tM.Emitter,this.onDidHotReload=this.onDidHotReloadEmitter.event,this.watchConfigMap=new Map}static{en=this}static{this.WATCH_SETUP_DELAY=2e3}static{this.WINDOWS_RECURSIVE_WATCH_ENTRY_THRESHOLD=512}initialize(){(this.hotReloadEnabled=!process.env[t$.bV],this.hotReloadEnabled)?this.cwdChangeSubscription=this.cwdService.onDidChangeCwd.subscribe(e=>{this.watchersInitialized?(this.logger.info(`[HotReload] cwd changed to "${e}", rebinding watchers & invalidating project caches`),this.invalidateAllProjectCaches(),this.rebindWatchers(e).catch(e=>{this.logger.warn("[HotReload] Failed to rebind watchers after cwd change:",e)})):(this.watchersInitialized=!0,setTimeout(()=>{this.rebindWatchers(e).catch(e=>{this.logger.warn("[HotReload] Failed to setup watchers:",e)})},en.WATCH_SETUP_DELAY))}):this.logger.info("Hot reload is disabled via environment variable")}invalidateAllProjectCaches(){this.clearMemoryCache(),this.clearSettingsCache(),this.clearSkillCache(),this.clearPluginCache(),this.clearMcpConfigCache(),this.syncProductManager(!0)}async rebindWatchers(e){this.unwatchAll(),await this.setupWatchers()}cleanup(){this.cwdChangeSubscription?.unsubscribe(),this.cwdChangeSubscription=void 0,this.unwatchAll(),this.debounceTimer&&clearTimeout(this.debounceTimer)}isHotReloadEnabled(){return this.hotReloadEnabled}async getWatchConfigs(){let e=[],t=tU.PathUtils.getProjectHomeDir(),r=tU.PathUtils.getHomeDir(),memoryFileFilter=e=>{let t=e.toLowerCase();return t===og._b.toLowerCase()||t===og._t.toLowerCase()||t===og.pJ.toLowerCase()||t===og.Fz.toLowerCase()||"agents.md"===t||"agents.mdc"===t},settingsFileFilter=e=>{let t=e.toLowerCase();return t===t$.kf.toLowerCase()||t===t$.mA.toLowerCase()};if(await this.pathExists(t)){let r=(0,tW.join)(t,"skills");await this.pathExists(r)&&e.push({path:r,recursive:!0,changeType:"skills"});let o=(0,tW.join)(t,"commands");await this.pathExists(o)&&e.push({path:o,recursive:!0,changeType:"commands"});let i=(0,tW.join)(t,"agents");await this.pathExists(i)&&e.push({path:i,recursive:!0,changeType:"agents"});let n=(0,tW.join)(t,"rules");await this.pathExists(n)&&e.push({path:n,recursive:!0,changeType:"rules"}),e.push({path:t,recursive:!1,changeType:"memory",fileFilter:e=>memoryFileFilter(e)||settingsFileFilter(e)||void 0!==configSubdirChangeType(e)})}if(await this.pathExists(r)){let t=(0,tW.join)(r,"skills");await this.pathExists(t)&&e.push({path:t,recursive:!0,changeType:"skills"});let o=(0,tW.join)(r,"commands");await this.pathExists(o)&&e.push({path:o,recursive:!0,changeType:"commands"});let i=(0,tW.join)(r,"agents");await this.pathExists(i)&&e.push({path:i,recursive:!0,changeType:"agents"});let n=(0,tW.join)(r,"rules");await this.pathExists(n)&&e.push({path:n,recursive:!0,changeType:"rules"}),e.push({path:r,recursive:!1,changeType:"memory",fileFilter:e=>memoryFileFilter(e)||settingsFileFilter(e)||void 0!==configSubdirChangeType(e)})}let o=tU.PathUtils.getWorkDir();return await this.pathExists(o)&&e.push({path:o,recursive:!1,changeType:"memory",fileFilter:e=>{let t;return memoryFileFilter(e)||(t=e.toLowerCase(),oy.some(e=>t===e))}}),e}async pathExists(e){try{return await (0,tH.access)(e),!0}catch{return!1}}async setupWatchers(){for(let e of(await this.getWatchConfigs()))await this.watchPath(e);this.logger.info(`[HotReload] Watching ${this.watchedPaths.size} paths for changes`)}async watchPath(e){let{path:t,changeType:r,fileFilter:o}=e,i=await this.getEffectiveRecursiveWatch(e);if(this.watchedPaths.has(t))return void this.logger.debug(`Path already being watched: ${t}`);try{let n=(0,ri.watch)(t,{recursive:i},(e,i)=>{if(!i||o&&!o(i))return;let n=t.endsWith("/")?t+i:t+"/"+i,s=this.determineChangeType(i,r);this.logger.debug(`File ${e}: ${n} (type: ${s})`),"rename"===e?this.performHotReload(s,n):this.debouncedSync(s,n)});n.on("error",e=>{if("EMFILE"===e.code||e.message.includes("EMFILE")){this.logger.warn("[HotReload] EMFILE error detected, disabling all file watchers to prevent crash"),this.disableHotReloadDueToFdLimit();return}this.logger.error(`Watcher error for path ${t}: ${e.message}`),this.unwatchPath(t)}),this.watchers.set(t,n),this.watchedPaths.add(t),this.watchConfigMap.set(t,e),"function"==typeof n.unref&&n.unref(),this.logger.debug(`Started watching: ${t} (recursive: ${i}, type: ${r})`)}catch(r){if(e.recursive&&i&&"win32"===process.platform){this.logger.warn(`[HotReload] Recursive watcher failed for ${t}, retrying non-recursive: ${r?.message||r}`),await this.watchPath({...e,recursive:!1});return}if(r?.code==="EMFILE"||r?.message?.includes("EMFILE")){this.logger.warn(`[HotReload] EMFILE error when setting up watcher for ${t}, disabling hot reload`),this.disableHotReloadDueToFdLimit();return}this.logger.error(`Failed to watch path ${t}:`,r)}}async getEffectiveRecursiveWatch(e){if(!e.recursive)return!1;if("win32"!==process.platform)return!0;try{let t=await (0,tH.readdir)(e.path,{withFileTypes:!0});if(t.length>en.WINDOWS_RECURSIVE_WATCH_ENTRY_THRESHOLD)return this.logger.info(`[HotReload] Using non-recursive watch for large Windows directory ${e.path} (${t.length} entries)`),!1}catch(t){this.logger.debug(`[HotReload] Failed to inspect watch directory ${e.path}`,t)}return!0}determineChangeType(e,t){let r=e.toLowerCase();if(r===t$.kf.toLowerCase()||r===t$.mA.toLowerCase())return"settings";if(r===og._b.toLowerCase()||r===og._t.toLowerCase()||r===og.pJ.toLowerCase()||r===og.Fz.toLowerCase()||"agents.md"===r||"agents.mdc"===r)return"memory";if(oy.some(e=>r===e))return"mcp";if("memory"===t){let t=configSubdirChangeType(e);if(t)return t}return t}unwatchPath(e){let t=this.watchers.get(e);t&&(t.close(),this.watchers.delete(e),this.watchedPaths.delete(e),this.watchConfigMap.delete(e),this.logger.debug(`Stopped watching: ${e}`))}unwatchAll(){for(let e of this.watchedPaths)this.unwatchPath(e)}disableHotReloadDueToFdLimit(){this.logger.warn("[HotReload] Disabling hot reload due to file descriptor limit (EMFILE)"),this.logger.warn("[HotReload] To avoid this issue, set CODEBUDDY_DISABLE_HOT_RELOAD=1"),this.unwatchAll(),this.hotReloadEnabled=!1}getWatchedDirectories(){return Array.from(this.watchedPaths)}isWatching(e){return this.watchedPaths.has(e)}debouncedSync(e,t){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.performHotReload(e,t)},this.debounceDelay)}performHotReload(e,t){try{switch(this.logger.info(`[HotReload] Triggered by ${e} change: ${t||"unknown"}`),e){case"memory":case"rules":this.clearMemoryCache();break;case"settings":this.clearSettingsCache(),this.notifySettingsChanged();break;case"skills":this.clearSkillCache(),this.syncProductManager();break;case"commands":case"agents":this.syncProductManager();break;case"mcp":this.clearMcpConfigCache()}if(this.onDidHotReloadEmitter.fire({type:e,filePath:t,timestamp:Date.now()}),"agents"===e||"skills"===e||"commands"===e||"rules"===e){for(let t of[...this.watchConfigMap].filter(([,t])=>t.changeType===e).map(([e])=>e))this.unwatchPath(t);this.setupWatchers().catch(e=>{this.logger.debug("[HotReload] Watcher refresh after config-dir change failed",e)})}this.logger.info(`[HotReload] Completed for ${e}`)}catch(e){this.logger.error("[HotReload] Failed:",e)}}clearSkillCache(){try{let e=tM.ContainerUtil.get(od.SkillProductProvider);e&&"function"==typeof e.clearCache&&(e.clearCache(),this.logger.debug("[HotReload] Skill cache cleared"))}catch(e){this.logger.debug("[HotReload] SkillProductProvider not available for cache clear",e)}}clearPluginCache(){try{let e=tM.ContainerUtil.get(of.R0);e&&"function"==typeof e.clearCache&&(e.clearCache(),this.logger.debug("[HotReload] Plugin cache cleared"))}catch(e){this.logger.debug("[HotReload] PluginManager not available for cache clear",e)}}clearMemoryCache(){try{let e=tM.ContainerUtil.get(og.QF);e&&(e.clear(),this.logger.debug("[HotReload] Memory cache cleared"));let t=tM.ContainerUtil.get(og.Ss);t&&(t.clear(),this.logger.debug("[HotReload] Subdirectory memory cache cleared"))}catch(e){this.logger.warn("[HotReload] Failed to clear memory cache:",e)}}clearSettingsCache(){try{let e=tM.ContainerUtil.get(t$.Vr);e&&"function"==typeof e.clearCache&&(e.clearCache(t$.I7.PROJECT),e.clearCache(t$.I7.PROJECT_LOCAL),e.clearCache(t$.I7.USER),this.logger.debug("[HotReload] Settings cache cleared"))}catch(e){this.logger.warn("[HotReload] Failed to clear settings cache:",e)}}notifySettingsChanged(){try{let e=tM.ContainerUtil.get(t$.Vr);e&&"function"==typeof e.notifyExternalChange&&e.notifyExternalChange().catch(e=>{this.logger.warn("[HotReload] Failed to notify settings change:",e)})}catch(e){this.logger.debug("[HotReload] SettingsManager not available for change notify",e)}}clearMcpConfigCache(){try{let e=tM.ContainerUtil.get(oh.kH);e&&"function"==typeof e.invalidateFilesystemScopeCaches&&(e.invalidateFilesystemScopeCaches(),this.logger.debug("[HotReload] MCP PROJECT/LOCAL config cache cleared"))}catch(e){this.logger.debug("[HotReload] McpConfigManager not available for cache clear",e)}}syncProductManager(e=!1){try{let t=tM.ContainerUtil.get(tY.ProductManager);t?(t.sync(e),this.logger.debug(`[HotReload] ProductManager synced (force=${e})`)):this.logger.warn("[HotReload] ProductManager not found")}catch(e){this.logger.warn("[HotReload] Failed to sync ProductManager:",e)}}};config_watch_service_decorate([(0,tM.Autowired)(tM.Logger),config_watch_service_metadata("design:type","function"==typeof(es=void 0!==tM.Logger&&tM.Logger)?es:Object)],ov.prototype,"logger",void 0),config_watch_service_decorate([(0,tM.Autowired)(om.a),config_watch_service_metadata("design:type",Object)],ov.prototype,"cwdService",void 0),config_watch_service_decorate([(0,tM.PostConstruct)(),config_watch_service_metadata("design:type",Function),config_watch_service_metadata("design:paramtypes",[]),config_watch_service_metadata("design:returntype",void 0)],ov.prototype,"initialize",null),config_watch_service_decorate([(0,tM.PreDestroy)(),config_watch_service_metadata("design:type",Function),config_watch_service_metadata("design:paramtypes",[]),config_watch_service_metadata("design:returntype",void 0)],ov.prototype,"cleanup",null),ov=en=config_watch_service_decorate([(0,tM.Component)(rY.Vi,tM.ApplicationLifecycle)],ov);var mcp_watch_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},mcp_watch_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ob=class{constructor(){this.subscription=null,this.debounceTimer=null,this.lastTerminalStates=new Map,this.debounceDelay=150}initialize(){this.setupServerModelSubscription()}cleanup(){this.unsubscribe(),this.debounceTimer&&clearTimeout(this.debounceTimer)}setupServerModelSubscription(){this.subscription=this.serverModelManager.changedSubject.subscribe(e=>{let t=e.status;if(this.logger.debug(`MCP server "${e.name}" status changed to: ${t}`),t!==oh.sw.CONNECTED&&t!==oh.sw.DISCONNECTED)return;let r=`${e.scope}\0${e.name}`;this.lastTerminalStates.get(r)===t?this.logger.debug(`MCP server "${e.name}" status unchanged (${t}), skip sync`):(this.lastTerminalStates.set(r,t),this.logger.debug(`Scheduling Product sync reason=mcp-terminal-status-change server=${e.name} status=${t}`),this.debouncedSync())}),this.logger.debug("MCP server status watcher initialized")}unsubscribe(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=null,this.logger.debug("MCP server status watcher unsubscribed"))}debouncedSync(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{try{let e=tM.ContainerUtil.get(tY.ProductManager);e?(this.logger.info("[ProductManager.sync] Triggered by MCP server status changes"),e.sync()):this.logger.warn("ProductManager not found, cannot sync")}catch(e){this.logger.error("Failed to trigger ProductManager sync:",e)}},this.debounceDelay)}};mcp_watch_service_decorate([(0,tM.Autowired)(tM.Logger),mcp_watch_service_metadata("design:type","function"==typeof(ea=void 0!==tM.Logger&&tM.Logger)?ea:Object)],ob.prototype,"logger",void 0),mcp_watch_service_decorate([(0,tM.Autowired)(oh.Ih),mcp_watch_service_metadata("design:type","function"==typeof(ec=void 0!==oh.Ih&&oh.Ih)?ec:Object)],ob.prototype,"serverModelManager",void 0),mcp_watch_service_decorate([(0,tM.PostConstruct)(),mcp_watch_service_metadata("design:type",Function),mcp_watch_service_metadata("design:paramtypes",[]),mcp_watch_service_metadata("design:returntype",void 0)],ob.prototype,"initialize",null),mcp_watch_service_decorate([(0,tM.PreDestroy)(),mcp_watch_service_metadata("design:type",Function),mcp_watch_service_metadata("design:paramtypes",[]),mcp_watch_service_metadata("design:returntype",void 0)],ob.prototype,"cleanup",null),ob=mcp_watch_service_decorate([(0,tM.Component)(rY.FQ,tM.ApplicationLifecycle)],ob);var cloud_pre_product_provider_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},cloud_pre_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ow=["ck_","pt_"],oS=class{constructor(){this.priority=tY.ProductProviderPriority.CLOUD_PRE}static{el=this}static{this.NO_ACCOUNT_KEY="<no-account>"}init(){this.authenticationManager.currentSessionSubject.subscribe(e=>{if(!this.shouldLoadRemoteConfig(e?.auth)){this.lastSyncedAccountKey=void 0;return}let t=e?.account?.uid??el.NO_ACCOUNT_KEY;if(this.lastSyncedAccountKey===t)return;let r=void 0!==this.lastSyncedAccountKey;this.lastSyncedAccountKey=t,this.logger.info(`[CloudPreProductProvider] remote config became loadable (${r?"account switched":"first login"}), triggering product sync`),setImmediate(()=>{tM.ContainerUtil.get(tY.ProductManager)?.sync(!0).catch(e=>this.logger.warn(`[CloudPreProductProvider] product sync after login failed: ${e}`))})})}async provide(){let e=this.authenticationManager.currentSessionSubject.getValue()?.auth;return this.shouldLoadRemoteConfig(e)?{}:this.disabledConfig()}shouldLoadRemoteConfig(e){let t=e?.accessToken;return!!t&&(e?.tokenType!=="ApiKey"||ow.some(e=>t.startsWith(e)))}disabledConfig(){return{mergeStrategy:tY.MergeStrategy.Merge,config:{disabled:!0}}}};cloud_pre_product_provider_decorate([(0,tM.Autowired)(tV.AuthenticationManager),cloud_pre_product_provider_metadata("design:type","function"==typeof(ed=void 0!==tV.AuthenticationManager&&tV.AuthenticationManager)?ed:Object)],oS.prototype,"authenticationManager",void 0),cloud_pre_product_provider_decorate([(0,tM.Autowired)(tM.Logger),cloud_pre_product_provider_metadata("design:type","function"==typeof(eu=void 0!==tM.Logger&&tM.Logger)?eu:Object)],oS.prototype,"logger",void 0),cloud_pre_product_provider_decorate([(0,tM.PostConstruct)(),cloud_pre_product_provider_metadata("design:type",Function),cloud_pre_product_provider_metadata("design:paramtypes",[]),cloud_pre_product_provider_metadata("design:returntype",void 0)],oS.prototype,"init",null),oS=el=cloud_pre_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],oS);var oP=r(7268),models_product_provider_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},models_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oC=class{constructor(){this.priority=tY.ProductProviderPriority.MODELS,this.hasTriggeredSyncForEnterprise=!1,this.cacheExpireAt=0,this.retryBackoffUntil=0,this.consecutiveFailures=0}static{ep=this}static{this.MIN_FAILURE_BACKOFF_MS=3e4}static{this.MAX_FAILURE_BACKOFF_MS=3e5}init(){this.authenticationManager.currentSessionSubject.subscribe(e=>{let t=e?.account?.enterpriseId;t&&!this.hasTriggeredSyncForEnterprise&&(this.hasTriggeredSyncForEnterprise=!0,this.logger.info(`[ModelsProductProvider] enterpriseId became available: ${t}, triggering sync`),setImmediate(()=>{tM.ContainerUtil.get(tY.ProductManager)?.sync(!0)}))})}async provide(e){if(!e.force&&this.cachedResult&&Date.now()<this.cacheExpireAt)return this.logger.info(`[ModelsProductProvider] returning cached result (${this.cachedResult.models?.length??0} models)`),this.cachedResult;if(!e.force&&Date.now()<this.retryBackoffUntil)return this.logger.debug("[ModelsProductProvider] in failure backoff window, reusing last result"),this.getFallbackResult();let t=this.authenticationManager.currentSessionSubject.value,r=t?.account?.enterpriseId||e.current?.enterpriseId;if(this.logger.info(`[ModelsProductProvider] enterpriseId: ${r||"undefined"}, endpoint: ${e.current?.endpoint}`),!r)return this.logger.warn("[ModelsProductProvider] enterpriseId is missing, skipping models API call"),this.getFallbackResult();let o="/console/enterprises/{enterpriseId}/config/models".replace("{enterpriseId}",r);if(o)try{let t=new URL(o,e.current.endpoint);this.logger.debug(`[ModelsProductProvider] Calling API: ${t.href}`);let r=await this.restOperations.get(t.href,{baseURL:e.current.endpoint,timeout:5e3});if(this.logger.debug(`[ModelsProductProvider] API response status: ${r?.status}`),!r?.data?.data?.length)return this.logger.warn("[ModelsProductProvider] API returned empty or invalid data"),this.applyFailureBackoff(),this.getFallbackResult();{let t=r.data.data;this.logger.info(`[ModelsProductProvider] Got ${t.length} models from API: ${t.map(e=>e.id).join(", ")}`);let o=this.processModelAgentRelations(e.current,t);return this.cachedResult=o,this.cacheExpireAt=Date.now()+tY.PRODUCT_CONFIGURATION_CACHE_TIMEOUT,this.consecutiveFailures=0,this.retryBackoffUntil=0,o}}catch(e){this.logger.error(`[ModelsProductProvider] API call failed: ${e}`),this.applyFailureBackoff()}return this.getFallbackResult()}getFallbackResult(){return this.cachedResult?this.cachedResult:{mergeStrategy:tY.MergeStrategy.SmartMerge}}applyFailureBackoff(){this.consecutiveFailures+=1;let e=Math.min(ep.MIN_FAILURE_BACKOFF_MS*2**(this.consecutiveFailures-1),ep.MAX_FAILURE_BACKOFF_MS);this.retryBackoffUntil=Date.now()+e,this.logger.warn(`[ModelsProductProvider] backing off model API for ${e}ms after ${this.consecutiveFailures} consecutive failure(s)`)}processModelAgentRelations(e,t=[]){let r=e.agents||[];for(let e of t)if((e.tags||[]).includes("chat"))for(let t of r)t.models||(t.models=[]),t.models.includes(e.id)||t.models?.unshift(e.id);return{mergeStrategy:tY.MergeStrategy.SmartMerge,models:t,agents:r}}};models_product_provider_decorate([(0,tM.Autowired)(oP.RestOperations),models_product_provider_metadata("design:type","function"==typeof(eh=void 0!==oP.RestOperations&&oP.RestOperations)?eh:Object)],oC.prototype,"restOperations",void 0),models_product_provider_decorate([(0,tM.Autowired)(tM.Logger),models_product_provider_metadata("design:type","function"==typeof(eg=void 0!==tM.Logger&&tM.Logger)?eg:Object)],oC.prototype,"logger",void 0),models_product_provider_decorate([(0,tM.Autowired)(tV.AuthenticationManager),models_product_provider_metadata("design:type","function"==typeof(ef=void 0!==tV.AuthenticationManager&&tV.AuthenticationManager)?ef:Object)],oC.prototype,"authenticationManager",void 0),models_product_provider_decorate([(0,tM.PostConstruct)(),models_product_provider_metadata("design:type",Function),models_product_provider_metadata("design:paramtypes",[]),models_product_provider_metadata("design:returntype",void 0)],oC.prototype,"init",null),oC=ep=models_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],oC);var oO=r(97274),plugin_product_provider_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},plugin_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oE=class{constructor(){this.priority=tY.ProductProviderPriority.WORKSPACE,this.volatile=!0}async provide(){try{let e=await this.pluginManager.getActivePlugins(),t=e.map(({plugin:e})=>`${e.name}@${e.marketplaceName}`),r=t.length>50?`${t.slice(0,50).join(",")}...(+${t.length-50})`:t.join(",");if(this.logger.info(`[PluginsProductProvider.provide] active=${e.length}, ids=[${r}]`),0===e.length)return{mergeStrategy:tY.MergeStrategy.SmartMerge};let o={};for(let{components:t}of e){let{settings:e,...r}=t;o=await this.productMerger.merge(o,{...r,mergeStrategy:tY.MergeStrategy.SmartMerge})}return{...o,mergeStrategy:tY.MergeStrategy.SmartMerge}}catch(e){return this.logger.debug("Failed to load plugin products",e),{}}}};plugin_product_provider_decorate([(0,tM.Autowired)(oO.R0),plugin_product_provider_metadata("design:type","function"==typeof(em=void 0!==oO.R0&&oO.R0)?em:Object)],oE.prototype,"pluginManager",void 0),plugin_product_provider_decorate([(0,tM.Autowired)(tY.ProductMerger),plugin_product_provider_metadata("design:type","function"==typeof(ey=void 0!==tY.ProductMerger&&tY.ProductMerger)?ey:Object)],oE.prototype,"productMerger",void 0),plugin_product_provider_decorate([(0,tM.Autowired)(tT.Logger),plugin_product_provider_metadata("design:type","function"==typeof(e_=void 0!==tT.Logger&&tT.Logger)?e_:Object)],oE.prototype,"logger",void 0),oE=plugin_product_provider_decorate([(0,tM.Component)([tY.ProductProvider,oE])],oE);var ok=r(991),oj=r(37299),mcp_prompt_product_provider_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},mcp_prompt_product_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oR=class{constructor(){this.priority=tY.ProductProviderPriority.WORKSPACE}async provide(){try{let e=await this.loadMcpPrompts();return{mergeStrategy:tY.MergeStrategy.SmartMerge,commands:e}}catch(e){return this.logger.debug("Failed to load MCP prompts",e),{}}}async loadMcpPrompts(){let e=[];try{for(let t of(await this.mcpManager.getConnectedServers({waitForSettle:!1})))try{for(let r of(await t.listPrompts())){let o=this.convertPromptToCommand(t.name,r);o&&e.push(o)}}catch(e){this.logger.debug(`Failed to get prompts from MCP server ${t.name}`,e)}}catch(e){this.logger.debug("Failed to get connected MCP servers",e)}return e}convertPromptToCommand(e,t){try{let r=t.title||t.name,o=`${e}:${r}`,i=t.description||"",n="";return t.arguments&&t.arguments.length>0&&(n=t.arguments.map(e=>e.name).join(", ")),{name:o,description:i,tags:[ok.MCP_PROMPT_COMMAND_TAG],prompt:`mcp__${e}__${t.name}`,argumentHint:n,requiredVariables:[],scope:"mcp"}}catch(e){this.logger.debug(`Failed to convert MCP prompt ${t.name} to command`,e);return}}};mcp_prompt_product_provider_decorate([(0,tM.Autowired)(oj.i9),mcp_prompt_product_provider_metadata("design:type","function"==typeof(ev=void 0!==oj.i9&&oj.i9)?ev:Object)],oR.prototype,"mcpManager",void 0),mcp_prompt_product_provider_decorate([(0,tM.Autowired)(tM.Logger),mcp_prompt_product_provider_metadata("design:type","function"==typeof(eb=void 0!==tM.Logger&&tM.Logger)?eb:Object)],oR.prototype,"logger",void 0),oR=mcp_prompt_product_provider_decorate([(0,tM.Component)(tY.ProductProvider)],oR);var oA=r(1309),oM=r(14913),product_config_controller_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},product_config_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oT=class{async getProductConfig(){let e,t=oM.Context.getCurrent();try{e=await this.productManager.waitConfiguration(!0)}catch(t){this.logger.error?.("[ProductConfigController] getProductConfig failed:",t),e={}}t.response.setHeader("Content-Type","application/json; charset=utf-8"),t.response.end(JSON.stringify(e))}};product_config_controller_decorate([(0,tM.Autowired)(tY.ProductManager),product_config_controller_metadata("design:type","function"==typeof(ew=void 0!==tY.ProductManager&&tY.ProductManager)?ew:Object)],oT.prototype,"productManager",void 0),product_config_controller_decorate([(0,tM.Autowired)(tT.Logger),product_config_controller_metadata("design:type","function"==typeof(eS=void 0!==tT.Logger&&tT.Logger)?eS:Object)],oT.prototype,"logger",void 0),product_config_controller_decorate([(0,oA.Get)("config"),product_config_controller_metadata("design:type",Function),product_config_controller_metadata("design:paramtypes",[]),product_config_controller_metadata("design:returntype","function"==typeof(eP="u">typeof Promise&&Promise)?eP:Object)],oT.prototype,"getProductConfig",null),oT=product_config_controller_decorate([(0,oA.Controller)("api/v1/product")],oT);var enviroment_authentication_provider_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 oD=class extends tV.ExternalLinkAuthenticationProvider{async support(e){let t=this.productManager.getCurrentConfiguration(),r=t?.authentication?.type===T.CLI_EXTERNAL_LINK;return r&&e?.type&&await this.selfProductEnvService.switch(e?.type),r}async decorateAuthUrl(e){await this.selfProductEnvService.getCurrent()===rY.pg.IOA&&e.searchParams.set("ioa","1")}};enviroment_authentication_provider_decorate([(0,tM.Autowired)(rY.EA),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(eC=void 0!==rY.EA&&rY.EA)?eC:Object)],oD.prototype,"selfProductEnvService",void 0),oD=enviroment_authentication_provider_decorate([(0,tM.Component)(tV.AuthenticationProvider)],oD);var authentication_http_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},authentication_http_interceptor_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oI=class{initialize(){this.restOperations.interceptors.request.use(async e=>{if(e.headers||(e.headers={}),!e.headers[ou.API_KEY_HEADER]&&!process.env[r0.QB]){let t=await this.settingsManager.get("env"),r=t?.[r0.XO]||process.env[r0.XO];r&&(e.headers[ou.API_KEY_HEADER]=r)}return e})}};authentication_http_interceptor_decorate([(0,tM.Autowired)(oP.RestOperations),authentication_http_interceptor_metadata("design:type","function"==typeof(eO=void 0!==oP.RestOperations&&oP.RestOperations)?eO:Object)],oI.prototype,"restOperations",void 0),authentication_http_interceptor_decorate([(0,tM.Autowired)(r0.Vr),authentication_http_interceptor_metadata("design:type","function"==typeof(eE=void 0!==r0.Vr&&r0.Vr)?eE:Object)],oI.prototype,"settingsManager",void 0),authentication_http_interceptor_decorate([(0,tM.Autowired)(rz.Notifier),authentication_http_interceptor_metadata("design:type","function"==typeof(ek=void 0!==rz.Notifier&&rz.Notifier)?ek:Object)],oI.prototype,"notifier",void 0),authentication_http_interceptor_decorate([(0,tM.Autowired)(tM.Logger),authentication_http_interceptor_metadata("design:type","function"==typeof(ej=void 0!==tM.Logger&&tM.Logger)?ej:Object)],oI.prototype,"logger",void 0),oI=authentication_http_interceptor_decorate([(0,tM.Component)(tM.ApplicationLifecycle)],oI);var oL=r(2721),api_key_authentication_storage_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},api_key_authentication_storage_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oF=class{constructor(){this.storeSessionSubject=new oL.B7}async priority(){return await this.getApiKey()?tV.AuthenticationStoragePriority.Heigh:tV.AuthenticationStoragePriority.Disabled}async getApiKey(){if(process.env[r0.QB])return;let e=await this.settingsManager.get("env");return e?.[r0.XO]||process.env[r0.XO]}async store(e){}async restore(){let e=await this.getApiKey();if(!e)throw Error("apiKey is undefined");let t={auth:{accessToken:e,expiresIn:0x1d1a94a1fff,expiresAt:0x1d1a94a1fff,refreshToken:"",refreshExpiresIn:0x1d1a94a1fff,refreshExpiresAt:0x1d1a94a1fff,tokenType:"ApiKey",scope:""},account:{uid:this.getUserId(e),nickname:this.getUsername(e),type:"personal",lastLogin:!0},accounts:[{uid:this.getUserId(e),nickname:this.getUsername(e),type:"personal",lastLogin:!0}]};return this.storeSessionSubject.next(t),t}async clean(){}getUserId(e){return process.env.ACC_USER_ID??`anonymous_${e.slice(-8)}`}getUsername(e){return process.env.ACC_USER_NICKNAME?process.env.ACC_USER_NICKNAME:`anonymous_${e.slice(-8)}`}};api_key_authentication_storage_decorate([(0,tM.Autowired)(tY.ProductManager),api_key_authentication_storage_metadata("design:type","function"==typeof(eR=void 0!==tY.ProductManager&&tY.ProductManager)?eR:Object)],oF.prototype,"productManager",void 0),api_key_authentication_storage_decorate([(0,tM.Autowired)(r0.Vr),api_key_authentication_storage_metadata("design:type","function"==typeof(eA=void 0!==r0.Vr&&r0.Vr)?eA:Object)],oF.prototype,"settingsManager",void 0),oF=api_key_authentication_storage_decorate([(0,tM.Component)(tV.AuthenticationStorage)],oF);var custom_token_authentication_storage_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_token_authentication_storage_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let o$=Symbol("CustomTokenAuthenticationStorage"),ox=["ACC_PRODUCT_CONFIG_V3","ACC_PRODUCT_CONFIG_V2"];function cleanBearerToken(e){return e.startsWith("Bearer ")?e.slice(7):e}function getAuthenticationAttributesSync(){let e=process.env[t$.fb];if(e)return{token:cleanBearerToken(e)};for(let e of ox){let t=process.env[e];if(t)try{let e=JSON.parse(t);if(e.authentication?.type==="custom-token"&&e.authentication?.attributes?.token){let t=e.authentication.attributes;return{token:cleanBearerToken(t.token),enterpriseId:t.enterpriseId}}}catch{}}if((0,r1.WS)())return;for(let e of[t$.I7.USER,t$.I7.PROJECT,t$.I7.PROJECT_LOCAL])if((0,t$.CM)(e))try{let t=r3.P.getSettingsFilePath(e);if(!(0,rJ.existsSync)(t))continue;let r=(0,rJ.readFileSync)(t,"utf-8"),o=JSON.parse(r);if(o.env?.[t$.fb])return{token:cleanBearerToken(o.env[t$.fb])}}catch{continue}let t=process.env.ACC_PRODUCT_CONFIG_PATH;if(t)try{if((0,rJ.existsSync)(t)){let e=(0,rJ.readFileSync)(t,"utf-8"),r=JSON.parse(e);if(r.authentication?.type==="custom-token"&&r.authentication?.attributes?.token){let e=r.authentication.attributes;return{token:cleanBearerToken(e.token),enterpriseId:e.enterpriseId}}}}catch{}}function hasCustomTokenIndicatorsSync(){if(process.env[t$.fb])return!0;for(let e of ox){let t=process.env[e];if(t)try{let e=JSON.parse(t);if(e.authentication?.type==="custom-token"&&e.authentication?.attributes?.token)return!0}catch{}}if((0,r1.WS)())return!1;let e=!!process.env[t$.n5];for(let t of[t$.I7.USER,t$.I7.PROJECT,t$.I7.PROJECT_LOCAL])if((0,t$.CM)(t))try{let r=r3.P.getSettingsFilePath(t);if(!(0,rJ.existsSync)(r))continue;let o=(0,rJ.readFileSync)(r,"utf-8"),i=JSON.parse(o);if(!e&&i.apiKeyHelper||i.env?.[t$.fb])return!0}catch{continue}return!1}async function hasCustomTokenInSpilledProductConfig(){let e=process.env.ACC_PRODUCT_CONFIG_PATH;if(!e)return!1;try{let t=r(91943),o=await t.readFile(e,{encoding:"utf-8"}),i=JSON.parse(o);return i.authentication?.type==="custom-token"&&!!i.authentication?.attributes?.token}catch{return!1}}let oU=class extends tV.CustomTokenAuthenticationStorageImpl{async priority(){if(!hasCustomTokenIndicatorsSync()&&!await hasCustomTokenInSpilledProductConfig())return tV.AuthenticationStoragePriority.Disabled;let e=this.productManager.configuration.getValue();return e?.authentication?.type===tY.AuthenticationType.CUSTOM_TOKEN&&e?.authentication?.attributes?.token||getAuthenticationAttributesSync()||await this.apiKeyHelperProductProvider.resolveToken()?tV.AuthenticationStoragePriority.Heigh+1:tV.AuthenticationStoragePriority.Disabled}async restore(){let e,t,r=getAuthenticationAttributesSync();if(r?(e=r.token,t=r.enterpriseId):(e=await this.apiKeyHelperProductProvider.resolveToken()??void 0,t=this.productManager.configuration.getValue()?.authentication?.attributes?.enterpriseId),!e)return;let o=this.tryExtractUserIDFromJWTToken(e),i=t||o?.enterpriseId,n={uid:o?.userId||this.getUserId(),nickname:o?.nickname||this.getUsername(),enterpriseId:i,type:o?.type||"personal",lastLogin:!0},s={auth:{accessToken:e,expiresIn:0x1d1a94a1fff,expiresAt:0x1d1a94a1fff,refreshToken:"",refreshExpiresIn:0x1d1a94a1fff,refreshExpiresAt:0x1d1a94a1fff,tokenType:"Bearer",scope:"",domain:o?.domain},account:n,accounts:[n]};return await this.productEnvService.switchBySession(s),this.storeSessionSubject.next(s),s}};custom_token_authentication_storage_decorate([(0,tM.Autowired)(rY.EA),custom_token_authentication_storage_metadata("design:type","function"==typeof(eM=void 0!==rY.EA&&rY.EA)?eM:Object)],oU.prototype,"productEnvService",void 0),custom_token_authentication_storage_decorate([(0,tM.Autowired)(r9),custom_token_authentication_storage_metadata("design:type","function"==typeof(eT=void 0!==r9&&r9)?eT:Object)],oU.prototype,"apiKeyHelperProductProvider",void 0),oU=custom_token_authentication_storage_decorate([(0,tM.Component)(tV.AuthenticationStorage,o$)],oU);var oN=r(34623),oB=r(98463),oH=r(29513),oW=r(20131),authentication_session_listener_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 oK=class{initialize(){this.logger.setContext("AuthenticationSessionListener"),this.startListening()}startListening(){this.subscription=tM.ContainerUtil.get(tV.AuthenticationManager).currentSessionSubject.pipe((0,oN.Z)(void 0),(0,oB.J)(),(0,oH.p)(([e,t])=>this.isAuthenticationSuccess(e,t))).subscribe(async([e,t])=>{try{await this.onAuthenticationSuccess(t)}catch(e){this.logger.error("\u5904\u7406\u8BA4\u8BC1\u6210\u529F\u4E8B\u4EF6\u5931\u8D25:",e)}})}isAuthenticationSuccess(e,t){return!!t&&!!t.auth?.accessToken&&(!(e&&e.auth?.accessToken)||e.auth.accessToken!==t.auth.accessToken)}async onAuthenticationSuccess(e){let t=tM.ContainerUtil.get(tL.Cv).getCurrent(),r=this.buildAuthSuccessMessage(e);this.logger.info("\u8BA4\u8BC1\u6210\u529F,\u6267\u884C Notification \u94A9\u5B50:",r);try{await tM.ContainerUtil.get(tL.Zp).executeNotificationHooks(t,r,oW._n.AUTH_SUCCESS)}catch(e){this.logger.warn("\u6267\u884C Notification \u94A9\u5B50\u5931\u8D25:",e)}}buildAuthSuccessMessage(e){let t=e.account?.nickname||"\u672A\u77E5\u7528\u6237",r=e.account?.enterpriseName||"";return r?`auth_success: ${t} (${r})`:`auth_success: ${t}`}dispose(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=void 0),this.logger.debug("AuthenticationSessionListener disposed")}};authentication_session_listener_decorate([(0,tM.Autowired)(tT.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(eD=void 0!==tT.Logger&&tT.Logger)?eD:Object)],oK.prototype,"logger",void 0),oK=authentication_session_listener_decorate([(0,tM.Component)(tM.ApplicationLifecycle)],oK),r(48476);var apply_group_link_provider_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},apply_group_link_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oq=Symbol("ApplyGroupLinkProvider"),oz=class{async getApplyUserGroupLink(){try{let e=await this.productManager.waitConfiguration(),t=e?.authentication?.attributes?.platform??e?.platform??"",r=e?.authentication?.attributes?.prefixPath||"",{data:{data:o}}=await this.restOperations.post(`/v2${r}/auth/state?platform=${t}`,{},{headers:{"X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true"}})||{data:{data:void 0}};if(o?.authUrl){let e=o.authUrl,t=new URL(e);return t.searchParams.set("applyGroup","true"),t.toString()}throw Error("Failed to get apply user group link: authUrl is empty")}catch(e){throw this.logger.error(`Failed to get apply user group link: ${e}`),e}}};apply_group_link_provider_decorate([(0,tM.Autowired)(oP.RestOperations),apply_group_link_provider_metadata("design:type","function"==typeof(eI=void 0!==oP.RestOperations&&oP.RestOperations)?eI:Object)],oz.prototype,"restOperations",void 0),apply_group_link_provider_decorate([(0,tM.Autowired)(tY.ProductManager),apply_group_link_provider_metadata("design:type","function"==typeof(eL=void 0!==tY.ProductManager&&tY.ProductManager)?eL:Object)],oz.prototype,"productManager",void 0),apply_group_link_provider_decorate([(0,tM.Autowired)(tT.Logger),apply_group_link_provider_metadata("design:type","function"==typeof(eF=void 0!==tT.Logger&&tT.Logger)?eF:Object)],oz.prototype,"logger",void 0),oz=apply_group_link_provider_decorate([(0,tM.Component)(oq)],oz),r(43634);var oV=r(59707),oY=r(35061),oJ=r(31421);let oG=/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/,linuxUuid=()=>{try{let e=(0,rJ.readFileSync)("/var/lib/dbus/machine-id",{encoding:"utf8"});return e&&(o=e.replace(/\s+/,""),!/-/.test(o)&&o.length>20&&(o=o.slice(0,8)+"-"+o.slice(8,12)+"-"+o.slice(12,16)+"-"+o.slice(16,20)+"-"+o.slice(20))),e?o:(0,tM.generateUUUID)()}catch{return(0,tM.generateUUUID)()}},osxUuid=()=>{try{for(let e of(0,oJ.execSync)("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf8"}).split("\n"))if(/IOPlatformUUID/.test(e)&&oG.test(e))return oG.exec(e)?.[0]}catch{return(0,tM.generateUUUID)()}},winUuid=()=>{try{let e=(0,oJ.execSync)('reg query "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography" /v MachineGuid',{encoding:"utf8",windowsHide:!0}),t=oG.exec(e);if(t)return t[0]}catch{try{for(let e of(0,oJ.execSync)("wmic csproduct get UUID",{encoding:"utf8",windowsHide:!0}).split("\n"))if(oG.test(e))return oG.exec(e)?.[0]}catch{}}return(0,tM.generateUUUID)()};function machineIdSync(){if(o)return o;let e={darwin:osxUuid,win32:winUuid,win64:winUuid,linux:linuxUuid}[rX().platform()];return"function"==typeof e&&(o=e()),o??(0,tM.generateUUUID)()}var client_info_provider_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},client_info_provider_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oX=tU.PackageUtils.getCurrentPackageJson(),oZ=class{constructor(){this.clientInfo$=new oV.t(void 0),this.sessionId=(0,tM.generateUUUID)()}initialize(){this.initClientInfo(),this.productManager.configuration.subscribe(()=>{this.initClientInfo()})}async get(){return Promise.resolve(this._ClientInfo)}initClientInfo(){let e=this.productManager.configuration.getValue(),t=this.getProcessEnvInfo(),r=t.machineId||machineIdSync();this._ClientInfo={machineId:r,sessionId:this.sessionId,platform:e?.platform||oY.Vo,platformVersion:e?.productVersion||oX.version,pluginName:oX.name,pluginVersion:e?.productVersion||oX.version,productName:e?.productName||oX.name,applicationName:e?.applicationName||"",productVersion:e?.productVersion||oX.version,ideType:e?.platform||oY.Vo,downloadChannel:e?.downloadChannel,...t},this.filePathService?.setIDEType(this._ClientInfo.ideType||oY.Vo),this.clientInfo$.next(this._ClientInfo)}getProcessEnvInfo(){let e={};if(ou.EnvUtils.isNodeRuntime()&&process.env)for(let t of Object.keys(tY.ENV_CLIENT_INFO_KEYS)){let r=tY.ENV_CLIENT_INFO_KEYS[t];r in process.env&&process.env[r]&&(e[t]=process.env[r])}return e}};client_info_provider_decorate([(0,tM.Autowired)(tY.ProductManager),client_info_provider_metadata("design:type","function"==typeof(e$=void 0!==tY.ProductManager&&tY.ProductManager)?e$:Object)],oZ.prototype,"productManager",void 0),client_info_provider_decorate([(0,tM.Autowired)(ou.FilePathService),(0,tM.Optional)(),client_info_provider_metadata("design:type","function"==typeof(ex=void 0!==ou.FilePathService&&ou.FilePathService)?ex:Object)],oZ.prototype,"filePathService",void 0),client_info_provider_decorate([(0,tM.Autowired)(tM.Logger),client_info_provider_metadata("design:type","function"==typeof(eU=void 0!==tM.Logger&&tM.Logger)?eU:Object)],oZ.prototype,"logger",void 0),client_info_provider_decorate([(0,tM.PostConstruct)(),client_info_provider_metadata("design:type",Function),client_info_provider_metadata("design:paramtypes",[]),client_info_provider_metadata("design:returntype",void 0)],oZ.prototype,"initialize",null),oZ=client_info_provider_decorate([(0,tM.Component)({id:tY.ClientInfoProvider,rebind:!0})],oZ),r(88927);var oQ=r(19585),completions_controller_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},completions_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let o0=class{async createCompletion(e){try{let t=e.agentName||"pulse";this.logger?.info(`[Completions] agent=${t}, systemPrompt=${e.systemPrompt?"yes":"no"}, userPrompt="${e.userPrompt.substring(0,50)}...", maxTurns=${e.maxTurns??1}, temp=${e.temperature??"default"}`,"completions");let r=await this.agentService.runOneTimeWithOverrides(t,e.userPrompt,{temperature:e.temperature,maxTurns:e.maxTurns,systemPrompt:e.systemPrompt,model:e.model,bypassPermissions:e.bypassPermissions??!0});this.logger?.info(`[Completions] success, agent=${t}, text length=${r.length}`,"completions"),this.reply({text:r,success:!0})}catch(t){if(t instanceof oQ.WT){this.logger?.error("[Completions] Authentication required (no valid authSession)","completions"),this.reply({text:"",success:!1,code:"auth_required",error:"Authentication required"});return}let e=t instanceof Error?t.message:String(t);this.logger?.error(`[Completions] Error: ${e}`,"completions"),this.reply({text:"",success:!1,error:e})}}reply(e){let t=oM.Context.getCurrent();t.response.setHeader("Content-Type","application/json; charset=utf-8"),t.response.end(JSON.stringify(e))}};completions_controller_decorate([(0,tM.Autowired)(tD.NO5),completions_controller_metadata("design:type","function"==typeof(eN=void 0!==tD.NO5&&tD.NO5)?eN:Object)],o0.prototype,"agentService",void 0),completions_controller_decorate([(0,tM.Autowired)("Logger"),(0,tM.Optional)(),completions_controller_metadata("design:type",Object)],o0.prototype,"logger",void 0),completions_controller_decorate([(0,oA.Post)(),(i=(0,oA.Body)(),function(e,t){i(e,t,0)}),completions_controller_metadata("design:type",Function),completions_controller_metadata("design:paramtypes",[Object]),completions_controller_metadata("design:returntype","function"==typeof(eB="u">typeof Promise&&Promise)?eB:Object)],o0.prototype,"createCompletion",null),o0=completions_controller_decorate([(0,oA.Controller)("api/v1/llm/completions")],o0),r(40580),r(16184),r(33732),r(39028),r(8688),r(13243),r(26117);var hook_service_proxy_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},hook_service_proxy_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let o1=Symbol("HookServiceProxy"),o3=class{async invoke(e,t,r,o){try{let i=await this.productManager.waitConfiguration();if(!i.endpoint)return{success:!1,error:{code:"NO_ENDPOINT",message:"Gateway endpoint not configured"}};let n=await this.userinfoProvider.provide(),s=r.startsWith("/")?r:`/${r}`;this.logger.debug(`[HookServiceProxy] Invoking service: ${e} with method: ${t}, path: ${s}`);let a=await this.restOperations.request({url:`/v2/service-proxy${s}`,method:t,baseURL:i.endpoint,headers:{"X-Service-Id":e,"X-User-Id":n?.userId??"","Content-Type":"application/json"},data:o,timeout:3e4});return this.logger.debug(`[HookServiceProxy] Response status: ${a.status}`),a.data}catch(t){return this.logger.error(`[HookServiceProxy] Error invoking service ${e}:`,t),{success:!1,error:{code:"PROXY_ERROR",message:t instanceof Error?t.message:"Unknown error"}}}}};hook_service_proxy_decorate([(0,tM.Autowired)(oP.RestOperations),hook_service_proxy_metadata("design:type","function"==typeof(eH=void 0!==oP.RestOperations&&oP.RestOperations)?eH:Object)],o3.prototype,"restOperations",void 0),hook_service_proxy_decorate([(0,tM.Autowired)(tY.ProductManager),hook_service_proxy_metadata("design:type","function"==typeof(eW=void 0!==tY.ProductManager&&tY.ProductManager)?eW:Object)],o3.prototype,"productManager",void 0),hook_service_proxy_decorate([(0,tM.Autowired)(rz.UserinfoProvider),hook_service_proxy_metadata("design:type","function"==typeof(eK=void 0!==rz.UserinfoProvider&&rz.UserinfoProvider)?eK:Object)],o3.prototype,"userinfoProvider",void 0),hook_service_proxy_decorate([(0,tM.Autowired)(tT.Logger),hook_service_proxy_metadata("design:type","function"==typeof(eq=void 0!==tT.Logger&&tT.Logger)?eq:Object)],o3.prototype,"logger",void 0),o3=hook_service_proxy_decorate([(0,tM.Component)(o1)],o3);var hook_service_controller_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},hook_service_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},hook_service_controller_param=function(e,t){return function(r,o){t(r,o,e)}};let o2=class{async invoke(e,t){if(!t)return this.logger.warn("[HookServiceController] Missing X-Service-Id header"),{success:!1,error:{code:"MISSING_SERVICE_ID",message:"X-Service-Id header is required"}};let r=oM.Context.getRequest(),o=r.path,i="/internal/hooks/services/invoke",n=o.startsWith(i)?o.slice(i.length)||"/":o,s=r.method.toUpperCase();return this.logger.debug(`[HookServiceController] Invoking service: ${t} with method: ${s}, path: ${n}`),this.hookServiceProxy.invoke(t,s,n,e)}};hook_service_controller_decorate([(0,tM.Autowired)(o1),hook_service_controller_metadata("design:type","function"==typeof(ez=void 0!==o1&&o1)?ez:Object)],o2.prototype,"hookServiceProxy",void 0),hook_service_controller_decorate([(0,tM.Autowired)(tT.Logger),hook_service_controller_metadata("design:type","function"==typeof(eV=void 0!==tT.Logger&&tT.Logger)?eV:Object)],o2.prototype,"logger",void 0),hook_service_controller_decorate([(0,oA.All)(),(0,oA.All)("/*"),hook_service_controller_param(0,(0,oA.Body)()),hook_service_controller_param(1,(0,oA.Header)("X-Service-Id")),hook_service_controller_metadata("design:type",Function),hook_service_controller_metadata("design:paramtypes",["function"==typeof(eY="u">typeof Record&&Record)?eY:Object,String]),hook_service_controller_metadata("design:returntype","function"==typeof(eJ="u">typeof Promise&&Promise)?eJ:Object)],o2.prototype,"invoke",null),o2=hook_service_controller_decorate([(0,oA.Controller)("internal/hooks/services/invoke")],o2);var o8=r(39418),structured_output_stop_hook_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},structured_output_stop_hook_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let o5=class{constructor(){this.event=oW.mb.STOP,this.priority=oW.Mg.StructuredOutput,this.logger?.setContext?.("StructuredOutputStopHook")}async execute(e){let t=e.session;if(!t)return;let r=this.contextFactory.get(t);if(r&&r.enabled){if(r.hasOutput()){this.logger.info("Structured output captured successfully"),r.markComplete();return}if(!r.incrementRetry()){this.logger.warn(`Structured output not captured after ${r.maxRetries} retries`),r.markComplete();return}return this.logger.info(`Structured output not captured, retry ${r.retryCount}/${r.maxRetries}`),{allowed:!0,continueRequest:{message:this.buildFeedbackMessage(r.schemaString||""),completionPromise:r.completionDeferred.promise}}}}buildFeedbackMessage(e){return{type:"message",role:"user",content:o8.V.replace("{schema}",e),providerData:{isMeta:!0}}}};structured_output_stop_hook_decorate([(0,tM.Autowired)(tT.Logger),structured_output_stop_hook_metadata("design:type","function"==typeof(eG=void 0!==tT.Logger&&tT.Logger)?eG:Object)],o5.prototype,"logger",void 0),structured_output_stop_hook_decorate([(0,tM.Autowired)(o8.Y),structured_output_stop_hook_metadata("design:type","function"==typeof(eX=void 0!==o8.Y&&o8.Y)?eX:Object)],o5.prototype,"contextFactory",void 0),o5=structured_output_stop_hook_decorate([(0,tM.Component)(oW.qn),structured_output_stop_hook_metadata("design:paramtypes",[])],o5);var o4=r(93034),structured_output_session_start_hook_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},structured_output_session_start_hook_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let o7=class{constructor(){this.event=oW.mb.SESSION_START,this.priority=oW.Mg.StructuredOutput,this.logger?.setContext?.("StructuredOutputSessionStartHook")}async execute(e){let t=e.session;if(!t)return;let r=t.options.jsonSchema;if(!r)return;let o=t.options.outputFormat;if(!o||!["json","stream-json"].includes(o))return void this.logger.warn("--json-schema requires --output-format json or stream-json");try{let e="string"==typeof r?JSON.parse(r):r;if("object"!=typeof e||null===e)throw Error("Schema must be a valid JSON object");"object"!==e.type&&this.logger.warn('JSON Schema should have type "object" at root level')}catch(t){let e=t instanceof Error?t.message:String(t);return this.logger.error(`Invalid JSON Schema: ${e}`),{allowed:!1,message:`Invalid JSON Schema: ${e}`}}let i=this.contextFactory.get(t);i||(i=this.contextFactory.getOrCreate(t,r),this.completionWaiter.registerCompletion(t,i.completionDeferred.promise),this.logger.info("Structured output enabled"))}};structured_output_session_start_hook_decorate([(0,tM.Autowired)(tT.Logger),structured_output_session_start_hook_metadata("design:type","function"==typeof(eZ=void 0!==tT.Logger&&tT.Logger)?eZ:Object)],o7.prototype,"logger",void 0),structured_output_session_start_hook_decorate([(0,tM.Autowired)(o8.Y),structured_output_session_start_hook_metadata("design:type","function"==typeof(eQ=void 0!==o8.Y&&o8.Y)?eQ:Object)],o7.prototype,"contextFactory",void 0),structured_output_session_start_hook_decorate([(0,tM.Autowired)(o4.EM),structured_output_session_start_hook_metadata("design:type","function"==typeof(e0=void 0!==o4.EM&&o4.EM)?e0:Object)],o7.prototype,"completionWaiter",void 0),o7=structured_output_session_start_hook_decorate([(0,tM.Component)(oW.qn),structured_output_session_start_hook_metadata("design:paramtypes",[])],o7);var headless_session_start_hook_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},headless_session_start_hook_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let o9=class{constructor(){this.event=oW.mb.SESSION_START,this.priority=oW.Mg.High}async execute(e){let t=e.session;if(t&&(t.options.print||!process.stdout.isTTY)&&!t.headlessCompletionDeferred){let e=new tM.Deferred;t.headlessCompletionDeferred=e,this.completionWaiter.registerCompletion(t,e.promise),this.logger.debug("Headless completion promise registered")}}};headless_session_start_hook_decorate([(0,tM.Autowired)(tT.Logger),headless_session_start_hook_metadata("design:type","function"==typeof(e1=void 0!==tT.Logger&&tT.Logger)?e1:Object)],o9.prototype,"logger",void 0),headless_session_start_hook_decorate([(0,tM.Autowired)(o4.EM),headless_session_start_hook_metadata("design:type","function"==typeof(e3=void 0!==o4.EM&&o4.EM)?e3:Object)],o9.prototype,"completionWaiter",void 0),o9=headless_session_start_hook_decorate([(0,tM.Component)(oW.qn)],o9);var o6=r(34094),ie=r(84252);r(66149),r(87493),r(2317);var it=r(74593),ir=r(13586),io=r(95629);let ii="FILE_ROLLBACK_SANDBOX_UNAVAILABLE",is="FILE_ROLLBACK_TARGET_NOT_FOUND";var file_rollback_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},file_rollback_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ia=class{async preview(e,t){return this.assertRequest(e,t),this.operationLock.runExclusive(e.id,async()=>(this.assertIdle(e),{files:(await this.buildPlan(e,t)).files.map(e=>e.preview)}))}async rollback(e,t){return this.assertRequest(e,t),this.operationLock.runExclusive(e.id,async()=>{this.assertIdle(e);let r=await this.buildPlan(e,t);if(0===r.commits.length)return{files:[]};await this.ensureSandboxReady(e);let o=new Map,i=new Map;for(let{commit:t}of[...r.commits].reverse())try{for(let r of(await this.sandboxCenterClient.request(o6.SANDBOX_BACKUP_COMMANDS.RESTORE_MODIFY_BACKUP,{commitSeqs:[t.commitSeq]},{sessionId:e.id})).files){let e=this.normalizeFilePath(r.path);e&&o.set(this.resultKey(t.commitSeq,e),{path:e,success:this.isRestoreFileApplied(r.status),...r.error?{error:r.error}:{}})}}catch(o){let r=o?.message??String(o);i.set(t.commitSeq,r),this.logger?.error?.(`[file-rollback] RestoreModifyBackup failed sessionId=${e.id} commitSeq=${t.commitSeq} error=${r}`)}let n=[];for(let e of r.files){if("keep"===e.preview.action||void 0===e.selectedCommitSeq)continue;let t=o.get(this.resultKey(e.selectedCommitSeq,e.preview.path));if(t){n.push(t);continue}n.push({path:e.preview.path,success:!1,error:i.get(e.selectedCommitSeq)??`Sandbox did not return a result for commit ${e.selectedCommitSeq}`})}return{files:n}})}async buildPlan(e,t){let r,o=this.getAffectedRequestIds(e,t),i=await this.recordStore.list(e),n=new Map;for(let e of i){let t=n.get(e.requestId)??[];t.push(e),n.set(e.requestId,t)}let s=[];for(let e of o){let t=n.get(e);if(!t||0===t.length)throw new ie.ce("FILE_ROLLBACK_METADATA_UNAVAILABLE",`File backup metadata is unavailable for request: ${e}`);s.push(...t)}let a=s.filter(e=>e.commitSeq>0);if(0===a.length)return{files:[],commits:[]};await this.ensureSandboxReady(e);try{r=await this.sandboxCenterClient.request(o6.SANDBOX_BACKUP_COMMANDS.QUERY_MODIFY_BACKUP_COMMITS,{},{sessionId:e.id})}catch(e){throw new ie.ce(ii,`Failed to query Sandbox file backups: ${e?.message??String(e)}`)}let c=[];for(let e of a){let t=(0,ie.RI)(e.requestId),o=r.commits.find(r=>r.commitSeq===e.commitSeq&&r.commitMsg===t&&!r.isPending&&r.files.length>0);if(!o)throw new ie.ce("FILE_ROLLBACK_COMMIT_GC",`File backup commit is unavailable for request: ${e.requestId}`);c.push({requestId:e.requestId,commit:o})}return{commits:c,files:this.buildFilePlan(c)}}buildFilePlan(e){let t=new Map;for(let{requestId:r,commit:o}of e)for(let e of o.files){let i=this.normalizeFilePath(e.realPath);if(!i){this.logger?.warn?.(`[file-rollback] ignored backup entry with empty realPath commitSeq=${o.commitSeq}`);continue}let n=this.pathKey(i),s=t.get(n)??{path:i,entries:[]};s.entries.push({commitSeq:o.commitSeq,requestId:r,file:e}),t.set(n,s)}let r=[];for(let e of t.values()){let t=e.entries[0];if(this.isAddedBackupFile(t.file)){r.push({preview:{path:e.path,action:"delete"},selectedCommitSeq:t.commitSeq});continue}if(t.file.flatName&&t.file.available){r.push({preview:{path:e.path,action:"restore",restorePoint:"exact",versionRequestId:t.requestId},selectedCommitSeq:t.commitSeq});continue}let o=e.entries.slice(1).find(e=>!this.isAddedBackupFile(e.file)&&!!e.file.flatName&&e.file.available);if(o){r.push({preview:{path:e.path,action:"restore",restorePoint:"fallback",versionRequestId:o.requestId},selectedCommitSeq:o.commitSeq});continue}r.push({preview:{path:e.path,action:"keep",reason:"version_unavailable"}})}return r}isAddedBackupFile(e){let t=e.isNewFile;return"a"===e.reason||void 0===e.reason&&!0===t&&!e.flatName}getAffectedRequestIds(e,t){let r=tU.HistoryUtils.getActiveHistory(e.history,{lastMessageId:e.lastMessageId,hasCompactedHistory:e.hasCompactedHistory}),o=[],i=new Set;for(let e of r){let t=e.providerData?.conversationRequestId??e.providerData?.requestId;"string"==typeof t&&t&&!i.has(t)&&(i.add(t),o.push(t))}let n=o.indexOf(t);if(n<0)throw new ie.ce(is,`Target request is not on the active session branch: ${t}`);return o.slice(n)}async ensureSandboxReady(e){let t=this.sandboxLifecycle;if(!t||!this.sandboxCenterClient)throw new ie.ce(ii,"Sandbox lifecycle is unavailable in this runtime");try{let r=t.getOpenedSessionId();if(r&&r!==e.id)throw new ie.ce(ii,`Sandbox session mismatch: opened=${r}, requested=${e.id}`);if(t.getClient().isConnected()||await t.ensureReady({sessionId:e.id,appHomeDir:tU.PathUtils.getHomeDir(),appGroupId:process.env.SANDBOX_APP_GROUP_ID||void 0}),t.getOpenedSessionId()!==e.id)throw Error(`opened Sandbox session does not match requested session: ${t.getOpenedSessionId()??"<none>"}`);return}catch(e){if(e instanceof ie.ce)throw e;throw new ie.ce(ii,`Sandbox session is unavailable: ${e?.message??String(e)}`)}}assertRequest(e,t){if(!e.id||!t.trim())throw new ie.ce(is,"sessionId and targetRequestId are required")}assertIdle(e){if(!this.runStateMachine.isIdle(e))throw new ie.ce("FILE_ROLLBACK_SESSION_BUSY",`Session is busy and cannot roll back files: ${e.id}`)}isRestoreFileApplied(e){return"string"==typeof e&&e.startsWith("applied")}normalizeFilePath(e){let t=e?.trim();return t?rQ().normalize(rQ().resolve(t)):void 0}pathKey(e){return"win32"===process.platform?e.toLocaleLowerCase("en-US"):e}resultKey(e,t){return`${e}\0${this.pathKey(t)}`}};file_rollback_service_decorate([(0,tM.Autowired)(tT.Logger),file_rollback_service_metadata("design:type","function"==typeof(e2=void 0!==tT.Logger&&tT.Logger)?e2:Object)],ia.prototype,"logger",void 0),file_rollback_service_decorate([(0,tM.Autowired)(ie.rJ),file_rollback_service_metadata("design:type",Object)],ia.prototype,"recordStore",void 0),file_rollback_service_decorate([(0,tM.Autowired)(ie.n_),file_rollback_service_metadata("design:type",Object)],ia.prototype,"operationLock",void 0),file_rollback_service_decorate([(0,tM.Autowired)(io.MU),file_rollback_service_metadata("design:type",Object)],ia.prototype,"runStateMachine",void 0),file_rollback_service_decorate([(0,tM.Autowired)(it.k),(0,tM.Optional)(),file_rollback_service_metadata("design:type",Object)],ia.prototype,"sandboxLifecycle",void 0),file_rollback_service_decorate([(0,tM.Autowired)(ir.s),(0,tM.Optional)(),file_rollback_service_metadata("design:type",Object)],ia.prototype,"sandboxCenterClient",void 0),ia=file_rollback_service_decorate([(0,tM.Component)(ie.oi)],ia);var ic=r(59023),il=r(88056),id=r(89799),finalization_modify_backup_hook_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},finalization_modify_backup_hook_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iu=class{constructor(){this.event=oW.mb.FINAL_STOP,this.priority=oW.Mg.Lowest,this.logger?.setContext?.("FinalizationModifyBackupHook")}async execute(e){let t=e.session;if(!t)return void this.logger?.info?.("[finalization-modify-backup] skipped: no session");if(!this.sandboxTurnConfig.enableFileBackup)return void this.logger?.info?.(`[finalization-modify-backup] skipped (enableFileBackup=false) sessionId=${t.id}`);if(!this.sandboxLifecycle||!this.sandboxCenterClient)return void this.logger?.info?.(`[finalization-modify-backup] skipped: sandboxLifecycle not available sessionId=${t.id}`);let r=this.sandboxLifecycle.getOpenedSessionId();if(!r)return void this.logger?.info?.(`[finalization-modify-backup] skipped: no opened sandbox session sessionId=${t.id}`);let o=t.conversationRequestId,i=o?(0,ie.RI)(o):this.resolveCommitMessage(t)??"modify backup finalization",n=Date.now();this.logger?.info?.(`[finalization-modify-backup] start sessionId=${t.id} sandboxSessionId=${r} finalStopReason=${e.final_stop_reason??"<unset>"}`);let commit=async()=>{let e=await this.sandboxCenterClient.request(o6.SANDBOX_BACKUP_COMMANDS.COMMIT_MODIFY_BACKUP,{commitMsg:i},{sessionId:r});if(this.logger?.info?.(`[finalization-modify-backup] CommitModifyBackup completed sessionId=${t.id} commitSeq=${e.commitSeq} commitLabel=${e.commitLabel} modifyBackupSessionCount=${e.modifyBackupSessionCount??"<unset>"} totalModifyBackupSizeMb=${e.totalModifyBackupSizeMb??"<unset>"} durationMs=${Date.now()-n}`),o)if(this.fileBackupRecordStore)try{await this.fileBackupRecordStore.append(t,{v:1,requestId:o,commitSeq:e.commitSeq})}catch(r){this.logger?.error?.(`[finalization-modify-backup] persist mapping failed sessionId=${t.id} requestId=${o} commitSeq=${e.commitSeq} error=${r?.message}`)}else this.logger?.error?.(`[finalization-modify-backup] mapping store unavailable sessionId=${t.id} requestId=${o}`);else this.logger?.warn?.(`[finalization-modify-backup] committed without request mapping sessionId=${t.id}: conversationRequestId is missing`);if(void 0!==e.totalModifyBackupSizeMb&&void 0!==e.modifyBackupSessionCount&&this.telemetryReporter)try{this.telemetryReporter.reportModifyBackupCommitted({totalModifyBackupSizeMb:e.totalModifyBackupSizeMb,modifyBackupSessionCount:e.modifyBackupSessionCount,fileBackupMaxSizeMb:this.sandboxTurnConfig.fileBackupMaxSizeMB,conversationId:t.id,conversationRequestId:o})}catch(e){try{this.logger?.warn?.(`[finalization-modify-backup] telemetry failed and was ignored: ${e?.message??String(e)}`)}catch{}}};try{this.fileRollbackOperationLock?await this.fileRollbackOperationLock.runExclusive(t.id,commit):await commit()}catch(e){this.logger?.error?.(`[finalization-modify-backup] CommitModifyBackup failed sessionId=${t.id} durationMs=${Date.now()-n} error=${e?.message}`)}}resolveCommitMessage(e){let t=id.c.getLatestRealUserMessage(e.history);return t?Array.from(t).slice(0,16).join(""):void 0}};finalization_modify_backup_hook_decorate([(0,tM.Autowired)(tT.Logger),finalization_modify_backup_hook_metadata("design:type","function"==typeof(e8=void 0!==tT.Logger&&tT.Logger)?e8:Object)],iu.prototype,"logger",void 0),finalization_modify_backup_hook_decorate([(0,tM.Autowired)(ic.x),finalization_modify_backup_hook_metadata("design:type","function"==typeof(e5=void 0!==ic.x&&ic.x)?e5:Object)],iu.prototype,"sandboxTurnConfig",void 0),finalization_modify_backup_hook_decorate([(0,tM.Autowired)(it.k),(0,tM.Optional)(),finalization_modify_backup_hook_metadata("design:type",Object)],iu.prototype,"sandboxLifecycle",void 0),finalization_modify_backup_hook_decorate([(0,tM.Autowired)(ir.s),(0,tM.Optional)(),finalization_modify_backup_hook_metadata("design:type",Object)],iu.prototype,"sandboxCenterClient",void 0),finalization_modify_backup_hook_decorate([(0,tM.Autowired)(il.U),(0,tM.Optional)(),finalization_modify_backup_hook_metadata("design:type",Object)],iu.prototype,"telemetryReporter",void 0),finalization_modify_backup_hook_decorate([(0,tM.Autowired)(ie.rJ),(0,tM.Optional)(),finalization_modify_backup_hook_metadata("design:type",Object)],iu.prototype,"fileBackupRecordStore",void 0),finalization_modify_backup_hook_decorate([(0,tM.Autowired)(ie.n_),(0,tM.Optional)(),finalization_modify_backup_hook_metadata("design:type",Object)],iu.prototype,"fileRollbackOperationLock",void 0),iu=finalization_modify_backup_hook_decorate([(0,tM.Component)(oW.qn),finalization_modify_backup_hook_metadata("design:paramtypes",[])],iu);var sandbox_cli_session_hook_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},sandbox_cli_session_hook_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ip=class{constructor(){this.event=oW.mb.SESSION_END,this.priority=oW.Mg.Normal,this.matcher="clear|resume"}async execute(e){let t=e.session;if(!t)return void this.logger?.info?.("[SandboxCLISessionEndHook] skipped: no session");if(!this.sandboxLifecycle)return void this.logger?.info?.(`[SandboxCLISessionEndHook] skipped: sandboxLifecycle not available sessionId=${t.id}`);this.logger?.info?.(`[SandboxCLISessionEndHook] triggered reason=${e.reason} sessionId=${t.id}`);try{await this.sandboxLifecycle.stop(),this.logger?.info?.(`[SandboxCLISessionEndHook] sandbox-cli stopped gracefully sessionId=${t.id}`)}catch(e){this.logger?.info?.(`[SandboxCLISessionEndHook] failed to stop sandbox-cli sessionId=${t.id} error=${e?.message}`)}if(this.cwdService){let e=process.cwd();this.cwdService.setCwdState(e),this.logger?.info?.(`[SandboxCLISessionEndHook] cwdState restored to process.cwd()=${e} sessionId=${t.id}`)}}};sandbox_cli_session_hook_decorate([(0,tM.Autowired)(tT.Logger),sandbox_cli_session_hook_metadata("design:type","function"==typeof(e4=void 0!==tT.Logger&&tT.Logger)?e4:Object)],ip.prototype,"logger",void 0),sandbox_cli_session_hook_decorate([(0,tM.Autowired)(it.k),(0,tM.Optional)(),sandbox_cli_session_hook_metadata("design:type",Object)],ip.prototype,"sandboxLifecycle",void 0),sandbox_cli_session_hook_decorate([(0,tM.Autowired)(om.a),(0,tM.Optional)(),sandbox_cli_session_hook_metadata("design:type",Object)],ip.prototype,"cwdService",void 0),ip=sandbox_cli_session_hook_decorate([(0,tM.Component)(oW.qn)],ip);var ih=r(25177),generation_context_hook_input_processor_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 ig=class{constructor(){this.priority=10}async process(e,t){if(!e.generation_id&&e.session?.generationId&&(e.generation_id=e.session.generationId),!e.generation_id&&e.session?.messageId&&(e.generation_id=e.session.messageId),!e.model){let t=e.session?.requestOptions?.model;if(t)e.model=t;else try{let t=await ih.H.getCurrentModel(e.session??void 0);e.model=t?.id}catch{}}}};generation_context_hook_input_processor_decorate([(0,tM.Autowired)(tT.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(e7=void 0!==tT.Logger&&tT.Logger)?e7:Object)],ig.prototype,"logger",void 0),ig=generation_context_hook_input_processor_decorate([(0,tM.Component)(oW.E8)],ig);var client_info_hook_input_processor_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 im=class{constructor(){this.priority=20}async process(e,t){if(!e.client||!e.version)try{let t=tM.ContainerUtil.get(tY.ClientInfoProvider),r=await t.get();e.client||(e.client=r.platform),e.version||(e.version=r.productVersion)}catch{}}};client_info_hook_input_processor_decorate([(0,tM.Autowired)(tT.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(e9=void 0!==tT.Logger&&tT.Logger)?e9:Object)],im.prototype,"logger",void 0),im=client_info_hook_input_processor_decorate([(0,tM.Component)(oW.E8)],im);var iy=r(73667),image_tool_hook_input_processor_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},image_tool_hook_input_processor_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let i_=class{constructor(){this.priority=100}async process(e,t){if(t!==oW.mb.POST_TOOL_USE)return;let r=e.tool_name;if(r===iy.L3.IMAGE_GEN||r===iy.L3.IMAGE_EDIT)try{let t=r===iy.L3.IMAGE_GEN?iy.Tt:iy.VA,o=await this.imageService.resolveModel(e.session??void 0,t);e.tool_input&&o&&(e.tool_input.image_model=o)}catch(e){this.logger.warn("Failed to resolve image model for hook input:",e)}}};function mapPermissionMode(e){switch(e){case r0.ZC.AcceptEdits:return"acceptEdits";case r0.ZC.Plan:return"plan";case r0.ZC.DontAsk:return"dontAsk";case r0.ZC.Auto:return"auto";case r0.ZC.BypassPermissions:return"bypassPermissions";case r0.ZC.Default:default:return"default"}}image_tool_hook_input_processor_decorate([(0,tM.Autowired)(iy.fD),image_tool_hook_input_processor_metadata("design:type","function"==typeof(e6=void 0!==iy.fD&&iy.fD)?e6:Object)],i_.prototype,"imageService",void 0),image_tool_hook_input_processor_decorate([(0,tM.Autowired)(tT.Logger),image_tool_hook_input_processor_metadata("design:type","function"==typeof(te=void 0!==tT.Logger&&tT.Logger)?te:Object)],i_.prototype,"logger",void 0),i_=image_tool_hook_input_processor_decorate([(0,tM.Component)(oW.E8)],i_);let iv=class{constructor(){this.priority=30}async process(e,t){if(e.permission_mode)return;let r=e.session?.permissionModeSubject?.value??e.session?.options?.permissionMode;e.permission_mode=mapPermissionMode(r)}};iv=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,tM.Component)(oW.E8)],iv);var stop_hook_session_context_processor_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 ib=class{constructor(){this.priority=40}async process(e,t){(t===oW.mb.STOP||t===oW.mb.SUBAGENT_STOP)&&(e.background_tasks||(e.background_tasks=this.collectBackgroundTasks()),e.session_crons||(e.session_crons=this.collectSessionCrons(e.session_id)))}collectBackgroundTasks(){try{return tM.ContainerUtil.get(iy.ToolManager).getBackgroundTasks().filter(e=>"running"===e.status||"pending"===e.status).map(projectBackgroundTask)}catch(e){return this.logger.debug?.(`[stop-hook-context] failed to read background tasks: ${e?.message??e}`),[]}}collectSessionCrons(e){if(!e)return[];try{return tM.ContainerUtil.get(tN.cf).getSessionTasks(e).map(projectCronTask)}catch(e){return this.logger.debug?.(`[stop-hook-context] failed to read session crons: ${e?.message??e}`),[]}}};function projectBackgroundTask(e){return{id:e.id,tool_name:e.toolName,title:e.title,status:e.status,start_time:e.startTime,...void 0!==e.endTime?{end_time:e.endTime}:{},...void 0!==e.description?{description:e.description}:{}}}function projectCronTask(e){return{id:e.id,cron:e.cron,prompt:e.prompt,created_at:e.createdAt,...void 0!==e.recurring?{recurring:e.recurring}:{},...void 0!==e.durable?{durable:e.durable}:{},...void 0!==e.permanent?{permanent:e.permanent}:{},...void 0!==e.lastFiredAt?{last_fired_at:e.lastFiredAt}:{}}}stop_hook_session_context_processor_decorate([(0,tM.Autowired)(tT.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(tt=void 0!==tT.Logger&&tT.Logger)?tt:Object)],ib.prototype,"logger",void 0),ib=stop_hook_session_context_processor_decorate([(0,tM.Component)(oW.E8)],ib),r(56174);var iw=r(15439),iS=r(35317),iP=r(69278),ide_detector_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 iC={vscode:{ideKind:"vscode",displayName:"VS Code"},cursor:{ideKind:"vscode",displayName:"Cursor"},windsurf:{ideKind:"vscode",displayName:"Windsurf"},codium:{ideKind:"vscode",displayName:"VSCodium"},codebuddy:{ideKind:"vscode",displayName:"CodeBuddy"},intellij:{ideKind:"jetbrains",displayName:"IntelliJ IDEA"},pycharm:{ideKind:"jetbrains",displayName:"PyCharm"},webstorm:{ideKind:"jetbrains",displayName:"WebStorm"},phpstorm:{ideKind:"jetbrains",displayName:"PhpStorm"},rubymine:{ideKind:"jetbrains",displayName:"RubyMine"},clion:{ideKind:"jetbrains",displayName:"CLion"},goland:{ideKind:"jetbrains",displayName:"GoLand"},rider:{ideKind:"jetbrains",displayName:"Rider"},datagrip:{ideKind:"jetbrains",displayName:"DataGrip"},appcode:{ideKind:"jetbrains",displayName:"AppCode"},dataspell:{ideKind:"jetbrains",displayName:"DataSpell"},aqua:{ideKind:"jetbrains",displayName:"Aqua"},gateway:{ideKind:"jetbrains",displayName:"Gateway"},fleet:{ideKind:"jetbrains",displayName:"Fleet"},androidstudio:{ideKind:"jetbrains",displayName:"Android Studio"},jetbrains:{ideKind:"jetbrains",displayName:"JetBrains IDE"}},iO=["pycharm","intellij","webstorm","phpstorm","rubymine","clion","goland","rider","datagrip","appcode","dataspell","aqua","gateway","fleet","jetbrains","androidstudio"],iE=class{isInIDETerminal(){let e=this.detectTerminal();return this.isVSCodeIDE(e)||this.isJetBrainsIDE(e)||!!process.env.FORCE_IDE_TERMINAL}detectTerminal(){if(process.env.CURSOR_TRACE_ID||process.env.VSCODE_GIT_ASKPASS_MAIN?.includes("/.cursor-server/"))return"cursor";if(process.env.VSCODE_GIT_ASKPASS_MAIN?.includes("/.windsurf-server/"))return"windsurf";let e=process.env.__CFBundleIdentifier?.toLowerCase();if(e){if(e.includes("vscodium"))return"codium";if(e.includes("windsurf"))return"windsurf";if(e.includes("com.google.android.studio"))return"androidstudio";for(let t of iO)if(e.includes(t))return t}if(process.env.VisualStudioVersion)return"visualstudio";if("JetBrains-JediTerm"===process.env.TERMINAL_EMULATOR)return"pycharm";if("xterm-ghostty"===process.env.TERM)return"ghostty";if(process.env.TERM?.includes("kitty"))return"kitty";if(process.env.TERM_PROGRAM)return process.env.TERM_PROGRAM;if(process.env.STY)return"screen";if(process.env.KONSOLE_VERSION)return"konsole";if(process.env.GNOME_TERMINAL_SERVICE)return"gnome-terminal";if(process.env.XTERM_VERSION)return"xterm";if(process.env.VTE_VERSION)return"vte-based";if(process.env.TERMINATOR_UUID)return"terminator";if(process.env.KITTY_WINDOW_ID)return"kitty";if(process.env.ALACRITTY_LOG)return"alacritty";if(process.env.TILIX_ID)return"tilix";if(process.env.WT_SESSION)return"windows-terminal";if(process.env.SESSIONNAME&&"cygwin"===process.env.TERM)return"cygwin";if(process.env.MSYSTEM)return process.env.MSYSTEM.toLowerCase();if(process.env.ConEmuANSI||process.env.ConEmuPID||process.env.ConEmuTask)return"conemu";if(process.env.WSL_DISTRO_NAME)return`wsl-${process.env.WSL_DISTRO_NAME}`;if(process.env.SSH_CONNECTION||process.env.SSH_CLIENT||process.env.SSH_TTY)return"ssh-session";if(process.env.TERM){let e=process.env.TERM;return e.includes("alacritty")?"alacritty":e.includes("rxvt")?"rxvt":e.includes("termite")?"termite":e}return process.stdout.isTTY?null:"non-interactive"}isVSCodeIDE(e){if(!e)return!1;let t=iC[e];return t?.ideKind==="vscode"}isJetBrainsIDE(e){if(!e)return!1;let t=iC[e];return t?.ideKind==="jetbrains"}getIDENameFromEnvironment(){let e=this.detectTerminal();if(!e)return null;let t=iC[e];if(t)return t.displayName;let r=e.split(" ")[0];return r.charAt(0).toUpperCase()+r.slice(1)}getIDEKindFromEnvironment(){let e=this.detectTerminal();if(!e)return null;let t=iC[e];return t?.ideKind||null}async detectAvailableIDEs(e=!0){let t=[],r=this.getEnvPort(),o=this.isSkipValidCheckEnabled();await this.cleanupStaleLockFiles();try{let i=this.getIDELockFiles(),n=process.cwd(),s=!1;for(let a of i){let i=this.parseLockFile(a);if(!i||i.pid&&!this.isProcessRunning(i.pid))continue;let c=null!==r&&i.port===r;if(!c&&this.isInIDETerminal()&&i.pid&&!this.isIDEProcessAncestor(i.pid))continue;let l=!1;l=!!o||!!c||!e||i.workspaceFolders.some(e=>{if(!e)return!1;let t=e;this.isWSL()&&i.runningInWindows&&(t=this.convertWindowsPathToWSL(e));let r=tW.resolve(t),o=this.normalizePath(n),s=this.normalizePath(r);return o===s||o.startsWith(s+tW.sep)}),c&&(s=!0);let d=await this.buildConnectionURL(i),u=i.ideName||"IDE";t.push({url:d,name:u,workspaceFolders:i.workspaceFolders,port:i.port,isValid:l,ideKind:i.ideKind,authToken:i.authToken,ideRunningInWindows:i.runningInWindows})}if(null!==r&&!s){let e={workspaceFolders:[],port:r,ideName:this.getIDENameFromEnvironment()||"IDE",ideKind:this.getIDEKindFromEnvironment()||void 0,useWebSocket:!1,runningInWindows:!1},o=await this.buildConnectionURL(e);t.push({url:o,name:e.ideName||"IDE",workspaceFolders:[],port:r,isValid:!0,ideKind:e.ideKind,ideRunningInWindows:!1})}}catch(e){this.logger.error("Error detecting IDEs:",e)}return t}getEnvPort(){let e=process.env.CODEBUDDY_IDE_PORT||process.env.CLAUDE_CODE_SSE_PORT;if(!e)return null;let t=parseInt(e,10);return Number.isNaN(t)?null:t}isSkipValidCheckEnabled(){let e=process.env.CODEBUDDY_IDE_SKIP_VALID_CHECK||process.env.CLAUDE_CODE_IDE_SKIP_VALID_CHECK;if(!e)return!1;let t=e.toLowerCase();return"1"===t||"true"===t||"yes"===t||"on"===t}getHostOverride(){let e=process.env.CODEBUDDY_IDE_HOST||process.env.CLAUDE_CODE_IDE_HOST_OVERRIDE;return e&&e.trim()?e.trim():null}getIDELockDirectories(){let e=[],t=tW.join(this.getUserHome(),".claude","ide");if(ri.existsSync(t)&&e.push(t),this.isWSL()){let t=process.env.USERPROFILE;if(t){let r=this.convertWindowsPathToWSL(t),o=tW.resolve(r,".claude","ide");ri.existsSync(o)&&e.push(o)}try{if(ri.existsSync("/mnt/c/Users"))for(let t of ri.readdirSync("/mnt/c/Users")){if(["Public","Default","Default User","All Users"].includes(t))continue;let r=tW.join("/mnt/c/Users",t,".claude","ide");ri.existsSync(r)&&e.push(r)}}catch(e){this.logger.error("Error scanning WSL user directories:",e)}}return e}getIDELockFiles(){try{return this.getIDELockDirectories().flatMap(e=>{try{return ri.readdirSync(e).filter(e=>e.endsWith(".lock")).map(t=>{let r=tW.join(e,t);return{path:r,mtime:ri.statSync(r).mtime}})}catch(t){return this.logger.error(`Error reading directory ${e}:`,t),[]}}).sort((e,t)=>t.mtime.getTime()-e.mtime.getTime()).map(e=>e.path)}catch(e){return this.logger.error("Error getting IDE lock files:",e),[]}}async cleanupStaleLockFiles(){let e,t=tW.join(this.getUserHome(),".claude","ide");if(ri.existsSync(t)){try{e=ri.readdirSync(t).filter(e=>e.endsWith(".lock"))}catch(e){this.logger.debug(`cleanupStaleLockFiles: failed to read ${t}: ${e}`);return}await Promise.all(e.map(async e=>{let r=tW.join(t,e),o=this.parseLockFile(r);if(!o){try{ri.unlinkSync(r),this.logger.debug(`Removed unparseable IDE lockfile: ${r}`)}catch(e){this.logger.debug(`Failed to remove unparseable lockfile ${r}: ${e}`)}return}if(o.pid?!this.isProcessRunning(o.pid):!await this.isPortOpen("127.0.0.1",o.port))try{ri.unlinkSync(r),this.logger.debug(`Removed stale IDE lockfile: ${r} (pid=${o.pid??"n/a"}, port=${o.port})`)}catch(e){this.logger.debug(`Failed to remove stale lockfile ${r}: ${e}`)}}))}}parseLockFile(e){try{let t,r,o,i=ri.readFileSync(e,{encoding:"utf-8"}),n=[],s=!1,a=!1;try{let e=JSON.parse(i);e.workspaceFolders&&(n=e.workspaceFolders),t=e.pid,r=e.ideName,s="ws"===e.transport,a=!0===e.runningInWindows,o=e.authToken}catch{n=i.split("\n").map(e=>e.trim())}let c=tW.basename(e).replace(".lock",""),l=parseInt(c,10);if(isNaN(l))return null;let d=r?this.inferIDEKindFromName(r):void 0;return{workspaceFolders:n,port:l,pid:t,ideName:r,ideKind:d,useWebSocket:s,runningInWindows:a,authToken:o}}catch(t){return this.logger.error(`Error parsing lock file ${e}:`,t),null}}async buildConnectionURL(e){let t=await this.getConnectionHost(e.runningInWindows,e.port);return e.useWebSocket?`ws://${t}:${e.port}`:`http://${t}:${e.port}/sse`}async getConnectionHost(e,t){let r=this.getHostOverride();if(r)return r;if(!this.isWSL()||!e)return"127.0.0.1";try{let e=(0,iS.execSync)("ip route show | grep -i default",{encoding:"utf8",stdio:"pipe"}).match(/default via (\d+\.\d+\.\d+\.\d+)/);if(e){let r=e[1];if(await this.isPortOpen(r,t))return r}}catch(e){}return"127.0.0.1"}async isPortOpen(e,t,r=500){try{return new Promise(o=>{let i=(0,iP.createConnection)({host:e,port:t,timeout:r});i.on("connect",()=>{i.destroy(),o(!0)}),i.on("error",()=>{o(!1)}),i.on("timeout",()=>{i.destroy(),o(!1)})})}catch{return!1}}normalizePath(e){let t=tW.resolve(e);return"win32"===process.platform&&(t=t.toLowerCase()),(t=t.split(/[/\\]/).join(tW.sep)).endsWith(tW.sep)&&t.length>1&&(t=t.slice(0,-1)),t}getUserHome(){return process.env.HOME||process.env.USERPROFILE||"/tmp"}isWSL(){return!!process.env.WSL_DISTRO_NAME||ri.existsSync("/proc/version")&&ri.readFileSync("/proc/version","utf-8").toLowerCase().includes("microsoft")}convertWindowsPathToWSL(e){return e.replace(/\\/g,"/").replace(/^([A-Z]):/i,(e,t)=>`/mnt/${t.toLowerCase()}`)}isProcessRunning(e){try{return process.kill(e,0),!0}catch{return!1}}getParentPid(e){try{if("linux"===process.platform){let t=ri.readFileSync(`/proc/${e}/stat`,"utf-8").match(/^\d+\s+\([^)]+\)\s+\w+\s+(\d+)/);return t?parseInt(t[1]):null}if("darwin"===process.platform){let t=(0,iS.execSync)(`ps -p ${e} -o ppid=`,{encoding:"utf-8",stdio:"pipe"});return parseInt(t.trim())}if("win32"===process.platform)try{let t=(0,iS.execSync)(`powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -Command "(Get-CimInstance Win32_Process -Filter \\"ProcessId=${e}\\").ParentProcessId"`,{encoding:"utf-8",stdio:"pipe",windowsHide:!0}),r=parseInt(t.trim());if(!isNaN(r))return r}catch{try{let t=(0,iS.execSync)(`wmic process where processid=${e} get parentprocessid`,{encoding:"utf-8",stdio:"pipe",windowsHide:!0}).split("\n");if(t.length>=2)return parseInt(t[1].trim())}catch{}}}catch{}return null}isIDEProcessAncestor(e){if(!this.isProcessRunning(e))return!1;if(!this.isInIDETerminal())return!0;try{let t=process.ppid;for(let r=0;r<10;r++){if(t===e)return!0;if(0===t||1===t)break;let r=this.getParentPid(t);if(!r||r===t)break;t=r}return!1}catch{return!1}}detectTerminalFromDisplayName(e){let t=e.toLowerCase();return t.includes("visual studio code")?"vscode":"cursor"===t?"cursor":"windsurf"===t?"windsurf":t.includes("vscodium")?"codium":t.includes("intellij")?"intellij":t.includes("pycharm")?"pycharm":t.includes("webstorm")?"webstorm":t.includes("phpstorm")?"phpstorm":t.includes("rubymine")?"rubymine":t.includes("clion")?"clion":t.includes("goland")?"goland":t.includes("rider")?"rider":t.includes("datagrip")?"datagrip":t.includes("android studio")?"androidstudio":t.includes("fleet")?"fleet":null}inferIDEKindFromName(e){let t=this.detectTerminalFromDisplayName(e);if(!t)return;let r=iC[t];return r?.ideKind}};ide_detector_decorate([(0,tM.Autowired)(tM.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(tr=void 0!==tM.Logger&&tM.Logger)?tr:Object)],iE.prototype,"logger",void 0),iE=ide_detector_decorate([(0,tM.Component)(iw.JI)],iE);var ik=r(46047),ij=r.n(ik);let NodeWebSocketTransport=class NodeWebSocketTransport{constructor(e){if(this.started=!1,this.onBunMessage=e=>{try{let t="string"==typeof e.data?e.data:String(e.data),r=JSON.parse(t);this.onmessage?.(r)}catch(e){this.handleError(e)}},this.onBunError=e=>{let t=e.message??"WebSocket error";this.handleError(Error(t))},this.onBunClose=()=>{this.handleCloseCleanup()},this.onNodeMessage=e=>{try{let t=JSON.parse(e.toString("utf-8"));this.onmessage?.(t)}catch(e){this.handleError(e)}},this.onNodeError=e=>{this.handleError(e)},this.onNodeClose=()=>{this.handleCloseCleanup()},this.ws=e,this.isBun=void 0!==globalThis.Bun,this.opened=new Promise((e,t)=>{if(1===this.ws.readyState)return void e();if(this.isBun){let r=this.ws,onOpen=()=>{r.removeEventListener("open",onOpen),r.removeEventListener("error",onError),e()},onError=e=>{r.removeEventListener("open",onOpen),r.removeEventListener("error",onError),t(Error(`WebSocket error: ${e.message??"unknown"}`))};r.addEventListener("open",onOpen),r.addEventListener("error",onError)}else{let r=this.ws;r.once("open",()=>e()),r.once("error",e=>t(e))}}),this.isBun){const e=this.ws;e.addEventListener("message",this.onBunMessage),e.addEventListener("error",this.onBunError),e.addEventListener("close",this.onBunClose)}else{const e=this.ws;e.on("message",this.onNodeMessage),e.on("error",this.onNodeError),e.on("close",this.onNodeClose)}}handleError(e){this.onerror?.(e instanceof Error?e:Error("Failed to process message"))}handleCloseCleanup(){if(this.onclose?.(),this.isBun){let e=this.ws;e.removeEventListener("message",this.onBunMessage),e.removeEventListener("error",this.onBunError),e.removeEventListener("close",this.onBunClose)}else{let e=this.ws;e.off("message",this.onNodeMessage),e.off("error",this.onNodeError),e.off("close",this.onNodeClose)}}async start(){if(this.started)throw Error("Transport already started");if(await this.opened,1!==this.ws.readyState)throw Error("WebSocket failed to open");this.started=!0}async close(){(1===this.ws.readyState||0===this.ws.readyState)&&this.ws.close(),this.handleCloseCleanup()}async send(e){if(1!==this.ws.readyState)throw Error("WebSocket is not open");let t=JSON.stringify(e);return this.isBun?void this.ws.send(t):new Promise((e,r)=>{this.ws.send(t,t=>{t?(this.handleError(t),r(t)):e()})})}};var iR=r(69431),ide_mcp_server_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},ide_mcp_server_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iA=class{constructor(){this.transport=null,this.connected=!1}async connect(e){if(this.connected)throw Error("Already connected to IDE");if(await (0,oh._Y)(),this.client||(this.client=new oh.Kj({name:"codebuddy-code",version:"1.0.0"},{capabilities:{}})),"ws-ide"===e.type)await this.connectWebSocket(e);else if("sse-ide"===e.type)await this.connectSSE(e);else throw Error(`Unknown transport type: ${e.type}`);await this.sendIDEConnectedNotification(),this.connected=!0}async connectWebSocket(e){let t;this.logger.info(`Connecting to IDE via WebSocket: ${e.url}`);let r={"User-Agent":"CodeBuddyCode/1.0",...e.authToken?{"X-Claude-Code-Ide-Authorization":e.authToken}:{}};void 0!==globalThis.Bun?t=new globalThis.WebSocket(e.url,{protocols:["mcp"],headers:r}):(t=new(ij())(e.url,["mcp"],{headers:r})).on("unexpected-response",(e,t)=>{let r="",o=!1,log=()=>{o||(o=!0,this.logger.error(`IDE WebSocket upgrade rejected: status=${t.statusCode} headers=${JSON.stringify(t.headers)} body=${r.slice(0,500)}`))};t.on("data",e=>{r.length<500&&(r+=e.toString("utf-8"))}),t.on("end",log),t.on("close",log),t.on("aborted",log),t.on("error",()=>{})}),this.transport=new NodeWebSocketTransport(t),await this.client.connect(this.transport),this.logger.info("WebSocket connection established")}async connectSSE(e){throw this.logger.info(`Connecting to IDE via SSE: ${e.url}`),Error("SSE transport not implemented. Use WebSocket (ws-ide) instead.")}async sendIDEConnectedNotification(){await this.client.notification({method:"ide_connected",params:{timestamp:Date.now(),version:"1.0.0",pid:process.pid}})}setSelectionChangedHandler(e){this.client.setNotificationHandler(iw.nW,e)}setAtMentionedHandler(e){this.client.setNotificationHandler(iw.VL,e)}withCurrentPropagationMeta(e){let t=(0,iR.RX)();return(0,iR._8)(t)?{...e,_meta:t}:e}async openFile(e){return this.ensureConnected(),await this.client.callTool(this.withCurrentPropagationMeta({name:"openFile",arguments:e}))}async openDiff(e){this.ensureConnected();let t=await this.client.callTool(this.withCurrentPropagationMeta({name:"openDiff",arguments:e}),oh.TF,{timeout:tU.McpUtils.getToolTimeout()});if(Array.isArray(t.content)){let r=t.content[0]?.text;if("FILE_SAVED"===r)return{accepted:!0,finalContent:t.content[1]?.text};if("TAB_CLOSED"===r)return{accepted:!0,finalContent:e.new_file_contents};if("DIFF_REJECTED"===r)return{accepted:!1}}let r=Array.isArray(t.content)?t.content[0]?.text:"unknown";throw this.logger.error(`IDE openDiff unexpected response format: status=${r}, isError=${t.isError}, result=${JSON.stringify(t)}`),Error(`Unexpected diff response format. Status: ${r}, isError: ${t.isError}`)}async getDiagnostics(e={}){return this.ensureConnected(),await this.client.callTool(this.withCurrentPropagationMeta({name:"getDiagnostics",arguments:e}))}async closeAllDiffTabs(){this.ensureConnected(),await this.client.callTool(this.withCurrentPropagationMeta({name:"closeAllDiffTabs",arguments:{}}))}async closeTab(e){this.ensureConnected(),await this.client.callTool(this.withCurrentPropagationMeta({name:"close_tab",arguments:e}))}async close(){this.connected&&(await this.client.close(),this.connected=!1,this.transport=null)}isConnected(){return this.connected}ensureConnected(){if(!this.connected)throw Error("Not connected to IDE. Call connect() first.")}};ide_mcp_server_decorate([(0,tM.Autowired)(tM.Logger),ide_mcp_server_metadata("design:type","function"==typeof(to=void 0!==tM.Logger&&tM.Logger)?to:Object)],iA.prototype,"logger",void 0),iA=ide_mcp_server_decorate([(0,tM.Component)(iw.Yc),ide_mcp_server_metadata("design:paramtypes",[])],iA);var ide_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},ide_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iM=class{constructor(){this.connectionStateSubject=new oV.t({state:iw.y.DISCONNECTED,timestamp:Date.now()}),this.ideServerSubject=new oL.B7,this.selectionChangedSubject=new oV.t(void 0),this.atMentionedSubject=new oL.B7,this.currentIDE=null,this.autoConnectAttempted=!1}async initialize(){"1"!==process.env.CODEBUDDY_DISABLE_IDE&&await this.autoConnectIfInIDETerminal()}async autoConnectIfInIDETerminal(){try{if(!this.detector.isInIDETerminal())return;let e=this.detector.getIDENameFromEnvironment();this.logger.info(`Detected running in ${e||"IDE"} terminal, attempting auto-connect...`),this.autoConnectAttempted=!0,await this.autoConnect(!0)?this.logger.info(`Successfully auto-connected to ${this.currentIDE?.name||"IDE"}`):this.logger.info("No matching IDE found for current workspace")}catch(e){this.logger.debug("IDE auto-connect failed:",e)}}setAutoConnectRequested(e){!e||this.isConnected()||this.autoConnectAttempted||(this.autoConnectAttempted=!0,this.performAutoConnect().catch(e=>{this.logger.debug("IDE auto-connect failed:",e)}))}async performAutoConnect(){try{this.logger.info("--ide flag provided, attempting auto-connect..."),await this.autoConnect(!0)?this.logger.info(`Successfully auto-connected to ${this.currentIDE?.name||"IDE"}`):this.logger.info("No matching IDE found for current workspace")}catch(e){this.logger.debug("IDE auto-connect failed:",e)}}getConnectionState(){return this.connectionStateSubject.value}getCurrentIDE(){return this.currentIDE}async detectAvailableIDEs(e=!0){return await this.detector.detectAvailableIDEs(e)}async autoConnect(e=!0){try{this.emitState(iw.y.CONNECTING);let t=await this.detectAvailableIDEs(e);if(0===t.length)return this.logger.info("No IDEs detected"),this.emitState(iw.y.DISCONNECTED),!1;this.logger.info(`Found ${t.length} IDE(s):`),t.forEach((e,t)=>{this.logger.info(` ${t+1}. ${e.name} (${e.url})`)});let r=t.filter(e=>e.isValid);if(0===r.length)return this.logger.debug(`No IDE workspace matches cwd (${process.cwd()}). Candidates: ${t.map(e=>`${e.name}@${e.url}`).join(", ")||"none"}`),this.emitState(iw.y.DISCONNECTED),!1;if(r.length>1)return this.logger.debug(`Multiple IDEs (${r.length}) match current workspace; skipping auto-connect, use /ide to choose.`),this.emitState(iw.y.DISCONNECTED),!1;let o=r[0];return this.logger.info(`
16
- Connecting to: ${o.name}`),await this.connectToIDE(o),!0}catch(e){return this.logger.error("Auto-connect failed:",e),this.emitState(iw.y.ERROR,void 0,e),!1}}async connectToIDE(e){try{this.mcpServer.isConnected()&&(this.logger.info("Already connected to an IDE, disconnecting first"),await this.disconnect()),this.emitState(iw.y.CONNECTING,e);let t={type:e.url.startsWith("ws:")?"ws-ide":"sse-ide",url:e.url,ideName:e.name,authToken:e.authToken,ideRunningInWindows:e.ideRunningInWindows};await this.mcpServer.connect(t),this.mcpServer.setSelectionChangedHandler(e=>{this.selectionChangedSubject.next(e.params)}),this.mcpServer.setAtMentionedHandler(e=>{this.atMentionedSubject.next(e.params)}),this.currentIDE=e,this.logger.info("\nSuccessfully connected to IDE!"),this.emitState(iw.y.CONNECTED,e),this.ideServerSubject.next(this.mcpServer)}catch(t){throw this.logger.error("Failed to connect to IDE:",t),this.emitState(iw.y.ERROR,e,t),t}}async disconnect(){try{this.mcpServer.isConnected()&&(await this.mcpServer.close(),this.logger.info("Disconnected from IDE")),this.currentIDE=null,this.selectionChangedSubject.next(void 0),this.emitState(iw.y.DISCONNECTED)}catch(e){this.logger.error("Error during disconnect:",e),this.emitState(iw.y.ERROR,void 0,e)}}setAutoReconnect(e){this.logger.info(`Auto-reconnect ${e?"enabled":"disabled"}`)}getMcpServer(){return this.mcpServer}isConnected(){return this.mcpServer.isConnected()}emitState(e,t,r){let o={state:e,ide:t||this.currentIDE||void 0,server:e===iw.y.CONNECTED?this.mcpServer:void 0,error:r,timestamp:Date.now()};this.connectionStateSubject.next(o)}async dispose(){await this.disconnect(),this.connectionStateSubject.complete(),this.ideServerSubject.complete(),this.selectionChangedSubject.complete(),this.atMentionedSubject.complete()}};ide_service_decorate([(0,tM.Autowired)(iw.JI),ide_service_metadata("design:type","function"==typeof(ti=void 0!==iw.JI&&iw.JI)?ti:Object)],iM.prototype,"detector",void 0),ide_service_decorate([(0,tM.Autowired)(iw.Yc),ide_service_metadata("design:type","function"==typeof(tn=void 0!==iw.Yc&&iw.Yc)?tn:Object)],iM.prototype,"mcpServer",void 0),ide_service_decorate([(0,tM.Autowired)(tM.Logger),ide_service_metadata("design:type","function"==typeof(ts=void 0!==tM.Logger&&tM.Logger)?ts:Object)],iM.prototype,"logger",void 0),iM=ide_service_decorate([(0,tM.Component)(iw.OL,tM.ApplicationLifecycle)],iM);var ide_auto_connect_middleware_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 iT=class{constructor(){this.priority=iw.f1}async handle(e,t){if("1"===process.env.CODEBUDDY_DISABLE_IDE)return t();let r=e.request.body;!0===r?.ide&&this.ideService.setAutoConnectRequested(!0),await t()}};ide_auto_connect_middleware_decorate([(0,tM.Autowired)(iw.OL),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(ta=void 0!==iw.OL&&iw.OL)?ta:Object)],iT.prototype,"ideService",void 0),iT=ide_auto_connect_middleware_decorate([(0,tM.Component)(oM.Middleware)],iT),r(71893),r(62827);var iD=r(1226),models_controller_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},models_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},models_controller_param=function(e,t){return function(r,o){t(r,o,e)}};function getModelsPath(e=!0){return e?(0,tW.join)(tU.PathUtils.getHomeDir(),"models.json"):(0,tW.join)(process.cwd(),".codebuddy","models.json")}async function readModelsJson(e,t){try{return parseModelsJson(await e.read())}catch(e){return console.error(`Failed to read models.json from ${t}:`,e),{models:[]}}}function parseModelsJson(e){return!e||"object"!=typeof e||Array.isArray(e)?{models:[]}:{models:Array.isArray(e.models)?e.models:[],availableModels:Array.isArray(e.availableModels)?e.availableModels.filter(e=>"string"==typeof e):void 0}}let iI=class{reply(e){let t=oM.Context.getCurrent();t.response.setHeader("Content-Type","application/json; charset=utf-8"),t.response.end(JSON.stringify(e))}async listCustomModels(e){let t=getModelsPath(!1!==e.global),r=this.createStorage(t,!1!==e.global),o=await readModelsJson(r,t);this.log(`Listed custom models from: ${t}`,{models:o.models.length}),this.reply({models:o.models||[],availableModels:o.availableModels,path:t})}async saveCustomModel(e){let t,r=getModelsPath(!1!==e.global),o=this.createStorage(r,!1!==e.global);await o.update(r=>{t=parseModelsJson(r);let o=e.previousId?t.models.findIndex(t=>t.id===e.previousId):t.models.findIndex(t=>t.id===e.model.id);return o>=0?(t.models[o]=e.model,this.log(`Updated model: ${e.model.id}`,{previousId:e.previousId})):(t.models.push(e.model),this.log(`Added new model: ${e.model.id}`)),!1!==e.visible&&(t.availableModels??=[],t.availableModels.includes(e.model.id)||t.availableModels.push(e.model.id)),t}),await this.syncProductConfiguration(),this.reply({models:t.models,availableModels:t.availableModels,path:r})}async deleteCustomModel(e){let t,r=getModelsPath(!1!==e.global),o=this.createStorage(r,!1!==e.global);await o.update(r=>{let o=(t=parseModelsJson(r)).models.findIndex(t=>t.id===e.id);return o>=0?(t.models.splice(o,1),this.log(`Deleted model: ${e.id}`)):this.log(`Model not found: ${e.id}`),t.availableModels&&(t.availableModels=t.availableModels.filter(t=>t!==e.id)),t}),await this.syncProductConfiguration(),this.reply({models:t.models,availableModels:t.availableModels,path:r})}async syncProductConfiguration(){if(this.productManager)try{await this.productManager.sync(!0)}catch(e){this.logger?.warn?this.logger.warn("[ModelsController] Failed to sync product configuration after custom model update",e):console.warn("[ModelsController] Failed to sync product configuration after custom model update",e)}}createStorage(e,t){return new iD.ModelsJsonStorage({filePath:e,scope:t?"user":"project",logger:this.logger?{warn:e=>this.logger?.warn?.(e),info:e=>this.logger?.info?.(e)}:console,processRole:"cbc"})}log(e,t){this.logger?t?this.logger.debug(`[ModelsController] ${e}`,t):this.logger.debug(`[ModelsController] ${e}`):console.log(`[ModelsController] ${e}`,t||"")}};models_controller_decorate([(0,tM.Autowired)(tM.Logger),(0,tM.Optional)(),models_controller_metadata("design:type","function"==typeof(tc=void 0!==tM.Logger&&tM.Logger)?tc:Object)],iI.prototype,"logger",void 0),models_controller_decorate([(0,tM.Autowired)(tY.ProductManager),(0,tM.Optional)(),models_controller_metadata("design:type","function"==typeof(tl=void 0!==tY.ProductManager&&tY.ProductManager)?tl:Object)],iI.prototype,"productManager",void 0),models_controller_decorate([(0,oA.Post)("/custom/list"),models_controller_param(0,(0,oA.Body)()),models_controller_metadata("design:type",Function),models_controller_metadata("design:paramtypes",[Object]),models_controller_metadata("design:returntype","function"==typeof(td="u">typeof Promise&&Promise)?td:Object)],iI.prototype,"listCustomModels",null),models_controller_decorate([(0,oA.Post)("/custom/save"),models_controller_param(0,(0,oA.Body)()),models_controller_metadata("design:type",Function),models_controller_metadata("design:paramtypes",[Object]),models_controller_metadata("design:returntype","function"==typeof(tu="u">typeof Promise&&Promise)?tu:Object)],iI.prototype,"saveCustomModel",null),models_controller_decorate([(0,oA.Post)("/custom/delete"),models_controller_param(0,(0,oA.Body)()),models_controller_metadata("design:type",Function),models_controller_metadata("design:paramtypes",[Object]),models_controller_metadata("design:returntype","function"==typeof(tp="u">typeof Promise&&Promise)?tp:Object)],iI.prototype,"deleteCustomModel",null),iI=models_controller_decorate([(0,oA.Controller)("models")],iI),r(71054),r(43482),r(77079),r(90424),r(3857),r(47385),r(19472);var iL=r(91882),iF=r(64205),storage_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 i$=0,ix=class{constructor(){this.scopeMutexes=new Map,this.cache=new Map}static{th=this}static{this.CACHE_TTL=6e4}async get(e,t=iL.YM.GLOBAL,r){return(await this.readWithCache(this.getFilePath(t,r)))[e]}async getNamespace(e,t=iL.YM.GLOBAL,r){let o=await this.readWithCache(this.getFilePath(t,r)),i=e+".",n={};for(let[e,t]of Object.entries(o))e.startsWith(i)&&(n[e.slice(i.length)]=t);return n}async set(e,t,r=iL.YM.GLOBAL,o){let i=this.getFilePath(r,o);await this.withLock(i,async()=>{let r=await this.readBaseline(i);r[e]=t,await this.writeToDisk(r,i)})}async setMany(e,t=iL.YM.GLOBAL,r){let o=this.getFilePath(t,r);await this.withLock(o,async()=>{let t=await this.readBaseline(o);for(let{key:r,value:o}of e)null==o?delete t[r]:t[r]=o;await this.writeToDisk(t,o)})}async remove(e,t=iL.YM.GLOBAL,r){let o=this.getFilePath(t,r);await this.withLock(o,async()=>{let t=await this.readBaseline(o);delete t[e],await this.writeToDisk(t,o)})}async list(e,t){if(e)return{...await this.readWithCache(this.getFilePath(e,t))};let r=await this.readWithCache(this.getFilePath(iL.YM.GLOBAL)),o=await this.readWithCache(this.getFilePath(iL.YM.WORKSPACE,t));return{...r,...o}}getFilePath(e,t){if(e===iL.YM.GLOBAL)return(0,tW.join)(tU.PathUtils.getHomeDir(),iL.oM);if(t){let e=tU.PathUtils.compressPath(tU.PathUtils.canonicalizeStorePath(t));return(0,tW.join)(tU.PathUtils.getHomeProjectsDir(),e,iL.oM)}return(0,tW.join)(tU.PathUtils.getHomeProjectDir(),iL.oM)}getMutex(e){let t=this.scopeMutexes.get(e);return t||(t=new iF.eu,this.scopeMutexes.set(e,t)),t}async withLock(e,t){return this.getMutex(e).runExclusive(t)}async readWithCache(e){let t=this.cache.get(e);if(t&&Date.now()<t.expires)return t.data;let r=await this.readFromDisk(e);return this.cache.set(e,{data:r,expires:Date.now()+th.CACHE_TTL}),r}async readFromDisk(e){try{return await this.readBaseline(e)}catch(t){return this.logger.warn?.(`[Storage] Failed to read ${e}: ${t.message}`),{}}}async readBaseline(e){let t;try{t=await (0,tH.readFile)(e,"utf-8")}catch(e){if("ENOENT"===e.code)return{};throw e}try{let r=JSON.parse(t);if("object"==typeof r&&null!==r&&!Array.isArray(r))return r;this.logger.warn?.(`[Storage] Invalid data format in ${e}, resetting to empty`)}catch(t){this.logger.warn?.(`[Storage] Corrupt JSON in ${e}, resetting to empty: ${t.message}`)}return{}}async writeToDisk(e,t){try{await (0,tH.mkdir)((0,tW.dirname)(t),{recursive:!0});let r=`${t}.${Date.now()}-${process.pid}-${i$++}.tmp`;await (0,tH.writeFile)(r,JSON.stringify(e,null,2),"utf-8");try{await (0,tH.rename)(r,t)}catch(e){try{await (0,tH.unlink)(r)}catch{}throw e}this.cache.set(t,{data:{...e},expires:Date.now()+th.CACHE_TTL})}catch(e){throw this.logger.error?.(`[Storage] Failed to write ${t}: ${e.message}`),e}}};storage_service_decorate([(0,tM.Autowired)(tM.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(tg=void 0!==tM.Logger&&tM.Logger)?tg:Object)],ix.prototype,"logger",void 0),ix=th=storage_service_decorate([(0,tM.Component)(iL.n$)],ix),r(79003);var iU=r(20258);r(79809),r(62797),r(71832),r(98660),r(55429),r(76275);var sandbox_rules_controller_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},sandbox_rules_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iN=class{async sync(e){let t=oM.Context.getCurrent();if(!(0,iU.HA)(e)){t.response.statusCode=400,t.response.end(JSON.stringify({error:"Request body must be a SandboxRulesDelta object with network/file/program as objects"}));return}if(!this.sandboxShellService){this.logger.info("[SandboxRulesSync] SandboxShellService not available, skipping","SandboxRulesController"),t.response.statusCode=200,t.response.end(JSON.stringify({synced:!1}));return}try{e.refresh&&this.settingsManager.clearCache(t$.I7.USER),await this.sandboxShellService.applyRulesDelta(e),t.response.statusCode=200,t.response.end(JSON.stringify({synced:!0}))}catch(e){this.logger.error("[SandboxRulesSync] applyRulesDelta failed:",e),t.response.statusCode=500,t.response.end(JSON.stringify({error:e instanceof Error?e.message:"Unknown error"}))}}};sandbox_rules_controller_decorate([(0,tM.Autowired)(t$.Vr),sandbox_rules_controller_metadata("design:type",Object)],iN.prototype,"settingsManager",void 0),sandbox_rules_controller_decorate([(0,tM.Autowired)(iU.TN),(0,tM.Optional)(),sandbox_rules_controller_metadata("design:type",Object)],iN.prototype,"sandboxShellService",void 0),sandbox_rules_controller_decorate([(0,tM.Autowired)(tT.Logger),sandbox_rules_controller_metadata("design:type","function"==typeof(tf=void 0!==tT.Logger&&tT.Logger)?tf:Object)],iN.prototype,"logger",void 0),sandbox_rules_controller_decorate([(0,oA.Post)("sync"),(n=(0,oA.Body)(),function(e,t){n(e,t,0)}),sandbox_rules_controller_metadata("design:type",Function),sandbox_rules_controller_metadata("design:paramtypes",[Object]),sandbox_rules_controller_metadata("design:returntype","function"==typeof(tm="u">typeof Promise&&Promise)?tm:Object)],iN.prototype,"sync",null),iN=sandbox_rules_controller_decorate([(0,oA.Controller)("internal/sandbox-rules")],iN),r(79652);let iB=Symbol("StatusService"),iH=Symbol("StatusManager");var iW=r(22470),status_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 iK=class{async executeStatusLine(e){try{let t=(await this.settingsManager.list()).statusLine;if(!t||!t.command)return{text:"",success:!1,error:"No status line command configured"};let r=this.expandPath(t.command);return await this.executeCommand(r,e)}catch(e){return{text:"",success:!1,error:`Failed to execute status line: ${e.message}`}}}async isStatusLineConfigured(){try{let e=(await this.settingsManager.list()).statusLine;if(!e||!e.command)return!1;return!0}catch{return!1}}expandPath(e){return e.startsWith("~/")?(0,tW.resolve)(process.env.HOME||"",e.slice(2)):e.startsWith("./")?(0,tW.resolve)(r3.P.getWorkDir(),e):e}async executeCommand(e,t){return new Promise(r=>{let o=(0,iS.spawn)(e,[],{stdio:["pipe","pipe","pipe"],shell:!0,env:(0,iW.Pz)({baseEnv:process.env,projectDir:r3.P.getWorkDir(),session:{id:t.session_id},model:t.model.id}),windowsHide:!0,timeout:5e3}),i="",n="";o.stdin.write(JSON.stringify(t,null,2)),o.stdin.end(),o.stdout.on("data",e=>{i.length<10240&&(i+=e.toString())}),o.stderr.on("data",e=>{n+=e.toString()}),o.on("close",e=>{0===e?r({text:i.trim().split("\n").flatMap(e=>e.trim()||[]).slice(0,3).join("\n"),success:!0}):e&&r({text:"",success:!1,error:`Command exited with code ${e}: ${n}`})}),o.on("error",e=>{r({text:"",success:!1,error:`Failed to execute command: ${e.message}`})}),o.on("timeout",()=>{o.kill(),r({text:"",success:!1,error:"Command execution timeout"})})})}};status_service_decorate([(0,tM.Autowired)(r0.Vr),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(ty=void 0!==r0.Vr&&r0.Vr)?ty:Object)],iK.prototype,"settingsManager",void 0),iK=status_service_decorate([(0,tM.Component)(iB)],iK);var iq=r(48574),iz=r(78290),iV=r(30311),iY=r(56097),iJ=r(438),status_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},status_manager_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iG=class{constructor(){this.onStatusLineChangedEmitter=new tM.Emitter,this.onStatusLineChanged=this.onStatusLineChangedEmitter.event,this.isRunning=!1}start(){this.isRunning||(this.isRunning=!0,this.logger.info("Status line manager started"),this.sessionSubscription=this.sessionManager.sessionSubject.subscribe(e=>{this.scheduleUpdate(),this.resultSubscription?.unsubscribe(),this.permissionModeSubscription?.unsubscribe(),this.resultSubscription=e?.resultSubject.subscribe(()=>{this.scheduleUpdate()}),this.permissionModeSubscription=e?.permissionModeSubject?.subscribe(()=>{this.scheduleUpdate()})}),this.settingsSubscription=this.settingsManager.onDidChange(()=>{this.scheduleUpdate()}),this.costSubscription=this.costService.onDidChangeCost(()=>{this.scheduleUpdate()}),this.scheduleUpdate())}stop(){this.isRunning&&(this.isRunning=!1,this.sessionSubscription?.unsubscribe(),this.resultSubscription?.unsubscribe(),this.permissionModeSubscription?.unsubscribe(),this.settingsSubscription?.dispose(),this.costSubscription?.dispose(),this.sessionSubscription=void 0,this.resultSubscription=void 0,this.permissionModeSubscription=void 0,this.settingsSubscription=void 0,this.costSubscription=void 0,this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=void 0),this.logger.info("Status line manager stopped"))}getCurrentStatusLine(){return this.currentStatusLine}async updateStatusLine(){try{if(!await this.statusService.isStatusLineConfigured())return void this.setStatusLine({text:"",success:!1,error:"Status line not configured"});let e=await this.collectStatusLineData(),t=await this.statusService.executeStatusLine(e);this.setStatusLine(t)}catch(e){this.logger.error("Failed to update status line:",e),this.setStatusLine({text:"",success:!1,error:`Update failed: ${e.message}`})}}scheduleUpdate(){this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>{this.updateStatusLine()},300)}setStatusLine(e){this.currentStatusLine=e,this.onStatusLineChangedEmitter.fire(e)}async collectStatusLineData(){let e=this.sessionManager.sessionSubject.value,t=tU.PathUtils.getWorkDir(),r=this.getProjectDir(),o=e?.requestOptions?.model??e?.options?.model??await this.settingsManager.get("model")??"",i=await this.getVersion(),n=this.extractCostFromSession(e),s=await this.getOutputStyleName(e),a=await this.getAddedDirs(),c=await this.collectContextWindowData(e,o),l=await this.collectVimData();return{hook_event_name:"Status",session_id:e?.id||"unknown",session_name:e?tU.MessageContentUtils.getSessionName(e.history):void 0,transcript_path:this.getTranscriptPath(e?.id),cwd:t,permission_mode:e?.permissionModeSubject?.value||"default",model:{id:o,display_name:await this.getModelDisplayName(o)},workspace:{current_dir:t,project_dir:r,added_dirs:a},version:i,output_style:{name:s},cost:n,context_window:c,exceeds_200k_tokens:(c.current_usage?.input_tokens||0)>2e5,...l,...this.collectTeamData()}}getProjectDir(){let e=tU.PathUtils.getWorkDir(),t=e;for(;"/"!==t;){try{let e=(0,tW.join)(t,"package.json");return r(79896).accessSync(e),t}catch{}try{return r(79896).accessSync((0,tW.join)(t,".git")),t}catch{}let e=(0,tW.join)(t,"..");if(e===t)break;t=e}return e}getTranscriptPath(e){if(e)return this.sessionStore.getSessionFilePath(e)}async getVersion(){try{return tU.PackageUtils.getCurrentPackageJson().version||"0.0.0"}catch{return"0.0.0"}}async getModelDisplayName(e){let t=(await this.productManager.waitConfiguration()).models||[];return t.find(t=>t.id===e)?.name||e}async getOutputStyleName(e){try{let t=e?.options?.outputStyle;if(t)return t;return await this.settingsManager.get("outputStyle",r0.I7.USER)||"default"}catch{return"default"}}async getAddedDirs(){try{return await this.workspaceFolderManager.getWorkspaceFolders()}catch{return[]}}async collectContextWindowData(e,t){let r,o;if(!e)return{total_input_tokens:0,total_output_tokens:0,context_window_size:0,used_percentage:null,remaining_percentage:null};let i=e.usage?.inputTokens||0,n=e.usage?.outputTokens||0;try{r=tU.UsageUtils.getLatestUsage(e)}catch{}let s=r?.inputTokens||0,a=0;try{let t=await this.agentManager.getDefault(),r=await tU.ModelUtils.resolveModelForTokenLimits(this.agentManager,e,t.name);a=(0,iz.Hr)(e,r,this.sessionManager)||0}catch(e){this.logger.error("Failed to get model context window size:",e)}let c=null,l=null;if(a>0&&s>0){let e=s/a;c=Math.round(1e4*e)/100,l=Math.max(0,Math.round((1-e)*1e4)/100)}if(r){let e=this.costService.getTokenUsageByModel(),t=0,i=0;for(let r of Object.values(e))t+=r.cachedReadTokens||0,i+=r.cachedWriteTokens||0;o={input_tokens:r.inputTokens||0,output_tokens:r.outputTokens||0,cache_creation_input_tokens:i,cache_read_input_tokens:t}}return{total_input_tokens:i,total_output_tokens:n,context_window_size:a,current_usage:o,used_percentage:c,remaining_percentage:l}}async collectVimData(){try{let e=tM.ContainerUtil.get(iJ.u),t=await e.isEnabled();if(!t)return{};return{vim:{enabled:t}}}catch{return{}}}extractCostFromSession(e){let t=this.costService.getAllStatistics();return{total_cost_usd:0,total_duration_ms:t.runningTime,total_api_duration_ms:t.apiDuration,total_lines_added:t.fileChangeStats.totalAddedLines,total_lines_removed:t.fileChangeStats.totalDeletedLines}}collectTeamData(){try{let e=tM.ContainerUtil.get(iq.TeamManager);if(!e.isInTeam())return{};let t=e.getTeam();if(!t)return{};let r=(0,iY.getTeamMemberRegistry)().getActive().length,o=t.members.filter(e=>"team-lead"!==e.name).length;return{team:{name:t.name,active_members:r,total_members:o}}}catch{return{}}}};status_manager_decorate([(0,tM.Autowired)(tY.ProductManager),status_manager_metadata("design:type","function"==typeof(t_=void 0!==tY.ProductManager&&tY.ProductManager)?t_:Object)],iG.prototype,"productManager",void 0),status_manager_decorate([(0,tM.Autowired)(iB),status_manager_metadata("design:type","function"==typeof(tv=void 0!==iB&&iB)?tv:Object)],iG.prototype,"statusService",void 0),status_manager_decorate([(0,tM.Autowired)(io.Cv),status_manager_metadata("design:type","function"==typeof(tb=void 0!==io.Cv&&io.Cv)?tb:Object)],iG.prototype,"sessionManager",void 0),status_manager_decorate([(0,tM.Autowired)(r0.Vr),status_manager_metadata("design:type","function"==typeof(tw=void 0!==r0.Vr&&r0.Vr)?tw:Object)],iG.prototype,"settingsManager",void 0),status_manager_decorate([(0,tM.Autowired)(t9.T_),status_manager_metadata("design:type","function"==typeof(tS=void 0!==t9.T_&&t9.T_)?tS:Object)],iG.prototype,"costService",void 0),status_manager_decorate([(0,tM.Autowired)(io.c9),status_manager_metadata("design:type","function"==typeof(tP=void 0!==io.c9&&io.c9)?tP:Object)],iG.prototype,"sessionStore",void 0),status_manager_decorate([(0,tM.Autowired)(tD.VaB),status_manager_metadata("design:type","function"==typeof(tC=void 0!==tD.VaB&&tD.VaB)?tC:Object)],iG.prototype,"agentManager",void 0),status_manager_decorate([(0,tM.Autowired)(iV.z),status_manager_metadata("design:type","function"==typeof(tO=void 0!==iV.z&&iV.z)?tO:Object)],iG.prototype,"workspaceFolderManager",void 0),status_manager_decorate([(0,tM.Autowired)(tT.Logger),status_manager_metadata("design:type","function"==typeof(tE=void 0!==tT.Logger&&tT.Logger)?tE:Object)],iG.prototype,"logger",void 0),iG=status_manager_decorate([(0,tM.Component)(iH)],iG);let iX=Symbol("TokenUsageThresholdsService");var token_usage_thresholds_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},token_usage_thresholds_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iZ=class{async calculateTokenTokenUsageThresholds(e){try{let t=await this.productManager.waitConfiguration(),r=t?.tokenUsageThresholds?.inputTokens||{},o=tU.UsageUtils.getLatestUsage(e);if(!o)return;let i=await this.agentManager.getDefault(),n=await tU.ModelUtils.resolveModelForTokenLimits(this.agentManager,e,i.name),s=(0,iz.Hr)(e,n,this.sessionManager);if(!s)return;let a=o.inputTokens||0,c=a/s,{emergency:l,critical:d,warning:u}=r,p="info";return l&&c>=l?p="emergency":d&&c>=d?p="critical":u&&c>=u&&(p="warning"),{total:s,used:a,usage:Math.min(c,1),usageLevel:p,modelId:n.id,modelName:n.name||"",maxInputTokens:s}}catch(e){this.logger.error(`calculate session TokenTokenUsageThresholds error : ${e}`);return}}};token_usage_thresholds_service_decorate([(0,tM.Autowired)(tD.VaB),token_usage_thresholds_service_metadata("design:type","function"==typeof(tk=void 0!==tD.VaB&&tD.VaB)?tk:Object)],iZ.prototype,"agentManager",void 0),token_usage_thresholds_service_decorate([(0,tM.Autowired)(tT.Logger),token_usage_thresholds_service_metadata("design:type","function"==typeof(tj=void 0!==tT.Logger&&tT.Logger)?tj:Object)],iZ.prototype,"logger",void 0),token_usage_thresholds_service_decorate([(0,tM.Autowired)(tY.ProductManager),token_usage_thresholds_service_metadata("design:type","function"==typeof(tR=void 0!==tY.ProductManager&&tY.ProductManager)?tR:Object)],iZ.prototype,"productManager",void 0),token_usage_thresholds_service_decorate([(0,tM.Autowired)(tL.Cv),token_usage_thresholds_service_metadata("design:type","function"==typeof(tA=void 0!==tL.Cv&&tL.Cv)?tA:Object)],iZ.prototype,"sessionManager",void 0),iZ=token_usage_thresholds_service_decorate([(0,tM.Component)(iX)],iZ),r(5391),r(35882),r(89911);let iQ=(0,tM.autoBind)((e,t,r,o)=>{o(tY.ProductConfigBasePath).toDynamicValue(()=>tU.PathUtils.getRootPathSync())})},77079(e,t,r){r.d(t,{I:()=>u});var o,i,n=r(88523),s=r(92735),a=r(38433),c=r(95004),l=r(71054),d=r(84570),__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},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let u=class{constructor(){this.subscriptions=new Map,this.lastProgressUpdate=0,this.PROGRESS_UPDATE_INTERVAL=500}async start(e){if(this.stop(e.id),!1===await this.settingsManager.get("enableTerminalProgressBar")||e.options.print||e.options.acp)return;let t=a.c.detectAsType();if(!c.p.supportsProgressProtocol(t))return;let r=e.interruptionSubject.subscribe(e=>{e?this.updateProgress(c.$.INDETERMINATE):this.clearProgress()});this.subscriptions.set(e.id,r)}stop(e){let t=this.subscriptions.get(e);t&&(t.unsubscribe(),this.subscriptions.delete(e)),this.clearProgress()}updateProgress(e,t=0){let r=Date.now();if(!(r-this.lastProgressUpdate<this.PROGRESS_UPDATE_INTERVAL)&&(this.currentProgressState?.state!==e||this.currentProgressState?.percentage!==t)){this.lastProgressUpdate=r,this.currentProgressState={state:e,percentage:t};try{let r=a.c.detectAsType(),o=c.p.generateProgress(r,e,t);if(!o)return;c.p.needsTmuxWrapping()&&(o=c.p.wrapForTmux(o)),c.p.writeToTerminal(o)}catch(e){this.logger.warn?.("Failed to update progress:",e)}}}clearProgress(){this.currentProgressState&&(this.updateProgress(c.$.CLEAR,0),this.currentProgressState=void 0)}};__decorate([(0,n.Autowired)(s.Logger),__metadata("design:type","function"==typeof(o=void 0!==s.Logger&&s.Logger)?o:Object)],u.prototype,"logger",void 0),__decorate([(0,n.Autowired)(d.Vr),__metadata("design:type","function"==typeof(i=void 0!==d.Vr&&d.Vr)?i:Object)],u.prototype,"settingsManager",void 0),u=__decorate([(0,n.Component)(l.M)],u)},43482(e,t,r){r.d(t,{b:()=>h});var o,i,n=r(88523),s=r(92735),a=r(20131),c=r(84570),l=r(95004),d=r(38433),u=r(71054),__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},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let p=/[\x00-\x1f\x7f-\x9f]/g;function stripControlChars(e){return e.replace(p,"")}let h=class{async sendNotification(e,t="CodeBuddy",r,o){if(this.shouldSendNotification(r))return this.sendToolNotification(e,t,o)}async sendToolNotification(e,t="CodeBuddy",r){if(!(r?.options.print||r?.options.acp))try{let r=await this.settingsManager.get("preferredNotifChannel")??"Auto";if("Disabled"===r)return;await this.dispatchOsc(e,t,r)}catch(e){this.logger.warn?.("Failed to send terminal notification:",e),await this.fallbackToBel()}}async dispatchOsc(e,t,r){let o;if(e=stripControlChars(e),t=stripControlChars(t),"Auto"===r){let r=d.c.detectAsType();o=l.p.selectNotificationProtocol(r).generate(e,t)}else o=this.generateNotificationByChannel(r,e,t);l.p.needsTmuxWrapping()&&(o=l.p.wrapForTmux(o)),l.p.writeToTerminal(o),this.logger.debug?.(`Terminal notification sent: ${e}`)}async fallbackToBel(){try{let e=l.p.generateBEL(),t=l.p.needsTmuxWrapping()?l.p.wrapForTmux(e):e;l.p.writeToTerminal(t)}catch(e){this.logger.error?.("Failed to send fallback BEL notification:",e)}}generateNotificationByChannel(e,t,r){switch(e){case"Ghostty (OSC 777)":return l.p.generateOSC777(r,t);case"Kitty (OSC 99)":return l.p.generateOSC99(t);case"iTerm2 (OSC 9)":{let e=`${r}: ${t}`;return l.p.generateOSC9(e)}case"Terminal Bell (\\a)":default:return l.p.generateBEL();case"iTerm2 w/ Bell":return l.p.generateOSC9(`${r}: ${t}`)+l.p.generateBEL()}}shouldSendNotification(e){return!!e&&[a._n.PERMISSION_PROMPT,a._n.ELICITATION_DIALOG,a._n.IDLE_PROMPT].includes(e)}};__decorate([(0,n.Autowired)(s.Logger),__metadata("design:type","function"==typeof(o=void 0!==s.Logger&&s.Logger)?o:Object)],h.prototype,"logger",void 0),__decorate([(0,n.Autowired)(c.Vr),__metadata("design:type","function"==typeof(i=void 0!==c.Vr&&c.Vr)?i:Object)],h.prototype,"settingsManager",void 0),h=__decorate([(0,n.Component)(u.V)],h)},89911(e,t,r){r.d(t,{Y:()=>m});var o,i,n,s,a=r(88523),c=r(9151),l=r(91943),d=r(16928),u=r(13866),p=r(78290),h=r(28463),g=r(46712),f=r(35882),__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},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let m=class{constructor(){this.initialized=!1,this.cachedAllOutputStyles=[]}initialize(){this.init()}async init(){this.initialized||(this.cachedAllOutputStyles=await this.loadAllOutputStyles(),this.initialized=!0,this.logger.info(`Initialized ${this.cachedAllOutputStyles.length} output styles`))}async reload(){this.initialized=!1,this.cachedAllOutputStyles=[],this.backgroundInitPromise=void 0,await this.init()}async getInitializeSnapshot(){return this.initialized?this.cachedAllOutputStyles:(this.backgroundInitPromise||(this.backgroundInitPromise=this.init().catch(e=>{this.logger.debug("Background output styles init failed",e),this.backgroundInitPromise=void 0})),this.initializeSnapshotPromise||(this.initializeSnapshotPromise=this.loadBuiltInOutputStyles()),this.initializeSnapshotPromise)}async getAllOutputStyles(){return!this.initialized&&(this.backgroundInitPromise&&await this.backgroundInitPromise,this.initialized||await this.init()),this.cachedAllOutputStyles}parseOutputStyleContent(e,t){let r,o="",i="",n=e,s=e.match(/^---\n([\s\S]*?)\n---/);if(s){let t=s[1],a=t.match(/^name:\s*(.+)$/m),c=t.match(/^description:\s*(.+)$/m),l=t.match(/^keep-coding-instructions:\s*(.+)$/m);a&&(o=a[1].trim()),c&&(i=c[1].trim()),l&&(r="true"===l[1].trim().toLowerCase()),n=e.replace(/^---\n[\s\S]*?\n---\n?/,"").trim()}return o||(o=(0,d.parse)(t).name.replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase())),{name:o,description:i,content:n,keepCodingInstructions:r}}async getOutputStyleByName(e){let t=(await this.getAllOutputStyles()).find(t=>t.name.toLowerCase()===e.toLowerCase());if(t){if(!t.content&&t.instructionsTemplate)try{t.content=await this.promptRenderer.render(t.instructionsTemplate)}catch(e){this.logger.error(`Failed to render output style template "${t.instructionsTemplate}":`,e),t.content=""}return t}}async loadBuiltInOutputStyles(){let e=[];try{for(let t of(await this.productManager.waitConfiguration()).outputStyles||[])e.push({name:t.name,description:t.description,content:"",instructionsTemplate:t.instructions,keepCodingInstructions:t.keepCodingInstructions})}catch(t){this.logger.error("Failed to load built-in output styles:",t),e.push({name:"Default",description:`${u.Dt} completes coding tasks efficiently and provides concise responses`,content:""})}return e}async loadAllOutputStyles(){let e=[],t=g.PathUtils.getWorkDir(),r=(0,d.parse)(t).root;for(;t!==r;){let r=[],o=(0,d.join)(t,".codebuddy",f.lM);try{for(let e of(await (0,l.access)(o),(await (0,l.readdir)(o)).filter(e=>e.endsWith(".md")))){let t=(0,d.join)(o,e);try{let e=await (0,l.readFile)(t,"utf-8"),o=this.parseOutputStyleContent(e,t);r.push(o)}catch(e){this.logger.error(`Failed to read output style file ${t}:`,e)}}}catch(e){"ENOENT"!==e.code&&"EACCES"!==e.code&&this.logger.error(`Failed to access output style directory ${o}:`,e)}r.length>0&&e.push(r);let i=(0,d.dirname)(t);if(i===t)break;t=i}let o=e.reverse().flat(),i=[...await this.loadBuiltInOutputStyles(),...o,...await this.loadPluginOutputStyles()],n=new Set,s=[];for(let e of i)n.has(e.name)||(n.add(e.name),s.push(e));return s}async getProjectOutputStyles(){return this.getAllOutputStyles()}async loadPluginOutputStyles(){if(!this.pluginManager)return[];try{let e=await this.pluginManager.getActivePlugins(),t=[];for(let{components:r}of e)try{r?.outputStyles&&t.push(...r.outputStyles)}catch{}return t}catch(e){return this.logger.debug("Failed to load plugin output styles",e),[]}}};__decorate([(0,a.Autowired)(a.Logger),__metadata("design:type","function"==typeof(o=void 0!==a.Logger&&a.Logger)?o:Object)],m.prototype,"logger",void 0),__decorate([(0,a.Autowired)(c.ProductManager),__metadata("design:type","function"==typeof(i=void 0!==c.ProductManager&&c.ProductManager)?i:Object)],m.prototype,"productManager",void 0),__decorate([(0,a.Autowired)(p.Ad),__metadata("design:type","function"==typeof(n=void 0!==p.Ad&&p.Ad)?n:Object)],m.prototype,"promptRenderer",void 0),__decorate([(0,a.Autowired)(h.R0),(0,a.Optional)(),__metadata("design:type","function"==typeof(s=void 0!==h.R0&&h.R0)?s:Object)],m.prototype,"pluginManager",void 0),m=__decorate([(0,a.Component)(f.Sk)],m)},54202(e,t,r){r.d(t,{EA:()=>o.ProductEnvService,FQ:()=>n,Vi:()=>i,pg:()=>o.ProductEnviroment});var o=r(86482);let i=Symbol("ConfigWatchService"),n=Symbol("McpWatchService")},18084(e,t,r){r.r(t),r.d(t,{default:()=>o});let o=(0,r(88523).autoBind)(()=>{})},57740(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(86482),t.default=(0,r(88523).autoBind)()},3203(e,t){Object.defineProperty(t,"__esModule",{value:!0})},63159(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(3203),t.default=(0,r(88523).autoBind)()},42417(e,t,r){r.r(t),r.d(t,{default:()=>o});let o=(0,r(88523).autoBind)()},55788(e,t,r){r.r(t),r.d(t,{default:()=>o});let o=(0,r(88523).autoBind)()},7639(e,t,r){r.r(t),r.d(t,{default:()=>o}),r(30944);let o=(0,r(88523).autoBind)()},98759(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(14931),t.default=(0,r(88523).autoBind)()},23294(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(41394),t),i(r(38924),t)},5112(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(14931),r(23294),t.default=(0,r(88523).autoBind)()},65903(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(51147),t.default=(0,r(88523).autoBind)()},56490(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.FilePathServiceImpl=void 0;let l=r(88523),d=a(r(70857)),u=a(r(16928)),p=r(51147),h=class{constructor(){this.userId="default",this.ideType="VSCode",this.basePath=d.homedir()}init(){this.basePath=this.getBasePath()}setCurrentUserId(e){this.userId=e}setIDEType(e){this.ideType=e}get homePath(){return u.join(d.homedir())}get tmpdir(){return u.join(d.tmpdir())}get userDataPath(){return u.join(this.basePath,"Data",this.userId,this.ideType)}get sharedDataPath(){return u.join(this.basePath,"Data","Public")}get cachePath(){return u.join(this.basePath,"Cache",this.ideType)}get sharedCachePath(){return u.join(this.basePath,"Cache","Shared")}get logPath(){return u.join(this.basePath,"Logs",this.ideType)}get systemLogPath(){return u.join(this.basePath,"Logs","System")}getBasePath(){let e=d.homedir();switch(process.platform){case"darwin":return u.join(e,"Library/Application Support",p.EXTENSION_DATA_DIR_NAME);case"win32":return u.join(e,"AppData","Local",p.EXTENSION_DATA_DIR_NAME);default:return u.join(e,".local","share",p.EXTENSION_DATA_DIR_NAME)}}};t.FilePathServiceImpl=h,s([(0,l.PostConstruct)(),c("design:type",Function),c("design:paramtypes",[]),c("design:returntype",void 0)],h.prototype,"init",null),t.FilePathServiceImpl=s([(0,l.Component)(p.FilePathService)],h)},66243(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadServiceImpl=void 0;let n=r(88523),s=r(51147),a=class{async upload(e,t){for(let r of this.fileUploaders.get())if(await r.support(t))return r.upload(e,t);return{success:!1,error:"No supported uploader found"}}};t.FileUploadServiceImpl=a,o([(0,n.AutowiredProvider)(s.FileUploader),i("design:type",Object)],a.prototype,"fileUploaders",void 0),t.FileUploadServiceImpl=o([(0,n.Component)(s.FileUploadService)],a)},41885(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(94299),t),i(r(66243),t)},29290(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.COSFileUploader=void 0;let d=r(88523),u=r(7268),p=l(r(42773)),h=a(r(79896)),g=a(r(16928)),f=r(72057),m=class{constructor(){this.name="cos"}async support({uploader:e}){return"cos"===e}async upload(e,t){let r,o,i={uploadedFiles:[],failedFiles:[],startTime:Date.now()};this.logger.setContext("COSFileUploader");try{let n=await this.getCOSInfo(t);if(r=this.getCOSInstance(t,n),0===e.length)return this.buildEmptyResult(n.url,i);let s=this.createUploadTasks(e,n,r,t),a=this.createProgressTasks(s,e,i,t,r),{promise:c,cleanup:l}=this.createTimeoutPromise(t,r);return o=l,await Promise.race([c,Promise.all(a)]),o(),o=void 0,this.buildUploadResult(i,e.length,n.url)}catch(t){return this.logger.error("Upload failed with error:",t),r?.getTaskList().forEach(({id:e})=>r?.cancelTask(e)),this.buildErrorResult(t,e,i)}finally{o?.()}}createUploadTasks(e,t,r,o){return e.map(i=>this.doUpload(i,t,r,o,e.length))}createProgressTasks(e,t,r,o,i){return e.map(async(e,n)=>{let s=t[n];this.reportProgress(r,t.length,o,s);try{await e,r.uploadedFiles.push(s)}catch(e){r.failedFiles.push({file:s,error:e.message}),this.handleUploadError(r,t.length,i,e)}this.reportProgress(r,t.length,o,void 0)})}handleUploadError(e,t,r,o){if(e.failedFiles.length>Math.max(1,.2*t))throw r.getTaskList().forEach(({id:e})=>r.cancelTask(e)),o}reportProgress(e,t,r,o){let i=e.uploadedFiles.length+e.failedFiles.length;this.updateProgress(r,{percent:Math.round(i/t*100),uploaded:e.uploadedFiles.length,total:t,failed:e.failedFiles.length,currentFile:o})}buildEmptyResult(e,t){return{success:!0,result:e,details:{uploaded:[],failed:[],duration:Date.now()-t.startTime,total:0}}}buildUploadResult(e,t,r){let o=Date.now()-e.startTime;return e.failedFiles.length>0&&e.failedFiles.length>Math.max(1,.2*t)?{success:!1,error:`Too many files failed to upload: ${e.failedFiles.length}/${t}`,details:{uploaded:e.uploadedFiles,failed:e.failedFiles,duration:o,total:t}}:{success:!0,result:r,details:{uploaded:e.uploadedFiles,failed:e.failedFiles,duration:o,total:t}}}buildErrorResult(e,t,r){return{success:!1,error:e.message,details:{uploaded:r.uploadedFiles,failed:t.map(t=>({file:t,error:e.message})),duration:Date.now()-r.startTime,total:t.length}}}async doUpload(e,t,r,o,i,n=1){let s=o.maxRetries??4;if(o.signal.aborted)throw Error("Upload cancelled");1===n&&await this.validateFileAccess(e);let a=await this.generateCOSPath(e,t.path,o);return this.executeUpload(e,a,t,r,o,i,n,s)}async validateFileAccess(e){try{await h.promises.access(e,h.constants.R_OK)}catch(t){throw Error(`File not found or not readable: ${e}`)}}async generateCOSPath(e,t,r){let o=this.getUploadRelativePath(e,r.rootPath);return r.cosPathGenerator?await Promise.resolve(r.cosPathGenerator({basePath:t,relativePath:o,absolutePath:e})):this.defaultCOSPathGenerator(t,o)}executeUpload(e,t,r,o,i,n,s,a){return new Promise((c,l)=>{o.putObject({Bucket:r.bucket,Region:r.region,Key:t,Body:h.createReadStream(e),onProgress:()=>{}},async t=>{if(i.signal.aborted){o.getTaskList().forEach(({id:e})=>o.cancelTask(e)),l(Error("Upload cancelled"));return}t?await this.handleUploadRetry(t,s,a,e,r,o,i,n,c,l):c()})})}async handleUploadRetry(e,t,r,o,i,n,s,a,c,l){if(t<=r)try{let e=this.calculateBackoffTime(t,s);await new Promise(t=>setTimeout(t,e)),await this.doUpload(o,i,n,s,a,t+1),c()}catch(e){l(e)}else l(Error(`Upload failed after ${r} attempts: ${e.message}`))}calculateBackoffTime(e,t){let r=t.baseBackoffMs??1e3;switch(t.retryStrategy??"exponential"){case"exponential":default:return Math.min(r*2**e,3e4);case"linear":return Math.min(r*e,3e4);case"fixed":return r}}updateProgress(e,t){e.uploadProgress$?.next(t)}async getCOSInfo(e){if(!e.cosInfoPath)throw Error("No path provided to get COS info");let{data:{data:t}}=await this.restOperations.get(e.cosInfoPath);return t}getCOSInstance(e,t){return new p.default({FileParallelLimit:e.concurrency??3,getAuthorization:(e,r)=>{r({TmpSecretId:t.credential.credentials.tmpSecretId,TmpSecretKey:t.credential.credentials.tmpSecretKey,SecurityToken:t.credential.credentials.token,ExpiredTime:t.credential.expiredTime,StartTime:t.credential.startTime,ScopeLimit:!0})},Timeout:(e.timeout??300)*1e3,UploadQueueSize:1e5})}createTimeoutPromise(e,t){let r,o,cleanup=()=>{r&&(clearTimeout(r),r=void 0),o&&(e.signal.removeEventListener("abort",o),o=void 0)};return{promise:new Promise((i,n)=>{r=setTimeout(()=>{cleanup(),t.getTaskList().forEach(({id:e})=>t.cancelTask(e)),n(Error("Upload timed out"))},(e.timeout??300)*1e3),o=()=>{cleanup(),t.getTaskList().forEach(({id:e})=>t.cancelTask(e)),n(Error("Upload cancelled"))},e.signal.addEventListener("abort",o)}),cleanup}}defaultCOSPathGenerator(e,t){return`${e}/${t}`}getUploadRelativePath(e,t){if(!t)return g.basename(e);let r=g.relative(t,e);return r.startsWith("..")||g.isAbsolute(r)?g.basename(e):r}};t.COSFileUploader=m,s([(0,d.Autowired)(u.RestOperations),c("design:type",Function)],m.prototype,"restOperations",void 0),s([(0,d.Autowired)(d.Logger),c("design:type",Object)],m.prototype,"logger",void 0),t.COSFileUploader=s([(0,d.Component)(f.FileUploader)],m)},94299(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29290),t)},67846(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(56490),t),i(r(51157),t),i(r(20760),t),i(r(41885),t),i(r(82005),t),i(r(13393),t)},10352(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(67846),t.default=(0,r(88523).autoBind)()},20760(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(49685),t)},49685(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.fromReadable=fromReadable;let a=s(r(38636)),c=r(3385),l=globalThis;function fromReadable(e){return new ReadableStream({start:t=>{e.on("data",e=>t.enqueue(e)),e.on("end",()=>t.close()),e.on("close",()=>t.close()),e.on("error",e=>t.error(e))},cancel:t=>void e.destroy?.(t)})}if(l.TransformStream||(l.TransformStream=c.TransformStream,l.ReadableStream=c.ReadableStream,l.WritableStream=c.WritableStream),!l.TextDecoderStream){let TextDecoderStreamPolyfill=class TextDecoderStreamPolyfill{constructor(e="utf-8",t){this.decoder=new TextDecoder(e,t),this.stream=new TransformStream({transform:(e,t)=>{t.enqueue(this.decoder.decode(e,{stream:!0}))},flush:e=>{e.enqueue(this.decoder.decode())}})}get readable(){return this.stream.readable}get writable(){return this.stream.writable}};l.TextDecoderStream=TextDecoderStreamPolyfill}l.fetch||(l.fetch=function(e,t){return a.default(e,t).then(e=>{let t=e.body;return t&&Object.defineProperty(e,"body",{get:()=>fromReadable(t)}),e})},l.Headers=a.Headers,l.Request=a.Request,l.Response=a.Response)},13393(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.PAC_RPC_TOKEN_ENV=t.PAC_RPC_SOCKET_ENV=t.createPacRpcHookFromEnv=t.createPacRpcHook=t.detectSystemProxy=t.ensureLoopbackInNoProxy=t.ProxyResolver=void 0;var o=r(7732);Object.defineProperty(t,"ProxyResolver",{enumerable:!0,get:function(){return o.ProxyResolver}}),Object.defineProperty(t,"ensureLoopbackInNoProxy",{enumerable:!0,get:function(){return o.ensureLoopbackInNoProxy}});var i=r(8713);Object.defineProperty(t,"detectSystemProxy",{enumerable:!0,get:function(){return i.detectSystemProxy}});var n=r(95499);Object.defineProperty(t,"createPacRpcHook",{enumerable:!0,get:function(){return n.createPacRpcHook}}),Object.defineProperty(t,"createPacRpcHookFromEnv",{enumerable:!0,get:function(){return n.createPacRpcHookFromEnv}}),Object.defineProperty(t,"PAC_RPC_SOCKET_ENV",{enumerable:!0,get:function(){return n.PAC_RPC_SOCKET_ENV}}),Object.defineProperty(t,"PAC_RPC_TOKEN_ENV",{enumerable:!0,get:function(){return n.PAC_RPC_TOKEN_ENV}})},51157(e,t,r){var o=this&&this.__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};Object.defineProperty(t,"__esModule",{value:!0}),t.UserHomeServiceImpl=void 0;let i=r(48161),n=r(76760),s=r(88523),a=r(51147),c=class{constructor(){this.homedir=(0,i.homedir)()}get downloadsPath(){return(0,n.join)(this.homedir,"Downloads")}};t.UserHomeServiceImpl=c,t.UserHomeServiceImpl=o([(0,s.Component)(a.UserHomeService)],c)},82005(e,t,r){let o;var i,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),o=0;o<r.length;o++)"default"!==r[o]&&n(t,e,r[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.isCephFs=isCephFs,t.isCephFsSubMount=isCephFsSubMount,t.clearCephFsCache=clearCephFsCache,t.safeReaddir=safeReaddir,t.safeStat=safeStat;let c=a(r(91943));async function isCephFs(e){if("linux"!==process.platform)return!1;o||(o=new Map);let t=o.get(e);if(void 0!==t)return t;let r=await detectCephFs(e);return o.set(e,r),r}async function isCephFsSubMount(e,t){if("linux"!==process.platform||!await isCephFs(e))return!1;if(await isCephFs(t)){let r=await getCephMountPoint(t),o=await getCephMountPoint(e);return(!r||!o||r!==o)&&r!==o}return!0}async function getCephMountPoint(e){try{let t=await getMountInfo(e);if(!t)return null;let{device:r,fstype:o,mountpoint:i}=t;return"ceph"===o||o.startsWith("fuse.ceph-fuse")||o.startsWith("fuse.ceph")||r.startsWith("ceph")?i:null}catch{return null}}async function detectCephFs(e){if("statfs"in c)try{let t=await c.statfs(e);if(0xc36400===t.type)return!0;if(0x65735546!==t.type)return!1}catch{return!1}try{let t=await getMountInfo(e);if(!t)return!1;let{device:r,fstype:o}=t;return"ceph"===o||o.startsWith("fuse.ceph-fuse")||o.startsWith("fuse.ceph")||r.startsWith("ceph")}catch{return!1}}let l=[];async function getMountInfo(e){if(0===l.length){let e=await c.readFile("/proc/mounts","utf8");l.push(...e.split("\n").filter(e=>!!e.trim()).map(e=>{let[t,r,o]=e.split(" ");return{device:t,mountpoint:r,fstype:o}}).filter(e=>e.device&&e.mountpoint&&e.fstype))}let t=await c.realpath(e),r=null;for(let e of l){let{mountpoint:o}=e;t.startsWith(o)&&(!r||o.length>r.mountpoint.length)&&(r={...e})}return r}function clearCephFsCache(){o=void 0}async function safeReaddir(e,t){try{let r=t.maxDirent??1e4;if(r<=0)return[];if(t.withFileTypes){let t=await c.opendir(e),o=[];for await(let e of t)if(o.push(e),o.length>=r)break;return o}return await c.readdir(e,t)}catch(e){}return[]}async function safeStat(...e){try{return await c.stat(...e)}catch(e){}return null}},27325(e,t,r){let o;Object.defineProperty(t,"__esModule",{value:!0}),t.getProxyUrlFromEnv=getProxyUrlFromEnv,t.shouldBypassProxyForUrl=shouldBypassProxyForUrl,t.sanitizeProxyForLog=sanitizeProxyForLog,t.describeProxyForNodeRequest=describeProxyForNodeRequest,t.resolveNodeProxyAgent=resolveNodeProxyAgent,t.__resetNodeProxyAgentCacheForTests=__resetNodeProxyAgentCacheForTests;let i=new Set(["localhost","127.0.0.1","::1","[::1]"]),n={keepAlive:!0,keepAliveMsecs:2e3};function getProxyUrlFromEnv(){let e=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;if(!e)return;let t=e.includes("://")?e:`http://${e}`;try{let e=new URL(t);if("http:"!==e.protocol&&"https:"!==e.protocol)return;return e.toString()}catch{return}}function shouldBypassProxyForUrl(e){let t;try{t=new URL(e).hostname.toLowerCase()}catch{return!0}if(i.has(t))return!0;let r=process.env.NO_PROXY||process.env.no_proxy;if(!r)return!1;for(let e of r.split(",")){let r=e.trim().toLowerCase();if(!r)continue;if("*"===r||r===t)return!0;let o=r.startsWith(".")?r:`.${r}`;if(t.endsWith(o))return!0}return!1}function sanitizeProxyForLog(e){try{let t=new URL(e),r=t.port||("https:"===t.protocol?"443":"80");return`${t.hostname}:${r}`}catch{return"<invalid-proxy>"}}function describeProxyForNodeRequest(e){let t=getProxyUrlFromEnv();return!t||shouldBypassProxyForUrl(e)?"DIRECT":`proxy=${sanitizeProxyForLog(t)}`}function getAgentBundle(e){o||(o=new Map);let t=o.get(e);if(t)return t;let{HttpProxyAgent:i}=r(66626),{HttpsProxyAgent:s}=r(48580);return t={http:new i(e,n),https:new s(e,n)},o.set(e,t),t}function resolveNodeProxyAgent(e){let t,r=getProxyUrlFromEnv();if(!r||shouldBypassProxyForUrl(e))return;try{t=new URL(e).protocol}catch{return}let o=getAgentBundle(r);return"http:"===t?o.http:"https:"===t?o.https:void 0}function __resetNodeProxyAgentCacheForTests(){o=void 0}},92701(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CliEnterpriseCustomModelPolicyServiceImpl=void 0;let n=r(88523),s=r(47532),a=r(39870),c=r(90276),l=class extends s.EnterpriseCustomModelPolicyServiceImpl{init(){super.init(),this.lastObservedOwnerKey=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account),this.diskSessionSub=this.authenticationManager.currentSessionSubject.subscribe(e=>{let t=this.computeOwnerKey(e?.account);if(t===this.lastObservedOwnerKey)return;let r=this.lastObservedOwnerKey;this.lastObservedOwnerKey=t,r&&this.removeDiskEntry(r)})}dispose(){this.diskSessionSub?.unsubscribe(),this.diskSessionSub=void 0,super.dispose()}async getPolicy(e){let t=this.tryBypass();if(t)return t;let r=this.authenticationManager.currentSessionSubject.value.account,o=this.computeOwnerKey(r);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===o&&void 0!==this.cachedSnapshot.fetchedAt&&Date.now()-this.cachedSnapshot.fetchedAt<a.POLICY_CACHE_TTL_MS)return this.cachedSnapshot;if(!e?.forceRefresh){let e=this.tryDiskHit(o);if(e)return this.cachedSnapshot=e,this.scheduleBackgroundRefresh(o),e}return this.pendingFetch&&this.pendingFetchOwnerKey===o||(this.pendingFetchOwnerKey=o,this.pendingFetch=this.refresh(o).finally(()=>{this.pendingFetchOwnerKey===o&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}scheduleBackgroundRefresh(e){this.pendingFetch&&this.pendingFetchOwnerKey===e||(this.pendingFetchOwnerKey=e,this.pendingFetch=this.refresh(e).finally(()=>{this.pendingFetchOwnerKey===e&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)}),this.pendingFetch.catch(e=>{this.logger.debug(`[EnterpriseCustomModelPolicy] background refresh swallowed error: ${e instanceof Error?e.message:String(e)}`)}))}getCachedSnapshot(){if("1"===process.env.CODEBUDDY_DISABLE_ENTERPRISE_POLICY)return{allowed:!0,source:"bypass-feature-off"};let e=super.getCachedSnapshot();if(e)return e;let t=this.authenticationManager.currentSessionSubject.value?.account;if(!t?.enterpriseId)return;let r=this.computeOwnerKey(t),o=this.tryDiskHit(r);if(o)return this.cachedSnapshot=o,this.scheduleRefresh(),o}async refresh(e){let t=await super.refresh(e);return"remote"===t.source&&void 0!==t.fetchedAt&&t.ownerKey===e&&this.writeDisk(e,t).catch(()=>{}),t}async fetchFromServer(){return super.fetchFromServer()}tryBypass(){if("1"===process.env.CODEBUDDY_DISABLE_ENTERPRISE_POLICY)return{allowed:!0,source:"bypass-feature-off"};let e=this.productManager.getCurrentConfiguration()?.productFeatures;if(!e?.EnableEnterpriseCustomModelPolicy)return{allowed:!0,source:"bypass-feature-off"};let t=this.authenticationManager.currentSessionSubject.value?.account;return t?t.enterpriseId?void 0:{allowed:!0,source:"bypass-personal"}:{allowed:!0,source:"bypass-anonymous"}}tryDiskHit(e){let t=this.diskCache.load();if(!t)return;let r=t.entries[e];if(r)return{...r.snapshot,source:"stale-cache",ownerKey:e,fetchedAt:r.fetchedAt}}async writeDisk(e,t){try{let r=this.diskCache.load()??{version:c.POLICY_DISK_CACHE_VERSION,entries:{}},o={version:c.POLICY_DISK_CACHE_VERSION,entries:{...r.entries,[e]:{snapshot:t,fetchedAt:t.fetchedAt}}};await this.diskCache.save(o)}catch(t){let e=t instanceof Error?t.message:String(t);this.logger.warn(`[EnterpriseCustomModelPolicy] disk cache write failed: ${e}`)}}removeDiskEntry(e){try{let t=this.diskCache.load();if(!t||!t.entries[e])return;let r={...t.entries};delete r[e];let o={version:c.POLICY_DISK_CACHE_VERSION,entries:r};this.diskCache.save(o).catch(e=>{this.logger.warn(`[EnterpriseCustomModelPolicy] disk cache cleanup save failed: ${e instanceof Error?e.message:String(e)}`)})}catch(e){this.logger.warn(`[EnterpriseCustomModelPolicy] disk cache cleanup load failed: ${e instanceof Error?e.message:String(e)}`)}}};t.CliEnterpriseCustomModelPolicyServiceImpl=l,o([(0,n.Autowired)(c.PolicyDiskCache),i("design:type",Object)],l.prototype,"diskCache",void 0),t.CliEnterpriseCustomModelPolicyServiceImpl=o([(0,n.Component)({id:a.EnterpriseCustomModelPolicyService,rebind:!0})],l)},36091(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90276),t),i(r(27724),t),i(r(92701),t)},90276(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyDiskCache=t.POLICY_DISK_CACHE_FILENAME=t.POLICY_DISK_CACHE_VERSION=void 0,t.POLICY_DISK_CACHE_VERSION=1,t.POLICY_DISK_CACHE_FILENAME=".policy-cache.json",t.PolicyDiskCache=Symbol("PolicyDiskCache")},27724(e,t,r){var o=this&&this.__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};Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyDiskCacheImpl=void 0;let i=r(88523),n=r(51147),s=r(79896),a=r(70857),c=r(16928),l=r(90276),d=class{getPath(){return(0,c.join)(this.resolveHomeDir(),l.POLICY_DISK_CACHE_FILENAME)}load(){let e=this.getPath();if((0,s.existsSync)(e))try{let t=(0,s.readFileSync)(e,"utf-8"),r=JSON.parse(t);if(!this.isValidFile(r))return;return r}catch{return}}async save(e){let t=this.getPath(),r=(0,c.dirname)(t);(0,s.existsSync)(r)||(0,s.mkdirSync)(r,{recursive:!0});let o=`${t}.tmp-${process.pid}-${Math.random().toString(36).slice(2,10)}`;try{(0,s.writeFileSync)(o,JSON.stringify(e),"utf-8"),(0,s.renameSync)(o,t)}catch(e){try{(0,s.existsSync)(o)&&(0,s.unlinkSync)(o)}catch{}throw e}}resolveHomeDir(){let e=process.env.CODEBUDDY_CONFIG_DIR;return e&&""!==e.trim()?e:(0,c.join)((0,a.homedir)(),n.USER_DATA_DIR_NAME)}isValidFile(e){if(!e||"object"!=typeof e||e.version!==l.POLICY_DISK_CACHE_VERSION||!e.entries||"object"!=typeof e.entries)return!1;let t=e.entries;for(let e of Object.keys(t))if(!this.isValidEntry(t[e]))return!1;return!0}isValidEntry(e){return!!e&&"object"==typeof e&&"number"==typeof e.fetchedAt&&!!e.snapshot&&"object"==typeof e.snapshot&&"boolean"==typeof e.snapshot.allowed}};t.PolicyDiskCacheImpl=d,t.PolicyDiskCacheImpl=o([(0,i.Component)(l.PolicyDiskCache)],d)},91736(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CloudEnterprisePolicyService=void 0;let CloudEnterprisePolicyService=class CloudEnterprisePolicyService{constructor(e){this.skillCache=null,this.modelCache=null,this.connectorCache=null,this.http=e.context.http}async getSkillUploadPolicy(){return this.skillCache&&this.skillCache.expiresAt>Date.now()?this.skillCache.snapshot:this.refreshSkillUploadPolicy()}async refreshSkillUploadPolicy(){let e;try{let t=await this.http.get("/console/as/iom/getMemberPolicy"),r=t?.data?.skill_upload??{};e={allowed:r.allowed??!0,mode:r.mode??"all",max_size_bytes:r.max_size_bytes??0xa00000,require_review:r.require_review??!1,reason:r.reason,source:"remote",fetchedAt:Date.now()}}catch{e={allowed:!0,mode:"all",max_size_bytes:0xa00000,require_review:!1,source:"fail-open",fetchedAt:Date.now()}}return this.skillCache={snapshot:e,expiresAt:Date.now()+6e4},e}async getMemberCustomModelPolicy(){return this.modelCache&&this.modelCache.expiresAt>Date.now()?this.modelCache.snapshot:this.refreshMemberCustomModelPolicy()}async refreshMemberCustomModelPolicy(){let e;try{let t=await this.http.get("/console/as/iom/getMemberPolicy"),r=t?.data?.member_custom_model??{};e={allowed:r.allowed??!0,policy_mode:r.policy_mode??"all",reason:r.reason,source:"remote",fetchedAt:Date.now()}}catch{e={allowed:!0,policy_mode:"all",source:"fail-open",fetchedAt:Date.now()}}return this.modelCache={snapshot:e,expiresAt:Date.now()+6e4},e}async getCustomConnectorPolicy(){return this.connectorCache&&this.connectorCache.expiresAt>Date.now()?this.connectorCache.snapshot:this.refreshCustomConnectorPolicy()}async refreshCustomConnectorPolicy(){let e;try{let t=await this.http.get("/console/as/iom/getMemberPolicy"),r=t?.data?.custom_connector??{};e={allowed:r.allowed??!0,policy_mode:r.policy_mode??"all",reason:r.reason,source:"remote",fetchedAt:Date.now()}}catch{e={allowed:!0,policy_mode:"all",source:"fail-open",fetchedAt:Date.now()}}return this.connectorCache={snapshot:e,expiresAt:Date.now()+6e4},e}};t.CloudEnterprisePolicyService=CloudEnterprisePolicyService},62290(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomConnectorPolicyServiceImpl=void 0;let n=r(88523),s=r(7268),a=r(86482),c=r(9151),l=r(63600),d=class{constructor(){this.listeners=new Set}init(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.sessionSub=this.authenticationManager.currentSessionSubject.subscribe(t=>{let r=this.computeOwnerKey(t?.account);r!==e&&(this.logger.debug(`[EnterpriseCustomConnectorPolicy] owner key changed: ${e??"undefined"} -> ${r??"undefined"}, clearing cache`),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0,e=r)})}dispose(){this.sessionSub?.unsubscribe(),this.sessionSub=void 0,this.listeners.clear(),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0}async getPolicy(e){let t=this.authenticationManager.currentSessionSubject.value,r=t?.account;if(!r)return{allowed:!0,source:"bypass-anonymous"};if(!r.enterpriseId)return{allowed:!0,source:"bypass-personal"};let o=this.computeOwnerKey(r);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===o&&void 0!==this.cachedSnapshot.fetchedAt){let e="fail-open"===this.cachedSnapshot.source?l.POLICY_FAIL_OPEN_CACHE_TTL_MS:l.POLICY_CACHE_TTL_MS;if(Date.now()-this.cachedSnapshot.fetchedAt<e)return this.cachedSnapshot}return this.pendingFetch&&this.pendingFetchOwnerKey===o||(this.pendingFetchOwnerKey=o,this.pendingFetch=this.refresh(o).finally(()=>{this.pendingFetchOwnerKey===o&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}onChanged(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async assertOperationAllowed(e){let t=await this.getPolicy(e);if(!t.allowed){let e=t.reason??"INVALID_MODE";throw this.logger.info(`[EnterpriseCustomConnectorPolicy] add blocked: reason=${e} mode=${t.policy_mode} source=${t.source}`),new l.CustomConnectorPolicyDeniedError(e)}return t}async refresh(e){let t,r=this.cachedSnapshot?.allowed,o=Date.now(),i=!1;try{let r=await this.fetchFromServer();i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,t={allowed:"INVALID_MODE"!==r.reason&&r.allowed,policy_mode:r.policy_mode,reason:r.reason,source:"remote",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),"INVALID_MODE"===r.reason&&this.reportInvalidMode(t),i||(this.cachedSnapshot=t)}catch(r){if(r instanceof l.EnterpriseCustomConnectorPolicyError&&401===r.httpStatus)return this.reportCheck({allowed:!0,source:"bypass-anonymous"},Date.now()-o),{allowed:!0,source:"bypass-anonymous"};i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,this.cachedSnapshot&&this.cachedSnapshot.ownerKey===e?(t={...this.cachedSnapshot,source:"stale-cache",fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o)):(t={allowed:!0,source:"fail-open",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),this.reportFailOpen(r)),i||(this.cachedSnapshot=t)}return i||(void 0!==r&&r!==t.allowed?this.notifyListeners(t):void 0===r&&this.notifyListeners(t)),t}async fetchFromServer(){let e=this.authenticationManager.currentSessionSubject.value?.account,t=e?.enterpriseId;if(!t)throw new l.EnterpriseCustomConnectorPolicyError("missing enterpriseId",401);let r=l.USER_CHECK_PATH.replace("{enterpriseId}",encodeURIComponent(t));try{let e=await this.restOperations.get(r,{timeout:l.POLICY_FETCH_TIMEOUT_MS});if(401===e.status)throw new l.EnterpriseCustomConnectorPolicyError("unauthorized",401);if(e.status<200||e.status>=300||void 0===e.data||null===e.data)throw new l.EnterpriseCustomConnectorPolicyError(`unexpected http status ${e.status}`,e.status);return this.parseUserCheckBody(e.data)}catch(r){if(r instanceof l.EnterpriseCustomConnectorPolicyError)throw r;let e=r?.response?.status,t=r instanceof Error?r.message:String(r);throw new l.EnterpriseCustomConnectorPolicyError(t,e,r)}}parseUserCheckBody(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomConnectorPolicyError("invalid response schema: not an object");if("data"in e&&void 0!==e.data&&null!==e.data){if("number"==typeof e.code&&0!==e.code){let t="string"==typeof e.msg?e.msg:`code=${e.code}`;throw new l.EnterpriseCustomConnectorPolicyError(`backend rejected: ${t}`)}return this.assertUserCheckShape(e.data)}return this.assertUserCheckShape(e)}assertUserCheckShape(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomConnectorPolicyError("invalid response schema");if("boolean"!=typeof e.allowed)throw new l.EnterpriseCustomConnectorPolicyError("invalid response schema: missing allowed");let t="string"==typeof e.policy_mode?e.policy_mode:"string"==typeof e.mode?e.mode:void 0;return{...e,policy_mode:t}}computeOwnerKey(e){if(e)return e.enterpriseId?`enterprise:${e.enterpriseId}:${e.uid}`:`personal:${e.uid}`}notifyListeners(e){for(let t of this.listeners)try{t(e)}catch(e){this.logger.error("[EnterpriseCustomConnectorPolicy] listener threw",e)}}reportCheck(e,t){this.logger.info(`[telemetry] ${l.EnterpriseCustomConnectorPolicyEvents.Check} `+JSON.stringify({allowed:e.allowed,policy_mode:e.policy_mode,reason:e.reason,source:e.source,durationMs:t}))}reportFailOpen(e){let t=e instanceof Error?e.message:String(e);this.logger.warn(`[telemetry] ${l.EnterpriseCustomConnectorPolicyEvents.FailOpen} `+JSON.stringify({error:t}))}reportInvalidMode(e){this.logger.warn(`[telemetry] ${l.EnterpriseCustomConnectorPolicyEvents.InvalidMode} `+JSON.stringify({policy_mode:e.policy_mode,reason:e.reason}))}};t.EnterpriseCustomConnectorPolicyServiceImpl=d,o([(0,n.Autowired)(a.AuthenticationManager),i("design:type",Object)],d.prototype,"authenticationManager",void 0),o([(0,n.Autowired)(c.ProductManager),i("design:type",Object)],d.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.Autowired)(s.RestOperations),i("design:type",Function)],d.prototype,"restOperations",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"dispose",null),t.EnterpriseCustomConnectorPolicyServiceImpl=o([(0,n.Component)(l.EnterpriseCustomConnectorPolicyService)],d)},63600(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CustomConnectorPolicyDeniedError=t.EnterpriseCustomConnectorPolicyService=t.EnterpriseCustomConnectorPolicyEvents=t.POLICY_FETCH_TIMEOUT_MS=t.POLICY_FAIL_OPEN_CACHE_TTL_MS=t.POLICY_CACHE_TTL_MS=t.USER_CHECK_PATH=t.EnterpriseCustomConnectorPolicyError=void 0;let EnterpriseCustomConnectorPolicyError=class EnterpriseCustomConnectorPolicyError extends Error{constructor(e,t,r){super(e),this.httpStatus=t,void 0!==r&&(this.cause=r),this.name="EnterpriseCustomConnectorPolicyError"}};t.EnterpriseCustomConnectorPolicyError=EnterpriseCustomConnectorPolicyError,t.USER_CHECK_PATH="/v2/enterprises/{enterpriseId}/connector-upload-policy/user-check",t.POLICY_CACHE_TTL_MS=3e5,t.POLICY_FAIL_OPEN_CACHE_TTL_MS=3e4,t.POLICY_FETCH_TIMEOUT_MS=1500,t.EnterpriseCustomConnectorPolicyEvents={Check:"enterpriseCustomConnectorPolicy.check",FailOpen:"enterpriseCustomConnectorPolicy.failOpen",InvalidMode:"enterpriseCustomConnectorPolicy.invalidMode"},t.EnterpriseCustomConnectorPolicyService=Symbol("EnterpriseCustomConnectorPolicyService");let CustomConnectorPolicyDeniedError=class CustomConnectorPolicyDeniedError extends Error{constructor(e,t){super(t??`Custom connector add denied by enterprise policy: ${e}`),this.code="CUSTOM_CONNECTOR_POLICY_DENIED",this.name="CustomConnectorPolicyDeniedError",this.reason=e}};t.CustomConnectorPolicyDeniedError=CustomConnectorPolicyDeniedError},58351(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomModelPolicyFilterProvider=void 0;let n=r(88523),s=r(9151),a=r(39870),c=class{constructor(){this.priority=s.ProductProviderPriority.DEFAULT+5e3,this.listenerRegistered=!1}async provide(e){let t=e.current.productFeatures;if(!t?.[s.ProductFeature.EnableEnterpriseCustomModelPolicy])return{};this.ensureListenerRegistered();let r=this.policyService.getCachedSnapshot();if(!r)return this.policyService.scheduleRefresh(),this.lastAllowed=!0,{};if(this.lastAllowed=r.allowed,r.allowed)return{};let o=e.current.models;if(!o||0===o.length)return{};let i=new Set,n=o.filter(e=>!this.isLocalCustomModel(e)||(i.add(e.id),!1));if(0===i.size)return{};let a={models:n,mergeStrategy:s.MergeStrategy.Merge};if(e.current.availableModels&&e.current.availableModels.length>0){let t=e.current.availableModels.filter(e=>!i.has(e));t.length!==e.current.availableModels.length&&(a.availableModels=t)}return this.reportFilterApplied(i.size),this.logger.info(`[EnterpriseCustomModelPolicyFilterProvider] removed ${i.size} local custom model(s) due to policy: ${Array.from(i).join(", ")}`),a}isLocalCustomModel(e){let t=Array.isArray(e.tags)&&e.tags.includes(s.MODEL_TAG_CUSTOM),r="string"==typeof e.id&&e.id.startsWith(s.CUSTOM_LOCAL_MODEL_PREFIX);return t&&r}ensureListenerRegistered(){this.listenerRegistered||(this.listenerRegistered=!0,this.policyService.onChanged(e=>{void 0!==this.lastAllowed&&this.lastAllowed!==e.allowed&&this.productManager.sync(!0).catch(e=>{this.logger.warn("[EnterpriseCustomModelPolicyFilterProvider] productManager.sync(true) failed",e)})}))}reportFilterApplied(e){this.logger.info(`[telemetry] ${a.EnterpriseCustomModelPolicyEvents.FilterApplied} `+JSON.stringify({removedCount:e}))}};t.EnterpriseCustomModelPolicyFilterProvider=c,o([(0,n.Autowired)(a.EnterpriseCustomModelPolicyService),i("design:type",Object)],c.prototype,"policyService",void 0),o([(0,n.Autowired)(s.ProductManager),i("design:type",Object)],c.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],c.prototype,"logger",void 0),t.EnterpriseCustomModelPolicyFilterProvider=o([(0,n.Component)(s.ProductProvider)],c)},47532(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomModelPolicyServiceImpl=void 0;let n=r(88523),s=r(7268),a=r(86482),c=r(9151),l=r(39870),d=class{constructor(){this.listeners=new Set}init(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.sessionSub=this.authenticationManager.currentSessionSubject.subscribe(t=>{let r=this.computeOwnerKey(t?.account);r!==e&&(this.logger.debug(`[EnterpriseCustomModelPolicy] owner key changed: ${e??"undefined"} -> ${r??"undefined"}, clearing cache`),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0,e=r,t?.account?.enterpriseId&&this.productManager.getCurrentConfiguration()?.productFeatures?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy]&&this.scheduleRefresh())}),this.startBackgroundRefresh();let t=this.authenticationManager.currentSessionSubject.value?.account;t?.enterpriseId&&this.productManager.getCurrentConfiguration()?.productFeatures?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy]&&this.scheduleRefresh()}dispose(){this.sessionSub?.unsubscribe(),this.sessionSub=void 0,this.stopBackgroundRefresh(),this.listeners.clear(),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0}startBackgroundRefresh(){if(void 0!==this.refreshTimer)return;this.refreshTimer=setInterval(()=>{this.refreshTick().catch(e=>{this.logger.warn("[EnterpriseCustomModelPolicy] background refresh failed",e)})},l.POLICY_CACHE_TTL_MS);let e=this.refreshTimer;"function"==typeof e.unref&&e.unref()}stopBackgroundRefresh(){void 0!==this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=void 0)}async refreshTick(){let e=this.cachedSnapshot;!e||"fail-open"===e.source||e.source.startsWith("bypass-")||await this.getPolicy({forceRefresh:!0})}async getPolicy(e){let t=this.productManager.getCurrentConfiguration()?.productFeatures;if(!t?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy])return{allowed:!0,source:"bypass-feature-off"};let r=this.authenticationManager.currentSessionSubject.value,o=r?.account;if(!o)return{allowed:!0,source:"bypass-anonymous"};if(!o.enterpriseId)return{allowed:!0,source:"bypass-personal"};let i=this.computeOwnerKey(o);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===i&&void 0!==this.cachedSnapshot.fetchedAt){let e="fail-open"===this.cachedSnapshot.source?l.POLICY_FAIL_OPEN_CACHE_TTL_MS:l.POLICY_CACHE_TTL_MS;if(Date.now()-this.cachedSnapshot.fetchedAt<e)return this.cachedSnapshot}return this.pendingFetch&&this.pendingFetchOwnerKey===i||(this.pendingFetchOwnerKey=i,this.pendingFetch=this.refresh(i).finally(()=>{this.pendingFetchOwnerKey===i&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}onChanged(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getCachedSnapshot(){let e=this.productManager.getCurrentConfiguration()?.productFeatures;if(!e?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy])return{allowed:!0,source:"bypass-feature-off"};let t=this.authenticationManager.currentSessionSubject.value?.account;if(!t)return{allowed:!0,source:"bypass-anonymous"};if(!t.enterpriseId)return{allowed:!0,source:"bypass-personal"};let r=this.computeOwnerKey(t);if(this.cachedSnapshot&&this.cachedSnapshot.ownerKey===r)return this.cachedSnapshot}scheduleRefresh(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.pendingFetch&&this.pendingFetchOwnerKey===e||queueMicrotask(()=>{let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.pendingFetch&&this.pendingFetchOwnerKey===e||this.getPolicy({forceRefresh:!0}).catch(e=>{this.logger.debug(`[EnterpriseCustomModelPolicy] scheduled refresh swallowed error: ${e instanceof Error?e.message:String(e)}`)})})}async assertOperationAllowed(e){let t=await this.getPolicy(e);if(!t.allowed){let e=t.reason??"INVALID_MODE";throw this.logger.info(`[EnterpriseCustomModelPolicy] save blocked: reason=${e} mode=${t.policy_mode} source=${t.source}`),new l.MemberCustomModelPolicyDeniedError(e)}return t}async refresh(e){let t,r=this.cachedSnapshot?.allowed,o=Date.now(),i=!1;try{let r=await this.fetchFromServer();i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,t={allowed:"INVALID_MODE"!==r.reason&&r.allowed,policy_mode:r.policy_mode,reason:r.reason,source:"remote",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),"INVALID_MODE"===r.reason&&this.reportInvalidMode(t),i||(this.cachedSnapshot=t)}catch(r){if(r instanceof l.EnterpriseCustomModelPolicyError&&401===r.httpStatus)return this.reportCheck({allowed:!0,source:"bypass-anonymous"},Date.now()-o),{allowed:!0,source:"bypass-anonymous"};i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,this.cachedSnapshot&&this.cachedSnapshot.ownerKey===e?(t={...this.cachedSnapshot,source:"stale-cache",fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o)):(t={allowed:!0,source:"fail-open",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),this.reportFailOpen(r)),i||(this.cachedSnapshot=t)}return i||(void 0!==r&&r!==t.allowed?(this.notifyListeners(t),this.triggerProductSync()):void 0===r&&this.notifyListeners(t)),t}async fetchFromServer(){let e=this.authenticationManager.currentSessionSubject.value?.account,t=e?.enterpriseId;if(!t)throw new l.EnterpriseCustomModelPolicyError("missing enterpriseId",401);let r=l.USER_CHECK_PATH.replace("{enterpriseId}",encodeURIComponent(t));try{let e=await this.restOperations.get(r,{timeout:l.POLICY_FETCH_TIMEOUT_MS});if(401===e.status)throw new l.EnterpriseCustomModelPolicyError("unauthorized",401);if(e.status<200||e.status>=300||void 0===e.data||null===e.data)throw new l.EnterpriseCustomModelPolicyError(`unexpected http status ${e.status}`,e.status);return this.parseUserCheckBody(e.data)}catch(r){if(r instanceof l.EnterpriseCustomModelPolicyError)throw r;let e=r?.response?.status,t=r instanceof Error?r.message:String(r);throw new l.EnterpriseCustomModelPolicyError(t,e,r)}}parseUserCheckBody(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomModelPolicyError("invalid response schema: not an object");if("data"in e&&void 0!==e.data&&null!==e.data){if("number"==typeof e.code&&0!==e.code){let t="string"==typeof e.msg?e.msg:`code=${e.code}`;throw new l.EnterpriseCustomModelPolicyError(`backend rejected: ${t}`)}return this.assertUserCheckShape(e.data)}return this.assertUserCheckShape(e)}assertUserCheckShape(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomModelPolicyError("invalid response schema");if("boolean"!=typeof e.allowed)throw new l.EnterpriseCustomModelPolicyError("invalid response schema: missing allowed");let t="string"==typeof e.policy_mode?e.policy_mode:"string"==typeof e.mode?e.mode:void 0;return{...e,policy_mode:t}}computeOwnerKey(e){if(e)return e.enterpriseId?`enterprise:${e.enterpriseId}:${e.uid}`:`personal:${e.uid}`}notifyListeners(e){for(let t of this.listeners)try{t(e)}catch(e){this.logger.error("[EnterpriseCustomModelPolicy] listener threw",e)}}triggerProductSync(){try{let e=this.productManager??n.ContainerUtil.get(c.ProductManager);e?.sync(!0).catch(e=>{this.logger.warn("[EnterpriseCustomModelPolicy] productManager.sync(true) failed",e)})}catch(e){this.logger.warn("[EnterpriseCustomModelPolicy] productManager.sync(true) threw",e)}}reportCheck(e,t){this.logger.info(`[telemetry] ${l.EnterpriseCustomModelPolicyEvents.Check} `+JSON.stringify({allowed:e.allowed,policy_mode:e.policy_mode,reason:e.reason,source:e.source,durationMs:t}))}reportFailOpen(e){let t=e instanceof Error?e.message:String(e);this.logger.warn(`[telemetry] ${l.EnterpriseCustomModelPolicyEvents.FailOpen} `+JSON.stringify({error:t}))}reportInvalidMode(e){this.logger.warn(`[telemetry] ${l.EnterpriseCustomModelPolicyEvents.InvalidMode} `+JSON.stringify({policy_mode:e.policy_mode,reason:e.reason}))}};t.EnterpriseCustomModelPolicyServiceImpl=d,o([(0,n.Autowired)(a.AuthenticationManager),i("design:type",Object)],d.prototype,"authenticationManager",void 0),o([(0,n.Autowired)(c.ProductManager),i("design:type",Object)],d.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.Autowired)(s.RestOperations),i("design:type",Function)],d.prototype,"restOperations",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"dispose",null),t.EnterpriseCustomModelPolicyServiceImpl=o([(0,n.Component)(l.EnterpriseCustomModelPolicyService)],d)},39870(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MemberCustomModelPolicyDeniedError=t.EnterpriseCustomModelPolicyService=t.EnterpriseCustomModelPolicyEvents=t.POLICY_FETCH_TIMEOUT_MS=t.POLICY_FAIL_OPEN_CACHE_TTL_MS=t.POLICY_CACHE_TTL_MS=t.USER_CHECK_PATH=t.EnterpriseCustomModelPolicyError=void 0;let EnterpriseCustomModelPolicyError=class EnterpriseCustomModelPolicyError extends Error{constructor(e,t,r){super(e),this.httpStatus=t,void 0!==r&&(this.cause=r),this.name="EnterpriseCustomModelPolicyError"}};t.EnterpriseCustomModelPolicyError=EnterpriseCustomModelPolicyError,t.USER_CHECK_PATH="/v2/enterprises/{enterpriseId}/member-custom-model-policy/user-check",t.POLICY_CACHE_TTL_MS=3e5,t.POLICY_FAIL_OPEN_CACHE_TTL_MS=3e4,t.POLICY_FETCH_TIMEOUT_MS=1500,t.EnterpriseCustomModelPolicyEvents={Check:"enterpriseCustomModelPolicy.check",FailOpen:"enterpriseCustomModelPolicy.failOpen",InvalidMode:"enterpriseCustomModelPolicy.invalidMode",FilterApplied:"enterpriseCustomModelPolicy.filterApplied"},t.EnterpriseCustomModelPolicyService=Symbol("EnterpriseCustomModelPolicyService");let MemberCustomModelPolicyDeniedError=class MemberCustomModelPolicyDeniedError extends Error{constructor(e,t){super(t??`Custom model operation denied by enterprise policy: ${e}`),this.code="MEMBER_CUSTOM_MODEL_POLICY_DENIED",this.name="MemberCustomModelPolicyDeniedError",this.reason=e}};t.MemberCustomModelPolicyDeniedError=MemberCustomModelPolicyDeniedError},75554(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseSkillUploadPolicyServiceImpl=void 0;let n=r(88523),s=r(7268),a=r(86482),c=r(9151),l=r(20160),d=class{constructor(){this.listeners=new Set}init(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.sessionSub=this.authenticationManager.currentSessionSubject.subscribe(t=>{let r=this.computeOwnerKey(t?.account);r!==e&&(this.logger.debug(`[EnterpriseSkillUploadPolicy] owner key changed: ${e??"undefined"} -> ${r??"undefined"}, clearing cache`),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0,e=r)})}dispose(){this.sessionSub?.unsubscribe(),this.sessionSub=void 0,this.listeners.clear(),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0}async getPolicy(e){if("1"===process.env.CODEBUDDY_DISABLE_ENTERPRISE_POLICY)return{allowed:!0,source:"bypass-feature-off"};let t=this.productManager.getCurrentConfiguration()?.productFeatures;if(!t?.[c.ProductFeature.EnableEnterpriseSkillUploadPolicy])return{allowed:!0,source:"bypass-feature-off"};let r=this.authenticationManager.currentSessionSubject.value,o=r?.account;if(!o)return{allowed:!0,source:"bypass-anonymous"};if(!o.enterpriseId)return{allowed:!0,source:"bypass-personal"};let i=this.computeOwnerKey(o);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===i&&void 0!==this.cachedSnapshot.fetchedAt){let e="fail-open"===this.cachedSnapshot.source?l.POLICY_FAIL_OPEN_CACHE_TTL_MS:l.POLICY_CACHE_TTL_MS;if(Date.now()-this.cachedSnapshot.fetchedAt<e)return this.cachedSnapshot}return this.pendingFetch&&this.pendingFetchOwnerKey===i||(this.pendingFetchOwnerKey=i,this.pendingFetch=this.refresh(i).finally(()=>{this.pendingFetchOwnerKey===i&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}onChanged(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async assertOperationAllowed(e){let t=await this.getPolicy(e);if(!t.allowed){let e=t.reason??"INVALID_MODE";throw this.logger.info(`[EnterpriseSkillUploadPolicy] upload blocked: reason=${e} mode=${t.policy_mode} source=${t.source}`),new l.SkillUploadPolicyDeniedError(e)}return t}async assertWithinSizeLimit(e,t){let r=await this.getPolicy(t),o="number"==typeof r.max_size_bytes?r.max_size_bytes:l.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES;if(!(o<=0)&&e>o)throw this.logger.info(`[EnterpriseSkillUploadPolicy] size blocked: actual=${e} max=${o} source=${r.source}`),new l.SkillPackageTooLargeError(o,e)}async refresh(e){let t,r=this.cachedSnapshot?.allowed,o=Date.now(),i=!1;try{let r=await this.fetchFromServer();i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,t={allowed:"INVALID_MODE"!==r.reason&&r.allowed,policy_mode:r.policy_mode,reason:r.reason,max_size_bytes:r.max_size_bytes,require_review:r.require_review,source:"remote",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),"INVALID_MODE"===r.reason&&this.reportInvalidMode(t),i||(this.cachedSnapshot=t)}catch(r){if(r instanceof l.EnterpriseSkillUploadPolicyError&&401===r.httpStatus)return this.reportCheck({allowed:!0,source:"bypass-anonymous"},Date.now()-o),{allowed:!0,source:"bypass-anonymous"};i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,this.cachedSnapshot&&this.cachedSnapshot.ownerKey===e?(t={...this.cachedSnapshot,source:"stale-cache",fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o)):(t={allowed:!0,source:"fail-open",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),this.reportFailOpen(r)),i||(this.cachedSnapshot=t)}return i||(void 0!==r&&r!==t.allowed?this.notifyListeners(t):void 0===r&&this.notifyListeners(t)),t}async fetchFromServer(){let e=this.authenticationManager.currentSessionSubject.value?.account,t=e?.enterpriseId;if(!t)throw new l.EnterpriseSkillUploadPolicyError("missing enterpriseId",401);let r=l.USER_CHECK_PATH.replace("{enterpriseId}",encodeURIComponent(t));try{let e=await this.restOperations.get(r,{timeout:l.POLICY_FETCH_TIMEOUT_MS});if(401===e.status)throw new l.EnterpriseSkillUploadPolicyError("unauthorized",401);if(e.status<200||e.status>=300||void 0===e.data||null===e.data)throw new l.EnterpriseSkillUploadPolicyError(`unexpected http status ${e.status}`,e.status);return this.parseUserCheckBody(e.data)}catch(r){if(r instanceof l.EnterpriseSkillUploadPolicyError)throw r;let e=r?.response?.status,t=r instanceof Error?r.message:String(r);throw new l.EnterpriseSkillUploadPolicyError(t,e,r)}}parseUserCheckBody(e){if("object"!=typeof e||null===e)throw new l.EnterpriseSkillUploadPolicyError("invalid response schema: not an object");if("data"in e&&void 0!==e.data&&null!==e.data){if("number"==typeof e.code&&0!==e.code){let t="string"==typeof e.msg?e.msg:`code=${e.code}`;throw new l.EnterpriseSkillUploadPolicyError(`backend rejected: ${t}`)}return this.assertUserCheckShape(e.data)}return this.assertUserCheckShape(e)}assertUserCheckShape(e){if("object"!=typeof e||null===e)throw new l.EnterpriseSkillUploadPolicyError("invalid response schema");if("boolean"!=typeof e.allowed)throw new l.EnterpriseSkillUploadPolicyError("invalid response schema: missing allowed");let t="string"==typeof e.policy_mode?e.policy_mode:"string"==typeof e.mode?e.mode:void 0;return{...e,policy_mode:t}}computeOwnerKey(e){if(e)return e.enterpriseId?`enterprise:${e.enterpriseId}:${e.uid}`:`personal:${e.uid}`}notifyListeners(e){for(let t of this.listeners)try{t(e)}catch(e){this.logger.error("[EnterpriseSkillUploadPolicy] listener threw",e)}}reportCheck(e,t){this.logger.info(`[telemetry] ${l.EnterpriseSkillUploadPolicyEvents.Check} `+JSON.stringify({allowed:e.allowed,policy_mode:e.policy_mode,reason:e.reason,source:e.source,durationMs:t}))}reportFailOpen(e){let t=e instanceof Error?e.message:String(e);this.logger.warn(`[telemetry] ${l.EnterpriseSkillUploadPolicyEvents.FailOpen} `+JSON.stringify({error:t}))}reportInvalidMode(e){this.logger.warn(`[telemetry] ${l.EnterpriseSkillUploadPolicyEvents.InvalidMode} `+JSON.stringify({policy_mode:e.policy_mode,reason:e.reason}))}};t.EnterpriseSkillUploadPolicyServiceImpl=d,o([(0,n.Autowired)(a.AuthenticationManager),i("design:type",Object)],d.prototype,"authenticationManager",void 0),o([(0,n.Autowired)(c.ProductManager),i("design:type",Object)],d.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.Autowired)(s.RestOperations),i("design:type",Function)],d.prototype,"restOperations",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"dispose",null),t.EnterpriseSkillUploadPolicyServiceImpl=o([(0,n.Component)(l.EnterpriseSkillUploadPolicyService)],d)},20160(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.SkillPackageTooLargeError=t.SkillUploadPolicyDeniedError=t.EnterpriseSkillUploadPolicyService=t.EnterpriseSkillUploadPolicyEvents=t.POLICY_FETCH_TIMEOUT_MS=t.POLICY_FAIL_OPEN_CACHE_TTL_MS=t.POLICY_CACHE_TTL_MS=t.USER_CHECK_PATH=t.EnterpriseSkillUploadPolicyError=t.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES=void 0,t.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES=0xa00000;let EnterpriseSkillUploadPolicyError=class EnterpriseSkillUploadPolicyError extends Error{constructor(e,t,r){super(e),this.httpStatus=t,void 0!==r&&(this.cause=r),this.name="EnterpriseSkillUploadPolicyError"}};t.EnterpriseSkillUploadPolicyError=EnterpriseSkillUploadPolicyError,t.USER_CHECK_PATH="/v2/enterprises/{enterpriseId}/skill-upload-policy/user-check",t.POLICY_CACHE_TTL_MS=3e5,t.POLICY_FAIL_OPEN_CACHE_TTL_MS=3e4,t.POLICY_FETCH_TIMEOUT_MS=1500,t.EnterpriseSkillUploadPolicyEvents={Check:"enterpriseSkillUploadPolicy.check",FailOpen:"enterpriseSkillUploadPolicy.failOpen",InvalidMode:"enterpriseSkillUploadPolicy.invalidMode"},t.EnterpriseSkillUploadPolicyService=Symbol("EnterpriseSkillUploadPolicyService");let SkillUploadPolicyDeniedError=class SkillUploadPolicyDeniedError extends Error{constructor(e,t){super(t??`Skill upload denied by enterprise policy: ${e}`),this.code="SKILL_UPLOAD_POLICY_DENIED",this.name="SkillUploadPolicyDeniedError",this.reason=e}};t.SkillUploadPolicyDeniedError=SkillUploadPolicyDeniedError;let SkillPackageTooLargeError=class SkillPackageTooLargeError extends Error{constructor(e,t,r){super(r??`Skill package too large: ${t} > ${e} bytes`),this.code="SKILL_PACKAGE_TOO_LARGE",this.name="SkillPackageTooLargeError",this.maxBytes=e,this.actualBytes=t}};t.SkillPackageTooLargeError=SkillPackageTooLargeError},84546(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomConnectorPolicyService=t.EnterpriseCustomConnectorPolicyEvents=t.EnterpriseCustomConnectorPolicyError=t.CustomConnectorPolicyDeniedError=t.computeDirectorySizeBytes=t.SkillUploadPolicyDeniedError=t.SkillPackageTooLargeError=t.EnterpriseSkillUploadPolicyService=t.EnterpriseSkillUploadPolicyEvents=t.EnterpriseSkillUploadPolicyError=t.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES=void 0,i(r(39870),t),i(r(47532),t),i(r(58351),t),i(r(91736),t);var n=r(20160);Object.defineProperty(t,"DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES",{enumerable:!0,get:function(){return n.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES}}),Object.defineProperty(t,"EnterpriseSkillUploadPolicyError",{enumerable:!0,get:function(){return n.EnterpriseSkillUploadPolicyError}}),Object.defineProperty(t,"EnterpriseSkillUploadPolicyEvents",{enumerable:!0,get:function(){return n.EnterpriseSkillUploadPolicyEvents}}),Object.defineProperty(t,"EnterpriseSkillUploadPolicyService",{enumerable:!0,get:function(){return n.EnterpriseSkillUploadPolicyService}}),Object.defineProperty(t,"SkillPackageTooLargeError",{enumerable:!0,get:function(){return n.SkillPackageTooLargeError}}),Object.defineProperty(t,"SkillUploadPolicyDeniedError",{enumerable:!0,get:function(){return n.SkillUploadPolicyDeniedError}}),i(r(75554),t);var s=r(94824);Object.defineProperty(t,"computeDirectorySizeBytes",{enumerable:!0,get:function(){return s.computeDirectorySizeBytes}});var a=r(63600);Object.defineProperty(t,"CustomConnectorPolicyDeniedError",{enumerable:!0,get:function(){return a.CustomConnectorPolicyDeniedError}}),Object.defineProperty(t,"EnterpriseCustomConnectorPolicyError",{enumerable:!0,get:function(){return a.EnterpriseCustomConnectorPolicyError}}),Object.defineProperty(t,"EnterpriseCustomConnectorPolicyEvents",{enumerable:!0,get:function(){return a.EnterpriseCustomConnectorPolicyEvents}}),Object.defineProperty(t,"EnterpriseCustomConnectorPolicyService",{enumerable:!0,get:function(){return a.EnterpriseCustomConnectorPolicyService}}),i(r(62290),t)},94824(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.computeDirectorySizeBytes=computeDirectorySizeBytes;let a=s(r(51455)),c=s(r(76760)),l=new Set(["__MACOSX",".DS_Store"]);async function computeDirectorySizeBytes(e){let t,r=0;try{t=await a.readdir(e,{withFileTypes:!0})}catch{return 0}for(let o of t){if(l.has(o.name))continue;let t=c.join(e,o.name);if(o.isSymbolicLink()){try{let e=await a.lstat(t);r+=e.size}catch{}continue}if(o.isDirectory())r+=await computeDirectorySizeBytes(t);else if(o.isFile())try{let e=await a.stat(t);r+=e.size}catch{}}return r}},54387(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(9151),t.default=(0,r(88523).autoBind)()},13539(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ClientProductProvider=void 0;let n=r(88523),s=r(79814),a=r(16928),c=r(72592),l=r(18629),d=class{constructor(){this.priority=l.ProductProviderPriority.CLIENT}init(){this.logger.setContext("ClientProductProvider")}async provide(){if(this.cachedProductConfiguration)return this.cachedProductConfiguration;if(!this.fs)return{};try{let e=this.configBasePath||__dirname,t=(0,a.join)(e,"product.json");if(this.fs.existsSync(t)||(t=(0,a.join)(e,"..","product.json")),this.fs.existsSync(t)||(t=(0,a.join)(e,"..","..","product.json")),!this.fs.existsSync(t))return this.logger.debug("Failed to find product.json"),{};this.logger.info(`Reading product configuration from ${t}`);let r=this.fs.readFileSync(t,{encoding:"utf-8"});return this.cachedProductConfiguration=(0,c.stripBuiltinModelsIfDisabled)(JSON.parse(r.toString())),this.logger.info("Product configuration loaded and cached successfully"),this.cachedProductConfiguration}catch(e){return this.logger.warn("Failed to read product.json",e),{}}}};t.ClientProductProvider=d,o([(0,n.Autowired)(s.FileSystem),(0,n.Optional)(),i("design:type",Object)],d.prototype,"fs",void 0),o([(0,n.Autowired)(l.ProductConfigBasePath),(0,n.Optional)(),i("design:type",String)],d.prototype,"configBasePath",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),t.ClientProductProvider=o([(0,n.Component)(l.ProductProvider)],d)},58880(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CustomModelsProductProvider=void 0;let n=r(88523),s=r(51147),a=r(1226),c=r(79814),l=r(79896),d=r(70857),u=r(16928),p=r(55119),h=r(18629),g=class{constructor(){this.priority=h.ProductProviderPriority.ENV+1e3,this.DEBOUNCE_DELAY=1e3}init(){"1"!==process.env.CODEBUDDY_DISABLE_CUSTOM_MODELS_FILE&&this.setupFileWatchers()}setupFileWatchers(){if(this.workspace?.workspaceFolders&&this.workspace.workspaceFolders.length>0){let e=this.workspace.workspaceFolders[0].uri,t=c.URI.parse(`${e.path}/${s.WORKSPACE_DATA_DIR_NAME}/models.json`);(0,l.existsSync)(t.fsPath)&&this.watchFile(t.fsPath,"project")}}isWorkBuddyProduct(e){return(e||"").toLowerCase().includes("workbuddy")}getUserConfigPath(e,t){let r=process.env.WORKBUDDY_CONFIG_DIR?.trim()||process.env.CODEBUDDY_CONFIG_DIR?.trim();if(r)return(0,u.join)(r,"models.json");let o=t?.trim()||(this.isWorkBuddyProduct(e)?".workbuddy":s.USER_DATA_DIR_NAME);return(0,u.join)((0,d.homedir)(),o,"models.json")}watchFile(e,t){if("user"===t){if(this.userConfigWatcher&&this.userConfigWatcherPath===e)return;this.userConfigWatcher&&this.userConfigWatcher.close()}else{if(this.projectConfigWatcher&&this.projectConfigWatcherPath===e)return;this.projectConfigWatcher&&this.projectConfigWatcher.close()}try{let r=(0,l.watch)(e,(t,r)=>{r&&r.endsWith("models.json")&&(this.logger.debug(`Models config file ${t}: ${e}`),this.debounceSync())});r.on("error",t=>{this.logger.error(`Watcher error for file ${e}: ${t}`)}),"user"===t?(this.userConfigWatcher=r,this.userConfigWatcherPath=e):(this.projectConfigWatcher=r,this.projectConfigWatcherPath=e),this.logger.debug(`Started watching file: ${e}`)}catch(t){this.logger.error(`Failed to watch file ${e}:`,t)}}debounceSync(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{try{let e=n.ContainerUtil.get(h.ProductManager);e?(this.logger.debug("Syncing product configuration due to models.json changes"),e.sync().catch(e=>{this.logger.error("Failed to sync product configuration",e)})):this.logger.warn("ProductManager not found, cannot sync")}catch(e){this.logger.error("Failed to trigger ProductManager sync:",e)}},this.DEBOUNCE_DELAY)}dispose(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.userConfigWatcher&&this.userConfigWatcher.close(),this.userConfigWatcherPath=void 0,this.projectConfigWatcher&&this.projectConfigWatcher.close(),this.projectConfigWatcherPath=void 0}async provide(e){if("1"===process.env.CODEBUDDY_DISABLE_CUSTOM_MODELS_FILE||!this.fs)return{};if(!e.current.productFeatures?.CustomModelsJSON)return this.logger.info("disable use custom model"),{};let t=this.getUserConfigPath(e.current.productName,e.current.config?.customUserDataDir);this.logger.info(`[CustomModelsProductProvider] productName=${e.current.productName}, isWorkBuddy=${this.isWorkBuddyProduct(e.current.productName)}, userConfigPath=${t}`);let r={};try{if(this.fs.existsSync(t)){this.userConfigWatcher&&this.userConfigWatcherPath===t||this.watchFile(t,"user");let e=this.fs.readFileSync(t,{encoding:"utf-8"}).toString().trim();if(e){let o;(0,a.reconcileUserModelsJsonToPolicy)(t,{warn:e=>this.logger.warn(e)}).catch(()=>{});let i=(0,a.createModelsJsonCredentialCodec)(e=>this.logger.warn(e));try{o=i.decode(JSON.parse(e)).value}finally{i.dispose()}let{models:n,availableModels:s}=this.extractConfig(o);r={models:n.filter(e=>!!e.id||(this.logger.warn(`[CustomModelsProductProvider] Skipping model without id in user config: ${JSON.stringify(e)}`),!1)).map(e=>({disabled:!1,...e})),availableModels:s},this.logger.info(`Loaded custom models config from user: ${t}`)}else this.logger.info(`Skipping empty custom models config at ${t}`)}}catch(e){this.logger.error(`Failed to load user-level custom models configuration from ${t}`,e)}let o={};if(this.workspace?.workspaceFolders&&this.workspace.workspaceFolders.length>0){let e=this.workspace.workspaceFolders[0].uri,t=c.URI.parse(`${e.path}/${s.WORKSPACE_DATA_DIR_NAME}/models.json`);try{if(this.fs.existsSync(t.fsPath)){this.projectConfigWatcher&&this.projectConfigWatcherPath===t.fsPath||this.watchFile(t.fsPath,"project");let e=this.fs.readFileSync(t.fsPath,{encoding:"utf-8"}).toString().trim();if(e){let r=JSON.parse(e),{models:i,availableModels:n}=this.extractConfig(r);o={models:i.filter(e=>!!e.id||(this.logger.warn(`[CustomModelsProductProvider] Skipping model without id in project config: ${JSON.stringify(e)}`),!1)).map(e=>({disabled:!1,...e})),availableModels:n,mergeStrategy:h.MergeStrategy.SmartMerge},this.logger.info(`Loaded custom models config from project: ${t.fsPath}`)}else this.logger.info(`Skipping empty custom models config at ${t.fsPath}`)}}catch(e){this.logger.error(`Failed to load project-level custom models configuration from ${t.fsPath}`,e)}}let i={};Object.keys(r).length>0&&(i=await this.productMerger.merge(i,r)),Object.keys(o).length>0&&(i=await this.productMerger.merge(i,o));let n=!!e.current.productFeatures?.[h.ProductFeature.CustomModelIdPrefix];if(i.models)for(let e of i.models){if(n&&"string"==typeof e.id&&!e.id.startsWith(h.CUSTOM_LOCAL_MODEL_PREFIX)){let t=e.id;e.id=`${h.CUSTOM_LOCAL_MODEL_PREFIX}${e.id}`,e.aliases||(e.aliases=[]),e.aliases.includes(t)||e.aliases.push(t)}e.tags||(e.tags=[]),e.tags.push(h.MODEL_TAG_CUSTOM),e.url&&(e[h.OVERRIDE_MODE]="replace"),this.resolveModelEnvVariables(e),(0,p.enrichLanguageModelFromCatalog)(e)}if(n&&i.availableModels){let e=i.availableModels.filter(e=>!e.startsWith(h.CUSTOM_LOCAL_MODEL_PREFIX)).map(e=>`${h.CUSTOM_LOCAL_MODEL_PREFIX}${e}`);i.availableModels=Array.from(new Set([...i.availableModels,...e]))}if(void 0!==i.availableModels){let t=e.current.availableModels;t&&t.length>0&&(i.availableModels=Array.from(new Set([...t,...i.availableModels])))}return{...i,mergeStrategy:h.MergeStrategy.SmartMerge}}extractConfig(e){return Array.isArray(e)?{models:e,availableModels:void 0}:null!==e&&"object"==typeof e?{models:Array.isArray(e.models)?e.models:[],availableModels:Array.isArray(e.availableModels)?e.availableModels.filter(e=>"string"==typeof e):void 0}:{models:[],availableModels:void 0}}resolveModelEnvVariables(e){if(e.apiKey){let t=s.EnvUtils.resolveEnvVariables(e.apiKey);t!==e.apiKey&&(this.logger.debug(`Resolved apiKey environment variable for model ${e.id}`),e.apiKey=t)}if(e.url){let t=s.EnvUtils.resolveEnvVariables(e.url);t!==e.url&&(this.logger.debug(`Resolved url environment variable for model ${e.id}`),e.url=t)}}};t.CustomModelsProductProvider=g,o([(0,n.Autowired)(c.FileSystem),(0,n.Optional)(),i("design:type",Object)],g.prototype,"fs",void 0),o([(0,n.Autowired)(c.Workspace),(0,n.Optional)(),i("design:type",Object)],g.prototype,"workspace",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],g.prototype,"logger",void 0),o([(0,n.Autowired)(h.ProductMerger),i("design:type",Object)],g.prototype,"productMerger",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],g.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],g.prototype,"dispose",null),t.CustomModelsProductProvider=o([(0,n.Component)(h.ProductProvider)],g)},30409(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnvProductProvider=void 0;let n=r(88523),s=r(79814),a=r(18629),c=["ACC_PRODUCT_CONFIG_V3","ACC_PRODUCT_CONFIG_V2","ACC_PRODUCT_CONFIG"],l=class{constructor(){this.priority=a.ProductProviderPriority.ENV}async provide(e){let t=e.current,r={};try{let e=process.env[t.productConfigPathEnv||"ACC_PRODUCT_CONFIG_PATH"];e&&this.fs.existsSync(e)&&(r=await this.productMerger.merge(r,JSON.parse(this.fs.readFileSync(e,"utf-8").toString())))}catch(e){this.logger.info(`Failed to create configuration from env path: ${e}`)}try{let e=this.getProductConfig(t.productConfigEnv||c);e&&(r=await this.productMerger.merge(r,JSON.parse(e)))}catch(e){this.logger.info(`Failed to create configuration from env: ${e}`)}return r}getProductConfig(e){if(e){if("string"==typeof e)return process.env[e];for(let t of e){let e=process.env[t];if(e){let r=JSON.parse(e);return"ACC_PRODUCT_CONFIG"===t&&delete r.authentication,("ACC_PRODUCT_CONFIG"===t||"ACC_PRODUCT_CONFIG_V2"===t)&&delete r.models,JSON.stringify(r)}}}}};t.EnvProductProvider=l,o([(0,n.Autowired)(s.FileSystem),i("design:type",Object)],l.prototype,"fs",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],l.prototype,"logger",void 0),o([(0,n.Autowired)(a.ProductMerger),i("design:type",Object)],l.prototype,"productMerger",void 0),t.EnvProductProvider=o([(0,n.Component)(a.ProductProvider)],l)},55762(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(30409),t),i(r(38569),t),i(r(13539),t),i(r(58880),t),i(r(5148),t),i(r(1339),t),i(r(18774),t)},66892(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(55762);let o=r(88523),i=r(18629);t.default=(0,o.autoBind)(e=>{e(i.ProductConfigBasePath).toConstantValue(__dirname)})},66106(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.GitInfoCollectorImpl=void 0;let l=r(88523),d=r(82005),u=r(79814),p=a(r(79896)),h=a(r(16928)),g=r(40856),f=r(43576),m=class{constructor(){this.cacheTTL=3e5,this.defaultScanOptions={maxDepth:3,timeout:1e4,maxDirectories:1e3,fastMode:!1},this.excludedDirectories=new Set(["node_modules","bower_components","vendor","packages","dist","build","out","target","bin","release","debug",".cache","cache","tmp","temp",".tmp","__pycache__",".pytest_cache",".nyc_output",".vscode",".idea",".vs","logs","log",".svn",".hg","data","datasets","dataset","raw_data","processed_data","train_data","test_data","val_data","models","checkpoints","weights","embeddings","features","outputs","results","experiments","runs","wandb","mlruns"]),this.dataDirectoryPrefixes=["data_","dataset_","train_","test_","val_","raw_","processed_"]}init(){this.logger.setContext("GitInfoCollector")}async collect(e=!1,t){if(this.logger.info(`CODEBUDDY_GIT_REPO_SCAN_DISABLED ${process.env.CODEBUDDY_GIT_REPO_SCAN_DISABLED}`),"1"===process.env.CODEBUDDY_GIT_REPO_SCAN_DISABLED||"true"===process.env.CODEBUDDY_GIT_REPO_SCAN_DISABLED)return this.logger.info("Git repository scan is disabled via CODEBUDDY_GIT_REPO_SCAN_DISABLED environment variable"),null;this.logger.info("Starting to collect Git info...");let r=this.workspace.workspaceFolders;if(!r||0===r.length)return this.logger.warn("No workspace folders found"),null;let o=r.map(e=>e.uri.fsPath);if(!e&&this.isCacheValid(o))return this.logger.info("Returning cached Git info"),this.cache.data;let i={...this.defaultScanOptions,...t};try{let e=[],t="single",n={scannedDirectories:0,foundRepositories:0,elapsedTime:0,wasTimeout:!1,wasTruncated:!1};if(1===r.length){let o=r[0],s=await this.findGitRepositoriesAsync(o.uri.fsPath,i,n);if(this.logger.info(`Workspace path: ${o.uri.fsPath}`),this.logger.info(`Found ${s.length} Git repositories`),s.length>0&&this.logger.info(`First Git repository path: ${s[0].projectPath}`),1===s.length&&s[0].projectPath===o.uri.fsPath)this.logger.info("Detected standard single Git project"),t="single",e.push(...s);else if(s.length>1)this.logger.info("Detected single workspace with multiple Git projects"),t="folder",e.push(...s);else{if(1!==s.length)return this.logger.warn("No Git projects found in workspace"),null;this.logger.info("Detected single workspace with subdirectory Git project"),t="folder",e.push(...s)}}else for(let o of(t="multi-root",r)){let t=await this.findGitRepositoriesAsync(o.uri.fsPath,i,n);e.push(...t)}if(0===e.length)return this.logger.warn("No Git repositories found"),null;this.logScanStats(n);let s=await this.determineActiveRepository(e),a={repositories:e,activeRepository:s,workspaceType:t};return this.updateCache(a,o),this.lastCollection=a,this.logger.info(`Git info collection complete: found ${e.length} repositories, active: ${s?.url||"none"}`),a}catch(e){return this.logger.error("Failed to collect Git info:",e),null}}isCacheValid(e){return!!this.cache&&(Date.now()-this.cache.timestamp>this.cacheTTL?(this.logger.debug("Cache expired"),!1):e.length===this.cache.workspaceFolders.length&&(!!e.every((e,t)=>e===this.cache.workspaceFolders[t])||(this.logger.debug("Workspace folders changed, cache invalidated"),!1)))}updateCache(e,t){this.cache={data:e,timestamp:Date.now(),workspaceFolders:t},this.logger.debug("Cache updated")}clearCache(){this.cache=void 0,this.logger.info("Cache cleared")}async findGitRepositoriesAsync(e,t,r){let o=[],i=Date.now(),n={aborted:!1},s=setTimeout(()=>{n.aborted=!0,r.wasTimeout=!0,this.logger.warn(`Scan timeout after ${t.timeout}ms`)},t.timeout);try{this.logger.info(`Starting directory scan: ${e}`);let s=t.fastMode?1:t.maxDepth;this.logger.info("Scanning parent directories..."),await this.scanUpwardForGitRepositoriesAsync(e,o,e,t.maxDepth,n),this.logger.info("Scanning child directories..."),await this.scanDownwardForGitRepositoriesAsync(e,o,e,s,t,r,n),r.elapsedTime=Date.now()-i,r.foundRepositories=o.length,this.logger.info(`Scan complete: found ${o.length} Git repositories in ${r.elapsedTime}ms`)}finally{clearTimeout(s)}return o}async scanUpwardForGitRepositoriesAsync(e,t,r,o,i){let n=e,s=0;for(;s<o&&!i.aborted;){let e=h.dirname(n);if(e===n){this.logger.debug("Reached filesystem root, stopping upward scan");break}n=e,s++;try{if(this.logger.debug(`Scanning upward level ${s}: ${n}`),await f.GitInfoExtractor.isGitRepositoryAsync(n)){this.logger.info(`Found parent Git repository: ${n}`);let e=await this.extractGitInfo(n,r);e&&!this.repositoryExists(t,e.projectPath)&&(t.push(e),this.logger.info(`Added parent Git info: ${e.url} (branch: ${e.branch})`))}}catch(e){this.logger.error(`Error scanning parent directory ${n}:`,e)}await this.yieldToEventLoop()}}async scanDownwardForGitRepositoriesAsync(e,t,r,o,i,n,s){if(!(o<=0)&&!s.aborted){if(await (0,d.isCephFsSubMount)(e,r))return void this.logger.info(`Skipping CephFS sub-mount: ${e}`);if(n.scannedDirectories>=i.maxDirectories){n.wasTruncated||(n.wasTruncated=!0,this.logger.warn(`Reached maximum directory limit (${i.maxDirectories}), truncating scan`));return}try{if(n.scannedDirectories++,this.logger.debug(`Scanning downward ${e}, remaining depth: ${o}`),await f.GitInfoExtractor.isGitRepositoryAsync(e)){this.logger.info(`Found Git repository: ${e}`);let o=await this.extractGitInfo(e,r);o&&!this.repositoryExists(t,o.projectPath)&&(t.push(o),this.logger.info(`Extracted Git info: ${o.url} (branch: ${o.branch})`))}let a=(await p.promises.readdir(e,{withFileTypes:!0})).filter(e=>e.isDirectory()&&this.shouldScanDirectory(e.name));for(let c=0;c<a.length&&!s.aborted;c+=10){let l=a.slice(c,c+10);await Promise.all(l.map(a=>{let c=h.join(e,a.name);return this.scanDownwardForGitRepositoriesAsync(c,t,r,o-1,i,n,s)})),await this.yieldToEventLoop()}}catch(r){let t=r?.code;"ENOENT"===t||"EACCES"===t||"EPERM"===t||"ENOTDIR"===t?this.logger.debug(`Skipping unreadable directory ${e}: ${t}`):this.logger.error(`Error scanning directory ${e}:`,r)}}}yieldToEventLoop(){return new Promise(e=>setImmediate(e))}repositoryExists(e,t){return e.some(e=>e.projectPath===t)}logScanStats(e){this.logger.info(`Scan stats: scanned ${e.scannedDirectories} directories, found ${e.foundRepositories} repositories, elapsed ${e.elapsedTime}ms`+(e.wasTimeout?" (timeout)":"")+(e.wasTruncated?" (truncated)":""))}shouldScanDirectory(e){if(".git"===e)return!1;if(this.excludedDirectories.has(e))return this.logger.debug(`Skipping excluded directory: ${e}`),!1;if(e.startsWith(".")&&![".github"].includes(e))return!1;let t=e.toLowerCase();for(let r of this.dataDirectoryPrefixes)if(t.startsWith(r))return this.logger.debug(`Skipping data directory: ${e}`),!1;return!0}async extractGitInfo(e,t,r){try{let o=await f.GitInfoExtractor.extractGitUrlAsync(e);if(!o)return this.logger.warn(`No remote URL found in ${e}`),null;let i=await f.GitInfoExtractor.getCurrentBranchAsync(e),n=void 0!==r,s=h.relative(t,e);return{url:o,branch:i||void 0,projectPath:e,isSubmodule:n,submodulePath:n?s:void 0,parentPath:n?r:void 0}}catch(t){return this.logger.error(`Failed to extract Git info from ${e}:`,t),null}}async determineActiveRepository(e){return e[0]}isGitRepository(){return void 0!==this.lastCollection&&this.lastCollection.repositories.length>0}};t.GitInfoCollectorImpl=m,s([(0,l.Autowired)(l.Logger),c("design:type",Object)],m.prototype,"logger",void 0),s([(0,l.Autowired)(u.Workspace),c("design:type",Object)],m.prototype,"workspace",void 0),s([(0,l.PostConstruct)(),c("design:type",Function),c("design:paramtypes",[]),c("design:returntype",void 0)],m.prototype,"init",null),t.GitInfoCollectorImpl=s([(0,l.Component)(g.GitInfoCollector)],m)},1339(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66106),t)},12150(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.GitUrlNormalizer=void 0;let GitUrlNormalizer=class GitUrlNormalizer{static extractProjectPath(e){if(!e)return null;try{let t=e.trim();if(t.includes("@")&&t.includes(":")){let e=t.split(":");e.length>=2&&(t=(t=e.slice(1).join(":")).replace(/^\/+/,""))}else(t.startsWith("http://")||t.startsWith("https://"))&&(t=new URL(t).pathname.replace(/^\/+/,""));return(t=(t=t.replace(/\.git$/i,"")).replace(/\/+$/,""))||null}catch(t){return console.warn(`Failed to parse Git URL: ${e}`,t),null}}static extractHost(e){if(!e)return null;try{let t=e.trim();if(t.includes("@")&&t.includes(":")){let e=t.match(/@([^:]+):/);if(e&&e[1])return e[1]}else if(t.startsWith("http://")||t.startsWith("https://"))return new URL(t).hostname;return null}catch(t){return console.warn(`Failed to extract host from Git URL: ${e}`,t),null}}static isGitWoaRepository(e){return"git.woa.com"===this.extractHost(e)}static encodePath(e){return e?encodeURIComponent(e):""}static normalize(e,t=!1){let r=this.extractProjectPath(e);return r?t?this.encodePath(r):r:null}};t.GitUrlNormalizer=GitUrlNormalizer},5148(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(43576),t),i(r(12150),t)},18774(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.readWindowsDownloadChannel=readWindowsDownloadChannel,t.setWindowsDownloadChannelReaderForTesting=setWindowsDownloadChannelReaderForTesting;let o=r(31421);async function readWindowsDownloadChannel(e){return n(e)}function setWindowsDownloadChannelReaderForTesting(e){n=e??defaultRegistryReader}let i=(0,r(57975).promisify)(o.execFile),n=defaultRegistryReader;async function defaultRegistryReader(e){if("win32"===process.platform)for(let t of["HKCU","HKLM"]){let r=await queryRegistryValue(t,e);if(r)return r}}async function queryRegistryValue(e,t){try{let{stdout:r}=await i("reg",["query",`${e}\\Software\\${t}`,"/v","DownloadChannel"],{encoding:"utf8",timeout:3e3,windowsHide:!0}),o=r.match(/DownloadChannel\s+REG_SZ\s+(.+)/);if(o&&o[1])return o[1].trim()||void 0}catch{}}},38569(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.WorkbuddyEnvAgentsPatchProductProvider=void 0,t.isPrivateDirPermissionAcceptable=isPrivateDirPermissionAcceptable;let l=r(88523),d=r(79896),u=a(r(70857)),p=a(r(16928)),h=r(18629),g=["ACC_PRODUCT_CONFIG_V3","ACC_PRODUCT_CONFIG_V2","ACC_PRODUCT_CONFIG"],f=class{constructor(){this.priority=h.ProductProviderPriority.ENV-1}async provide(e){if(!isWorkbuddyDesktopChild())return{};let t=e.current.agents;if(!Array.isArray(t))return{};let r=await readProductSnapshot(e.current.productConfigPathEnv,e.current.productConfigEnv);if(!r)return{};try{let e=JSON.parse(r.raw),o=mergeAgentsPreferEnv(e.agents,t);if(areAgentsEqual(e.agents,o))return{};let i=Array.isArray(e.agents)?e.agents.length:0,n=JSON.stringify({...e,agents:o});if("path"===r.source.kind){let e=await this.acquirePrivateSpillPath();if(!e){let e=Math.max(0,o.length-i);return this.logger?.warn(`[WorkbuddyEnvAgentsPatchProductProvider] skipped patch: failed to acquire a private spill directory; leaving shared spill untouched. ${e} locally added agent(s) will be dropped when the env snapshot is merged back.`),{}}await writePrivateSpillFile(e,n),process.env[r.source.pathEnvKey]=e,this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] patched env agents via private spill: pathEnvKey=${r.source.pathEnvKey}, before=${i}, after=${o.length}`)}else process.env[r.source.envKey]=n,this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] patched env agents inline: key=${r.source.envKey}, before=${i}, after=${o.length}`)}catch(e){this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] failed to patch env agents: error=${e}`)}return{}}async acquirePrivateSpillPath(){if(this.privateSpillPath)return this.privateSpillPath;try{let e=await d.promises.mkdtemp(p.join(u.tmpdir(),"workbuddy-product-spill-"));return await assertPrivateDirSafety(e),this.privateSpillPath=p.join(e,"acc-product-config-v3.json"),registerSpillCleanup(e),this.privateSpillPath}catch(e){this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] failed to create private spill directory: error=${e}`);return}}};function isPrivateDirPermissionAcceptable(e,t=process.platform){return"win32"===t||(63&e)==0}async function assertPrivateDirSafety(e){let t=await d.promises.stat(e),r=process.getuid;if("function"==typeof r&&t.uid!==r())throw Error(`unexpected owner uid=${t.uid} on ${e}`);let o=511&t.mode;if(!isPrivateDirPermissionAcceptable(o))throw Error(`unsafe mode 0o${o.toString(8)} on ${e}`)}function isWorkbuddyDesktopChild(){return"workbuddy-desktop"===process.env.CODEBUDDY_HOST}async function readProductSnapshot(e,t){let r=e||"ACC_PRODUCT_CONFIG_PATH",o=process.env[r];if(o)try{let e=await d.promises.readFile(o,"utf-8");if(e)return{raw:e,source:{kind:"path",pathEnvKey:r}}}catch{}for(let e of"string"==typeof t?[t]:t??g){let t=process.env[e];if(t)return{raw:t,source:{kind:"inline",envKey:e}}}}async function writePrivateSpillFile(e,t){let r=`${e}.tmp`,o=await d.promises.open(r,d.constants.O_WRONLY|d.constants.O_CREAT|d.constants.O_EXCL,384);try{await o.writeFile(t,{encoding:"utf-8"})}finally{await o.close()}await d.promises.rename(r,e)}t.WorkbuddyEnvAgentsPatchProductProvider=f,s([(0,l.Autowired)(l.Logger),(0,l.Optional)(),c("design:type",Object)],f.prototype,"logger",void 0),t.WorkbuddyEnvAgentsPatchProductProvider=f=s([(0,l.Component)(h.ProductProvider)],f);let m=new Set,y=!1;function registerSpillCleanup(e){m.add(e),y||(y=!0,process.on("exit",()=>{for(let e of m)try{(0,d.rmSync)(e,{recursive:!0,force:!0})}catch{}}))}function mergeAgentsPreferEnv(e,t){let r=Array.isArray(e)?e:[],o=Array.isArray(t)?t:[],i=new Set(r.map(e=>e?.name).filter(e=>!!e));return[...r,...o.filter(e=>!e?.name||!i.has(e.name))]}function areAgentsEqual(e,t){return JSON.stringify(e)===JSON.stringify(t)}},59747(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(24015),t.default=(0,r(88523).autoBind)()},3618(e,t){Object.defineProperty(t,"__esModule",{value:!0})},53167(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(3618),t.default=(0,r(88523).autoBind)()},61488(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(79814);let o=r(88523),i=r(47800),n=r(72018);t.default=(0,o.autoBind)(e=>{e(n.FileSystem).toConstantValue(i.fs)})},54463(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62837),t)},97619(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),r(54463);let a=r(88523),c=s(r(79896)),l=r(98776);t.default=(0,a.autoBind)((e,t,r,o)=>{o(l.FileSystem).toConstantValue(c)})},62837(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.SystemInfoContextVariableResolver=void 0;let l=r(88523),d=r(66915),u=a(r(70857)),p=a(r(16928)),h=r(81060),g=class{constructor(){this.name="systemInfo"}async priority(){return 5}async resolve(){let e=this.workspace.workspaceFolders[0]?.uri.fsPath||p.join(u.homedir(),"Desktop");return{name:this.name,value:{os:u.platform(),workspace:e,defaultShell:"win32"===process.platform?"powershell":"bash"}}}};t.SystemInfoContextVariableResolver=g,s([(0,l.Autowired)(h.Workspace),c("design:type",Object)],g.prototype,"workspace",void 0),t.SystemInfoContextVariableResolver=s([(0,l.Component)(d.ContextVariableResolver)],g)},18707(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(92735),t.default=(0,r(88523).autoBind)()},65425(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.StandardClientIpDetector=void 0;let l=r(88523),d=r(27325),u=r(9151),p=a(r(65692)),h=r(87016),g=r(31879),f=r(53520),m="https://api.ipify.org?format=json";function isProbablyIp(e){return 0!==e.length&&!(e.length>45)&&!!(/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)||/^[0-9a-fA-F:.]+$/.test(e)&&e.includes(":"))}let y=class{constructor(){this.attempted=!1}getSync(){return this.cached}async initialize(){this.detect().catch(()=>{})}async detect(){if(!this.attempted){this.attempted=!0;try{let e=await this.productManager.waitConfiguration();if(!0!==e.isOversea)return;this.logger.debug?.(`[ClientIpDetector] probing ${m} (${(0,d.describeProxyForNodeRequest)(m)})`);let t=await this.fetchIp(m,3e3);t&&(this.cached=t)}catch(e){this.logger.warn("[ClientIpDetector] failed:",String(e))}}}fetchIp(e,t){return new Promise(r=>{let o=new h.URL(e),i=!1,n=p.get({hostname:o.hostname,path:`${o.pathname}${o.search}`,port:o.port||443,timeout:t,agent:this.resolveAgent(e)},e=>{if(200!==e.statusCode){e.resume(),done(void 0);return}let t=[],r=0;e.on("data",e=>{(r+=e.length)>1024?done(void 0):t.push(e)}),e.on("end",()=>{try{let e=Buffer.concat(t).toString("utf8"),r=JSON.parse(e),o="string"==typeof r.ip?r.ip.trim():"";done(o&&isProbablyIp(o)?o:void 0)}catch{done(void 0)}}),e.on("error",()=>done(void 0))}),s=setTimeout(()=>done(void 0),t);function done(e){i||(i=!0,clearTimeout(s),n.destroyed||n.destroy(),r(e))}n.on("error",()=>done(void 0)),n.on("timeout",()=>done(void 0))})}resolveAgent(e){return(0,d.resolveNodeProxyAgent)(e)}};t.StandardClientIpDetector=y,s([(0,l.Autowired)(u.ProductManager),c("design:type",Object)],y.prototype,"productManager",void 0),s([(0,l.Autowired)(f.Logger),c("design:type",Object)],y.prototype,"logger",void 0),t.StandardClientIpDetector=s([(0,l.Component)([g.ClientIpDetector,l.ApplicationLifecycle])],y)},65505(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.HttpsProxyEventTransport=void 0;let n=r(88523),s=r(60572),a=r(53520),c=class{accepts(e){return!1}async send(e,t,r){if(this.proxyUrl)try{let{axios:o,httpsAgent:i}=this.loadModules(this.proxyUrl);await o.post(e,t,{headers:r,httpsAgent:i,proxy:!1})}catch(e){throw this.logger.error("HttpsProxyEventTransport failed to send report",e),e}}loadModules(e){if(this.modules)return this.modules;let t=r(64023),{HttpsProxyAgent:o}=r(48580);return this.modules={axios:t.default??t,httpsAgent:new o(e)},this.modules}};t.HttpsProxyEventTransport=c,o([(0,n.Autowired)(a.Logger),i("design:type",Object)],c.prototype,"logger",void 0),t.HttpsProxyEventTransport=o([(0,n.Component)(s.EventTransport)],c)},98025(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34019),t),i(r(65505),t),i(r(65425),t)},34019(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(65772),t)},65772(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.OSModelEventProcessor=t.OSEventProcessor=void 0;let c=r(88523),l=a(r(70857)),d=r(60572),u=class{async process({event:e}){e.os=l.platform(),e.arch=l.arch(),e.osVersion=l.release();let t=l.cpus();e.cpuModel=t.length>0?t[0].model:"unknown",e.cpuCores=t.length,e.memorySize=Math.round(l.totalmem()/1024/1024/1024)}};t.OSEventProcessor=u,t.OSEventProcessor=u=s([(0,c.Component)(d.EventProcessor)],u);let p=class{async process({event:e}){("object"!=typeof e.env||null===e.env)&&(e.env={}),e.env.os=l.platform(),e.env.arch=l.arch(),e.env.osVersion=l.release()}};t.OSModelEventProcessor=p,t.OSModelEventProcessor=s([(0,c.Component)(d.ModelEventProcessor)],p)},54834(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(98025),t),i(r(63247),t),i(r(51567),t)},63247(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.onLogEmitter=void 0,i(r(73543),t),i(r(40064),t),i(r(96205),t),i(r(25840),t);var n=r(73543);Object.defineProperty(t,"onLogEmitter",{enumerable:!0,get:function(){return n.onLogEmitter}})},73543(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.FileLogger=t.onLogEmitter=void 0;let n=r(88523);Object.defineProperty(t,"onLogEmitter",{enumerable:!0,get:function(){return n.onLogEmitter}});let s=r(9151),a=r(54899),c=class extends n.AbstractLogger{get loggerStorageService(){try{return n.ContainerUtil.get(a.LoggerStorageService)}catch{return}}get configuration(){return this.productManager.configuration.getValue()?.log}getLevel(){return this.configuration?.level?s.LogLevel[this.configuration.level]:s.LogLevel.Info}error(e,t){this.output(e,s.LogLevel.Error,t)}warn(e,t){this.output(e,s.LogLevel.Warning,t)}info(e,t){this.output(e,s.LogLevel.Info,t)}debug(e,t){this.output(e,s.LogLevel.Debug,t)}timeEnd(e,t){let r=this.timeRecords.get(e);if(void 0===r)return void this.output(`No such label: ${e} for timeEnd`,s.LogLevel.Info,t);{let o=Date.now()-r;return this.timeRecords.delete(e),this.output(`${e} [${o}ms]`,s.LogLevel.Info,t),o}}resolvePrefix(){let e=new Date().toISOString();return`${e} [${this.level}]`}output(e,t,r){let o=this.traceIdProvider?.provide();if(n.onLogEmitter.fire({level:this.toLogLevel(t),traceId:o,rootContext:this.context,context:r,message:e}),this.getLevel()<=t){let o=this.resolveContextString(r),i=o?`${o} ${e}`:`${e}`;this.loggerStorageService?.store(i,t)}}toLogLevel(e){switch(e){case s.LogLevel.Verbose:return"verbose";case s.LogLevel.Debug:return"debug";case s.LogLevel.Info:return"info";case s.LogLevel.Warning:return"warn";case s.LogLevel.Error:return"error";default:return"info"}}};t.FileLogger=c,o([(0,n.Autowired)(s.ProductManager),i("design:type",Object)],c.prototype,"productManager",void 0),t.FileLogger=o([(0,n.Component)({id:n.Logger,rebind:!0,scope:n.Scope.Transient})],c)},40064(e,t,r){let o;var i,n,s=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__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},l=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),o=0;o<r.length;o++)"default"!==r[o]&&s(t,e,r[o]);return a(t,e),t}),d=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerStorageServiceImpl=void 0;let u=r(88523),p=r(51147),h=r(9151),g=r(79814),f=l(r(76982)),m=r(79896),y=l(r(91943)),_=l(r(70857)),v=l(r(16928)),b=r(22370),w=r(54899),S=r(73638),P=class{constructor(){this.runOnceScheduler=new u.RunOnceScheduler(()=>{this.flush()},1e4),this.pendingLogs=[]}static{n=this}get logger(){return o||(o=u.ContainerUtil.get(w.Logger)).setContext("LoggerStorageService"),o}async getMaxRetention(){let e=(await this.productManager.waitConfiguration()).log?.maxRetention;return"number"==typeof e&&e>0?e:10}async enabled(){let e=(await this.productManager.waitConfiguration()).log?.output;return!Array.isArray(e)||e.includes("file")}get storagePath(){return this.loggerStoragePathProvider?.provide()}get workspacePath(){return this.workspace.workspaceFolders?.[0]?.uri.fsPath??w.DEFAULT_WORKSPACE_PATH}getStoragePath(){return this.storagePath}async store(e,t){if(!await this.enabled())return;let r=this.buildLog(e,t);this.pendingLogs.push(r),this.pendingLogs.length>5e3&&(this.logger.warn("\u5F3A\u5236\u6E05\u7406pendingLogs\uFF0C\u9632\u6B62\u5185\u5B58\u6CC4\u6F0F"),this.save(this.pendingLogs.splice(0))),this.runOnceScheduler.schedule()}async flush(){this.pendingLogs.length>0&&await this.save(this.pendingLogs.splice(0))}flushSync(){if(0===this.pendingLogs.length||!this.storagePath)return;let e=this.pendingLogs.splice(0);try{let t=new Date().toISOString().split("T")[0],r=v.join(this.storagePath,t),o=v.join(r,this.buildLogFilename()),i=e.join("\n")+"\n";if((0,m.mkdirSync)(r,{recursive:!0}),(0,m.existsSync)(o))(0,m.appendFileSync)(o,i,"utf-8");else{let e=`Workspace Path: ${this.workspacePath}
16
+ Connecting to: ${o.name}`),await this.connectToIDE(o),!0}catch(e){return this.logger.error("Auto-connect failed:",e),this.emitState(iw.y.ERROR,void 0,e),!1}}async connectToIDE(e){try{this.mcpServer.isConnected()&&(this.logger.info("Already connected to an IDE, disconnecting first"),await this.disconnect()),this.emitState(iw.y.CONNECTING,e);let t={type:e.url.startsWith("ws:")?"ws-ide":"sse-ide",url:e.url,ideName:e.name,authToken:e.authToken,ideRunningInWindows:e.ideRunningInWindows};await this.mcpServer.connect(t),this.mcpServer.setSelectionChangedHandler(e=>{this.selectionChangedSubject.next(e.params)}),this.mcpServer.setAtMentionedHandler(e=>{this.atMentionedSubject.next(e.params)}),this.currentIDE=e,this.logger.info("\nSuccessfully connected to IDE!"),this.emitState(iw.y.CONNECTED,e),this.ideServerSubject.next(this.mcpServer)}catch(t){throw this.logger.error("Failed to connect to IDE:",t),this.emitState(iw.y.ERROR,e,t),t}}async disconnect(){try{this.mcpServer.isConnected()&&(await this.mcpServer.close(),this.logger.info("Disconnected from IDE")),this.currentIDE=null,this.selectionChangedSubject.next(void 0),this.emitState(iw.y.DISCONNECTED)}catch(e){this.logger.error("Error during disconnect:",e),this.emitState(iw.y.ERROR,void 0,e)}}setAutoReconnect(e){this.logger.info(`Auto-reconnect ${e?"enabled":"disabled"}`)}getMcpServer(){return this.mcpServer}isConnected(){return this.mcpServer.isConnected()}emitState(e,t,r){let o={state:e,ide:t||this.currentIDE||void 0,server:e===iw.y.CONNECTED?this.mcpServer:void 0,error:r,timestamp:Date.now()};this.connectionStateSubject.next(o)}async dispose(){await this.disconnect(),this.connectionStateSubject.complete(),this.ideServerSubject.complete(),this.selectionChangedSubject.complete(),this.atMentionedSubject.complete()}};ide_service_decorate([(0,tM.Autowired)(iw.JI),ide_service_metadata("design:type","function"==typeof(ti=void 0!==iw.JI&&iw.JI)?ti:Object)],iM.prototype,"detector",void 0),ide_service_decorate([(0,tM.Autowired)(iw.Yc),ide_service_metadata("design:type","function"==typeof(tn=void 0!==iw.Yc&&iw.Yc)?tn:Object)],iM.prototype,"mcpServer",void 0),ide_service_decorate([(0,tM.Autowired)(tM.Logger),ide_service_metadata("design:type","function"==typeof(ts=void 0!==tM.Logger&&tM.Logger)?ts:Object)],iM.prototype,"logger",void 0),iM=ide_service_decorate([(0,tM.Component)(iw.OL,tM.ApplicationLifecycle)],iM);var ide_auto_connect_middleware_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 iT=class{constructor(){this.priority=iw.f1}async handle(e,t){if("1"===process.env.CODEBUDDY_DISABLE_IDE)return t();let r=e.request.body;!0===r?.ide&&this.ideService.setAutoConnectRequested(!0),await t()}};ide_auto_connect_middleware_decorate([(0,tM.Autowired)(iw.OL),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(ta=void 0!==iw.OL&&iw.OL)?ta:Object)],iT.prototype,"ideService",void 0),iT=ide_auto_connect_middleware_decorate([(0,tM.Component)(oM.Middleware)],iT),r(71893),r(62827);var iD=r(1226),models_controller_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},models_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},models_controller_param=function(e,t){return function(r,o){t(r,o,e)}};function getModelsPath(e=!0){return e?(0,tW.join)(tU.PathUtils.getHomeDir(),"models.json"):(0,tW.join)(process.cwd(),".codebuddy","models.json")}async function readModelsJson(e,t){try{return parseModelsJson(await e.read())}catch(e){return console.error(`Failed to read models.json from ${t}:`,e),{models:[]}}}function parseModelsJson(e){return!e||"object"!=typeof e||Array.isArray(e)?{models:[]}:{models:Array.isArray(e.models)?e.models:[],availableModels:Array.isArray(e.availableModels)?e.availableModels.filter(e=>"string"==typeof e):void 0}}let iI=class{reply(e){let t=oM.Context.getCurrent();t.response.setHeader("Content-Type","application/json; charset=utf-8"),t.response.end(JSON.stringify(e))}async listCustomModels(e){let t=getModelsPath(!1!==e.global),r=this.createStorage(t,!1!==e.global),o=await readModelsJson(r,t);this.log(`Listed custom models from: ${t}`,{models:o.models.length}),this.reply({models:o.models||[],availableModels:o.availableModels,path:t})}async saveCustomModel(e){let t,r=getModelsPath(!1!==e.global),o=this.createStorage(r,!1!==e.global);await o.update(r=>{t=parseModelsJson(r);let o=e.previousId?t.models.findIndex(t=>t.id===e.previousId):t.models.findIndex(t=>t.id===e.model.id);return o>=0?(t.models[o]=e.model,this.log(`Updated model: ${e.model.id}`,{previousId:e.previousId})):(t.models.push(e.model),this.log(`Added new model: ${e.model.id}`)),!1!==e.visible&&(t.availableModels??=[],t.availableModels.includes(e.model.id)||t.availableModels.push(e.model.id)),t}),await this.syncProductConfiguration(),this.reply({models:t.models,availableModels:t.availableModels,path:r})}async deleteCustomModel(e){let t,r=getModelsPath(!1!==e.global),o=this.createStorage(r,!1!==e.global);await o.update(r=>{let o=(t=parseModelsJson(r)).models.findIndex(t=>t.id===e.id);return o>=0?(t.models.splice(o,1),this.log(`Deleted model: ${e.id}`)):this.log(`Model not found: ${e.id}`),t.availableModels&&(t.availableModels=t.availableModels.filter(t=>t!==e.id)),t}),await this.syncProductConfiguration(),this.reply({models:t.models,availableModels:t.availableModels,path:r})}async syncProductConfiguration(){if(this.productManager)try{await this.productManager.sync(!0)}catch(e){this.logger?.warn?this.logger.warn("[ModelsController] Failed to sync product configuration after custom model update",e):console.warn("[ModelsController] Failed to sync product configuration after custom model update",e)}}createStorage(e,t){return new iD.ModelsJsonStorage({filePath:e,scope:t?"user":"project",logger:this.logger?{warn:e=>this.logger?.warn?.(e),info:e=>this.logger?.info?.(e)}:console,processRole:"cbc"})}log(e,t){this.logger?t?this.logger.debug(`[ModelsController] ${e}`,t):this.logger.debug(`[ModelsController] ${e}`):console.log(`[ModelsController] ${e}`,t||"")}};models_controller_decorate([(0,tM.Autowired)(tM.Logger),(0,tM.Optional)(),models_controller_metadata("design:type","function"==typeof(tc=void 0!==tM.Logger&&tM.Logger)?tc:Object)],iI.prototype,"logger",void 0),models_controller_decorate([(0,tM.Autowired)(tY.ProductManager),(0,tM.Optional)(),models_controller_metadata("design:type","function"==typeof(tl=void 0!==tY.ProductManager&&tY.ProductManager)?tl:Object)],iI.prototype,"productManager",void 0),models_controller_decorate([(0,oA.Post)("/custom/list"),models_controller_param(0,(0,oA.Body)()),models_controller_metadata("design:type",Function),models_controller_metadata("design:paramtypes",[Object]),models_controller_metadata("design:returntype","function"==typeof(td="u">typeof Promise&&Promise)?td:Object)],iI.prototype,"listCustomModels",null),models_controller_decorate([(0,oA.Post)("/custom/save"),models_controller_param(0,(0,oA.Body)()),models_controller_metadata("design:type",Function),models_controller_metadata("design:paramtypes",[Object]),models_controller_metadata("design:returntype","function"==typeof(tu="u">typeof Promise&&Promise)?tu:Object)],iI.prototype,"saveCustomModel",null),models_controller_decorate([(0,oA.Post)("/custom/delete"),models_controller_param(0,(0,oA.Body)()),models_controller_metadata("design:type",Function),models_controller_metadata("design:paramtypes",[Object]),models_controller_metadata("design:returntype","function"==typeof(tp="u">typeof Promise&&Promise)?tp:Object)],iI.prototype,"deleteCustomModel",null),iI=models_controller_decorate([(0,oA.Controller)("models")],iI),r(71054),r(43482),r(77079),r(90424),r(3857),r(47385),r(19472);var iL=r(91882),iF=r(64205),storage_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 i$=0,ix=class{constructor(){this.scopeMutexes=new Map,this.cache=new Map}static{th=this}static{this.CACHE_TTL=6e4}async get(e,t=iL.YM.GLOBAL,r){return(await this.readWithCache(this.getFilePath(t,r)))[e]}async getNamespace(e,t=iL.YM.GLOBAL,r){let o=await this.readWithCache(this.getFilePath(t,r)),i=e+".",n={};for(let[e,t]of Object.entries(o))e.startsWith(i)&&(n[e.slice(i.length)]=t);return n}async set(e,t,r=iL.YM.GLOBAL,o){let i=this.getFilePath(r,o);await this.withLock(i,async()=>{let r=await this.readBaseline(i);r[e]=t,await this.writeToDisk(r,i)})}async setMany(e,t=iL.YM.GLOBAL,r){let o=this.getFilePath(t,r);await this.withLock(o,async()=>{let t=await this.readBaseline(o);for(let{key:r,value:o}of e)null==o?delete t[r]:t[r]=o;await this.writeToDisk(t,o)})}async remove(e,t=iL.YM.GLOBAL,r){let o=this.getFilePath(t,r);await this.withLock(o,async()=>{let t=await this.readBaseline(o);delete t[e],await this.writeToDisk(t,o)})}async list(e,t){if(e)return{...await this.readWithCache(this.getFilePath(e,t))};let r=await this.readWithCache(this.getFilePath(iL.YM.GLOBAL)),o=await this.readWithCache(this.getFilePath(iL.YM.WORKSPACE,t));return{...r,...o}}getFilePath(e,t){if(e===iL.YM.GLOBAL)return(0,tW.join)(tU.PathUtils.getHomeDir(),iL.oM);if(t){let e=tU.PathUtils.compressPath(tU.PathUtils.canonicalizeStorePath(t));return(0,tW.join)(tU.PathUtils.getHomeProjectsDir(),e,iL.oM)}return(0,tW.join)(tU.PathUtils.getHomeProjectDir(),iL.oM)}getMutex(e){let t=this.scopeMutexes.get(e);return t||(t=new iF.eu,this.scopeMutexes.set(e,t)),t}async withLock(e,t){return this.getMutex(e).runExclusive(t)}async readWithCache(e){let t=this.cache.get(e);if(t&&Date.now()<t.expires)return t.data;let r=await this.readFromDisk(e);return this.cache.set(e,{data:r,expires:Date.now()+th.CACHE_TTL}),r}async readFromDisk(e){try{return await this.readBaseline(e)}catch(t){return this.logger.warn?.(`[Storage] Failed to read ${e}: ${t.message}`),{}}}async readBaseline(e){let t;try{t=await (0,tH.readFile)(e,"utf-8")}catch(e){if("ENOENT"===e.code)return{};throw e}try{let r=JSON.parse(t);if("object"==typeof r&&null!==r&&!Array.isArray(r))return r;this.logger.warn?.(`[Storage] Invalid data format in ${e}, resetting to empty`)}catch(t){this.logger.warn?.(`[Storage] Corrupt JSON in ${e}, resetting to empty: ${t.message}`)}return{}}async writeToDisk(e,t){try{await (0,tH.mkdir)((0,tW.dirname)(t),{recursive:!0});let r=`${t}.${Date.now()}-${process.pid}-${i$++}.tmp`;await (0,tH.writeFile)(r,JSON.stringify(e,null,2),"utf-8");try{await (0,tH.rename)(r,t)}catch(e){try{await (0,tH.unlink)(r)}catch{}throw e}this.cache.set(t,{data:{...e},expires:Date.now()+th.CACHE_TTL})}catch(e){throw this.logger.error?.(`[Storage] Failed to write ${t}: ${e.message}`),e}}};storage_service_decorate([(0,tM.Autowired)(tM.Logger),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(tg=void 0!==tM.Logger&&tM.Logger)?tg:Object)],ix.prototype,"logger",void 0),ix=th=storage_service_decorate([(0,tM.Component)(iL.n$)],ix),r(79003);var iU=r(20258);r(79809),r(62797),r(71832),r(98660),r(55429),r(76275);var sandbox_rules_controller_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},sandbox_rules_controller_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iN=class{async sync(e){let t=oM.Context.getCurrent();if(!(0,iU.HA)(e)){t.response.statusCode=400,t.response.end(JSON.stringify({error:"Request body must be a SandboxRulesDelta object with network/file/program as objects"}));return}if(!this.sandboxShellService){this.logger.info("[SandboxRulesSync] SandboxShellService not available, skipping","SandboxRulesController"),t.response.statusCode=200,t.response.end(JSON.stringify({synced:!1}));return}try{e.refresh&&this.settingsManager.clearCache(t$.I7.USER),await this.sandboxShellService.applyRulesDelta(e),t.response.statusCode=200,t.response.end(JSON.stringify({synced:!0}))}catch(e){this.logger.error("[SandboxRulesSync] applyRulesDelta failed:",e),t.response.statusCode=500,t.response.end(JSON.stringify({error:e instanceof Error?e.message:"Unknown error"}))}}};sandbox_rules_controller_decorate([(0,tM.Autowired)(t$.Vr),sandbox_rules_controller_metadata("design:type",Object)],iN.prototype,"settingsManager",void 0),sandbox_rules_controller_decorate([(0,tM.Autowired)(iU.TN),(0,tM.Optional)(),sandbox_rules_controller_metadata("design:type",Object)],iN.prototype,"sandboxShellService",void 0),sandbox_rules_controller_decorate([(0,tM.Autowired)(tT.Logger),sandbox_rules_controller_metadata("design:type","function"==typeof(tf=void 0!==tT.Logger&&tT.Logger)?tf:Object)],iN.prototype,"logger",void 0),sandbox_rules_controller_decorate([(0,oA.Post)("sync"),(n=(0,oA.Body)(),function(e,t){n(e,t,0)}),sandbox_rules_controller_metadata("design:type",Function),sandbox_rules_controller_metadata("design:paramtypes",[Object]),sandbox_rules_controller_metadata("design:returntype","function"==typeof(tm="u">typeof Promise&&Promise)?tm:Object)],iN.prototype,"sync",null),iN=sandbox_rules_controller_decorate([(0,oA.Controller)("internal/sandbox-rules")],iN),r(79652);let iB=Symbol("StatusService"),iH=Symbol("StatusManager");var iW=r(22470),status_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 iK=class{async executeStatusLine(e){try{let t=(await this.settingsManager.list()).statusLine;if(!t||!t.command)return{text:"",success:!1,error:"No status line command configured"};let r=this.expandPath(t.command);return await this.executeCommand(r,e)}catch(e){return{text:"",success:!1,error:`Failed to execute status line: ${e.message}`}}}async isStatusLineConfigured(){try{let e=(await this.settingsManager.list()).statusLine;if(!e||!e.command)return!1;return!0}catch{return!1}}expandPath(e){return e.startsWith("~/")?(0,tW.resolve)(process.env.HOME||"",e.slice(2)):e.startsWith("./")?(0,tW.resolve)(r3.P.getWorkDir(),e):e}async executeCommand(e,t){return new Promise(r=>{let o=(0,iS.spawn)(e,[],{stdio:["pipe","pipe","pipe"],shell:!0,env:(0,iW.Pz)({baseEnv:process.env,projectDir:r3.P.getWorkDir(),session:{id:t.session_id},model:t.model.id}),windowsHide:!0,timeout:5e3}),i="",n="";o.stdin.write(JSON.stringify(t,null,2)),o.stdin.end(),o.stdout.on("data",e=>{i.length<10240&&(i+=e.toString())}),o.stderr.on("data",e=>{n+=e.toString()}),o.on("close",e=>{0===e?r({text:i.trim().split("\n").flatMap(e=>e.trim()||[]).slice(0,3).join("\n"),success:!0}):e&&r({text:"",success:!1,error:`Command exited with code ${e}: ${n}`})}),o.on("error",e=>{r({text:"",success:!1,error:`Failed to execute command: ${e.message}`})}),o.on("timeout",()=>{o.kill(),r({text:"",success:!1,error:"Command execution timeout"})})})}};status_service_decorate([(0,tM.Autowired)(r0.Vr),function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}("design:type","function"==typeof(ty=void 0!==r0.Vr&&r0.Vr)?ty:Object)],iK.prototype,"settingsManager",void 0),iK=status_service_decorate([(0,tM.Component)(iB)],iK);var iq=r(48574),iz=r(78290),iV=r(30311),iY=r(56097),iJ=r(438),status_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},status_manager_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iG=class{constructor(){this.onStatusLineChangedEmitter=new tM.Emitter,this.onStatusLineChanged=this.onStatusLineChangedEmitter.event,this.isRunning=!1}start(){this.isRunning||(this.isRunning=!0,this.logger.info("Status line manager started"),this.sessionSubscription=this.sessionManager.sessionSubject.subscribe(e=>{this.scheduleUpdate(),this.resultSubscription?.unsubscribe(),this.permissionModeSubscription?.unsubscribe(),this.resultSubscription=e?.resultSubject.subscribe(()=>{this.scheduleUpdate()}),this.permissionModeSubscription=e?.permissionModeSubject?.subscribe(()=>{this.scheduleUpdate()})}),this.settingsSubscription=this.settingsManager.onDidChange(()=>{this.scheduleUpdate()}),this.costSubscription=this.costService.onDidChangeCost(()=>{this.scheduleUpdate()}),this.scheduleUpdate())}stop(){this.isRunning&&(this.isRunning=!1,this.sessionSubscription?.unsubscribe(),this.resultSubscription?.unsubscribe(),this.permissionModeSubscription?.unsubscribe(),this.settingsSubscription?.dispose(),this.costSubscription?.dispose(),this.sessionSubscription=void 0,this.resultSubscription=void 0,this.permissionModeSubscription=void 0,this.settingsSubscription=void 0,this.costSubscription=void 0,this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=void 0),this.logger.info("Status line manager stopped"))}getCurrentStatusLine(){return this.currentStatusLine}async updateStatusLine(){try{if(!await this.statusService.isStatusLineConfigured())return void this.setStatusLine({text:"",success:!1,error:"Status line not configured"});let e=await this.collectStatusLineData(),t=await this.statusService.executeStatusLine(e);this.setStatusLine(t)}catch(e){this.logger.error("Failed to update status line:",e),this.setStatusLine({text:"",success:!1,error:`Update failed: ${e.message}`})}}scheduleUpdate(){this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>{this.updateStatusLine()},300)}setStatusLine(e){this.currentStatusLine=e,this.onStatusLineChangedEmitter.fire(e)}async collectStatusLineData(){let e=this.sessionManager.sessionSubject.value,t=tU.PathUtils.getWorkDir(),r=this.getProjectDir(),o=e?.requestOptions?.model??e?.options?.model??await this.settingsManager.get("model")??"",i=await this.getVersion(),n=this.extractCostFromSession(e),s=await this.getOutputStyleName(e),a=await this.getAddedDirs(),c=await this.collectContextWindowData(e,o),l=await this.collectVimData();return{hook_event_name:"Status",session_id:e?.id||"unknown",session_name:e?tU.MessageContentUtils.getSessionName(e.history):void 0,transcript_path:this.getTranscriptPath(e?.id),cwd:t,permission_mode:e?.permissionModeSubject?.value||"default",model:{id:o,display_name:await this.getModelDisplayName(o)},workspace:{current_dir:t,project_dir:r,added_dirs:a},version:i,output_style:{name:s},cost:n,context_window:c,exceeds_200k_tokens:(c.current_usage?.input_tokens||0)>2e5,...l,...this.collectTeamData()}}getProjectDir(){let e=tU.PathUtils.getWorkDir(),t=e;for(;"/"!==t;){try{let e=(0,tW.join)(t,"package.json");return r(79896).accessSync(e),t}catch{}try{return r(79896).accessSync((0,tW.join)(t,".git")),t}catch{}let e=(0,tW.join)(t,"..");if(e===t)break;t=e}return e}getTranscriptPath(e){if(e)return this.sessionStore.getSessionFilePath(e)}async getVersion(){try{return tU.PackageUtils.getCurrentPackageJson().version||"0.0.0"}catch{return"0.0.0"}}async getModelDisplayName(e){let t=(await this.productManager.waitConfiguration()).models||[];return t.find(t=>t.id===e)?.name||e}async getOutputStyleName(e){try{let t=e?.options?.outputStyle;if(t)return t;return await this.settingsManager.get("outputStyle",r0.I7.USER)||"default"}catch{return"default"}}async getAddedDirs(){try{return await this.workspaceFolderManager.getWorkspaceFolders()}catch{return[]}}async collectContextWindowData(e,t){let r,o;if(!e)return{total_input_tokens:0,total_output_tokens:0,context_window_size:0,used_percentage:null,remaining_percentage:null};let i=e.usage?.inputTokens||0,n=e.usage?.outputTokens||0;try{r=tU.UsageUtils.getLatestUsage(e)}catch{}let s=r?.inputTokens||0,a=0;try{let t=await this.agentManager.getDefault(),r=await tU.ModelUtils.resolveModelForTokenLimits(this.agentManager,e,t.name);a=(0,iz.Hr)(e,r,this.sessionManager)||0}catch(e){this.logger.error("Failed to get model context window size:",e)}let c=null,l=null;if(a>0&&s>0){let e=s/a;c=Math.round(1e4*e)/100,l=Math.max(0,Math.round((1-e)*1e4)/100)}if(r){let e=this.costService.getTokenUsageByModel(),t=0,i=0;for(let r of Object.values(e))t+=r.cachedReadTokens||0,i+=r.cachedWriteTokens||0;o={input_tokens:r.inputTokens||0,output_tokens:r.outputTokens||0,cache_creation_input_tokens:i,cache_read_input_tokens:t}}return{total_input_tokens:i,total_output_tokens:n,context_window_size:a,current_usage:o,used_percentage:c,remaining_percentage:l}}async collectVimData(){try{let e=tM.ContainerUtil.get(iJ.u),t=await e.isEnabled();if(!t)return{};return{vim:{enabled:t}}}catch{return{}}}extractCostFromSession(e){let t=this.costService.getAllStatistics();return{total_cost_usd:0,total_duration_ms:t.runningTime,total_api_duration_ms:t.apiDuration,total_lines_added:t.fileChangeStats.totalAddedLines,total_lines_removed:t.fileChangeStats.totalDeletedLines}}collectTeamData(){try{let e=tM.ContainerUtil.get(iq.TeamManager);if(!e.isInTeam())return{};let t=e.getTeam();if(!t)return{};let r=(0,iY.getTeamMemberRegistry)().getActive().length,o=t.members.filter(e=>"team-lead"!==e.name).length;return{team:{name:t.name,active_members:r,total_members:o}}}catch{return{}}}};status_manager_decorate([(0,tM.Autowired)(tY.ProductManager),status_manager_metadata("design:type","function"==typeof(t_=void 0!==tY.ProductManager&&tY.ProductManager)?t_:Object)],iG.prototype,"productManager",void 0),status_manager_decorate([(0,tM.Autowired)(iB),status_manager_metadata("design:type","function"==typeof(tv=void 0!==iB&&iB)?tv:Object)],iG.prototype,"statusService",void 0),status_manager_decorate([(0,tM.Autowired)(io.Cv),status_manager_metadata("design:type","function"==typeof(tb=void 0!==io.Cv&&io.Cv)?tb:Object)],iG.prototype,"sessionManager",void 0),status_manager_decorate([(0,tM.Autowired)(r0.Vr),status_manager_metadata("design:type","function"==typeof(tw=void 0!==r0.Vr&&r0.Vr)?tw:Object)],iG.prototype,"settingsManager",void 0),status_manager_decorate([(0,tM.Autowired)(t9.T_),status_manager_metadata("design:type","function"==typeof(tS=void 0!==t9.T_&&t9.T_)?tS:Object)],iG.prototype,"costService",void 0),status_manager_decorate([(0,tM.Autowired)(io.c9),status_manager_metadata("design:type","function"==typeof(tP=void 0!==io.c9&&io.c9)?tP:Object)],iG.prototype,"sessionStore",void 0),status_manager_decorate([(0,tM.Autowired)(tD.VaB),status_manager_metadata("design:type","function"==typeof(tC=void 0!==tD.VaB&&tD.VaB)?tC:Object)],iG.prototype,"agentManager",void 0),status_manager_decorate([(0,tM.Autowired)(iV.z),status_manager_metadata("design:type","function"==typeof(tO=void 0!==iV.z&&iV.z)?tO:Object)],iG.prototype,"workspaceFolderManager",void 0),status_manager_decorate([(0,tM.Autowired)(tT.Logger),status_manager_metadata("design:type","function"==typeof(tE=void 0!==tT.Logger&&tT.Logger)?tE:Object)],iG.prototype,"logger",void 0),iG=status_manager_decorate([(0,tM.Component)(iH)],iG);let iX=Symbol("TokenUsageThresholdsService");var token_usage_thresholds_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},token_usage_thresholds_service_metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let iZ=class{async calculateTokenTokenUsageThresholds(e){try{let t=await this.productManager.waitConfiguration(),r=t?.tokenUsageThresholds?.inputTokens||{},o=tU.UsageUtils.getLatestUsage(e);if(!o)return;let i=await this.agentManager.getDefault(),n=await tU.ModelUtils.resolveModelForTokenLimits(this.agentManager,e,i.name),s=(0,iz.Hr)(e,n,this.sessionManager);if(!s)return;let a=o.inputTokens||0,c=a/s,{emergency:l,critical:d,warning:u}=r,p="info";return l&&c>=l?p="emergency":d&&c>=d?p="critical":u&&c>=u&&(p="warning"),{total:s,used:a,usage:Math.min(c,1),usageLevel:p,modelId:n.id,modelName:n.name||"",maxInputTokens:s}}catch(e){this.logger.error(`calculate session TokenTokenUsageThresholds error : ${e}`);return}}};token_usage_thresholds_service_decorate([(0,tM.Autowired)(tD.VaB),token_usage_thresholds_service_metadata("design:type","function"==typeof(tk=void 0!==tD.VaB&&tD.VaB)?tk:Object)],iZ.prototype,"agentManager",void 0),token_usage_thresholds_service_decorate([(0,tM.Autowired)(tT.Logger),token_usage_thresholds_service_metadata("design:type","function"==typeof(tj=void 0!==tT.Logger&&tT.Logger)?tj:Object)],iZ.prototype,"logger",void 0),token_usage_thresholds_service_decorate([(0,tM.Autowired)(tY.ProductManager),token_usage_thresholds_service_metadata("design:type","function"==typeof(tR=void 0!==tY.ProductManager&&tY.ProductManager)?tR:Object)],iZ.prototype,"productManager",void 0),token_usage_thresholds_service_decorate([(0,tM.Autowired)(tL.Cv),token_usage_thresholds_service_metadata("design:type","function"==typeof(tA=void 0!==tL.Cv&&tL.Cv)?tA:Object)],iZ.prototype,"sessionManager",void 0),iZ=token_usage_thresholds_service_decorate([(0,tM.Component)(iX)],iZ),r(71639),r(35882),r(89911);let iQ=(0,tM.autoBind)((e,t,r,o)=>{o(tY.ProductConfigBasePath).toDynamicValue(()=>tU.PathUtils.getRootPathSync())})},77079(e,t,r){r.d(t,{I:()=>u});var o,i,n=r(88523),s=r(92735),a=r(38433),c=r(95004),l=r(71054),d=r(84570),__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},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let u=class{constructor(){this.subscriptions=new Map,this.lastProgressUpdate=0,this.PROGRESS_UPDATE_INTERVAL=500}async start(e){if(this.stop(e.id),!1===await this.settingsManager.get("enableTerminalProgressBar")||e.options.print||e.options.acp)return;let t=a.c.detectAsType();if(!c.p.supportsProgressProtocol(t))return;let r=e.interruptionSubject.subscribe(e=>{e?this.updateProgress(c.$.INDETERMINATE):this.clearProgress()});this.subscriptions.set(e.id,r)}stop(e){let t=this.subscriptions.get(e);t&&(t.unsubscribe(),this.subscriptions.delete(e)),this.clearProgress()}updateProgress(e,t=0){let r=Date.now();if(!(r-this.lastProgressUpdate<this.PROGRESS_UPDATE_INTERVAL)&&(this.currentProgressState?.state!==e||this.currentProgressState?.percentage!==t)){this.lastProgressUpdate=r,this.currentProgressState={state:e,percentage:t};try{let r=a.c.detectAsType(),o=c.p.generateProgress(r,e,t);if(!o)return;c.p.needsTmuxWrapping()&&(o=c.p.wrapForTmux(o)),c.p.writeToTerminal(o)}catch(e){this.logger.warn?.("Failed to update progress:",e)}}}clearProgress(){this.currentProgressState&&(this.updateProgress(c.$.CLEAR,0),this.currentProgressState=void 0)}};__decorate([(0,n.Autowired)(s.Logger),__metadata("design:type","function"==typeof(o=void 0!==s.Logger&&s.Logger)?o:Object)],u.prototype,"logger",void 0),__decorate([(0,n.Autowired)(d.Vr),__metadata("design:type","function"==typeof(i=void 0!==d.Vr&&d.Vr)?i:Object)],u.prototype,"settingsManager",void 0),u=__decorate([(0,n.Component)(l.M)],u)},43482(e,t,r){r.d(t,{b:()=>h});var o,i,n=r(88523),s=r(92735),a=r(20131),c=r(84570),l=r(95004),d=r(38433),u=r(71054),__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},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let p=/[\x00-\x1f\x7f-\x9f]/g;function stripControlChars(e){return e.replace(p,"")}let h=class{async sendNotification(e,t="CodeBuddy",r,o){if(this.shouldSendNotification(r))return this.sendToolNotification(e,t,o)}async sendToolNotification(e,t="CodeBuddy",r){if(!(r?.options.print||r?.options.acp))try{let r=await this.settingsManager.get("preferredNotifChannel")??"Auto";if("Disabled"===r)return;await this.dispatchOsc(e,t,r)}catch(e){this.logger.warn?.("Failed to send terminal notification:",e),await this.fallbackToBel()}}async dispatchOsc(e,t,r){let o;if(e=stripControlChars(e),t=stripControlChars(t),"Auto"===r){let r=d.c.detectAsType();o=l.p.selectNotificationProtocol(r).generate(e,t)}else o=this.generateNotificationByChannel(r,e,t);l.p.needsTmuxWrapping()&&(o=l.p.wrapForTmux(o)),l.p.writeToTerminal(o),this.logger.debug?.(`Terminal notification sent: ${e}`)}async fallbackToBel(){try{let e=l.p.generateBEL(),t=l.p.needsTmuxWrapping()?l.p.wrapForTmux(e):e;l.p.writeToTerminal(t)}catch(e){this.logger.error?.("Failed to send fallback BEL notification:",e)}}generateNotificationByChannel(e,t,r){switch(e){case"Ghostty (OSC 777)":return l.p.generateOSC777(r,t);case"Kitty (OSC 99)":return l.p.generateOSC99(t);case"iTerm2 (OSC 9)":{let e=`${r}: ${t}`;return l.p.generateOSC9(e)}case"Terminal Bell (\\a)":default:return l.p.generateBEL();case"iTerm2 w/ Bell":return l.p.generateOSC9(`${r}: ${t}`)+l.p.generateBEL()}}shouldSendNotification(e){return!!e&&[a._n.PERMISSION_PROMPT,a._n.ELICITATION_DIALOG,a._n.IDLE_PROMPT].includes(e)}};__decorate([(0,n.Autowired)(s.Logger),__metadata("design:type","function"==typeof(o=void 0!==s.Logger&&s.Logger)?o:Object)],h.prototype,"logger",void 0),__decorate([(0,n.Autowired)(c.Vr),__metadata("design:type","function"==typeof(i=void 0!==c.Vr&&c.Vr)?i:Object)],h.prototype,"settingsManager",void 0),h=__decorate([(0,n.Component)(u.V)],h)},89911(e,t,r){r.d(t,{Y:()=>m});var o,i,n,s,a=r(88523),c=r(9151),l=r(91943),d=r(16928),u=r(13866),p=r(78290),h=r(28463),g=r(46712),f=r(35882),__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},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let m=class{constructor(){this.initialized=!1,this.cachedAllOutputStyles=[]}initialize(){this.init()}async init(){this.initialized||(this.cachedAllOutputStyles=await this.loadAllOutputStyles(),this.initialized=!0,this.logger.info(`Initialized ${this.cachedAllOutputStyles.length} output styles`))}async reload(){this.initialized=!1,this.cachedAllOutputStyles=[],this.backgroundInitPromise=void 0,await this.init()}async getInitializeSnapshot(){return this.initialized?this.cachedAllOutputStyles:(this.backgroundInitPromise||(this.backgroundInitPromise=this.init().catch(e=>{this.logger.debug("Background output styles init failed",e),this.backgroundInitPromise=void 0})),this.initializeSnapshotPromise||(this.initializeSnapshotPromise=this.loadBuiltInOutputStyles()),this.initializeSnapshotPromise)}async getAllOutputStyles(){return!this.initialized&&(this.backgroundInitPromise&&await this.backgroundInitPromise,this.initialized||await this.init()),this.cachedAllOutputStyles}parseOutputStyleContent(e,t){let r,o="",i="",n=e,s=e.match(/^---\n([\s\S]*?)\n---/);if(s){let t=s[1],a=t.match(/^name:\s*(.+)$/m),c=t.match(/^description:\s*(.+)$/m),l=t.match(/^keep-coding-instructions:\s*(.+)$/m);a&&(o=a[1].trim()),c&&(i=c[1].trim()),l&&(r="true"===l[1].trim().toLowerCase()),n=e.replace(/^---\n[\s\S]*?\n---\n?/,"").trim()}return o||(o=(0,d.parse)(t).name.replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase())),{name:o,description:i,content:n,keepCodingInstructions:r}}async getOutputStyleByName(e){let t=(await this.getAllOutputStyles()).find(t=>t.name.toLowerCase()===e.toLowerCase());if(t){if(!t.content&&t.instructionsTemplate)try{t.content=await this.promptRenderer.render(t.instructionsTemplate)}catch(e){this.logger.error(`Failed to render output style template "${t.instructionsTemplate}":`,e),t.content=""}return t}}async loadBuiltInOutputStyles(){let e=[];try{for(let t of(await this.productManager.waitConfiguration()).outputStyles||[])e.push({name:t.name,description:t.description,content:"",instructionsTemplate:t.instructions,keepCodingInstructions:t.keepCodingInstructions})}catch(t){this.logger.error("Failed to load built-in output styles:",t),e.push({name:"Default",description:`${u.Dt} completes coding tasks efficiently and provides concise responses`,content:""})}return e}async loadAllOutputStyles(){let e=[],t=g.PathUtils.getWorkDir(),r=(0,d.parse)(t).root;for(;t!==r;){let r=[],o=(0,d.join)(t,".codebuddy",f.lM);try{for(let e of(await (0,l.access)(o),(await (0,l.readdir)(o)).filter(e=>e.endsWith(".md")))){let t=(0,d.join)(o,e);try{let e=await (0,l.readFile)(t,"utf-8"),o=this.parseOutputStyleContent(e,t);r.push(o)}catch(e){this.logger.error(`Failed to read output style file ${t}:`,e)}}}catch(e){"ENOENT"!==e.code&&"EACCES"!==e.code&&this.logger.error(`Failed to access output style directory ${o}:`,e)}r.length>0&&e.push(r);let i=(0,d.dirname)(t);if(i===t)break;t=i}let o=e.reverse().flat(),i=[...await this.loadBuiltInOutputStyles(),...o,...await this.loadPluginOutputStyles()],n=new Set,s=[];for(let e of i)n.has(e.name)||(n.add(e.name),s.push(e));return s}async getProjectOutputStyles(){return this.getAllOutputStyles()}async loadPluginOutputStyles(){if(!this.pluginManager)return[];try{let e=await this.pluginManager.getActivePlugins(),t=[];for(let{components:r}of e)try{r?.outputStyles&&t.push(...r.outputStyles)}catch{}return t}catch(e){return this.logger.debug("Failed to load plugin output styles",e),[]}}};__decorate([(0,a.Autowired)(a.Logger),__metadata("design:type","function"==typeof(o=void 0!==a.Logger&&a.Logger)?o:Object)],m.prototype,"logger",void 0),__decorate([(0,a.Autowired)(c.ProductManager),__metadata("design:type","function"==typeof(i=void 0!==c.ProductManager&&c.ProductManager)?i:Object)],m.prototype,"productManager",void 0),__decorate([(0,a.Autowired)(p.Ad),__metadata("design:type","function"==typeof(n=void 0!==p.Ad&&p.Ad)?n:Object)],m.prototype,"promptRenderer",void 0),__decorate([(0,a.Autowired)(h.R0),(0,a.Optional)(),__metadata("design:type","function"==typeof(s=void 0!==h.R0&&h.R0)?s:Object)],m.prototype,"pluginManager",void 0),m=__decorate([(0,a.Component)(f.Sk)],m)},54202(e,t,r){r.d(t,{EA:()=>o.ProductEnvService,FQ:()=>n,Vi:()=>i,pg:()=>o.ProductEnviroment});var o=r(86482);let i=Symbol("ConfigWatchService"),n=Symbol("McpWatchService")},18084(e,t,r){r.r(t),r.d(t,{default:()=>o});let o=(0,r(88523).autoBind)(()=>{})},57740(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(86482),t.default=(0,r(88523).autoBind)()},3203(e,t){Object.defineProperty(t,"__esModule",{value:!0})},63159(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(3203),t.default=(0,r(88523).autoBind)()},42417(e,t,r){r.r(t),r.d(t,{default:()=>o});let o=(0,r(88523).autoBind)()},55788(e,t,r){r.r(t),r.d(t,{default:()=>o});let o=(0,r(88523).autoBind)()},7639(e,t,r){r.r(t),r.d(t,{default:()=>o}),r(30944);let o=(0,r(88523).autoBind)()},98759(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(14931),t.default=(0,r(88523).autoBind)()},23294(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(41394),t),i(r(38924),t)},5112(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(14931),r(23294),t.default=(0,r(88523).autoBind)()},65903(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(51147),t.default=(0,r(88523).autoBind)()},56490(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.FilePathServiceImpl=void 0;let l=r(88523),d=a(r(70857)),u=a(r(16928)),p=r(51147),h=class{constructor(){this.userId="default",this.ideType="VSCode",this.basePath=d.homedir()}init(){this.basePath=this.getBasePath()}setCurrentUserId(e){this.userId=e}setIDEType(e){this.ideType=e}get homePath(){return u.join(d.homedir())}get tmpdir(){return u.join(d.tmpdir())}get userDataPath(){return u.join(this.basePath,"Data",this.userId,this.ideType)}get sharedDataPath(){return u.join(this.basePath,"Data","Public")}get cachePath(){return u.join(this.basePath,"Cache",this.ideType)}get sharedCachePath(){return u.join(this.basePath,"Cache","Shared")}get logPath(){return u.join(this.basePath,"Logs",this.ideType)}get systemLogPath(){return u.join(this.basePath,"Logs","System")}getBasePath(){let e=d.homedir();switch(process.platform){case"darwin":return u.join(e,"Library/Application Support",p.EXTENSION_DATA_DIR_NAME);case"win32":return u.join(e,"AppData","Local",p.EXTENSION_DATA_DIR_NAME);default:return u.join(e,".local","share",p.EXTENSION_DATA_DIR_NAME)}}};t.FilePathServiceImpl=h,s([(0,l.PostConstruct)(),c("design:type",Function),c("design:paramtypes",[]),c("design:returntype",void 0)],h.prototype,"init",null),t.FilePathServiceImpl=s([(0,l.Component)(p.FilePathService)],h)},66243(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadServiceImpl=void 0;let n=r(88523),s=r(51147),a=class{async upload(e,t){for(let r of this.fileUploaders.get())if(await r.support(t))return r.upload(e,t);return{success:!1,error:"No supported uploader found"}}};t.FileUploadServiceImpl=a,o([(0,n.AutowiredProvider)(s.FileUploader),i("design:type",Object)],a.prototype,"fileUploaders",void 0),t.FileUploadServiceImpl=o([(0,n.Component)(s.FileUploadService)],a)},41885(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(94299),t),i(r(66243),t)},29290(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.COSFileUploader=void 0;let d=r(88523),u=r(7268),p=l(r(42773)),h=a(r(79896)),g=a(r(16928)),f=r(72057),m=class{constructor(){this.name="cos"}async support({uploader:e}){return"cos"===e}async upload(e,t){let r,o,i={uploadedFiles:[],failedFiles:[],startTime:Date.now()};this.logger.setContext("COSFileUploader");try{let n=await this.getCOSInfo(t);if(r=this.getCOSInstance(t,n),0===e.length)return this.buildEmptyResult(n.url,i);let s=this.createUploadTasks(e,n,r,t),a=this.createProgressTasks(s,e,i,t,r),{promise:c,cleanup:l}=this.createTimeoutPromise(t,r);return o=l,await Promise.race([c,Promise.all(a)]),o(),o=void 0,this.buildUploadResult(i,e.length,n.url)}catch(t){return this.logger.error("Upload failed with error:",t),r?.getTaskList().forEach(({id:e})=>r?.cancelTask(e)),this.buildErrorResult(t,e,i)}finally{o?.()}}createUploadTasks(e,t,r,o){return e.map(i=>this.doUpload(i,t,r,o,e.length))}createProgressTasks(e,t,r,o,i){return e.map(async(e,n)=>{let s=t[n];this.reportProgress(r,t.length,o,s);try{await e,r.uploadedFiles.push(s)}catch(e){r.failedFiles.push({file:s,error:e.message}),this.handleUploadError(r,t.length,i,e)}this.reportProgress(r,t.length,o,void 0)})}handleUploadError(e,t,r,o){if(e.failedFiles.length>Math.max(1,.2*t))throw r.getTaskList().forEach(({id:e})=>r.cancelTask(e)),o}reportProgress(e,t,r,o){let i=e.uploadedFiles.length+e.failedFiles.length;this.updateProgress(r,{percent:Math.round(i/t*100),uploaded:e.uploadedFiles.length,total:t,failed:e.failedFiles.length,currentFile:o})}buildEmptyResult(e,t){return{success:!0,result:e,details:{uploaded:[],failed:[],duration:Date.now()-t.startTime,total:0}}}buildUploadResult(e,t,r){let o=Date.now()-e.startTime;return e.failedFiles.length>0&&e.failedFiles.length>Math.max(1,.2*t)?{success:!1,error:`Too many files failed to upload: ${e.failedFiles.length}/${t}`,details:{uploaded:e.uploadedFiles,failed:e.failedFiles,duration:o,total:t}}:{success:!0,result:r,details:{uploaded:e.uploadedFiles,failed:e.failedFiles,duration:o,total:t}}}buildErrorResult(e,t,r){return{success:!1,error:e.message,details:{uploaded:r.uploadedFiles,failed:t.map(t=>({file:t,error:e.message})),duration:Date.now()-r.startTime,total:t.length}}}async doUpload(e,t,r,o,i,n=1){let s=o.maxRetries??4;if(o.signal.aborted)throw Error("Upload cancelled");1===n&&await this.validateFileAccess(e);let a=await this.generateCOSPath(e,t.path,o);return this.executeUpload(e,a,t,r,o,i,n,s)}async validateFileAccess(e){try{await h.promises.access(e,h.constants.R_OK)}catch(t){throw Error(`File not found or not readable: ${e}`)}}async generateCOSPath(e,t,r){let o=this.getUploadRelativePath(e,r.rootPath);return r.cosPathGenerator?await Promise.resolve(r.cosPathGenerator({basePath:t,relativePath:o,absolutePath:e})):this.defaultCOSPathGenerator(t,o)}executeUpload(e,t,r,o,i,n,s,a){return new Promise((c,l)=>{o.putObject({Bucket:r.bucket,Region:r.region,Key:t,Body:h.createReadStream(e),onProgress:()=>{}},async t=>{if(i.signal.aborted){o.getTaskList().forEach(({id:e})=>o.cancelTask(e)),l(Error("Upload cancelled"));return}t?await this.handleUploadRetry(t,s,a,e,r,o,i,n,c,l):c()})})}async handleUploadRetry(e,t,r,o,i,n,s,a,c,l){if(t<=r)try{let e=this.calculateBackoffTime(t,s);await new Promise(t=>setTimeout(t,e)),await this.doUpload(o,i,n,s,a,t+1),c()}catch(e){l(e)}else l(Error(`Upload failed after ${r} attempts: ${e.message}`))}calculateBackoffTime(e,t){let r=t.baseBackoffMs??1e3;switch(t.retryStrategy??"exponential"){case"exponential":default:return Math.min(r*2**e,3e4);case"linear":return Math.min(r*e,3e4);case"fixed":return r}}updateProgress(e,t){e.uploadProgress$?.next(t)}async getCOSInfo(e){if(!e.cosInfoPath)throw Error("No path provided to get COS info");let{data:{data:t}}=await this.restOperations.get(e.cosInfoPath);return t}getCOSInstance(e,t){return new p.default({FileParallelLimit:e.concurrency??3,getAuthorization:(e,r)=>{r({TmpSecretId:t.credential.credentials.tmpSecretId,TmpSecretKey:t.credential.credentials.tmpSecretKey,SecurityToken:t.credential.credentials.token,ExpiredTime:t.credential.expiredTime,StartTime:t.credential.startTime,ScopeLimit:!0})},Timeout:(e.timeout??300)*1e3,UploadQueueSize:1e5})}createTimeoutPromise(e,t){let r,o,cleanup=()=>{r&&(clearTimeout(r),r=void 0),o&&(e.signal.removeEventListener("abort",o),o=void 0)};return{promise:new Promise((i,n)=>{r=setTimeout(()=>{cleanup(),t.getTaskList().forEach(({id:e})=>t.cancelTask(e)),n(Error("Upload timed out"))},(e.timeout??300)*1e3),o=()=>{cleanup(),t.getTaskList().forEach(({id:e})=>t.cancelTask(e)),n(Error("Upload cancelled"))},e.signal.addEventListener("abort",o)}),cleanup}}defaultCOSPathGenerator(e,t){return`${e}/${t}`}getUploadRelativePath(e,t){if(!t)return g.basename(e);let r=g.relative(t,e);return r.startsWith("..")||g.isAbsolute(r)?g.basename(e):r}};t.COSFileUploader=m,s([(0,d.Autowired)(u.RestOperations),c("design:type",Function)],m.prototype,"restOperations",void 0),s([(0,d.Autowired)(d.Logger),c("design:type",Object)],m.prototype,"logger",void 0),t.COSFileUploader=s([(0,d.Component)(f.FileUploader)],m)},94299(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(29290),t)},67846(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(56490),t),i(r(51157),t),i(r(20760),t),i(r(41885),t),i(r(82005),t),i(r(13393),t)},10352(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(67846),t.default=(0,r(88523).autoBind)()},20760(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(49685),t)},49685(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.fromReadable=fromReadable;let a=s(r(38636)),c=r(3385),l=globalThis;function fromReadable(e){return new ReadableStream({start:t=>{e.on("data",e=>t.enqueue(e)),e.on("end",()=>t.close()),e.on("close",()=>t.close()),e.on("error",e=>t.error(e))},cancel:t=>void e.destroy?.(t)})}if(l.TransformStream||(l.TransformStream=c.TransformStream,l.ReadableStream=c.ReadableStream,l.WritableStream=c.WritableStream),!l.TextDecoderStream){let TextDecoderStreamPolyfill=class TextDecoderStreamPolyfill{constructor(e="utf-8",t){this.decoder=new TextDecoder(e,t),this.stream=new TransformStream({transform:(e,t)=>{t.enqueue(this.decoder.decode(e,{stream:!0}))},flush:e=>{e.enqueue(this.decoder.decode())}})}get readable(){return this.stream.readable}get writable(){return this.stream.writable}};l.TextDecoderStream=TextDecoderStreamPolyfill}l.fetch||(l.fetch=function(e,t){return a.default(e,t).then(e=>{let t=e.body;return t&&Object.defineProperty(e,"body",{get:()=>fromReadable(t)}),e})},l.Headers=a.Headers,l.Request=a.Request,l.Response=a.Response)},13393(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.PAC_RPC_TOKEN_ENV=t.PAC_RPC_SOCKET_ENV=t.createPacRpcHookFromEnv=t.createPacRpcHook=t.detectSystemProxy=t.ensureLoopbackInNoProxy=t.ProxyResolver=void 0;var o=r(7732);Object.defineProperty(t,"ProxyResolver",{enumerable:!0,get:function(){return o.ProxyResolver}}),Object.defineProperty(t,"ensureLoopbackInNoProxy",{enumerable:!0,get:function(){return o.ensureLoopbackInNoProxy}});var i=r(8713);Object.defineProperty(t,"detectSystemProxy",{enumerable:!0,get:function(){return i.detectSystemProxy}});var n=r(95499);Object.defineProperty(t,"createPacRpcHook",{enumerable:!0,get:function(){return n.createPacRpcHook}}),Object.defineProperty(t,"createPacRpcHookFromEnv",{enumerable:!0,get:function(){return n.createPacRpcHookFromEnv}}),Object.defineProperty(t,"PAC_RPC_SOCKET_ENV",{enumerable:!0,get:function(){return n.PAC_RPC_SOCKET_ENV}}),Object.defineProperty(t,"PAC_RPC_TOKEN_ENV",{enumerable:!0,get:function(){return n.PAC_RPC_TOKEN_ENV}})},51157(e,t,r){var o=this&&this.__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};Object.defineProperty(t,"__esModule",{value:!0}),t.UserHomeServiceImpl=void 0;let i=r(48161),n=r(76760),s=r(88523),a=r(51147),c=class{constructor(){this.homedir=(0,i.homedir)()}get downloadsPath(){return(0,n.join)(this.homedir,"Downloads")}};t.UserHomeServiceImpl=c,t.UserHomeServiceImpl=o([(0,s.Component)(a.UserHomeService)],c)},82005(e,t,r){let o;var i,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),o=0;o<r.length;o++)"default"!==r[o]&&n(t,e,r[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.isCephFs=isCephFs,t.isCephFsSubMount=isCephFsSubMount,t.clearCephFsCache=clearCephFsCache,t.safeReaddir=safeReaddir,t.safeStat=safeStat;let c=a(r(91943));async function isCephFs(e){if("linux"!==process.platform)return!1;o||(o=new Map);let t=o.get(e);if(void 0!==t)return t;let r=await detectCephFs(e);return o.set(e,r),r}async function isCephFsSubMount(e,t){if("linux"!==process.platform||!await isCephFs(e))return!1;if(await isCephFs(t)){let r=await getCephMountPoint(t),o=await getCephMountPoint(e);return(!r||!o||r!==o)&&r!==o}return!0}async function getCephMountPoint(e){try{let t=await getMountInfo(e);if(!t)return null;let{device:r,fstype:o,mountpoint:i}=t;return"ceph"===o||o.startsWith("fuse.ceph-fuse")||o.startsWith("fuse.ceph")||r.startsWith("ceph")?i:null}catch{return null}}async function detectCephFs(e){if("statfs"in c)try{let t=await c.statfs(e);if(0xc36400===t.type)return!0;if(0x65735546!==t.type)return!1}catch{return!1}try{let t=await getMountInfo(e);if(!t)return!1;let{device:r,fstype:o}=t;return"ceph"===o||o.startsWith("fuse.ceph-fuse")||o.startsWith("fuse.ceph")||r.startsWith("ceph")}catch{return!1}}let l=[];async function getMountInfo(e){if(0===l.length){let e=await c.readFile("/proc/mounts","utf8");l.push(...e.split("\n").filter(e=>!!e.trim()).map(e=>{let[t,r,o]=e.split(" ");return{device:t,mountpoint:r,fstype:o}}).filter(e=>e.device&&e.mountpoint&&e.fstype))}let t=await c.realpath(e),r=null;for(let e of l){let{mountpoint:o}=e;t.startsWith(o)&&(!r||o.length>r.mountpoint.length)&&(r={...e})}return r}function clearCephFsCache(){o=void 0}async function safeReaddir(e,t){try{let r=t.maxDirent??1e4;if(r<=0)return[];if(t.withFileTypes){let t=await c.opendir(e),o=[];for await(let e of t)if(o.push(e),o.length>=r)break;return o}return await c.readdir(e,t)}catch(e){}return[]}async function safeStat(...e){try{return await c.stat(...e)}catch(e){}return null}},27325(e,t,r){let o;Object.defineProperty(t,"__esModule",{value:!0}),t.getProxyUrlFromEnv=getProxyUrlFromEnv,t.shouldBypassProxyForUrl=shouldBypassProxyForUrl,t.sanitizeProxyForLog=sanitizeProxyForLog,t.describeProxyForNodeRequest=describeProxyForNodeRequest,t.resolveNodeProxyAgent=resolveNodeProxyAgent,t.__resetNodeProxyAgentCacheForTests=__resetNodeProxyAgentCacheForTests;let i=new Set(["localhost","127.0.0.1","::1","[::1]"]),n={keepAlive:!0,keepAliveMsecs:2e3};function getProxyUrlFromEnv(){let e=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;if(!e)return;let t=e.includes("://")?e:`http://${e}`;try{let e=new URL(t);if("http:"!==e.protocol&&"https:"!==e.protocol)return;return e.toString()}catch{return}}function shouldBypassProxyForUrl(e){let t;try{t=new URL(e).hostname.toLowerCase()}catch{return!0}if(i.has(t))return!0;let r=process.env.NO_PROXY||process.env.no_proxy;if(!r)return!1;for(let e of r.split(",")){let r=e.trim().toLowerCase();if(!r)continue;if("*"===r||r===t)return!0;let o=r.startsWith(".")?r:`.${r}`;if(t.endsWith(o))return!0}return!1}function sanitizeProxyForLog(e){try{let t=new URL(e),r=t.port||("https:"===t.protocol?"443":"80");return`${t.hostname}:${r}`}catch{return"<invalid-proxy>"}}function describeProxyForNodeRequest(e){let t=getProxyUrlFromEnv();return!t||shouldBypassProxyForUrl(e)?"DIRECT":`proxy=${sanitizeProxyForLog(t)}`}function getAgentBundle(e){o||(o=new Map);let t=o.get(e);if(t)return t;let{HttpProxyAgent:i}=r(66626),{HttpsProxyAgent:s}=r(48580);return t={http:new i(e,n),https:new s(e,n)},o.set(e,t),t}function resolveNodeProxyAgent(e){let t,r=getProxyUrlFromEnv();if(!r||shouldBypassProxyForUrl(e))return;try{t=new URL(e).protocol}catch{return}let o=getAgentBundle(r);return"http:"===t?o.http:"https:"===t?o.https:void 0}function __resetNodeProxyAgentCacheForTests(){o=void 0}},92701(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CliEnterpriseCustomModelPolicyServiceImpl=void 0;let n=r(88523),s=r(47532),a=r(39870),c=r(90276),l=class extends s.EnterpriseCustomModelPolicyServiceImpl{init(){super.init(),this.lastObservedOwnerKey=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account),this.diskSessionSub=this.authenticationManager.currentSessionSubject.subscribe(e=>{let t=this.computeOwnerKey(e?.account);if(t===this.lastObservedOwnerKey)return;let r=this.lastObservedOwnerKey;this.lastObservedOwnerKey=t,r&&this.removeDiskEntry(r)})}dispose(){this.diskSessionSub?.unsubscribe(),this.diskSessionSub=void 0,super.dispose()}async getPolicy(e){let t=this.tryBypass();if(t)return t;let r=this.authenticationManager.currentSessionSubject.value.account,o=this.computeOwnerKey(r);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===o&&void 0!==this.cachedSnapshot.fetchedAt&&Date.now()-this.cachedSnapshot.fetchedAt<a.POLICY_CACHE_TTL_MS)return this.cachedSnapshot;if(!e?.forceRefresh){let e=this.tryDiskHit(o);if(e)return this.cachedSnapshot=e,this.scheduleBackgroundRefresh(o),e}return this.pendingFetch&&this.pendingFetchOwnerKey===o||(this.pendingFetchOwnerKey=o,this.pendingFetch=this.refresh(o).finally(()=>{this.pendingFetchOwnerKey===o&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}scheduleBackgroundRefresh(e){this.pendingFetch&&this.pendingFetchOwnerKey===e||(this.pendingFetchOwnerKey=e,this.pendingFetch=this.refresh(e).finally(()=>{this.pendingFetchOwnerKey===e&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)}),this.pendingFetch.catch(e=>{this.logger.debug(`[EnterpriseCustomModelPolicy] background refresh swallowed error: ${e instanceof Error?e.message:String(e)}`)}))}getCachedSnapshot(){if("1"===process.env.CODEBUDDY_DISABLE_ENTERPRISE_POLICY)return{allowed:!0,source:"bypass-feature-off"};let e=super.getCachedSnapshot();if(e)return e;let t=this.authenticationManager.currentSessionSubject.value?.account;if(!t?.enterpriseId)return;let r=this.computeOwnerKey(t),o=this.tryDiskHit(r);if(o)return this.cachedSnapshot=o,this.scheduleRefresh(),o}async refresh(e){let t=await super.refresh(e);return"remote"===t.source&&void 0!==t.fetchedAt&&t.ownerKey===e&&this.writeDisk(e,t).catch(()=>{}),t}async fetchFromServer(){return super.fetchFromServer()}tryBypass(){if("1"===process.env.CODEBUDDY_DISABLE_ENTERPRISE_POLICY)return{allowed:!0,source:"bypass-feature-off"};let e=this.productManager.getCurrentConfiguration()?.productFeatures;if(!e?.EnableEnterpriseCustomModelPolicy)return{allowed:!0,source:"bypass-feature-off"};let t=this.authenticationManager.currentSessionSubject.value?.account;return t?t.enterpriseId?void 0:{allowed:!0,source:"bypass-personal"}:{allowed:!0,source:"bypass-anonymous"}}tryDiskHit(e){let t=this.diskCache.load();if(!t)return;let r=t.entries[e];if(r)return{...r.snapshot,source:"stale-cache",ownerKey:e,fetchedAt:r.fetchedAt}}async writeDisk(e,t){try{let r=this.diskCache.load()??{version:c.POLICY_DISK_CACHE_VERSION,entries:{}},o={version:c.POLICY_DISK_CACHE_VERSION,entries:{...r.entries,[e]:{snapshot:t,fetchedAt:t.fetchedAt}}};await this.diskCache.save(o)}catch(t){let e=t instanceof Error?t.message:String(t);this.logger.warn(`[EnterpriseCustomModelPolicy] disk cache write failed: ${e}`)}}removeDiskEntry(e){try{let t=this.diskCache.load();if(!t||!t.entries[e])return;let r={...t.entries};delete r[e];let o={version:c.POLICY_DISK_CACHE_VERSION,entries:r};this.diskCache.save(o).catch(e=>{this.logger.warn(`[EnterpriseCustomModelPolicy] disk cache cleanup save failed: ${e instanceof Error?e.message:String(e)}`)})}catch(e){this.logger.warn(`[EnterpriseCustomModelPolicy] disk cache cleanup load failed: ${e instanceof Error?e.message:String(e)}`)}}};t.CliEnterpriseCustomModelPolicyServiceImpl=l,o([(0,n.Autowired)(c.PolicyDiskCache),i("design:type",Object)],l.prototype,"diskCache",void 0),t.CliEnterpriseCustomModelPolicyServiceImpl=o([(0,n.Component)({id:a.EnterpriseCustomModelPolicyService,rebind:!0})],l)},36091(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(90276),t),i(r(27724),t),i(r(92701),t)},90276(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyDiskCache=t.POLICY_DISK_CACHE_FILENAME=t.POLICY_DISK_CACHE_VERSION=void 0,t.POLICY_DISK_CACHE_VERSION=1,t.POLICY_DISK_CACHE_FILENAME=".policy-cache.json",t.PolicyDiskCache=Symbol("PolicyDiskCache")},27724(e,t,r){var o=this&&this.__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};Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyDiskCacheImpl=void 0;let i=r(88523),n=r(51147),s=r(79896),a=r(70857),c=r(16928),l=r(90276),d=class{getPath(){return(0,c.join)(this.resolveHomeDir(),l.POLICY_DISK_CACHE_FILENAME)}load(){let e=this.getPath();if((0,s.existsSync)(e))try{let t=(0,s.readFileSync)(e,"utf-8"),r=JSON.parse(t);if(!this.isValidFile(r))return;return r}catch{return}}async save(e){let t=this.getPath(),r=(0,c.dirname)(t);(0,s.existsSync)(r)||(0,s.mkdirSync)(r,{recursive:!0});let o=`${t}.tmp-${process.pid}-${Math.random().toString(36).slice(2,10)}`;try{(0,s.writeFileSync)(o,JSON.stringify(e),"utf-8"),(0,s.renameSync)(o,t)}catch(e){try{(0,s.existsSync)(o)&&(0,s.unlinkSync)(o)}catch{}throw e}}resolveHomeDir(){let e=process.env.CODEBUDDY_CONFIG_DIR;return e&&""!==e.trim()?e:(0,c.join)((0,a.homedir)(),n.USER_DATA_DIR_NAME)}isValidFile(e){if(!e||"object"!=typeof e||e.version!==l.POLICY_DISK_CACHE_VERSION||!e.entries||"object"!=typeof e.entries)return!1;let t=e.entries;for(let e of Object.keys(t))if(!this.isValidEntry(t[e]))return!1;return!0}isValidEntry(e){return!!e&&"object"==typeof e&&"number"==typeof e.fetchedAt&&!!e.snapshot&&"object"==typeof e.snapshot&&"boolean"==typeof e.snapshot.allowed}};t.PolicyDiskCacheImpl=d,t.PolicyDiskCacheImpl=o([(0,i.Component)(l.PolicyDiskCache)],d)},91736(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CloudEnterprisePolicyService=void 0;let CloudEnterprisePolicyService=class CloudEnterprisePolicyService{constructor(e){this.skillCache=null,this.modelCache=null,this.connectorCache=null,this.http=e.context.http}async getSkillUploadPolicy(){return this.skillCache&&this.skillCache.expiresAt>Date.now()?this.skillCache.snapshot:this.refreshSkillUploadPolicy()}async refreshSkillUploadPolicy(){let e;try{let t=await this.http.get("/console/as/iom/getMemberPolicy"),r=t?.data?.skill_upload??{};e={allowed:r.allowed??!0,mode:r.mode??"all",max_size_bytes:r.max_size_bytes??0xa00000,require_review:r.require_review??!1,reason:r.reason,source:"remote",fetchedAt:Date.now()}}catch{e={allowed:!0,mode:"all",max_size_bytes:0xa00000,require_review:!1,source:"fail-open",fetchedAt:Date.now()}}return this.skillCache={snapshot:e,expiresAt:Date.now()+6e4},e}async getMemberCustomModelPolicy(){return this.modelCache&&this.modelCache.expiresAt>Date.now()?this.modelCache.snapshot:this.refreshMemberCustomModelPolicy()}async refreshMemberCustomModelPolicy(){let e;try{let t=await this.http.get("/console/as/iom/getMemberPolicy"),r=t?.data?.member_custom_model??{};e={allowed:r.allowed??!0,policy_mode:r.policy_mode??"all",reason:r.reason,source:"remote",fetchedAt:Date.now()}}catch{e={allowed:!0,policy_mode:"all",source:"fail-open",fetchedAt:Date.now()}}return this.modelCache={snapshot:e,expiresAt:Date.now()+6e4},e}async getCustomConnectorPolicy(){return this.connectorCache&&this.connectorCache.expiresAt>Date.now()?this.connectorCache.snapshot:this.refreshCustomConnectorPolicy()}async refreshCustomConnectorPolicy(){let e;try{let t=await this.http.get("/console/as/iom/getMemberPolicy"),r=t?.data?.custom_connector??{};e={allowed:r.allowed??!0,policy_mode:r.policy_mode??"all",reason:r.reason,source:"remote",fetchedAt:Date.now()}}catch{e={allowed:!0,policy_mode:"all",source:"fail-open",fetchedAt:Date.now()}}return this.connectorCache={snapshot:e,expiresAt:Date.now()+6e4},e}};t.CloudEnterprisePolicyService=CloudEnterprisePolicyService},62290(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomConnectorPolicyServiceImpl=void 0;let n=r(88523),s=r(7268),a=r(86482),c=r(9151),l=r(63600),d=class{constructor(){this.listeners=new Set}init(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.sessionSub=this.authenticationManager.currentSessionSubject.subscribe(t=>{let r=this.computeOwnerKey(t?.account);r!==e&&(this.logger.debug(`[EnterpriseCustomConnectorPolicy] owner key changed: ${e??"undefined"} -> ${r??"undefined"}, clearing cache`),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0,e=r)})}dispose(){this.sessionSub?.unsubscribe(),this.sessionSub=void 0,this.listeners.clear(),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0}async getPolicy(e){let t=this.authenticationManager.currentSessionSubject.value,r=t?.account;if(!r)return{allowed:!0,source:"bypass-anonymous"};if(!r.enterpriseId)return{allowed:!0,source:"bypass-personal"};let o=this.computeOwnerKey(r);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===o&&void 0!==this.cachedSnapshot.fetchedAt){let e="fail-open"===this.cachedSnapshot.source?l.POLICY_FAIL_OPEN_CACHE_TTL_MS:l.POLICY_CACHE_TTL_MS;if(Date.now()-this.cachedSnapshot.fetchedAt<e)return this.cachedSnapshot}return this.pendingFetch&&this.pendingFetchOwnerKey===o||(this.pendingFetchOwnerKey=o,this.pendingFetch=this.refresh(o).finally(()=>{this.pendingFetchOwnerKey===o&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}onChanged(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async assertOperationAllowed(e){let t=await this.getPolicy(e);if(!t.allowed){let e=t.reason??"INVALID_MODE";throw this.logger.info(`[EnterpriseCustomConnectorPolicy] add blocked: reason=${e} mode=${t.policy_mode} source=${t.source}`),new l.CustomConnectorPolicyDeniedError(e)}return t}async refresh(e){let t,r=this.cachedSnapshot?.allowed,o=Date.now(),i=!1;try{let r=await this.fetchFromServer();i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,t={allowed:"INVALID_MODE"!==r.reason&&r.allowed,policy_mode:r.policy_mode,reason:r.reason,source:"remote",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),"INVALID_MODE"===r.reason&&this.reportInvalidMode(t),i||(this.cachedSnapshot=t)}catch(r){if(r instanceof l.EnterpriseCustomConnectorPolicyError&&401===r.httpStatus)return this.reportCheck({allowed:!0,source:"bypass-anonymous"},Date.now()-o),{allowed:!0,source:"bypass-anonymous"};i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,this.cachedSnapshot&&this.cachedSnapshot.ownerKey===e?(t={...this.cachedSnapshot,source:"stale-cache",fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o)):(t={allowed:!0,source:"fail-open",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),this.reportFailOpen(r)),i||(this.cachedSnapshot=t)}return i||(void 0!==r&&r!==t.allowed?this.notifyListeners(t):void 0===r&&this.notifyListeners(t)),t}async fetchFromServer(){let e=this.authenticationManager.currentSessionSubject.value?.account,t=e?.enterpriseId;if(!t)throw new l.EnterpriseCustomConnectorPolicyError("missing enterpriseId",401);let r=l.USER_CHECK_PATH.replace("{enterpriseId}",encodeURIComponent(t));try{let e=await this.restOperations.get(r,{timeout:l.POLICY_FETCH_TIMEOUT_MS});if(401===e.status)throw new l.EnterpriseCustomConnectorPolicyError("unauthorized",401);if(e.status<200||e.status>=300||void 0===e.data||null===e.data)throw new l.EnterpriseCustomConnectorPolicyError(`unexpected http status ${e.status}`,e.status);return this.parseUserCheckBody(e.data)}catch(r){if(r instanceof l.EnterpriseCustomConnectorPolicyError)throw r;let e=r?.response?.status,t=r instanceof Error?r.message:String(r);throw new l.EnterpriseCustomConnectorPolicyError(t,e,r)}}parseUserCheckBody(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomConnectorPolicyError("invalid response schema: not an object");if("data"in e&&void 0!==e.data&&null!==e.data){if("number"==typeof e.code&&0!==e.code){let t="string"==typeof e.msg?e.msg:`code=${e.code}`;throw new l.EnterpriseCustomConnectorPolicyError(`backend rejected: ${t}`)}return this.assertUserCheckShape(e.data)}return this.assertUserCheckShape(e)}assertUserCheckShape(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomConnectorPolicyError("invalid response schema");if("boolean"!=typeof e.allowed)throw new l.EnterpriseCustomConnectorPolicyError("invalid response schema: missing allowed");let t="string"==typeof e.policy_mode?e.policy_mode:"string"==typeof e.mode?e.mode:void 0;return{...e,policy_mode:t}}computeOwnerKey(e){if(e)return e.enterpriseId?`enterprise:${e.enterpriseId}:${e.uid}`:`personal:${e.uid}`}notifyListeners(e){for(let t of this.listeners)try{t(e)}catch(e){this.logger.error("[EnterpriseCustomConnectorPolicy] listener threw",e)}}reportCheck(e,t){this.logger.info(`[telemetry] ${l.EnterpriseCustomConnectorPolicyEvents.Check} `+JSON.stringify({allowed:e.allowed,policy_mode:e.policy_mode,reason:e.reason,source:e.source,durationMs:t}))}reportFailOpen(e){let t=e instanceof Error?e.message:String(e);this.logger.warn(`[telemetry] ${l.EnterpriseCustomConnectorPolicyEvents.FailOpen} `+JSON.stringify({error:t}))}reportInvalidMode(e){this.logger.warn(`[telemetry] ${l.EnterpriseCustomConnectorPolicyEvents.InvalidMode} `+JSON.stringify({policy_mode:e.policy_mode,reason:e.reason}))}};t.EnterpriseCustomConnectorPolicyServiceImpl=d,o([(0,n.Autowired)(a.AuthenticationManager),i("design:type",Object)],d.prototype,"authenticationManager",void 0),o([(0,n.Autowired)(c.ProductManager),i("design:type",Object)],d.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.Autowired)(s.RestOperations),i("design:type",Function)],d.prototype,"restOperations",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"dispose",null),t.EnterpriseCustomConnectorPolicyServiceImpl=o([(0,n.Component)(l.EnterpriseCustomConnectorPolicyService)],d)},63600(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CustomConnectorPolicyDeniedError=t.EnterpriseCustomConnectorPolicyService=t.EnterpriseCustomConnectorPolicyEvents=t.POLICY_FETCH_TIMEOUT_MS=t.POLICY_FAIL_OPEN_CACHE_TTL_MS=t.POLICY_CACHE_TTL_MS=t.USER_CHECK_PATH=t.EnterpriseCustomConnectorPolicyError=void 0;let EnterpriseCustomConnectorPolicyError=class EnterpriseCustomConnectorPolicyError extends Error{constructor(e,t,r){super(e),this.httpStatus=t,void 0!==r&&(this.cause=r),this.name="EnterpriseCustomConnectorPolicyError"}};t.EnterpriseCustomConnectorPolicyError=EnterpriseCustomConnectorPolicyError,t.USER_CHECK_PATH="/v2/enterprises/{enterpriseId}/connector-upload-policy/user-check",t.POLICY_CACHE_TTL_MS=3e5,t.POLICY_FAIL_OPEN_CACHE_TTL_MS=3e4,t.POLICY_FETCH_TIMEOUT_MS=1500,t.EnterpriseCustomConnectorPolicyEvents={Check:"enterpriseCustomConnectorPolicy.check",FailOpen:"enterpriseCustomConnectorPolicy.failOpen",InvalidMode:"enterpriseCustomConnectorPolicy.invalidMode"},t.EnterpriseCustomConnectorPolicyService=Symbol("EnterpriseCustomConnectorPolicyService");let CustomConnectorPolicyDeniedError=class CustomConnectorPolicyDeniedError extends Error{constructor(e,t){super(t??`Custom connector add denied by enterprise policy: ${e}`),this.code="CUSTOM_CONNECTOR_POLICY_DENIED",this.name="CustomConnectorPolicyDeniedError",this.reason=e}};t.CustomConnectorPolicyDeniedError=CustomConnectorPolicyDeniedError},58351(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomModelPolicyFilterProvider=void 0;let n=r(88523),s=r(9151),a=r(39870),c=class{constructor(){this.priority=s.ProductProviderPriority.DEFAULT+5e3,this.listenerRegistered=!1}async provide(e){let t=e.current.productFeatures;if(!t?.[s.ProductFeature.EnableEnterpriseCustomModelPolicy])return{};this.ensureListenerRegistered();let r=this.policyService.getCachedSnapshot();if(!r)return this.policyService.scheduleRefresh(),this.lastAllowed=!0,{};if(this.lastAllowed=r.allowed,r.allowed)return{};let o=e.current.models;if(!o||0===o.length)return{};let i=new Set,n=o.filter(e=>!this.isLocalCustomModel(e)||(i.add(e.id),!1));if(0===i.size)return{};let a={models:n,mergeStrategy:s.MergeStrategy.Merge};if(e.current.availableModels&&e.current.availableModels.length>0){let t=e.current.availableModels.filter(e=>!i.has(e));t.length!==e.current.availableModels.length&&(a.availableModels=t)}return this.reportFilterApplied(i.size),this.logger.info(`[EnterpriseCustomModelPolicyFilterProvider] removed ${i.size} local custom model(s) due to policy: ${Array.from(i).join(", ")}`),a}isLocalCustomModel(e){let t=Array.isArray(e.tags)&&e.tags.includes(s.MODEL_TAG_CUSTOM),r="string"==typeof e.id&&e.id.startsWith(s.CUSTOM_LOCAL_MODEL_PREFIX);return t&&r}ensureListenerRegistered(){this.listenerRegistered||(this.listenerRegistered=!0,this.policyService.onChanged(e=>{void 0!==this.lastAllowed&&this.lastAllowed!==e.allowed&&this.productManager.sync(!0).catch(e=>{this.logger.warn("[EnterpriseCustomModelPolicyFilterProvider] productManager.sync(true) failed",e)})}))}reportFilterApplied(e){this.logger.info(`[telemetry] ${a.EnterpriseCustomModelPolicyEvents.FilterApplied} `+JSON.stringify({removedCount:e}))}};t.EnterpriseCustomModelPolicyFilterProvider=c,o([(0,n.Autowired)(a.EnterpriseCustomModelPolicyService),i("design:type",Object)],c.prototype,"policyService",void 0),o([(0,n.Autowired)(s.ProductManager),i("design:type",Object)],c.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],c.prototype,"logger",void 0),t.EnterpriseCustomModelPolicyFilterProvider=o([(0,n.Component)(s.ProductProvider)],c)},47532(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomModelPolicyServiceImpl=void 0;let n=r(88523),s=r(7268),a=r(86482),c=r(9151),l=r(39870),d=class{constructor(){this.listeners=new Set}init(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.sessionSub=this.authenticationManager.currentSessionSubject.subscribe(t=>{let r=this.computeOwnerKey(t?.account);r!==e&&(this.logger.debug(`[EnterpriseCustomModelPolicy] owner key changed: ${e??"undefined"} -> ${r??"undefined"}, clearing cache`),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0,e=r,t?.account?.enterpriseId&&this.productManager.getCurrentConfiguration()?.productFeatures?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy]&&this.scheduleRefresh())}),this.startBackgroundRefresh();let t=this.authenticationManager.currentSessionSubject.value?.account;t?.enterpriseId&&this.productManager.getCurrentConfiguration()?.productFeatures?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy]&&this.scheduleRefresh()}dispose(){this.sessionSub?.unsubscribe(),this.sessionSub=void 0,this.stopBackgroundRefresh(),this.listeners.clear(),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0}startBackgroundRefresh(){if(void 0!==this.refreshTimer)return;this.refreshTimer=setInterval(()=>{this.refreshTick().catch(e=>{this.logger.warn("[EnterpriseCustomModelPolicy] background refresh failed",e)})},l.POLICY_CACHE_TTL_MS);let e=this.refreshTimer;"function"==typeof e.unref&&e.unref()}stopBackgroundRefresh(){void 0!==this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=void 0)}async refreshTick(){let e=this.cachedSnapshot;!e||"fail-open"===e.source||e.source.startsWith("bypass-")||await this.getPolicy({forceRefresh:!0})}async getPolicy(e){let t=this.productManager.getCurrentConfiguration()?.productFeatures;if(!t?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy])return{allowed:!0,source:"bypass-feature-off"};let r=this.authenticationManager.currentSessionSubject.value,o=r?.account;if(!o)return{allowed:!0,source:"bypass-anonymous"};if(!o.enterpriseId)return{allowed:!0,source:"bypass-personal"};let i=this.computeOwnerKey(o);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===i&&void 0!==this.cachedSnapshot.fetchedAt){let e="fail-open"===this.cachedSnapshot.source?l.POLICY_FAIL_OPEN_CACHE_TTL_MS:l.POLICY_CACHE_TTL_MS;if(Date.now()-this.cachedSnapshot.fetchedAt<e)return this.cachedSnapshot}return this.pendingFetch&&this.pendingFetchOwnerKey===i||(this.pendingFetchOwnerKey=i,this.pendingFetch=this.refresh(i).finally(()=>{this.pendingFetchOwnerKey===i&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}onChanged(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getCachedSnapshot(){let e=this.productManager.getCurrentConfiguration()?.productFeatures;if(!e?.[c.ProductFeature.EnableEnterpriseCustomModelPolicy])return{allowed:!0,source:"bypass-feature-off"};let t=this.authenticationManager.currentSessionSubject.value?.account;if(!t)return{allowed:!0,source:"bypass-anonymous"};if(!t.enterpriseId)return{allowed:!0,source:"bypass-personal"};let r=this.computeOwnerKey(t);if(this.cachedSnapshot&&this.cachedSnapshot.ownerKey===r)return this.cachedSnapshot}scheduleRefresh(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.pendingFetch&&this.pendingFetchOwnerKey===e||queueMicrotask(()=>{let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.pendingFetch&&this.pendingFetchOwnerKey===e||this.getPolicy({forceRefresh:!0}).catch(e=>{this.logger.debug(`[EnterpriseCustomModelPolicy] scheduled refresh swallowed error: ${e instanceof Error?e.message:String(e)}`)})})}async assertOperationAllowed(e){let t=await this.getPolicy(e);if(!t.allowed){let e=t.reason??"INVALID_MODE";throw this.logger.info(`[EnterpriseCustomModelPolicy] save blocked: reason=${e} mode=${t.policy_mode} source=${t.source}`),new l.MemberCustomModelPolicyDeniedError(e)}return t}async refresh(e){let t,r=this.cachedSnapshot?.allowed,o=Date.now(),i=!1;try{let r=await this.fetchFromServer();i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,t={allowed:"INVALID_MODE"!==r.reason&&r.allowed,policy_mode:r.policy_mode,reason:r.reason,source:"remote",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),"INVALID_MODE"===r.reason&&this.reportInvalidMode(t),i||(this.cachedSnapshot=t)}catch(r){if(r instanceof l.EnterpriseCustomModelPolicyError&&401===r.httpStatus)return this.reportCheck({allowed:!0,source:"bypass-anonymous"},Date.now()-o),{allowed:!0,source:"bypass-anonymous"};i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,this.cachedSnapshot&&this.cachedSnapshot.ownerKey===e?(t={...this.cachedSnapshot,source:"stale-cache",fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o)):(t={allowed:!0,source:"fail-open",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),this.reportFailOpen(r)),i||(this.cachedSnapshot=t)}return i||(void 0!==r&&r!==t.allowed?(this.notifyListeners(t),this.triggerProductSync()):void 0===r&&this.notifyListeners(t)),t}async fetchFromServer(){let e=this.authenticationManager.currentSessionSubject.value?.account,t=e?.enterpriseId;if(!t)throw new l.EnterpriseCustomModelPolicyError("missing enterpriseId",401);let r=l.USER_CHECK_PATH.replace("{enterpriseId}",encodeURIComponent(t));try{let e=await this.restOperations.get(r,{timeout:l.POLICY_FETCH_TIMEOUT_MS});if(401===e.status)throw new l.EnterpriseCustomModelPolicyError("unauthorized",401);if(e.status<200||e.status>=300||void 0===e.data||null===e.data)throw new l.EnterpriseCustomModelPolicyError(`unexpected http status ${e.status}`,e.status);return this.parseUserCheckBody(e.data)}catch(r){if(r instanceof l.EnterpriseCustomModelPolicyError)throw r;let e=r?.response?.status,t=r instanceof Error?r.message:String(r);throw new l.EnterpriseCustomModelPolicyError(t,e,r)}}parseUserCheckBody(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomModelPolicyError("invalid response schema: not an object");if("data"in e&&void 0!==e.data&&null!==e.data){if("number"==typeof e.code&&0!==e.code){let t="string"==typeof e.msg?e.msg:`code=${e.code}`;throw new l.EnterpriseCustomModelPolicyError(`backend rejected: ${t}`)}return this.assertUserCheckShape(e.data)}return this.assertUserCheckShape(e)}assertUserCheckShape(e){if("object"!=typeof e||null===e)throw new l.EnterpriseCustomModelPolicyError("invalid response schema");if("boolean"!=typeof e.allowed)throw new l.EnterpriseCustomModelPolicyError("invalid response schema: missing allowed");let t="string"==typeof e.policy_mode?e.policy_mode:"string"==typeof e.mode?e.mode:void 0;return{...e,policy_mode:t}}computeOwnerKey(e){if(e)return e.enterpriseId?`enterprise:${e.enterpriseId}:${e.uid}`:`personal:${e.uid}`}notifyListeners(e){for(let t of this.listeners)try{t(e)}catch(e){this.logger.error("[EnterpriseCustomModelPolicy] listener threw",e)}}triggerProductSync(){try{let e=this.productManager??n.ContainerUtil.get(c.ProductManager);e?.sync(!0).catch(e=>{this.logger.warn("[EnterpriseCustomModelPolicy] productManager.sync(true) failed",e)})}catch(e){this.logger.warn("[EnterpriseCustomModelPolicy] productManager.sync(true) threw",e)}}reportCheck(e,t){this.logger.info(`[telemetry] ${l.EnterpriseCustomModelPolicyEvents.Check} `+JSON.stringify({allowed:e.allowed,policy_mode:e.policy_mode,reason:e.reason,source:e.source,durationMs:t}))}reportFailOpen(e){let t=e instanceof Error?e.message:String(e);this.logger.warn(`[telemetry] ${l.EnterpriseCustomModelPolicyEvents.FailOpen} `+JSON.stringify({error:t}))}reportInvalidMode(e){this.logger.warn(`[telemetry] ${l.EnterpriseCustomModelPolicyEvents.InvalidMode} `+JSON.stringify({policy_mode:e.policy_mode,reason:e.reason}))}};t.EnterpriseCustomModelPolicyServiceImpl=d,o([(0,n.Autowired)(a.AuthenticationManager),i("design:type",Object)],d.prototype,"authenticationManager",void 0),o([(0,n.Autowired)(c.ProductManager),i("design:type",Object)],d.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.Autowired)(s.RestOperations),i("design:type",Function)],d.prototype,"restOperations",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"dispose",null),t.EnterpriseCustomModelPolicyServiceImpl=o([(0,n.Component)(l.EnterpriseCustomModelPolicyService)],d)},39870(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MemberCustomModelPolicyDeniedError=t.EnterpriseCustomModelPolicyService=t.EnterpriseCustomModelPolicyEvents=t.POLICY_FETCH_TIMEOUT_MS=t.POLICY_FAIL_OPEN_CACHE_TTL_MS=t.POLICY_CACHE_TTL_MS=t.USER_CHECK_PATH=t.EnterpriseCustomModelPolicyError=void 0;let EnterpriseCustomModelPolicyError=class EnterpriseCustomModelPolicyError extends Error{constructor(e,t,r){super(e),this.httpStatus=t,void 0!==r&&(this.cause=r),this.name="EnterpriseCustomModelPolicyError"}};t.EnterpriseCustomModelPolicyError=EnterpriseCustomModelPolicyError,t.USER_CHECK_PATH="/v2/enterprises/{enterpriseId}/member-custom-model-policy/user-check",t.POLICY_CACHE_TTL_MS=3e5,t.POLICY_FAIL_OPEN_CACHE_TTL_MS=3e4,t.POLICY_FETCH_TIMEOUT_MS=1500,t.EnterpriseCustomModelPolicyEvents={Check:"enterpriseCustomModelPolicy.check",FailOpen:"enterpriseCustomModelPolicy.failOpen",InvalidMode:"enterpriseCustomModelPolicy.invalidMode",FilterApplied:"enterpriseCustomModelPolicy.filterApplied"},t.EnterpriseCustomModelPolicyService=Symbol("EnterpriseCustomModelPolicyService");let MemberCustomModelPolicyDeniedError=class MemberCustomModelPolicyDeniedError extends Error{constructor(e,t){super(t??`Custom model operation denied by enterprise policy: ${e}`),this.code="MEMBER_CUSTOM_MODEL_POLICY_DENIED",this.name="MemberCustomModelPolicyDeniedError",this.reason=e}};t.MemberCustomModelPolicyDeniedError=MemberCustomModelPolicyDeniedError},75554(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseSkillUploadPolicyServiceImpl=void 0;let n=r(88523),s=r(7268),a=r(86482),c=r(9151),l=r(20160),d=class{constructor(){this.listeners=new Set}init(){let e=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account);this.sessionSub=this.authenticationManager.currentSessionSubject.subscribe(t=>{let r=this.computeOwnerKey(t?.account);r!==e&&(this.logger.debug(`[EnterpriseSkillUploadPolicy] owner key changed: ${e??"undefined"} -> ${r??"undefined"}, clearing cache`),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0,e=r)})}dispose(){this.sessionSub?.unsubscribe(),this.sessionSub=void 0,this.listeners.clear(),this.cachedSnapshot=void 0,this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0}async getPolicy(e){if("1"===process.env.CODEBUDDY_DISABLE_ENTERPRISE_POLICY)return{allowed:!0,source:"bypass-feature-off"};let t=this.productManager.getCurrentConfiguration()?.productFeatures;if(!t?.[c.ProductFeature.EnableEnterpriseSkillUploadPolicy])return{allowed:!0,source:"bypass-feature-off"};let r=this.authenticationManager.currentSessionSubject.value,o=r?.account;if(!o)return{allowed:!0,source:"bypass-anonymous"};if(!o.enterpriseId)return{allowed:!0,source:"bypass-personal"};let i=this.computeOwnerKey(o);if(!e?.forceRefresh&&this.cachedSnapshot&&this.cachedSnapshot.ownerKey===i&&void 0!==this.cachedSnapshot.fetchedAt){let e="fail-open"===this.cachedSnapshot.source?l.POLICY_FAIL_OPEN_CACHE_TTL_MS:l.POLICY_CACHE_TTL_MS;if(Date.now()-this.cachedSnapshot.fetchedAt<e)return this.cachedSnapshot}return this.pendingFetch&&this.pendingFetchOwnerKey===i||(this.pendingFetchOwnerKey=i,this.pendingFetch=this.refresh(i).finally(()=>{this.pendingFetchOwnerKey===i&&(this.pendingFetch=void 0,this.pendingFetchOwnerKey=void 0)})),this.pendingFetch}onChanged(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async assertOperationAllowed(e){let t=await this.getPolicy(e);if(!t.allowed){let e=t.reason??"INVALID_MODE";throw this.logger.info(`[EnterpriseSkillUploadPolicy] upload blocked: reason=${e} mode=${t.policy_mode} source=${t.source}`),new l.SkillUploadPolicyDeniedError(e)}return t}async assertWithinSizeLimit(e,t){let r=await this.getPolicy(t),o="number"==typeof r.max_size_bytes?r.max_size_bytes:l.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES;if(!(o<=0)&&e>o)throw this.logger.info(`[EnterpriseSkillUploadPolicy] size blocked: actual=${e} max=${o} source=${r.source}`),new l.SkillPackageTooLargeError(o,e)}async refresh(e){let t,r=this.cachedSnapshot?.allowed,o=Date.now(),i=!1;try{let r=await this.fetchFromServer();i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,t={allowed:"INVALID_MODE"!==r.reason&&r.allowed,policy_mode:r.policy_mode,reason:r.reason,max_size_bytes:r.max_size_bytes,require_review:r.require_review,source:"remote",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),"INVALID_MODE"===r.reason&&this.reportInvalidMode(t),i||(this.cachedSnapshot=t)}catch(r){if(r instanceof l.EnterpriseSkillUploadPolicyError&&401===r.httpStatus)return this.reportCheck({allowed:!0,source:"bypass-anonymous"},Date.now()-o),{allowed:!0,source:"bypass-anonymous"};i=this.computeOwnerKey(this.authenticationManager.currentSessionSubject.value?.account)!==e,this.cachedSnapshot&&this.cachedSnapshot.ownerKey===e?(t={...this.cachedSnapshot,source:"stale-cache",fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o)):(t={allowed:!0,source:"fail-open",ownerKey:e,fetchedAt:Date.now()},this.reportCheck(t,Date.now()-o),this.reportFailOpen(r)),i||(this.cachedSnapshot=t)}return i||(void 0!==r&&r!==t.allowed?this.notifyListeners(t):void 0===r&&this.notifyListeners(t)),t}async fetchFromServer(){let e=this.authenticationManager.currentSessionSubject.value?.account,t=e?.enterpriseId;if(!t)throw new l.EnterpriseSkillUploadPolicyError("missing enterpriseId",401);let r=l.USER_CHECK_PATH.replace("{enterpriseId}",encodeURIComponent(t));try{let e=await this.restOperations.get(r,{timeout:l.POLICY_FETCH_TIMEOUT_MS});if(401===e.status)throw new l.EnterpriseSkillUploadPolicyError("unauthorized",401);if(e.status<200||e.status>=300||void 0===e.data||null===e.data)throw new l.EnterpriseSkillUploadPolicyError(`unexpected http status ${e.status}`,e.status);return this.parseUserCheckBody(e.data)}catch(r){if(r instanceof l.EnterpriseSkillUploadPolicyError)throw r;let e=r?.response?.status,t=r instanceof Error?r.message:String(r);throw new l.EnterpriseSkillUploadPolicyError(t,e,r)}}parseUserCheckBody(e){if("object"!=typeof e||null===e)throw new l.EnterpriseSkillUploadPolicyError("invalid response schema: not an object");if("data"in e&&void 0!==e.data&&null!==e.data){if("number"==typeof e.code&&0!==e.code){let t="string"==typeof e.msg?e.msg:`code=${e.code}`;throw new l.EnterpriseSkillUploadPolicyError(`backend rejected: ${t}`)}return this.assertUserCheckShape(e.data)}return this.assertUserCheckShape(e)}assertUserCheckShape(e){if("object"!=typeof e||null===e)throw new l.EnterpriseSkillUploadPolicyError("invalid response schema");if("boolean"!=typeof e.allowed)throw new l.EnterpriseSkillUploadPolicyError("invalid response schema: missing allowed");let t="string"==typeof e.policy_mode?e.policy_mode:"string"==typeof e.mode?e.mode:void 0;return{...e,policy_mode:t}}computeOwnerKey(e){if(e)return e.enterpriseId?`enterprise:${e.enterpriseId}:${e.uid}`:`personal:${e.uid}`}notifyListeners(e){for(let t of this.listeners)try{t(e)}catch(e){this.logger.error("[EnterpriseSkillUploadPolicy] listener threw",e)}}reportCheck(e,t){this.logger.info(`[telemetry] ${l.EnterpriseSkillUploadPolicyEvents.Check} `+JSON.stringify({allowed:e.allowed,policy_mode:e.policy_mode,reason:e.reason,source:e.source,durationMs:t}))}reportFailOpen(e){let t=e instanceof Error?e.message:String(e);this.logger.warn(`[telemetry] ${l.EnterpriseSkillUploadPolicyEvents.FailOpen} `+JSON.stringify({error:t}))}reportInvalidMode(e){this.logger.warn(`[telemetry] ${l.EnterpriseSkillUploadPolicyEvents.InvalidMode} `+JSON.stringify({policy_mode:e.policy_mode,reason:e.reason}))}};t.EnterpriseSkillUploadPolicyServiceImpl=d,o([(0,n.Autowired)(a.AuthenticationManager),i("design:type",Object)],d.prototype,"authenticationManager",void 0),o([(0,n.Autowired)(c.ProductManager),i("design:type",Object)],d.prototype,"productManager",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.Autowired)(s.RestOperations),i("design:type",Function)],d.prototype,"restOperations",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"dispose",null),t.EnterpriseSkillUploadPolicyServiceImpl=o([(0,n.Component)(l.EnterpriseSkillUploadPolicyService)],d)},20160(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.SkillPackageTooLargeError=t.SkillUploadPolicyDeniedError=t.EnterpriseSkillUploadPolicyService=t.EnterpriseSkillUploadPolicyEvents=t.POLICY_FETCH_TIMEOUT_MS=t.POLICY_FAIL_OPEN_CACHE_TTL_MS=t.POLICY_CACHE_TTL_MS=t.USER_CHECK_PATH=t.EnterpriseSkillUploadPolicyError=t.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES=void 0,t.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES=0xa00000;let EnterpriseSkillUploadPolicyError=class EnterpriseSkillUploadPolicyError extends Error{constructor(e,t,r){super(e),this.httpStatus=t,void 0!==r&&(this.cause=r),this.name="EnterpriseSkillUploadPolicyError"}};t.EnterpriseSkillUploadPolicyError=EnterpriseSkillUploadPolicyError,t.USER_CHECK_PATH="/v2/enterprises/{enterpriseId}/skill-upload-policy/user-check",t.POLICY_CACHE_TTL_MS=3e5,t.POLICY_FAIL_OPEN_CACHE_TTL_MS=3e4,t.POLICY_FETCH_TIMEOUT_MS=1500,t.EnterpriseSkillUploadPolicyEvents={Check:"enterpriseSkillUploadPolicy.check",FailOpen:"enterpriseSkillUploadPolicy.failOpen",InvalidMode:"enterpriseSkillUploadPolicy.invalidMode"},t.EnterpriseSkillUploadPolicyService=Symbol("EnterpriseSkillUploadPolicyService");let SkillUploadPolicyDeniedError=class SkillUploadPolicyDeniedError extends Error{constructor(e,t){super(t??`Skill upload denied by enterprise policy: ${e}`),this.code="SKILL_UPLOAD_POLICY_DENIED",this.name="SkillUploadPolicyDeniedError",this.reason=e}};t.SkillUploadPolicyDeniedError=SkillUploadPolicyDeniedError;let SkillPackageTooLargeError=class SkillPackageTooLargeError extends Error{constructor(e,t,r){super(r??`Skill package too large: ${t} > ${e} bytes`),this.code="SKILL_PACKAGE_TOO_LARGE",this.name="SkillPackageTooLargeError",this.maxBytes=e,this.actualBytes=t}};t.SkillPackageTooLargeError=SkillPackageTooLargeError},84546(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnterpriseCustomConnectorPolicyService=t.EnterpriseCustomConnectorPolicyEvents=t.EnterpriseCustomConnectorPolicyError=t.CustomConnectorPolicyDeniedError=t.computeDirectorySizeBytes=t.SkillUploadPolicyDeniedError=t.SkillPackageTooLargeError=t.EnterpriseSkillUploadPolicyService=t.EnterpriseSkillUploadPolicyEvents=t.EnterpriseSkillUploadPolicyError=t.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES=void 0,i(r(39870),t),i(r(47532),t),i(r(58351),t),i(r(91736),t);var n=r(20160);Object.defineProperty(t,"DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES",{enumerable:!0,get:function(){return n.DEFAULT_SKILL_UPLOAD_MAX_SIZE_BYTES}}),Object.defineProperty(t,"EnterpriseSkillUploadPolicyError",{enumerable:!0,get:function(){return n.EnterpriseSkillUploadPolicyError}}),Object.defineProperty(t,"EnterpriseSkillUploadPolicyEvents",{enumerable:!0,get:function(){return n.EnterpriseSkillUploadPolicyEvents}}),Object.defineProperty(t,"EnterpriseSkillUploadPolicyService",{enumerable:!0,get:function(){return n.EnterpriseSkillUploadPolicyService}}),Object.defineProperty(t,"SkillPackageTooLargeError",{enumerable:!0,get:function(){return n.SkillPackageTooLargeError}}),Object.defineProperty(t,"SkillUploadPolicyDeniedError",{enumerable:!0,get:function(){return n.SkillUploadPolicyDeniedError}}),i(r(75554),t);var s=r(94824);Object.defineProperty(t,"computeDirectorySizeBytes",{enumerable:!0,get:function(){return s.computeDirectorySizeBytes}});var a=r(63600);Object.defineProperty(t,"CustomConnectorPolicyDeniedError",{enumerable:!0,get:function(){return a.CustomConnectorPolicyDeniedError}}),Object.defineProperty(t,"EnterpriseCustomConnectorPolicyError",{enumerable:!0,get:function(){return a.EnterpriseCustomConnectorPolicyError}}),Object.defineProperty(t,"EnterpriseCustomConnectorPolicyEvents",{enumerable:!0,get:function(){return a.EnterpriseCustomConnectorPolicyEvents}}),Object.defineProperty(t,"EnterpriseCustomConnectorPolicyService",{enumerable:!0,get:function(){return a.EnterpriseCustomConnectorPolicyService}}),i(r(62290),t)},94824(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.computeDirectorySizeBytes=computeDirectorySizeBytes;let a=s(r(51455)),c=s(r(76760)),l=new Set(["__MACOSX",".DS_Store"]);async function computeDirectorySizeBytes(e){let t,r=0;try{t=await a.readdir(e,{withFileTypes:!0})}catch{return 0}for(let o of t){if(l.has(o.name))continue;let t=c.join(e,o.name);if(o.isSymbolicLink()){try{let e=await a.lstat(t);r+=e.size}catch{}continue}if(o.isDirectory())r+=await computeDirectorySizeBytes(t);else if(o.isFile())try{let e=await a.stat(t);r+=e.size}catch{}}return r}},54387(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(9151),t.default=(0,r(88523).autoBind)()},13539(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ClientProductProvider=void 0;let n=r(88523),s=r(79814),a=r(16928),c=r(72592),l=r(18629),d=class{constructor(){this.priority=l.ProductProviderPriority.CLIENT}init(){this.logger.setContext("ClientProductProvider")}async provide(){if(this.cachedProductConfiguration)return this.cachedProductConfiguration;if(!this.fs)return{};try{let e=this.configBasePath||__dirname,t=(0,a.join)(e,"product.json");if(this.fs.existsSync(t)||(t=(0,a.join)(e,"..","product.json")),this.fs.existsSync(t)||(t=(0,a.join)(e,"..","..","product.json")),!this.fs.existsSync(t))return this.logger.debug("Failed to find product.json"),{};this.logger.info(`Reading product configuration from ${t}`);let r=this.fs.readFileSync(t,{encoding:"utf-8"});return this.cachedProductConfiguration=(0,c.stripBuiltinModelsIfDisabled)(JSON.parse(r.toString())),this.logger.info("Product configuration loaded and cached successfully"),this.cachedProductConfiguration}catch(e){return this.logger.warn("Failed to read product.json",e),{}}}};t.ClientProductProvider=d,o([(0,n.Autowired)(s.FileSystem),(0,n.Optional)(),i("design:type",Object)],d.prototype,"fs",void 0),o([(0,n.Autowired)(l.ProductConfigBasePath),(0,n.Optional)(),i("design:type",String)],d.prototype,"configBasePath",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],d.prototype,"logger",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],d.prototype,"init",null),t.ClientProductProvider=o([(0,n.Component)(l.ProductProvider)],d)},58880(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CustomModelsProductProvider=void 0;let n=r(88523),s=r(51147),a=r(1226),c=r(79814),l=r(79896),d=r(70857),u=r(16928),p=r(55119),h=r(18629),g=class{constructor(){this.priority=h.ProductProviderPriority.ENV+1e3,this.DEBOUNCE_DELAY=1e3}init(){"1"!==process.env.CODEBUDDY_DISABLE_CUSTOM_MODELS_FILE&&this.setupFileWatchers()}setupFileWatchers(){if(this.workspace?.workspaceFolders&&this.workspace.workspaceFolders.length>0){let e=this.workspace.workspaceFolders[0].uri,t=c.URI.parse(`${e.path}/${s.WORKSPACE_DATA_DIR_NAME}/models.json`);(0,l.existsSync)(t.fsPath)&&this.watchFile(t.fsPath,"project")}}isWorkBuddyProduct(e){return(e||"").toLowerCase().includes("workbuddy")}getUserConfigPath(e,t){let r=process.env.WORKBUDDY_CONFIG_DIR?.trim()||process.env.CODEBUDDY_CONFIG_DIR?.trim();if(r)return(0,u.join)(r,"models.json");let o=t?.trim()||(this.isWorkBuddyProduct(e)?".workbuddy":s.USER_DATA_DIR_NAME);return(0,u.join)((0,d.homedir)(),o,"models.json")}watchFile(e,t){if("user"===t){if(this.userConfigWatcher&&this.userConfigWatcherPath===e)return;this.userConfigWatcher&&this.userConfigWatcher.close()}else{if(this.projectConfigWatcher&&this.projectConfigWatcherPath===e)return;this.projectConfigWatcher&&this.projectConfigWatcher.close()}try{let r=(0,l.watch)(e,(t,r)=>{r&&r.endsWith("models.json")&&(this.logger.debug(`Models config file ${t}: ${e}`),this.debounceSync())});r.on("error",t=>{this.logger.error(`Watcher error for file ${e}: ${t}`)}),"user"===t?(this.userConfigWatcher=r,this.userConfigWatcherPath=e):(this.projectConfigWatcher=r,this.projectConfigWatcherPath=e),this.logger.debug(`Started watching file: ${e}`)}catch(t){this.logger.error(`Failed to watch file ${e}:`,t)}}debounceSync(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{try{let e=n.ContainerUtil.get(h.ProductManager);e?(this.logger.debug("Syncing product configuration due to models.json changes"),e.sync().catch(e=>{this.logger.error("Failed to sync product configuration",e)})):this.logger.warn("ProductManager not found, cannot sync")}catch(e){this.logger.error("Failed to trigger ProductManager sync:",e)}},this.DEBOUNCE_DELAY)}dispose(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.userConfigWatcher&&this.userConfigWatcher.close(),this.userConfigWatcherPath=void 0,this.projectConfigWatcher&&this.projectConfigWatcher.close(),this.projectConfigWatcherPath=void 0}async provide(e){if("1"===process.env.CODEBUDDY_DISABLE_CUSTOM_MODELS_FILE||!this.fs)return{};if(!e.current.productFeatures?.CustomModelsJSON)return this.logger.info("disable use custom model"),{};let t=this.getUserConfigPath(e.current.productName,e.current.config?.customUserDataDir);this.logger.info(`[CustomModelsProductProvider] productName=${e.current.productName}, isWorkBuddy=${this.isWorkBuddyProduct(e.current.productName)}, userConfigPath=${t}`);let r={};try{if(this.fs.existsSync(t)){this.userConfigWatcher&&this.userConfigWatcherPath===t||this.watchFile(t,"user");let e=this.fs.readFileSync(t,{encoding:"utf-8"}).toString().trim();if(e){let o;(0,a.reconcileUserModelsJsonToPolicy)(t,{warn:e=>this.logger.warn(e)}).catch(()=>{});let i=(0,a.createModelsJsonCredentialCodec)(e=>this.logger.warn(e));try{o=i.decode(JSON.parse(e)).value}finally{i.dispose()}let{models:n,availableModels:s}=this.extractConfig(o);r={models:n.filter(e=>!!e.id||(this.logger.warn(`[CustomModelsProductProvider] Skipping model without id in user config: ${JSON.stringify(e)}`),!1)).map(e=>({disabled:!1,...e})),availableModels:s},this.logger.info(`Loaded custom models config from user: ${t}`)}else this.logger.info(`Skipping empty custom models config at ${t}`)}}catch(e){this.logger.error(`Failed to load user-level custom models configuration from ${t}`,e)}let o={};if(this.workspace?.workspaceFolders&&this.workspace.workspaceFolders.length>0){let e=this.workspace.workspaceFolders[0].uri,t=c.URI.parse(`${e.path}/${s.WORKSPACE_DATA_DIR_NAME}/models.json`);try{if(this.fs.existsSync(t.fsPath)){this.projectConfigWatcher&&this.projectConfigWatcherPath===t.fsPath||this.watchFile(t.fsPath,"project");let e=this.fs.readFileSync(t.fsPath,{encoding:"utf-8"}).toString().trim();if(e){let r=JSON.parse(e),{models:i,availableModels:n}=this.extractConfig(r);o={models:i.filter(e=>!!e.id||(this.logger.warn(`[CustomModelsProductProvider] Skipping model without id in project config: ${JSON.stringify(e)}`),!1)).map(e=>({disabled:!1,...e})),availableModels:n,mergeStrategy:h.MergeStrategy.SmartMerge},this.logger.info(`Loaded custom models config from project: ${t.fsPath}`)}else this.logger.info(`Skipping empty custom models config at ${t.fsPath}`)}}catch(e){this.logger.error(`Failed to load project-level custom models configuration from ${t.fsPath}`,e)}}let i={};Object.keys(r).length>0&&(i=await this.productMerger.merge(i,r)),Object.keys(o).length>0&&(i=await this.productMerger.merge(i,o));let n=!!e.current.productFeatures?.[h.ProductFeature.CustomModelIdPrefix];if(i.models)for(let e of i.models){if(n&&"string"==typeof e.id&&!e.id.startsWith(h.CUSTOM_LOCAL_MODEL_PREFIX)){let t=e.id;e.id=`${h.CUSTOM_LOCAL_MODEL_PREFIX}${e.id}`,e.aliases||(e.aliases=[]),e.aliases.includes(t)||e.aliases.push(t)}e.tags||(e.tags=[]),e.tags.push(h.MODEL_TAG_CUSTOM),e.url&&(e[h.OVERRIDE_MODE]="replace"),this.resolveModelEnvVariables(e),(0,p.enrichLanguageModelFromCatalog)(e)}if(n&&i.availableModels){let e=i.availableModels.filter(e=>!e.startsWith(h.CUSTOM_LOCAL_MODEL_PREFIX)).map(e=>`${h.CUSTOM_LOCAL_MODEL_PREFIX}${e}`);i.availableModels=Array.from(new Set([...i.availableModels,...e]))}if(void 0!==i.availableModels){let t=e.current.availableModels;t&&t.length>0&&(i.availableModels=Array.from(new Set([...t,...i.availableModels])))}return{...i,mergeStrategy:h.MergeStrategy.SmartMerge}}extractConfig(e){return Array.isArray(e)?{models:e,availableModels:void 0}:null!==e&&"object"==typeof e?{models:Array.isArray(e.models)?e.models:[],availableModels:Array.isArray(e.availableModels)?e.availableModels.filter(e=>"string"==typeof e):void 0}:{models:[],availableModels:void 0}}resolveModelEnvVariables(e){if(e.apiKey){let t=s.EnvUtils.resolveEnvVariables(e.apiKey);t!==e.apiKey&&(this.logger.debug(`Resolved apiKey environment variable for model ${e.id}`),e.apiKey=t)}if(e.url){let t=s.EnvUtils.resolveEnvVariables(e.url);t!==e.url&&(this.logger.debug(`Resolved url environment variable for model ${e.id}`),e.url=t)}}};t.CustomModelsProductProvider=g,o([(0,n.Autowired)(c.FileSystem),(0,n.Optional)(),i("design:type",Object)],g.prototype,"fs",void 0),o([(0,n.Autowired)(c.Workspace),(0,n.Optional)(),i("design:type",Object)],g.prototype,"workspace",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],g.prototype,"logger",void 0),o([(0,n.Autowired)(h.ProductMerger),i("design:type",Object)],g.prototype,"productMerger",void 0),o([(0,n.PostConstruct)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],g.prototype,"init",null),o([(0,n.PreDestroy)(),i("design:type",Function),i("design:paramtypes",[]),i("design:returntype",void 0)],g.prototype,"dispose",null),t.CustomModelsProductProvider=o([(0,n.Component)(h.ProductProvider)],g)},30409(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EnvProductProvider=void 0;let n=r(88523),s=r(79814),a=r(18629),c=["ACC_PRODUCT_CONFIG_V3","ACC_PRODUCT_CONFIG_V2","ACC_PRODUCT_CONFIG"],l=class{constructor(){this.priority=a.ProductProviderPriority.ENV}async provide(e){let t=e.current,r={};try{let e=process.env[t.productConfigPathEnv||"ACC_PRODUCT_CONFIG_PATH"];e&&this.fs.existsSync(e)&&(r=await this.productMerger.merge(r,JSON.parse(this.fs.readFileSync(e,"utf-8").toString())))}catch(e){this.logger.info(`Failed to create configuration from env path: ${e}`)}try{let e=this.getProductConfig(t.productConfigEnv||c);e&&(r=await this.productMerger.merge(r,JSON.parse(e)))}catch(e){this.logger.info(`Failed to create configuration from env: ${e}`)}return r}getProductConfig(e){if(e){if("string"==typeof e)return process.env[e];for(let t of e){let e=process.env[t];if(e){let r=JSON.parse(e);return"ACC_PRODUCT_CONFIG"===t&&delete r.authentication,("ACC_PRODUCT_CONFIG"===t||"ACC_PRODUCT_CONFIG_V2"===t)&&delete r.models,JSON.stringify(r)}}}}};t.EnvProductProvider=l,o([(0,n.Autowired)(s.FileSystem),i("design:type",Object)],l.prototype,"fs",void 0),o([(0,n.Autowired)(n.Logger),i("design:type",Object)],l.prototype,"logger",void 0),o([(0,n.Autowired)(a.ProductMerger),i("design:type",Object)],l.prototype,"productMerger",void 0),t.EnvProductProvider=o([(0,n.Component)(a.ProductProvider)],l)},55762(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(30409),t),i(r(38569),t),i(r(13539),t),i(r(58880),t),i(r(5148),t),i(r(1339),t),i(r(18774),t)},66892(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(55762);let o=r(88523),i=r(18629);t.default=(0,o.autoBind)(e=>{e(i.ProductConfigBasePath).toConstantValue(__dirname)})},66106(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.GitInfoCollectorImpl=void 0;let l=r(88523),d=r(82005),u=r(79814),p=a(r(79896)),h=a(r(16928)),g=r(40856),f=r(43576),m=class{constructor(){this.cacheTTL=3e5,this.defaultScanOptions={maxDepth:3,timeout:1e4,maxDirectories:1e3,fastMode:!1},this.excludedDirectories=new Set(["node_modules","bower_components","vendor","packages","dist","build","out","target","bin","release","debug",".cache","cache","tmp","temp",".tmp","__pycache__",".pytest_cache",".nyc_output",".vscode",".idea",".vs","logs","log",".svn",".hg","data","datasets","dataset","raw_data","processed_data","train_data","test_data","val_data","models","checkpoints","weights","embeddings","features","outputs","results","experiments","runs","wandb","mlruns"]),this.dataDirectoryPrefixes=["data_","dataset_","train_","test_","val_","raw_","processed_"]}init(){this.logger.setContext("GitInfoCollector")}async collect(e=!1,t){if(this.logger.info(`CODEBUDDY_GIT_REPO_SCAN_DISABLED ${process.env.CODEBUDDY_GIT_REPO_SCAN_DISABLED}`),"1"===process.env.CODEBUDDY_GIT_REPO_SCAN_DISABLED||"true"===process.env.CODEBUDDY_GIT_REPO_SCAN_DISABLED)return this.logger.info("Git repository scan is disabled via CODEBUDDY_GIT_REPO_SCAN_DISABLED environment variable"),null;this.logger.info("Starting to collect Git info...");let r=this.workspace.workspaceFolders;if(!r||0===r.length)return this.logger.warn("No workspace folders found"),null;let o=r.map(e=>e.uri.fsPath);if(!e&&this.isCacheValid(o))return this.logger.info("Returning cached Git info"),this.cache.data;let i={...this.defaultScanOptions,...t};try{let e=[],t="single",n={scannedDirectories:0,foundRepositories:0,elapsedTime:0,wasTimeout:!1,wasTruncated:!1};if(1===r.length){let o=r[0],s=await this.findGitRepositoriesAsync(o.uri.fsPath,i,n);if(this.logger.info(`Workspace path: ${o.uri.fsPath}`),this.logger.info(`Found ${s.length} Git repositories`),s.length>0&&this.logger.info(`First Git repository path: ${s[0].projectPath}`),1===s.length&&s[0].projectPath===o.uri.fsPath)this.logger.info("Detected standard single Git project"),t="single",e.push(...s);else if(s.length>1)this.logger.info("Detected single workspace with multiple Git projects"),t="folder",e.push(...s);else{if(1!==s.length)return this.logger.warn("No Git projects found in workspace"),null;this.logger.info("Detected single workspace with subdirectory Git project"),t="folder",e.push(...s)}}else for(let o of(t="multi-root",r)){let t=await this.findGitRepositoriesAsync(o.uri.fsPath,i,n);e.push(...t)}if(0===e.length)return this.logger.warn("No Git repositories found"),null;this.logScanStats(n);let s=await this.determineActiveRepository(e),a={repositories:e,activeRepository:s,workspaceType:t};return this.updateCache(a,o),this.lastCollection=a,this.logger.info(`Git info collection complete: found ${e.length} repositories, active: ${s?.url||"none"}`),a}catch(e){return this.logger.error("Failed to collect Git info:",e),null}}isCacheValid(e){return!!this.cache&&(Date.now()-this.cache.timestamp>this.cacheTTL?(this.logger.debug("Cache expired"),!1):e.length===this.cache.workspaceFolders.length&&(!!e.every((e,t)=>e===this.cache.workspaceFolders[t])||(this.logger.debug("Workspace folders changed, cache invalidated"),!1)))}updateCache(e,t){this.cache={data:e,timestamp:Date.now(),workspaceFolders:t},this.logger.debug("Cache updated")}clearCache(){this.cache=void 0,this.logger.info("Cache cleared")}async findGitRepositoriesAsync(e,t,r){let o=[],i=Date.now(),n={aborted:!1},s=setTimeout(()=>{n.aborted=!0,r.wasTimeout=!0,this.logger.warn(`Scan timeout after ${t.timeout}ms`)},t.timeout);try{this.logger.info(`Starting directory scan: ${e}`);let s=t.fastMode?1:t.maxDepth;this.logger.info("Scanning parent directories..."),await this.scanUpwardForGitRepositoriesAsync(e,o,e,t.maxDepth,n),this.logger.info("Scanning child directories..."),await this.scanDownwardForGitRepositoriesAsync(e,o,e,s,t,r,n),r.elapsedTime=Date.now()-i,r.foundRepositories=o.length,this.logger.info(`Scan complete: found ${o.length} Git repositories in ${r.elapsedTime}ms`)}finally{clearTimeout(s)}return o}async scanUpwardForGitRepositoriesAsync(e,t,r,o,i){let n=e,s=0;for(;s<o&&!i.aborted;){let e=h.dirname(n);if(e===n){this.logger.debug("Reached filesystem root, stopping upward scan");break}n=e,s++;try{if(this.logger.debug(`Scanning upward level ${s}: ${n}`),await f.GitInfoExtractor.isGitRepositoryAsync(n)){this.logger.info(`Found parent Git repository: ${n}`);let e=await this.extractGitInfo(n,r);e&&!this.repositoryExists(t,e.projectPath)&&(t.push(e),this.logger.info(`Added parent Git info: ${e.url} (branch: ${e.branch})`))}}catch(e){this.logger.error(`Error scanning parent directory ${n}:`,e)}await this.yieldToEventLoop()}}async scanDownwardForGitRepositoriesAsync(e,t,r,o,i,n,s){if(!(o<=0)&&!s.aborted){if(await (0,d.isCephFsSubMount)(e,r))return void this.logger.info(`Skipping CephFS sub-mount: ${e}`);if(n.scannedDirectories>=i.maxDirectories){n.wasTruncated||(n.wasTruncated=!0,this.logger.warn(`Reached maximum directory limit (${i.maxDirectories}), truncating scan`));return}try{if(n.scannedDirectories++,this.logger.debug(`Scanning downward ${e}, remaining depth: ${o}`),await f.GitInfoExtractor.isGitRepositoryAsync(e)){this.logger.info(`Found Git repository: ${e}`);let o=await this.extractGitInfo(e,r);o&&!this.repositoryExists(t,o.projectPath)&&(t.push(o),this.logger.info(`Extracted Git info: ${o.url} (branch: ${o.branch})`))}let a=(await p.promises.readdir(e,{withFileTypes:!0})).filter(e=>e.isDirectory()&&this.shouldScanDirectory(e.name));for(let c=0;c<a.length&&!s.aborted;c+=10){let l=a.slice(c,c+10);await Promise.all(l.map(a=>{let c=h.join(e,a.name);return this.scanDownwardForGitRepositoriesAsync(c,t,r,o-1,i,n,s)})),await this.yieldToEventLoop()}}catch(r){let t=r?.code;"ENOENT"===t||"EACCES"===t||"EPERM"===t||"ENOTDIR"===t?this.logger.debug(`Skipping unreadable directory ${e}: ${t}`):this.logger.error(`Error scanning directory ${e}:`,r)}}}yieldToEventLoop(){return new Promise(e=>setImmediate(e))}repositoryExists(e,t){return e.some(e=>e.projectPath===t)}logScanStats(e){this.logger.info(`Scan stats: scanned ${e.scannedDirectories} directories, found ${e.foundRepositories} repositories, elapsed ${e.elapsedTime}ms`+(e.wasTimeout?" (timeout)":"")+(e.wasTruncated?" (truncated)":""))}shouldScanDirectory(e){if(".git"===e)return!1;if(this.excludedDirectories.has(e))return this.logger.debug(`Skipping excluded directory: ${e}`),!1;if(e.startsWith(".")&&![".github"].includes(e))return!1;let t=e.toLowerCase();for(let r of this.dataDirectoryPrefixes)if(t.startsWith(r))return this.logger.debug(`Skipping data directory: ${e}`),!1;return!0}async extractGitInfo(e,t,r){try{let o=await f.GitInfoExtractor.extractGitUrlAsync(e);if(!o)return this.logger.warn(`No remote URL found in ${e}`),null;let i=await f.GitInfoExtractor.getCurrentBranchAsync(e),n=void 0!==r,s=h.relative(t,e);return{url:o,branch:i||void 0,projectPath:e,isSubmodule:n,submodulePath:n?s:void 0,parentPath:n?r:void 0}}catch(t){return this.logger.error(`Failed to extract Git info from ${e}:`,t),null}}async determineActiveRepository(e){return e[0]}isGitRepository(){return void 0!==this.lastCollection&&this.lastCollection.repositories.length>0}};t.GitInfoCollectorImpl=m,s([(0,l.Autowired)(l.Logger),c("design:type",Object)],m.prototype,"logger",void 0),s([(0,l.Autowired)(u.Workspace),c("design:type",Object)],m.prototype,"workspace",void 0),s([(0,l.PostConstruct)(),c("design:type",Function),c("design:paramtypes",[]),c("design:returntype",void 0)],m.prototype,"init",null),t.GitInfoCollectorImpl=s([(0,l.Component)(g.GitInfoCollector)],m)},1339(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(66106),t)},12150(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.GitUrlNormalizer=void 0;let GitUrlNormalizer=class GitUrlNormalizer{static extractProjectPath(e){if(!e)return null;try{let t=e.trim();if(t.includes("@")&&t.includes(":")){let e=t.split(":");e.length>=2&&(t=(t=e.slice(1).join(":")).replace(/^\/+/,""))}else(t.startsWith("http://")||t.startsWith("https://"))&&(t=new URL(t).pathname.replace(/^\/+/,""));return(t=(t=t.replace(/\.git$/i,"")).replace(/\/+$/,""))||null}catch(t){return console.warn(`Failed to parse Git URL: ${e}`,t),null}}static extractHost(e){if(!e)return null;try{let t=e.trim();if(t.includes("@")&&t.includes(":")){let e=t.match(/@([^:]+):/);if(e&&e[1])return e[1]}else if(t.startsWith("http://")||t.startsWith("https://"))return new URL(t).hostname;return null}catch(t){return console.warn(`Failed to extract host from Git URL: ${e}`,t),null}}static isGitWoaRepository(e){return"git.woa.com"===this.extractHost(e)}static encodePath(e){return e?encodeURIComponent(e):""}static normalize(e,t=!1){let r=this.extractProjectPath(e);return r?t?this.encodePath(r):r:null}};t.GitUrlNormalizer=GitUrlNormalizer},5148(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(43576),t),i(r(12150),t)},18774(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.readWindowsDownloadChannel=readWindowsDownloadChannel,t.setWindowsDownloadChannelReaderForTesting=setWindowsDownloadChannelReaderForTesting;let o=r(31421);async function readWindowsDownloadChannel(e){return n(e)}function setWindowsDownloadChannelReaderForTesting(e){n=e??defaultRegistryReader}let i=(0,r(57975).promisify)(o.execFile),n=defaultRegistryReader;async function defaultRegistryReader(e){if("win32"===process.platform)for(let t of["HKCU","HKLM"]){let r=await queryRegistryValue(t,e);if(r)return r}}async function queryRegistryValue(e,t){try{let{stdout:r}=await i("reg",["query",`${e}\\Software\\${t}`,"/v","DownloadChannel"],{encoding:"utf8",timeout:3e3,windowsHide:!0}),o=r.match(/DownloadChannel\s+REG_SZ\s+(.+)/);if(o&&o[1])return o[1].trim()||void 0}catch{}}},38569(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.WorkbuddyEnvAgentsPatchProductProvider=void 0,t.isPrivateDirPermissionAcceptable=isPrivateDirPermissionAcceptable;let l=r(88523),d=r(79896),u=a(r(70857)),p=a(r(16928)),h=r(18629),g=["ACC_PRODUCT_CONFIG_V3","ACC_PRODUCT_CONFIG_V2","ACC_PRODUCT_CONFIG"],f=class{constructor(){this.priority=h.ProductProviderPriority.ENV-1}async provide(e){if(!isWorkbuddyDesktopChild())return{};let t=e.current.agents;if(!Array.isArray(t))return{};let r=await readProductSnapshot(e.current.productConfigPathEnv,e.current.productConfigEnv);if(!r)return{};try{let e=JSON.parse(r.raw),o=mergeAgentsPreferEnv(e.agents,t);if(areAgentsEqual(e.agents,o))return{};let i=Array.isArray(e.agents)?e.agents.length:0,n=JSON.stringify({...e,agents:o});if("path"===r.source.kind){let e=await this.acquirePrivateSpillPath();if(!e){let e=Math.max(0,o.length-i);return this.logger?.warn(`[WorkbuddyEnvAgentsPatchProductProvider] skipped patch: failed to acquire a private spill directory; leaving shared spill untouched. ${e} locally added agent(s) will be dropped when the env snapshot is merged back.`),{}}await writePrivateSpillFile(e,n),process.env[r.source.pathEnvKey]=e,this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] patched env agents via private spill: pathEnvKey=${r.source.pathEnvKey}, before=${i}, after=${o.length}`)}else process.env[r.source.envKey]=n,this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] patched env agents inline: key=${r.source.envKey}, before=${i}, after=${o.length}`)}catch(e){this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] failed to patch env agents: error=${e}`)}return{}}async acquirePrivateSpillPath(){if(this.privateSpillPath)return this.privateSpillPath;try{let e=await d.promises.mkdtemp(p.join(u.tmpdir(),"workbuddy-product-spill-"));return await assertPrivateDirSafety(e),this.privateSpillPath=p.join(e,"acc-product-config-v3.json"),registerSpillCleanup(e),this.privateSpillPath}catch(e){this.logger?.info(`[WorkbuddyEnvAgentsPatchProductProvider] failed to create private spill directory: error=${e}`);return}}};function isPrivateDirPermissionAcceptable(e,t=process.platform){return"win32"===t||(63&e)==0}async function assertPrivateDirSafety(e){let t=await d.promises.stat(e),r=process.getuid;if("function"==typeof r&&t.uid!==r())throw Error(`unexpected owner uid=${t.uid} on ${e}`);let o=511&t.mode;if(!isPrivateDirPermissionAcceptable(o))throw Error(`unsafe mode 0o${o.toString(8)} on ${e}`)}function isWorkbuddyDesktopChild(){return"workbuddy-desktop"===process.env.CODEBUDDY_HOST}async function readProductSnapshot(e,t){let r=e||"ACC_PRODUCT_CONFIG_PATH",o=process.env[r];if(o)try{let e=await d.promises.readFile(o,"utf-8");if(e)return{raw:e,source:{kind:"path",pathEnvKey:r}}}catch{}for(let e of"string"==typeof t?[t]:t??g){let t=process.env[e];if(t)return{raw:t,source:{kind:"inline",envKey:e}}}}async function writePrivateSpillFile(e,t){let r=`${e}.tmp`,o=await d.promises.open(r,d.constants.O_WRONLY|d.constants.O_CREAT|d.constants.O_EXCL,384);try{await o.writeFile(t,{encoding:"utf-8"})}finally{await o.close()}await d.promises.rename(r,e)}t.WorkbuddyEnvAgentsPatchProductProvider=f,s([(0,l.Autowired)(l.Logger),(0,l.Optional)(),c("design:type",Object)],f.prototype,"logger",void 0),t.WorkbuddyEnvAgentsPatchProductProvider=f=s([(0,l.Component)(h.ProductProvider)],f);let m=new Set,y=!1;function registerSpillCleanup(e){m.add(e),y||(y=!0,process.on("exit",()=>{for(let e of m)try{(0,d.rmSync)(e,{recursive:!0,force:!0})}catch{}}))}function mergeAgentsPreferEnv(e,t){let r=Array.isArray(e)?e:[],o=Array.isArray(t)?t:[],i=new Set(r.map(e=>e?.name).filter(e=>!!e));return[...r,...o.filter(e=>!e?.name||!i.has(e.name))]}function areAgentsEqual(e,t){return JSON.stringify(e)===JSON.stringify(t)}},59747(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(24015),t.default=(0,r(88523).autoBind)()},3618(e,t){Object.defineProperty(t,"__esModule",{value:!0})},53167(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(3618),t.default=(0,r(88523).autoBind)()},61488(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(79814);let o=r(88523),i=r(47800),n=r(72018);t.default=(0,o.autoBind)(e=>{e(n.FileSystem).toConstantValue(i.fs)})},54463(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(62837),t)},97619(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),r(54463);let a=r(88523),c=s(r(79896)),l=r(98776);t.default=(0,a.autoBind)((e,t,r,o)=>{o(l.FileSystem).toConstantValue(c)})},62837(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.SystemInfoContextVariableResolver=void 0;let l=r(88523),d=r(66915),u=a(r(70857)),p=a(r(16928)),h=r(81060),g=class{constructor(){this.name="systemInfo"}async priority(){return 5}async resolve(){let e=this.workspace.workspaceFolders[0]?.uri.fsPath||p.join(u.homedir(),"Desktop");return{name:this.name,value:{os:u.platform(),workspace:e,defaultShell:"win32"===process.platform?"powershell":"bash"}}}};t.SystemInfoContextVariableResolver=g,s([(0,l.Autowired)(h.Workspace),c("design:type",Object)],g.prototype,"workspace",void 0),t.SystemInfoContextVariableResolver=s([(0,l.Component)(d.ContextVariableResolver)],g)},18707(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(92735),t.default=(0,r(88523).autoBind)()},65425(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.StandardClientIpDetector=void 0;let l=r(88523),d=r(27325),u=r(9151),p=a(r(65692)),h=r(87016),g=r(31879),f=r(53520),m="https://api.ipify.org?format=json";function isProbablyIp(e){return 0!==e.length&&!(e.length>45)&&!!(/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)||/^[0-9a-fA-F:.]+$/.test(e)&&e.includes(":"))}let y=class{constructor(){this.attempted=!1}getSync(){return this.cached}async initialize(){this.detect().catch(()=>{})}async detect(){if(!this.attempted){this.attempted=!0;try{let e=await this.productManager.waitConfiguration();if(!0!==e.isOversea)return;this.logger.debug?.(`[ClientIpDetector] probing ${m} (${(0,d.describeProxyForNodeRequest)(m)})`);let t=await this.fetchIp(m,3e3);t&&(this.cached=t)}catch(e){this.logger.warn("[ClientIpDetector] failed:",String(e))}}}fetchIp(e,t){return new Promise(r=>{let o=new h.URL(e),i=!1,n=p.get({hostname:o.hostname,path:`${o.pathname}${o.search}`,port:o.port||443,timeout:t,agent:this.resolveAgent(e)},e=>{if(200!==e.statusCode){e.resume(),done(void 0);return}let t=[],r=0;e.on("data",e=>{(r+=e.length)>1024?done(void 0):t.push(e)}),e.on("end",()=>{try{let e=Buffer.concat(t).toString("utf8"),r=JSON.parse(e),o="string"==typeof r.ip?r.ip.trim():"";done(o&&isProbablyIp(o)?o:void 0)}catch{done(void 0)}}),e.on("error",()=>done(void 0))}),s=setTimeout(()=>done(void 0),t);function done(e){i||(i=!0,clearTimeout(s),n.destroyed||n.destroy(),r(e))}n.on("error",()=>done(void 0)),n.on("timeout",()=>done(void 0))})}resolveAgent(e){return(0,d.resolveNodeProxyAgent)(e)}};t.StandardClientIpDetector=y,s([(0,l.Autowired)(u.ProductManager),c("design:type",Object)],y.prototype,"productManager",void 0),s([(0,l.Autowired)(f.Logger),c("design:type",Object)],y.prototype,"logger",void 0),t.StandardClientIpDetector=s([(0,l.Component)([g.ClientIpDetector,l.ApplicationLifecycle])],y)},65505(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.HttpsProxyEventTransport=void 0;let n=r(88523),s=r(60572),a=r(53520),c=class{accepts(e){return!1}async send(e,t,r){if(this.proxyUrl)try{let{axios:o,httpsAgent:i}=this.loadModules(this.proxyUrl);await o.post(e,t,{headers:r,httpsAgent:i,proxy:!1})}catch(e){throw this.logger.error("HttpsProxyEventTransport failed to send report",e),e}}loadModules(e){if(this.modules)return this.modules;let t=r(64023),{HttpsProxyAgent:o}=r(48580);return this.modules={axios:t.default??t,httpsAgent:new o(e)},this.modules}};t.HttpsProxyEventTransport=c,o([(0,n.Autowired)(a.Logger),i("design:type",Object)],c.prototype,"logger",void 0),t.HttpsProxyEventTransport=o([(0,n.Component)(s.EventTransport)],c)},98025(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(34019),t),i(r(65505),t),i(r(65425),t)},34019(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(65772),t)},65772(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.OSModelEventProcessor=t.OSEventProcessor=void 0;let c=r(88523),l=a(r(70857)),d=r(60572),u=class{async process({event:e}){e.os=l.platform(),e.arch=l.arch(),e.osVersion=l.release();let t=l.cpus();e.cpuModel=t.length>0?t[0].model:"unknown",e.cpuCores=t.length,e.memorySize=Math.round(l.totalmem()/1024/1024/1024)}};t.OSEventProcessor=u,t.OSEventProcessor=u=s([(0,c.Component)(d.EventProcessor)],u);let p=class{async process({event:e}){("object"!=typeof e.env||null===e.env)&&(e.env={}),e.env.os=l.platform(),e.env.arch=l.arch(),e.env.osVersion=l.release()}};t.OSModelEventProcessor=p,t.OSModelEventProcessor=s([(0,c.Component)(d.ModelEventProcessor)],p)},54834(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(98025),t),i(r(63247),t),i(r(51567),t)},63247(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||o(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.onLogEmitter=void 0,i(r(73543),t),i(r(40064),t),i(r(96205),t),i(r(25840),t);var n=r(73543);Object.defineProperty(t,"onLogEmitter",{enumerable:!0,get:function(){return n.onLogEmitter}})},73543(e,t,r){var o=this&&this.__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},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.FileLogger=t.onLogEmitter=void 0;let n=r(88523);Object.defineProperty(t,"onLogEmitter",{enumerable:!0,get:function(){return n.onLogEmitter}});let s=r(9151),a=r(54899),c=class extends n.AbstractLogger{get loggerStorageService(){try{return n.ContainerUtil.get(a.LoggerStorageService)}catch{return}}get configuration(){return this.productManager.configuration.getValue()?.log}getLevel(){return this.configuration?.level?s.LogLevel[this.configuration.level]:s.LogLevel.Info}error(e,t){this.output(e,s.LogLevel.Error,t)}warn(e,t){this.output(e,s.LogLevel.Warning,t)}info(e,t){this.output(e,s.LogLevel.Info,t)}debug(e,t){this.output(e,s.LogLevel.Debug,t)}timeEnd(e,t){let r=this.timeRecords.get(e);if(void 0===r)return void this.output(`No such label: ${e} for timeEnd`,s.LogLevel.Info,t);{let o=Date.now()-r;return this.timeRecords.delete(e),this.output(`${e} [${o}ms]`,s.LogLevel.Info,t),o}}resolvePrefix(){let e=new Date().toISOString();return`${e} [${this.level}]`}output(e,t,r){let o=this.traceIdProvider?.provide();if(n.onLogEmitter.fire({level:this.toLogLevel(t),traceId:o,rootContext:this.context,context:r,message:e}),this.getLevel()<=t){let o=this.resolveContextString(r),i=o?`${o} ${e}`:`${e}`;this.loggerStorageService?.store(i,t)}}toLogLevel(e){switch(e){case s.LogLevel.Verbose:return"verbose";case s.LogLevel.Debug:return"debug";case s.LogLevel.Info:return"info";case s.LogLevel.Warning:return"warn";case s.LogLevel.Error:return"error";default:return"info"}}};t.FileLogger=c,o([(0,n.Autowired)(s.ProductManager),i("design:type",Object)],c.prototype,"productManager",void 0),t.FileLogger=o([(0,n.Component)({id:n.Logger,rebind:!0,scope:n.Scope.Transient})],c)},40064(e,t,r){let o;var i,n,s=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__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},l=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),o=0;o<r.length;o++)"default"!==r[o]&&s(t,e,r[o]);return a(t,e),t}),d=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerStorageServiceImpl=void 0;let u=r(88523),p=r(51147),h=r(9151),g=r(79814),f=l(r(76982)),m=r(79896),y=l(r(91943)),_=l(r(70857)),v=l(r(16928)),b=r(22370),w=r(54899),S=r(73638),P=class{constructor(){this.runOnceScheduler=new u.RunOnceScheduler(()=>{this.flush()},1e4),this.pendingLogs=[]}static{n=this}get logger(){return o||(o=u.ContainerUtil.get(w.Logger)).setContext("LoggerStorageService"),o}async getMaxRetention(){let e=(await this.productManager.waitConfiguration()).log?.maxRetention;return"number"==typeof e&&e>0?e:10}async enabled(){let e=(await this.productManager.waitConfiguration()).log?.output;return!Array.isArray(e)||e.includes("file")}get storagePath(){return this.loggerStoragePathProvider?.provide()}get workspacePath(){return this.workspace.workspaceFolders?.[0]?.uri.fsPath??w.DEFAULT_WORKSPACE_PATH}getStoragePath(){return this.storagePath}async store(e,t){if(!await this.enabled())return;let r=this.buildLog(e,t);this.pendingLogs.push(r),this.pendingLogs.length>5e3&&(this.logger.warn("\u5F3A\u5236\u6E05\u7406pendingLogs\uFF0C\u9632\u6B62\u5185\u5B58\u6CC4\u6F0F"),this.save(this.pendingLogs.splice(0))),this.runOnceScheduler.schedule()}async flush(){this.pendingLogs.length>0&&await this.save(this.pendingLogs.splice(0))}flushSync(){if(0===this.pendingLogs.length||!this.storagePath)return;let e=this.pendingLogs.splice(0);try{let t=new Date().toISOString().split("T")[0],r=v.join(this.storagePath,t),o=v.join(r,this.buildLogFilename()),i=e.join("\n")+"\n";if((0,m.mkdirSync)(r,{recursive:!0}),(0,m.existsSync)(o))(0,m.appendFileSync)(o,i,"utf-8");else{let e=`Workspace Path: ${this.workspacePath}
17
17
  `;(0,m.writeFileSync)(o,e+i,"utf-8")}}catch(e){}}storeSync(e,t){this.pendingLogs.push(this.buildLog(e,t)),this.flushSync()}async retrieve(e,t){if(!this.storagePath)return"";let{extraPaths:r,allWorkspaces:o=!1,maxRawSize:i}=t||{},n=_.tmpdir(),s=await this.buildZipFilename(e),a=v.join(n,s),c=await this.collectLogFiles(e,o),l=await this.collectExtraFiles(r),d=[...c,...l];return(this.logger.info(`Collected ${c.length} log files for dates ${b.DateRangeUtils.toString(e)}.`),this.logger.info(`Collected ${l.length} extra files.`),0===d.length)?(this.logger.info(`No log files found for the specified dates ${b.DateRangeUtils.toString(e)}.`),""):(i&&i>0&&(d=await this.selectFilesWithinSizeLimit(d,i)),0===d.length)?(this.logger.info("No files selected after applying size limit."),""):await this.createZipFile(d,a)}async selectFilesWithinSizeLimit(e,t){let r=[];for(let t of e)try{let e=await y.stat(t[0]);r.push({file:t,size:e.size})}catch{this.logger.warn(`selectFilesWithinSizeLimit - \u{65E0}\u{6CD5} stat \u{6587}\u{4EF6}: ${t[0]}`)}let o=r.reduce((e,t)=>e+t.size,0);if(this.logger.info(`selectFilesWithinSizeLimit - \u{5171} ${r.length} \u{4E2A}\u{6587}\u{4EF6}, \u{539F}\u{59CB}\u{603B}\u{5927}\u{5C0F}: ${(o/1024/1024).toFixed(2)}MB, \u{4E0A}\u{9650}: ${(t/1024/1024).toFixed(2)}MB`),console.log(`[FEEDBACK_DEBUG] selectFilesWithinSizeLimit - \u{5171} ${r.length} \u{4E2A}\u{6587}\u{4EF6}, \u{539F}\u{59CB}\u{603B}\u{5927}\u{5C0F}: ${(o/1024/1024).toFixed(2)}MB, \u{4E0A}\u{9650}: ${(t/1024/1024).toFixed(2)}MB`),o<=t)return this.logger.info("selectFilesWithinSizeLimit - \u603B\u5927\u5C0F\u672A\u8D85\u9650\uFF0C\u5168\u90E8\u9009\u53D6"),console.log("[FEEDBACK_DEBUG] selectFilesWithinSizeLimit - \u603B\u5927\u5C0F\u672A\u8D85\u9650\uFF0C\u5168\u90E8\u9009\u53D6"),r.map(e=>e.file);r.sort((e,t)=>t.file[0].localeCompare(e.file[0]));let i=[],n=0,s=0,a=0;for(let{file:e,size:o}of r){if(n+o>t){s++,a+=o,this.logger.info(`selectFilesWithinSizeLimit - \u{8DF3}\u{8FC7}\u{6587}\u{4EF6} (\u{8D85}\u{51FA}\u{4E0A}\u{9650}): ${e[1]}, ${(o/1024/1024).toFixed(2)}MB`),console.log(`[FEEDBACK_DEBUG] selectFilesWithinSizeLimit - \u{8DF3}\u{8FC7}\u{6587}\u{4EF6} (\u{8D85}\u{51FA}\u{4E0A}\u{9650}): ${e[1]}, ${(o/1024/1024).toFixed(2)}MB`);continue}i.push(e),n+=o}return this.logger.info(`selectFilesWithinSizeLimit - \u{9009}\u{53D6}\u{7ED3}\u{679C}: ${i.length} \u{4E2A}\u{6587}\u{4EF6}, \u{539F}\u{59CB}\u{5927}\u{5C0F} ${(n/1024/1024).toFixed(2)}MB, \u{8DF3}\u{8FC7} ${s} \u{4E2A}\u{6587}\u{4EF6} (${(a/1024/1024).toFixed(2)}MB)`),console.log(`[FEEDBACK_DEBUG] selectFilesWithinSizeLimit - \u{9009}\u{53D6}\u{7ED3}\u{679C}: ${i.length} \u{4E2A}\u{6587}\u{4EF6}, \u{539F}\u{59CB}\u{5927}\u{5C0F} ${(n/1024/1024).toFixed(2)}MB, \u{8DF3}\u{8FC7} ${s} \u{4E2A}\u{6587}\u{4EF6} (${(a/1024/1024).toFixed(2)}MB)`),i}async collectLogFiles(e,t=!1){let{start:r,end:o}=e,i=this.buildLogFilename(),n=new Date(r).setHours(0,0,0,0),s=new Date(o).setHours(23,59,59,999),a=(await y.readdir(this.storagePath)).filter(e=>{let t=new Date(e).getTime();return t>=n&&t<=s}),c=[];for(let e of a){let r=v.join(this.storagePath,e);try{for(let o of(await y.readdir(r)).filter(e=>t||e.startsWith(i))){let t=v.join(r,o),i=v.join("logs",e,o);c.push([t,i])}}catch(e){this.logger.warn(`\u{65E0}\u{6CD5}\u{8BFB}\u{53D6}\u{76EE}\u{5F55} ${r}: ${e}`,"LoggerStorageService")}}return c}async save(e){if(this.storagePath)try{let t=new Date().toISOString().split("T")[0],r=v.join(this.storagePath,t),o=this.buildLogFilename(),i=v.join(r,o),n=!await this.isExisted(r);await y.mkdir(r,{recursive:!0});let s=e.map(e=>e).join("\n")+"\n";if(await this.isExisted(i))await y.appendFile(i,s,"utf-8");else{let e=this.workspacePath,t=`Workspace Path: ${e}
18
18
  `;await y.writeFile(i,t+s,"utf-8")}n&&await Promise.allSettled([this.deleteOldLogs(),this.deleteOldLogs2()])}catch(e){}}async deleteOldLogs2(){if(this.storagePath)try{let e=await y.readdir(this.storagePath),t=[];for(let r of(await Promise.all(e.map(async e=>{let r=v.join(this.storagePath,e);(await y.stat(r)).isFile()&&/^\d{4}-\d{2}-\d{2}\.log$/.test(e)&&t.push(e)})),t)){let e=v.join(this.storagePath,r);try{await y.unlink(e)}catch(e){}}}catch(e){}}async deleteOldLogs(){if(!this.storagePath)return;let e=await this.getMaxRetention(),t=(await y.readdir(this.storagePath)).filter(e=>/^\d{4}-\d{2}-\d{2}$/.test(e)).sort((e,t)=>new Date(e).getTime()-new Date(t).getTime());if(!(t.length<=e))for(let r of t.slice(0,t.length-e)){let e=v.join(this.storagePath,r);try{await this.logDeletionGuard?.release(e),await y.rm(e,{recursive:!0,force:!0})}catch(e){}}}static{this._pidPrefix=`[pid=${process.pid}]`}buildLog(e,t){let r=new Date,o=r.getMilliseconds().toString().padStart(3,"0");return n._dtf||(n._dtf=new Intl.DateTimeFormat(void 0,{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"})),`[${n._dtf.format(r)}.${o}] [${h.LogLevel[t]}] ${n._pidPrefix} ${e}`}async buildZipFilename(e){let t=v.basename(this.workspacePath),r=(await this.userinfoProvider.provide())?.userId||"unknown-user",o=await this.clientInfoProvider.get(),i=b.DateRangeUtils.toFilename(e);return`${r}__${o.ideType}__${t}__${i}.zip`}formatDateToYYYYMMDD(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0");return`${t}${r}${o}`}buildLogFilename(){let e=this.workspacePath,t=f.createHash("md5").update(e).digest("hex"),r=v.basename(e);return`${r}__${t}.log`}async isExisted(e){return y.access(e).then(()=>!0).catch(e=>e?.code!=="ENOENT")}async collectExtraFiles(e){let t=[];if(!e||0===e.length)return t;for(let r of e)try{let e=await y.stat(r);if(e.isFile()){let e=v.basename(r),o=v.join("extra",e);t.push([r,o])}else e.isDirectory()&&await this.addDirectoryToFiles(r,"extra",t)}catch(e){this.logger.warn(`\u{65E0}\u{6CD5}\u{8BBF}\u{95EE}\u{989D}\u{5916}\u{8DEF}\u{5F84} ${r}: ${e}`)}return t}async createZipFile(e,t){if(0===e.length)throw Error("\u6CA1\u6709\u6587\u4EF6\u9700\u8981\u538B\u7F29");let r=(0,m.createWriteStream)(t),o=S("zip",{zlib:{level:9}}),i=new u.Deferred;for(let[n,s]of(r.on("close",()=>{i.resolve(t)}),o.on("error",e=>{i.reject(e)}),o.pipe(r),e))try{o.file(n,{name:s})}catch(e){this.logger.warn(`\u{65E0}\u{6CD5}\u{6DFB}\u{52A0}\u{6587}\u{4EF6}\u{5230}\u{538B}\u{7F29}\u{5305} ${n}: ${e}`)}return o.finalize(),await i.promise}async addDirectoryToFiles(e,t,r){try{for(let o of(await y.readdir(e,{withFileTypes:!0}))){let i=v.join(e,o.name),n=v.join(t,o.name);o.isFile()?r.push([i,n]):o.isDirectory()&&await this.addDirectoryToFiles(i,n,r)}}catch(t){this.logger.warn(`\u{65E0}\u{6CD5}\u{8BFB}\u{53D6}\u{76EE}\u{5F55} ${e}: ${t}`)}}};t.LoggerStorageServiceImpl=P,c([(0,u.Autowired)(p.FilePathService),d("design:type",Object)],P.prototype,"filePathService",void 0),c([(0,u.Autowired)(w.LoggerStoragePathProvider),(0,u.Optional)(),d("design:type",Object)],P.prototype,"loggerStoragePathProvider",void 0),c([(0,u.Autowired)(w.LogDeletionGuard),(0,u.Optional)(),d("design:type",Object)],P.prototype,"logDeletionGuard",void 0),c([(0,u.Autowired)(h.ProductManager),d("design:type",Object)],P.prototype,"productManager",void 0),c([(0,u.Autowired)(g.Workspace),d("design:type",Object)],P.prototype,"workspace",void 0),c([(0,u.Autowired)(h.ClientInfoProvider),d("design:type",Object)],P.prototype,"clientInfoProvider",void 0),c([(0,u.Autowired)(g.UserinfoProvider),d("design:type",Object)],P.prototype,"userinfoProvider",void 0),t.LoggerStorageServiceImpl=n=c([(0,u.Component)(w.LoggerStorageService)],P)},96205(e,t,r){var o,i=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__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},a=this&&this.__importStar||(o=function(e){return(o=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=o(e),s=0;s<r.length;s++)"default"!==r[s]&&i(t,e,r[s]);return n(t,e),t}),c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerUploadAPIServiceImpl=void 0;let l=r(88523),d=r(7268),u=r(9151),p=r(79814),h=a(r(76982)),g=r(54899);function generateState(e){let t=h.createHmac("sha256","log_collection_secret_key");return t.update(JSON.stringify(e)),t.digest("hex")}let f=class{async informUploadResult(e,t,r,o){let i={taskId:e,status:t};r&&(i.downloadURL=r),o&&(i.errMsg=o),i.timestamp=Math.floor(Date.now()/1e3);let n=generateState(i);await this.restOperations.put(`v2/logs/upload_task?state=${n}`,i)}async getUploadTasks(){let e=await this.userinfoProvider.provide();if(!e)throw Error("User not logged in");let{ideType:t}=await this.clientInfoProvider.get(),r=Math.floor(Date.now()/1e3),o=generateState({ClientType:t,Platform:process.platform,UID:e.userId,Timestamp:r}),i={clientType:t,platform:process.platform,uid:e.userId,timestamp:r,state:o};return(await this.restOperations.get("v2/logs/upload_task/check",{params:i})).data.data}};t.LoggerUploadAPIServiceImpl=f,s([(0,l.Autowired)(d.RestOperations),c("design:type",Function)],f.prototype,"restOperations",void 0),s([(0,l.Autowired)(p.UserinfoProvider),c("design:type",Object)],f.prototype,"userinfoProvider",void 0),s([(0,l.Autowired)(u.ClientInfoProvider),c("design:type",Object)],f.prototype,"clientInfoProvider",void 0),s([(0,l.Autowired)(p.Workspace),c("design:type",Object)],f.prototype,"workspace",void 0),t.LoggerUploadAPIServiceImpl=s([(0,l.Component)(g.LoggerUploadAPIService)],f)},25840(e,t,r){let o;var i,n=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__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},c=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),o=0;o<r.length;o++)"default"!==r[o]&&n(t,e,r[o]);return s(t,e),t}),l=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.UploadService=void 0;let d=r(88523),u=r(51147),p=r(9151),h=r(79814),g=c(r(91943)),f=c(r(70857)),m=c(r(16928)),y=r(22370),_=r(54899),v=class{constructor(){this.intervalTimer=new d.IntervalTimer,this._configSeq=0}onStart(){}init(){process.argv.includes("--serve")||(this.logger.debug("[LoggerUploadService] @PostConstruct init() called"),this.productManager.configuration.subscribe(e=>{let t=e?.log?.upload?.interval,r=e?.log?.upload?.enabled;this.logger.debug(`[LoggerUploadService] config: enabled=${r}, interval=${t}, allowedEnvironments=${JSON.stringify(e?.log?.upload?.allowedEnvironments)}`);let o=++this._configSeq;if("number"==typeof t&&t>0){let r=e?.log?.upload?.allowedEnvironments;r&&r.length>0&&this.productEnvService?this.productEnvService.getCurrent().then(e=>{o===this._configSeq&&(e&&r.includes(e)?(this.logger.info(`Auto upload enabled, interval: ${t}s, env: ${e}`),this.startAutoUploadCheck(t)):(this.logger.info(`Auto upload disabled: current env "${e}" not in allowed list [${r}]`),this.intervalTimer.cancel()))}).catch(()=>{o===this._configSeq&&(this.logger.info(`Auto upload enabled (env check failed), interval: ${t}s`),this.startAutoUploadCheck(t))}):(this.logger.info(`Auto upload enabled, interval: ${t}s`),this.startAutoUploadCheck(t))}else this.logger.info("Auto upload disabled by configuration"),this.intervalTimer.cancel()}))}async startAutoUploadCheck(e=60){return this.intervalTimer.cancelAndSet(async()=>{this.doCheckAndUpload()},1e3*e),this.intervalTimer}async enabled(){let e=await this.productManager.waitConfiguration();return!!e?.log?.upload?.enabled}async upload(e,t){if(!await this.enabled())return this.logger.warn("Log upload is disabled by configuration, skipping upload."),{success:!1,error:"Log upload is disabled by configuration"};let{signal:r,allWorkspaces:o=!1}=t||{},i=await this.collectExtraLogPaths(t);this.logger.info(`Preparing to upload logs for date range: ${JSON.stringify(e)},
19
19
  extra paths: ${JSON.stringify(i)},