@vscode/chat-lib 0.4.1-9 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/src/_internal/extension/byok/node/openAIEndpoint.d.ts +2 -1
  2. package/dist/src/_internal/extension/byok/node/openAIEndpoint.d.ts.map +1 -1
  3. package/dist/src/_internal/extension/byok/node/openAIEndpoint.js +6 -7
  4. package/dist/src/_internal/extension/byok/node/openAIEndpoint.js.map +1 -1
  5. package/dist/src/_internal/extension/common/constants.d.ts +0 -1
  6. package/dist/src/_internal/extension/common/constants.d.ts.map +1 -1
  7. package/dist/src/_internal/extension/common/constants.js.map +1 -1
  8. package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts +9 -0
  9. package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts.map +1 -1
  10. package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js +71 -11
  11. package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js.map +1 -1
  12. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.d.ts +17 -1
  13. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.d.ts.map +1 -1
  14. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js +345 -57
  15. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js.map +1 -1
  16. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.d.ts +6 -3
  17. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.d.ts.map +1 -1
  18. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.js +9 -3
  19. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.js.map +1 -1
  20. package/dist/src/_internal/extension/xtab/node/xtabEndpoint.d.ts +2 -1
  21. package/dist/src/_internal/extension/xtab/node/xtabEndpoint.d.ts.map +1 -1
  22. package/dist/src/_internal/extension/xtab/node/xtabEndpoint.js +6 -3
  23. package/dist/src/_internal/extension/xtab/node/xtabEndpoint.js.map +1 -1
  24. package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.d.ts.map +1 -1
  25. package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.js +1 -0
  26. package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.js.map +1 -1
  27. package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts +2 -0
  28. package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
  29. package/dist/src/_internal/extension/xtab/node/xtabProvider.js +14 -0
  30. package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
  31. package/dist/src/_internal/platform/chat/common/commonTypes.d.ts +2 -1
  32. package/dist/src/_internal/platform/chat/common/commonTypes.d.ts.map +1 -1
  33. package/dist/src/_internal/platform/chat/common/commonTypes.js +61 -17
  34. package/dist/src/_internal/platform/chat/common/commonTypes.js.map +1 -1
  35. package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +14 -2
  36. package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
  37. package/dist/src/_internal/platform/configuration/common/configurationService.js +29 -3
  38. package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
  39. package/dist/src/_internal/platform/endpoint/common/capiClient.d.ts.map +1 -1
  40. package/dist/src/_internal/platform/endpoint/common/capiClient.js +1 -0
  41. package/dist/src/_internal/platform/endpoint/common/capiClient.js.map +1 -1
  42. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts +1 -0
  43. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts.map +1 -1
  44. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +20 -4
  45. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js.map +1 -1
  46. package/dist/src/_internal/platform/endpoint/common/endpointProvider.d.ts +3 -1
  47. package/dist/src/_internal/platform/endpoint/common/endpointProvider.d.ts.map +1 -1
  48. package/dist/src/_internal/platform/endpoint/common/endpointProvider.js +1 -0
  49. package/dist/src/_internal/platform/endpoint/common/endpointProvider.js.map +1 -1
  50. package/dist/src/_internal/platform/endpoint/node/autoChatEndpoint.d.ts +2 -1
  51. package/dist/src/_internal/platform/endpoint/node/autoChatEndpoint.d.ts.map +1 -1
  52. package/dist/src/_internal/platform/endpoint/node/autoChatEndpoint.js +6 -3
  53. package/dist/src/_internal/platform/endpoint/node/autoChatEndpoint.js.map +1 -1
  54. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts +6 -2
  55. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
  56. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js +34 -12
  57. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
  58. package/dist/src/_internal/platform/endpoint/node/copilotChatEndpoint.d.ts +2 -1
  59. package/dist/src/_internal/platform/endpoint/node/copilotChatEndpoint.d.ts.map +1 -1
  60. package/dist/src/_internal/platform/endpoint/node/copilotChatEndpoint.js +5 -3
  61. package/dist/src/_internal/platform/endpoint/node/copilotChatEndpoint.js.map +1 -1
  62. package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts.map +1 -1
  63. package/dist/src/_internal/platform/endpoint/node/messagesApi.js +55 -5
  64. package/dist/src/_internal/platform/endpoint/node/messagesApi.js.map +1 -1
  65. package/dist/src/_internal/platform/endpoint/node/proxyXtabEndpoint.d.ts.map +1 -1
  66. package/dist/src/_internal/platform/endpoint/node/proxyXtabEndpoint.js +1 -0
  67. package/dist/src/_internal/platform/endpoint/node/proxyXtabEndpoint.js.map +1 -1
  68. package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts +1 -0
  69. package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts.map +1 -1
  70. package/dist/src/_internal/platform/endpoint/node/responsesApi.js +14 -10
  71. package/dist/src/_internal/platform/endpoint/node/responsesApi.js.map +1 -1
  72. package/dist/src/_internal/platform/git/common/gitService.d.ts +4 -0
  73. package/dist/src/_internal/platform/git/common/gitService.d.ts.map +1 -1
  74. package/dist/src/_internal/platform/git/common/gitService.js.map +1 -1
  75. package/dist/src/_internal/platform/github/common/githubAPI.d.ts +1 -0
  76. package/dist/src/_internal/platform/github/common/githubAPI.d.ts.map +1 -1
  77. package/dist/src/_internal/platform/github/common/githubAPI.js +2 -0
  78. package/dist/src/_internal/platform/github/common/githubAPI.js.map +1 -1
  79. package/dist/src/_internal/platform/github/common/githubService.d.ts +10 -0
  80. package/dist/src/_internal/platform/github/common/githubService.d.ts.map +1 -1
  81. package/dist/src/_internal/platform/github/common/githubService.js +38 -0
  82. package/dist/src/_internal/platform/github/common/githubService.js.map +1 -1
  83. package/dist/src/_internal/platform/github/common/nullOctokitServiceImpl.d.ts +2 -1
  84. package/dist/src/_internal/platform/github/common/nullOctokitServiceImpl.d.ts.map +1 -1
  85. package/dist/src/_internal/platform/github/common/nullOctokitServiceImpl.js +3 -0
  86. package/dist/src/_internal/platform/github/common/nullOctokitServiceImpl.js.map +1 -1
  87. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts +1 -1
  88. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts.map +1 -1
  89. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js +1 -1
  90. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js.map +1 -1
  91. package/dist/src/_internal/platform/networking/common/anthropic.d.ts +8 -1
  92. package/dist/src/_internal/platform/networking/common/anthropic.d.ts.map +1 -1
  93. package/dist/src/_internal/platform/networking/common/anthropic.js +20 -4
  94. package/dist/src/_internal/platform/networking/common/anthropic.js.map +1 -1
  95. package/dist/src/_internal/platform/networking/common/fetcherService.d.ts +17 -0
  96. package/dist/src/_internal/platform/networking/common/fetcherService.d.ts.map +1 -1
  97. package/dist/src/_internal/platform/networking/common/fetcherService.js +27 -1
  98. package/dist/src/_internal/platform/networking/common/fetcherService.js.map +1 -1
  99. package/dist/src/_internal/platform/networking/common/networking.d.ts +7 -0
  100. package/dist/src/_internal/platform/networking/common/networking.d.ts.map +1 -1
  101. package/dist/src/_internal/platform/networking/common/networking.js +4 -5
  102. package/dist/src/_internal/platform/networking/common/networking.js.map +1 -1
  103. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts +76 -0
  104. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts.map +1 -0
  105. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js +480 -0
  106. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js.map +1 -0
  107. package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.d.ts +87 -0
  108. package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.d.ts.map +1 -0
  109. package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.js +265 -0
  110. package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.js.map +1 -0
  111. package/dist/src/_internal/platform/otel/common/genAiAttributes.d.ts +85 -0
  112. package/dist/src/_internal/platform/otel/common/genAiAttributes.d.ts.map +1 -0
  113. package/dist/src/_internal/platform/otel/common/genAiAttributes.js +105 -0
  114. package/dist/src/_internal/platform/otel/common/genAiAttributes.js.map +1 -0
  115. package/dist/src/_internal/platform/otel/common/genAiEvents.d.ts +28 -0
  116. package/dist/src/_internal/platform/otel/common/genAiEvents.d.ts.map +1 -0
  117. package/dist/src/_internal/platform/otel/common/genAiEvents.js +91 -0
  118. package/dist/src/_internal/platform/otel/common/genAiEvents.js.map +1 -0
  119. package/dist/src/_internal/platform/otel/common/genAiMetrics.d.ts +30 -0
  120. package/dist/src/_internal/platform/otel/common/genAiMetrics.d.ts.map +1 -0
  121. package/dist/src/_internal/platform/otel/common/genAiMetrics.js +68 -0
  122. package/dist/src/_internal/platform/otel/common/genAiMetrics.js.map +1 -0
  123. package/dist/src/_internal/platform/otel/common/index.d.ts +8 -0
  124. package/dist/src/_internal/platform/otel/common/index.d.ts.map +1 -0
  125. package/dist/src/_internal/platform/otel/common/index.js +35 -0
  126. package/dist/src/_internal/platform/otel/common/index.js.map +1 -0
  127. package/dist/src/_internal/platform/otel/common/messageFormatters.d.ts +85 -0
  128. package/dist/src/_internal/platform/otel/common/messageFormatters.d.ts.map +1 -0
  129. package/dist/src/_internal/platform/otel/common/messageFormatters.js +122 -0
  130. package/dist/src/_internal/platform/otel/common/messageFormatters.js.map +1 -0
  131. package/dist/src/_internal/platform/otel/common/noopOtelService.d.ts +23 -0
  132. package/dist/src/_internal/platform/otel/common/noopOtelService.d.ts.map +1 -0
  133. package/dist/src/_internal/platform/otel/common/noopOtelService.js +46 -0
  134. package/dist/src/_internal/platform/otel/common/noopOtelService.js.map +1 -0
  135. package/dist/src/_internal/platform/otel/common/otelConfig.d.ts +35 -0
  136. package/dist/src/_internal/platform/otel/common/otelConfig.d.ts.map +1 -0
  137. package/dist/src/_internal/platform/otel/common/otelConfig.js +140 -0
  138. package/dist/src/_internal/platform/otel/common/otelConfig.js.map +1 -0
  139. package/dist/src/_internal/platform/otel/common/otelService.d.ts +100 -0
  140. package/dist/src/_internal/platform/otel/common/otelService.d.ts.map +1 -0
  141. package/dist/src/_internal/platform/otel/common/otelService.js +10 -0
  142. package/dist/src/_internal/platform/otel/common/otelService.js.map +1 -0
  143. package/dist/src/main.d.ts.map +1 -1
  144. package/dist/src/main.js +9 -0
  145. package/dist/src/main.js.map +1 -1
  146. package/dist/src/package.json +226 -80
  147. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"networking.js","sourceRoot":"","sources":["../../../../../../src/_internal/platform/networking/common/networking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"networking.js","sourceRoot":"","sources":["../../../../../../src/_internal/platform/networking/common/networking.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AA2IhG,sEAKC;AAyJD,sDAgBC;AAoHD,4DAWC;AAED,kCAKC;AAED,gCAKC;AAjcD,4DAAwE;AACxE,8DAA2E;AAE3E,gEAAwE;AAIxE,iEAAsE;AAGtE,gEAA0F;AAI1F,qDAA2H;AAC3H,qCAAmH;AAoBtG,QAAA,sBAAsB,GAAG,qCAAqC,CAAC;AAW5E,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAuFjD,SAAgB,6BAA6B,CAAC,oBAA8C;IAC3F,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,oBAAoB,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAC7C,CAAC;AAwJD,sEAAsE;AACtE,SAAgB,qBAAqB,CAAC,OAAmC,EAAE,KAAa,EAAE,QAAuC;IAChI,qFAAqF;IACrF,2EAA2E;IAC3E,wEAAwE;IAExE,MAAM,OAAO,GAAkB;QAC9B,QAAQ,EAAE,IAAA,yBAAgB,EAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACtD,KAAK;QACL,eAAe;KACf,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AA+BD,SAAS,cAAc,CACtB,QAA0B,EAC1B,OAA+B;IAE/B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,gCAAe,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,6BAAiB,CAAC,CAAC;IACzD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC;IAC3D,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE9J,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,OAAO,aAAa,KAAK,QAAQ,IAAI,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC;QAC/E,oBAAoB,EAAE,CAAC;QACvB,oBAAoB,EAAE,aAAa;QACnC,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,yBAAa,CAAC,KAAK;QAC9B,gBAAgB,EAAE,GAAG,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;KACS,CAAC,CAAC,CAAC,aAAa,CAAC;IACtC,MAAM,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC;QAC7E,uBAAuB,CAAC,CAAC;QACzB,OAAO,CAAC,kBAAkB,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC;YAClD,yBAAyB,CAAC,CAAC;YAC3B,MAAM,KAAK,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC;IAEV,MAAM,OAAO,GAAe;QAC3B,aAAa,EAAE,UAAU,SAAS,EAAE;QACpC,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,MAAM,EAAE,kEAAkE;QAC3F,sBAAsB,EAAE,YAAY;QACpC,GAAG,iBAAiB;QACpB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC;IACF,OAAO,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;IACrD,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAEvC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5B,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,uBAAuB,EAAE,EAAE,CAAC;IAClE,MAAM,OAAO,GAAiB;QAC7B,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,gBAAgB;QACzB,UAAU;QACV,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB;KAClE,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC5C,WAAW,CAAC,uBAAuB,CAAC,GAAG,EAAE;YACxC,+CAA+C;YAC/C,gBAAgB,CAAC,oBAAoB,CAAC,0BAA0B,EAAE;gBACjE,eAAe,EAAE,SAAS;aAC1B,CAAC,CAAC;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QACH,kDAAkD;QAClD,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,oBAAoB,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAC3F,IAAI,YAAY,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,oEAAoE;gBACpE,gBAAgB,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;gBAClE,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACxC,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAA8B,EAAE,OAAO,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,0BAAiB,EAAE,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,CAAC;YACd,CAAC;QACF,CAAC,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACvB,CAAC;SAAM,CAAC;QACP,OAAO,iBAAiB,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAuC,CAAC,CAAC;IACjG,CAAC;AACF,CAAC;AAED,SAAgB,wBAAwB,CAAC,MAAW;IACnD,OAAO;QACN,YAAY;QACZ,WAAW;QACX,sBAAsB;QACtB,qBAAqB;QACrB,2BAA2B;QAC3B,yBAAyB;QACzB,0BAA0B;QAC1B,0BAA0B;KAC1B,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,WAAW,CAC1B,QAA0B,EAC1B,OAAoD;IAEpD,OAAO,cAAc,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,UAAU,CACzB,QAA0B,EAC1B,OAAoD;IAEpD,OAAO,cAAc,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAEY,QAAA,mBAAmB,GAAG,IAAA,kCAAuB,EAAqB,oBAAoB,CAAC,CAAC;AAUrG,MAAa,kBAAkB;IAA/B;QAEkB,iBAAY,GAAwB,EAAE,CAAC;IAyBzD,CAAC;IAvBA,GAAG,CAAC,WAA8B;QACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAA8B;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,iBAAiB,CAAC,OAAmB;QACpC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACjC,CAAC;CACD;AA3BD,gDA2BC"}
@@ -0,0 +1,76 @@
1
+ import type { OpenAI } from 'openai';
2
+ import { CancellationToken } from '../../../util/vs/base/common/cancellation';
3
+ import { Event } from '../../../util/vs/base/common/event';
4
+ import { Disposable, IDisposable } from '../../../util/vs/base/common/lifecycle';
5
+ import { ICAPIClientService } from '../../endpoint/common/capiClient';
6
+ import { ILogService } from '../../log/common/logService';
7
+ import { ITelemetryService } from '../../telemetry/common/telemetry';
8
+ import { IHeaders } from '../common/fetcherService';
9
+ export declare const IChatWebSocketManager: import("../../../util/common/services").ServiceIdentifier<IChatWebSocketManager>;
10
+ export interface IChatWebSocketManager {
11
+ readonly _serviceBrand: undefined;
12
+ /**
13
+ * Gets or creates a WebSocket connection for the given conversation turn.
14
+ * The connection is scoped to a single turn, reused across tool call rounds
15
+ * within the same turn, but closed when a new turn starts.
16
+ */
17
+ getOrCreateConnection(conversationId: string, turnId: string, headers?: Record<string, string>): Promise<IChatWebSocketConnection>;
18
+ /**
19
+ * Returns true if there is an open WebSocket connection for the given
20
+ * conversation and run. Used to decide whether the server already has
21
+ * context from earlier iterations in this turn.
22
+ */
23
+ hasActiveConnection(conversationId: string, turnId: string): boolean;
24
+ /**
25
+ * Closes and removes the connection for a specific conversation.
26
+ * When turnId is provided, the connection is only closed if it matches
27
+ * the currently tracked run for that conversation.
28
+ */
29
+ closeConnection(conversationId: string, turnId?: string): void;
30
+ /**
31
+ * Closes all active connections.
32
+ */
33
+ closeAll(): void;
34
+ }
35
+ /**
36
+ * No-op implementation for contexts where WebSocket is not available (web, tests, chat-lib).
37
+ */
38
+ export declare class NullChatWebSocketManager implements IChatWebSocketManager {
39
+ readonly _serviceBrand: undefined;
40
+ getOrCreateConnection(_conversationId: string, _turnId: string, _headers?: Record<string, string>): Promise<IChatWebSocketConnection>;
41
+ hasActiveConnection(_conversationId: string, _turnId: string): boolean;
42
+ closeConnection(_conversationId: string, _turnId?: string): void;
43
+ closeAll(): void;
44
+ }
45
+ export interface IChatWebSocketConnection extends IDisposable {
46
+ /** Sends a response.create request and returns an async iterable of response events. */
47
+ sendRequest(body: Record<string, unknown>, token: CancellationToken): IChatWebSocketRequestHandle;
48
+ /** Whether the connection is currently open and usable. */
49
+ readonly isOpen: boolean;
50
+ /** Response headers from the WebSocket connection handshake. */
51
+ readonly responseHeaders: IHeaders;
52
+ }
53
+ export interface IChatWebSocketRequestHandle {
54
+ /** Fires for each JSON event received from the server. */
55
+ readonly onEvent: Event<OpenAI.Responses.ResponseStreamEvent>;
56
+ /** Fires when an error occurs. */
57
+ readonly onError: Event<Error>;
58
+ /** Fires when the request completes (response.completed received). */
59
+ readonly onComplete: Event<void>;
60
+ /** Resolves when the request has finished (completed or errored). */
61
+ readonly done: Promise<void>;
62
+ }
63
+ export declare class ChatWebSocketManager extends Disposable implements IChatWebSocketManager {
64
+ private readonly _logService;
65
+ private readonly _capiClientService;
66
+ private readonly _telemetryService;
67
+ readonly _serviceBrand: undefined;
68
+ private readonly _connections;
69
+ constructor(_logService: ILogService, _capiClientService: ICAPIClientService, _telemetryService: ITelemetryService);
70
+ getOrCreateConnection(conversationId: string, turnId: string, headers?: Record<string, string>): Promise<IChatWebSocketConnection>;
71
+ hasActiveConnection(conversationId: string, turnId: string): boolean;
72
+ closeConnection(conversationId: string, turnId?: string): void;
73
+ closeAll(): void;
74
+ dispose(): void;
75
+ }
76
+ //# sourceMappingURL=chatWebSocketManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatWebSocketManager.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/platform/networking/node/chatWebSocketManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,480 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
7
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
11
+ };
12
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
+ return function (target, key) { decorator(target, key, paramIndex); }
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ChatWebSocketManager = exports.NullChatWebSocketManager = exports.IChatWebSocketManager = void 0;
17
+ const services_1 = require("../../../util/common/services");
18
+ const errors_1 = require("../../../util/vs/base/common/errors");
19
+ const event_1 = require("../../../util/vs/base/common/event");
20
+ const lifecycle_1 = require("../../../util/vs/base/common/lifecycle");
21
+ const capiClient_1 = require("../../endpoint/common/capiClient");
22
+ const logService_1 = require("../../log/common/logService");
23
+ const telemetry_1 = require("../../telemetry/common/telemetry");
24
+ const fetcherService_1 = require("../common/fetcherService");
25
+ const chatWebSocketTelemetry_1 = require("./chatWebSocketTelemetry");
26
+ exports.IChatWebSocketManager = (0, services_1.createServiceIdentifier)('IChatWebSocketManager');
27
+ /**
28
+ * No-op implementation for contexts where WebSocket is not available (web, tests, chat-lib).
29
+ */
30
+ class NullChatWebSocketManager {
31
+ async getOrCreateConnection(_conversationId, _turnId, _headers) {
32
+ throw new Error('WebSocket not available');
33
+ }
34
+ hasActiveConnection(_conversationId, _turnId) { return false; }
35
+ closeConnection(_conversationId, _turnId) { }
36
+ closeAll() { }
37
+ }
38
+ exports.NullChatWebSocketManager = NullChatWebSocketManager;
39
+ let ChatWebSocketManager = class ChatWebSocketManager extends lifecycle_1.Disposable {
40
+ constructor(_logService, _capiClientService, _telemetryService) {
41
+ super();
42
+ this._logService = _logService;
43
+ this._capiClientService = _capiClientService;
44
+ this._telemetryService = _telemetryService;
45
+ this._connections = new Map();
46
+ }
47
+ async getOrCreateConnection(conversationId, turnId, headers) {
48
+ const existing = this._connections.get(conversationId);
49
+ // Reuse the connection if it's for the same turn and still open.
50
+ if (existing?.turnId === turnId && existing.connection.isOpen) {
51
+ this._logService.debug(`[ChatWebSocketManager] Reusing connection for conversation ${conversationId} turn ${turnId}`);
52
+ return existing.connection;
53
+ }
54
+ if (existing) {
55
+ this._logService.debug(`[ChatWebSocketManager] Closing previous connection for conversation ${conversationId} (turn changed)`);
56
+ existing.connection.dispose();
57
+ this._connections.delete(conversationId);
58
+ }
59
+ const connection = new ChatWebSocketConnection(this._capiClientService, this._logService, this._telemetryService, conversationId, turnId, headers);
60
+ this._logService.debug(`[ChatWebSocketManager] Creating new connection for conversation ${conversationId} turn ${turnId}`);
61
+ this._connections.set(conversationId, { turnId, connection });
62
+ // Remove from map when disposed externally
63
+ connection.onDidDispose(() => {
64
+ const entry = this._connections.get(conversationId);
65
+ if (entry?.connection === connection) {
66
+ this._connections.delete(conversationId);
67
+ }
68
+ });
69
+ await connection.connect();
70
+ return connection;
71
+ }
72
+ hasActiveConnection(conversationId, turnId) {
73
+ const entry = this._connections.get(conversationId);
74
+ return !!entry && entry.turnId === turnId && entry.connection.isOpen;
75
+ }
76
+ closeConnection(conversationId, turnId) {
77
+ const entry = this._connections.get(conversationId);
78
+ if (entry) {
79
+ if (turnId && entry.turnId !== turnId) {
80
+ this._logService.debug(`[ChatWebSocketManager] Not closing connection for conversation ${conversationId}: requested turn ${turnId} does not match active turn ${entry.turnId}`);
81
+ return;
82
+ }
83
+ this._logService.debug(`[ChatWebSocketManager] Closing connection for conversation ${conversationId} turn ${turnId}`);
84
+ entry.connection.dispose();
85
+ this._connections.delete(conversationId);
86
+ }
87
+ }
88
+ closeAll() {
89
+ for (const entry of this._connections.values()) {
90
+ entry.connection.dispose();
91
+ }
92
+ this._connections.clear();
93
+ }
94
+ dispose() {
95
+ this.closeAll();
96
+ super.dispose();
97
+ }
98
+ };
99
+ exports.ChatWebSocketManager = ChatWebSocketManager;
100
+ exports.ChatWebSocketManager = ChatWebSocketManager = __decorate([
101
+ __param(0, logService_1.ILogService),
102
+ __param(1, capiClient_1.ICAPIClientService),
103
+ __param(2, telemetry_1.ITelemetryService)
104
+ ], ChatWebSocketManager);
105
+ function wsCloseCodeToString(code) {
106
+ switch (code) {
107
+ case 1000: return 'Normal Closure';
108
+ case 1001: return 'Going Away';
109
+ case 1002: return 'Protocol Error';
110
+ case 1003: return 'Unsupported Data';
111
+ case 1005: return 'No Status Received';
112
+ case 1006: return 'Abnormal Closure';
113
+ case 1007: return 'Invalid Payload';
114
+ case 1008: return 'Policy Violation';
115
+ case 1009: return 'Message Too Big';
116
+ case 1010: return 'Missing Extension';
117
+ case 1011: return 'Internal Error';
118
+ case 1012: return 'Service Restart';
119
+ case 1013: return 'Try Again Later';
120
+ case 1014: return 'Bad Gateway';
121
+ case 1015: return 'TLS Handshake Failed';
122
+ default: return 'Unknown';
123
+ }
124
+ }
125
+ class ChatWebSocketConnection extends lifecycle_1.Disposable {
126
+ constructor(_capiClientService, _logService, _telemetryService, _conversationId, _turnId, _headers) {
127
+ super();
128
+ this._capiClientService = _capiClientService;
129
+ this._logService = _logService;
130
+ this._telemetryService = _telemetryService;
131
+ this._conversationId = _conversationId;
132
+ this._turnId = _turnId;
133
+ this._headers = _headers;
134
+ this._state = 2 /* ConnectionState.Closed */;
135
+ this._onDidDispose = this._register(new event_1.Emitter());
136
+ this.onDidDispose = this._onDidDispose.event;
137
+ this._totalSentMessageCount = 0;
138
+ this._totalReceivedMessageCount = 0;
139
+ this._totalSentCharacters = 0;
140
+ this._totalReceivedCharacters = 0;
141
+ this._responseHeaders = new fetcherService_1.HeadersImpl({});
142
+ }
143
+ get isOpen() {
144
+ return this._state === 1 /* ConnectionState.Open */ && !!this._ws;
145
+ }
146
+ get responseHeaders() {
147
+ return this._responseHeaders;
148
+ }
149
+ get _requestId() {
150
+ return this._responseHeaders.get('x-request-id') || '';
151
+ }
152
+ get _gitHubRequestId() {
153
+ return this._responseHeaders.get('x-github-request-id') || '';
154
+ }
155
+ async connect() {
156
+ if (this._state === 1 /* ConnectionState.Open */) {
157
+ return;
158
+ }
159
+ this._state = 0 /* ConnectionState.Connecting */;
160
+ this._connectStartTime = Date.now();
161
+ this._logService.debug(`[ChatWebSocketManager] Connecting WebSocket for conversation ${this._conversationId} turn ${this._turnId}`);
162
+ const connection = await this._capiClientService.createResponsesWebSocket({
163
+ headers: this._headers,
164
+ });
165
+ return new Promise((resolve, reject) => {
166
+ const ws = connection.webSocket;
167
+ const onOpen = () => {
168
+ cleanup();
169
+ this._state = 1 /* ConnectionState.Open */;
170
+ this._connectedTime = Date.now();
171
+ this._ws = ws;
172
+ this._responseHeaders = connection.responseHeaders;
173
+ this._setupMessageHandlers(ws);
174
+ const connectDurationMs = this._connectedTime - (this._connectStartTime ?? this._connectedTime);
175
+ this._logService.debug(`[ChatWebSocketManager] Connected for conversation ${this._conversationId} turn ${this._turnId}`);
176
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendConnectedTelemetry(this._telemetryService, {
177
+ conversationId: this._conversationId,
178
+ turnId: this._turnId,
179
+ requestId: this._requestId,
180
+ gitHubRequestId: this._gitHubRequestId,
181
+ connectDurationMs,
182
+ });
183
+ resolve();
184
+ };
185
+ const onError = (event) => {
186
+ cleanup();
187
+ this._state = 2 /* ConnectionState.Closed */;
188
+ this._responseHeaders = connection.responseHeaders;
189
+ const errorMessage = event.error ? `${event.message}: ${(0, logService_1.collectSingleLineErrorMessage)(event.error)}` : event.message || 'WebSocket error';
190
+ const connectDurationMs = Date.now() - (this._connectStartTime ?? Date.now());
191
+ this._logService.error(`[ChatWebSocketManager] Connection error for conversation ${this._conversationId} turn ${this._turnId}: ${errorMessage}`);
192
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendConnectErrorTelemetry(this._telemetryService, {
193
+ conversationId: this._conversationId,
194
+ turnId: this._turnId,
195
+ requestId: this._requestId,
196
+ gitHubRequestId: this._gitHubRequestId,
197
+ error: errorMessage,
198
+ connectDurationMs,
199
+ });
200
+ reject(new Error(errorMessage));
201
+ };
202
+ const onClose = (event) => {
203
+ cleanup();
204
+ this._state = 2 /* ConnectionState.Closed */;
205
+ const connectDurationMs = Date.now() - (this._connectStartTime ?? Date.now());
206
+ const closeCodeDescription = wsCloseCodeToString(event.code);
207
+ this._logService.debug(`[ChatWebSocketManager] Connection closed during setup for conversation ${this._conversationId} turn ${this._turnId} (code: ${event.code} ${closeCodeDescription}, reason: ${event.reason || '<empty>'}, wasClean: ${event.wasClean})`);
208
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendCloseDuringSetupTelemetry(this._telemetryService, {
209
+ conversationId: this._conversationId,
210
+ turnId: this._turnId,
211
+ requestId: this._requestId,
212
+ gitHubRequestId: this._gitHubRequestId,
213
+ closeCode: event.code,
214
+ closeReason: closeCodeDescription,
215
+ closeEventReason: event.reason,
216
+ closeEventWasClean: String(event.wasClean),
217
+ connectDurationMs,
218
+ });
219
+ reject(new Error('WebSocket closed during connection setup'));
220
+ };
221
+ const cleanup = () => {
222
+ ws.removeEventListener('open', onOpen);
223
+ ws.removeEventListener('error', onError);
224
+ ws.removeEventListener('close', onClose);
225
+ };
226
+ ws.addEventListener('open', onOpen);
227
+ ws.addEventListener('error', onError);
228
+ ws.addEventListener('close', onClose);
229
+ });
230
+ }
231
+ _setupMessageHandlers(ws) {
232
+ ws.addEventListener('message', (event) => {
233
+ if (typeof event.data !== 'string') {
234
+ return; // Only process text messages
235
+ }
236
+ const receivedMessageCharacters = event.data.length;
237
+ this._totalReceivedMessageCount += 1;
238
+ this._totalReceivedCharacters += receivedMessageCharacters;
239
+ const connectionDurationMs = Date.now() - (this._connectedTime ?? Date.now());
240
+ let parsed;
241
+ try {
242
+ parsed = JSON.parse(event.data);
243
+ }
244
+ catch (error) {
245
+ const parseErrorMessage = (0, logService_1.collectSingleLineErrorMessage)(error) || 'Failed to parse websocket message';
246
+ this._logService.error(`[ChatWebSocketManager] Failed to parse message for conversation ${this._conversationId} turn ${this._turnId}: ${parseErrorMessage}`);
247
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendMessageParseErrorTelemetry(this._telemetryService, {
248
+ conversationId: this._conversationId,
249
+ turnId: this._turnId,
250
+ requestId: this._requestId,
251
+ gitHubRequestId: this._gitHubRequestId,
252
+ error: parseErrorMessage,
253
+ connectionDurationMs,
254
+ totalSentMessageCount: this._totalSentMessageCount,
255
+ totalReceivedMessageCount: this._totalReceivedMessageCount,
256
+ receivedMessageCharacters,
257
+ totalSentCharacters: this._totalSentCharacters,
258
+ totalReceivedCharacters: this._totalReceivedCharacters,
259
+ });
260
+ return;
261
+ }
262
+ this._activeRequest?.handleEvent(parsed);
263
+ });
264
+ ws.addEventListener('close', (event) => {
265
+ this._state = 2 /* ConnectionState.Closed */;
266
+ const connectionDurationMs = Date.now() - (this._connectedTime ?? Date.now());
267
+ const closeCodeDescription = wsCloseCodeToString(event.code);
268
+ this._logService.debug(`[ChatWebSocketManager] Connection closed for conversation ${this._conversationId} turn ${this._turnId} (code: ${event.code} ${closeCodeDescription}, reason: ${event.reason || '<empty>'}, wasClean: ${event.wasClean})`);
269
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendCloseTelemetry(this._telemetryService, {
270
+ conversationId: this._conversationId,
271
+ turnId: this._turnId,
272
+ requestId: this._requestId,
273
+ gitHubRequestId: this._gitHubRequestId,
274
+ closeCode: event.code,
275
+ closeReason: closeCodeDescription,
276
+ closeEventReason: event.reason,
277
+ closeEventWasClean: String(event.wasClean),
278
+ connectionDurationMs,
279
+ totalSentMessageCount: this._totalSentMessageCount,
280
+ totalReceivedMessageCount: this._totalReceivedMessageCount,
281
+ totalSentCharacters: this._totalSentCharacters,
282
+ totalReceivedCharacters: this._totalReceivedCharacters,
283
+ });
284
+ this._activeRequest?.handleConnectionClose(event.code, event.reason);
285
+ this._activeRequest = undefined;
286
+ });
287
+ ws.addEventListener('error', (event) => {
288
+ const errorMessage = event.error ? `${event.message}: ${(0, logService_1.collectSingleLineErrorMessage)(event.error)}` : event.message || 'WebSocket error';
289
+ const connectionDurationMs = Date.now() - (this._connectedTime ?? Date.now());
290
+ this._logService.error(`[ChatWebSocketManager] Error for conversation ${this._conversationId} turn ${this._turnId}: ${errorMessage}`);
291
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendErrorTelemetry(this._telemetryService, {
292
+ conversationId: this._conversationId,
293
+ turnId: this._turnId,
294
+ requestId: this._requestId,
295
+ gitHubRequestId: this._gitHubRequestId,
296
+ error: errorMessage,
297
+ connectionDurationMs,
298
+ totalSentMessageCount: this._totalSentMessageCount,
299
+ totalReceivedMessageCount: this._totalReceivedMessageCount,
300
+ totalSentCharacters: this._totalSentCharacters,
301
+ totalReceivedCharacters: this._totalReceivedCharacters,
302
+ });
303
+ this._activeRequest?.handleConnectionError(new Error(errorMessage));
304
+ });
305
+ }
306
+ sendRequest(body, token) {
307
+ if (!this._ws || this._state !== 1 /* ConnectionState.Open */) {
308
+ throw new Error('WebSocket is not connected');
309
+ }
310
+ // Cancel any previous in-flight request
311
+ this._activeRequest?.handleSuperseded();
312
+ const requestStartTime = Date.now();
313
+ const requestStartSentMessageCount = this._totalSentMessageCount;
314
+ const requestStartReceivedMessageCount = this._totalReceivedMessageCount;
315
+ const requestStartSentCharacters = this._totalSentCharacters;
316
+ const requestStartReceivedCharacters = this._totalReceivedCharacters;
317
+ const request = new ChatWebSocketActiveRequest();
318
+ request.onDidSettle(({ outcome, closeCode, closeReason, serverErrorMessage, serverErrorCode }) => {
319
+ const connectionDurationMs = Date.now() - (this._connectedTime ?? Date.now());
320
+ const requestDurationMs = Date.now() - requestStartTime;
321
+ const requestSentMessageCount = this._totalSentMessageCount - requestStartSentMessageCount;
322
+ const requestReceivedMessageCount = this._totalReceivedMessageCount - requestStartReceivedMessageCount;
323
+ const requestSentCharacters = this._totalSentCharacters - requestStartSentCharacters;
324
+ const requestReceivedCharacters = this._totalReceivedCharacters - requestStartReceivedCharacters;
325
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendRequestOutcomeTelemetry(this._telemetryService, {
326
+ conversationId: this._conversationId,
327
+ turnId: this._turnId,
328
+ requestId: this._requestId,
329
+ gitHubRequestId: this._gitHubRequestId,
330
+ requestOutcome: outcome,
331
+ connectionDurationMs,
332
+ requestDurationMs,
333
+ totalSentMessageCount: this._totalSentMessageCount,
334
+ totalReceivedMessageCount: this._totalReceivedMessageCount,
335
+ totalSentCharacters: this._totalSentCharacters,
336
+ totalReceivedCharacters: this._totalReceivedCharacters,
337
+ requestSentMessageCount,
338
+ requestReceivedMessageCount,
339
+ requestSentCharacters,
340
+ requestReceivedCharacters,
341
+ closeCode,
342
+ closeReason,
343
+ serverErrorMessage,
344
+ serverErrorCode,
345
+ });
346
+ });
347
+ this._activeRequest = request;
348
+ // Handle cancellation
349
+ const cancelDisposable = token.onCancellationRequested(() => {
350
+ if (this._activeRequest === request) {
351
+ request.handleCancellation();
352
+ this._activeRequest = undefined;
353
+ }
354
+ });
355
+ request.done.finally(() => cancelDisposable.dispose());
356
+ const message = {
357
+ type: 'response.create',
358
+ ...body,
359
+ };
360
+ // Remove `stream: true` as WebSocket always streams
361
+ delete message['stream'];
362
+ const serializedMessage = JSON.stringify(message);
363
+ const sentMessageCharacters = serializedMessage.length;
364
+ this._totalSentMessageCount += 1;
365
+ this._totalSentCharacters += sentMessageCharacters;
366
+ const connectionDurationMs = Date.now() - (this._connectedTime ?? Date.now());
367
+ this._logService.debug(`[ChatWebSocketManager] Sending request for conversation ${this._conversationId} turn ${this._turnId} (totalSentMessageCount: ${this._totalSentMessageCount}, sentMessageCharacters: ${sentMessageCharacters})`);
368
+ chatWebSocketTelemetry_1.ChatWebSocketTelemetrySender.sendRequestSentTelemetry(this._telemetryService, {
369
+ conversationId: this._conversationId,
370
+ turnId: this._turnId,
371
+ requestId: this._requestId,
372
+ gitHubRequestId: this._gitHubRequestId,
373
+ connectionDurationMs,
374
+ totalSentMessageCount: this._totalSentMessageCount,
375
+ totalReceivedMessageCount: this._totalReceivedMessageCount,
376
+ sentMessageCharacters,
377
+ totalSentCharacters: this._totalSentCharacters,
378
+ totalReceivedCharacters: this._totalReceivedCharacters,
379
+ });
380
+ this._ws.send(serializedMessage);
381
+ return request;
382
+ }
383
+ dispose() {
384
+ this._activeRequest?.handleConnectionDisposed();
385
+ this._activeRequest = undefined;
386
+ if (this._ws) {
387
+ this._ws.close();
388
+ this._ws = undefined;
389
+ }
390
+ this._state = 2 /* ConnectionState.Closed */;
391
+ this._onDidDispose.fire();
392
+ super.dispose();
393
+ }
394
+ }
395
+ class ChatWebSocketActiveRequest {
396
+ constructor() {
397
+ this._onEvent = new event_1.Emitter();
398
+ this.onEvent = this._onEvent.event;
399
+ this._onError = new event_1.Emitter();
400
+ this.onError = this._onError.event;
401
+ this._onComplete = new event_1.Emitter();
402
+ this.onComplete = this._onComplete.event;
403
+ this._settled = false;
404
+ this.done = new Promise((resolve, reject) => {
405
+ this._resolve = resolve;
406
+ this._reject = reject;
407
+ });
408
+ }
409
+ onDidSettle(callback) {
410
+ this._onDidSettle = callback;
411
+ }
412
+ handleEvent(event) {
413
+ if (this._settled) {
414
+ return;
415
+ }
416
+ if (event.type === 'error') {
417
+ const serverErrorMessage = event.message || event.error?.message || 'Server error';
418
+ const serverErrorCode = event.code || event.error?.code || undefined;
419
+ const errorMessage = serverErrorCode ? `${serverErrorMessage} (${serverErrorCode})` : serverErrorMessage;
420
+ const error = new Error(errorMessage);
421
+ this._finalizeError('server_error', error, undefined, undefined, serverErrorMessage, serverErrorCode);
422
+ return;
423
+ }
424
+ this._onEvent.fire(event);
425
+ if (event.type === 'response.completed') {
426
+ this._onComplete.fire();
427
+ this._finalizeSuccess('completed');
428
+ }
429
+ }
430
+ handleConnectionClose(code, reason) {
431
+ if (this._settled) {
432
+ return;
433
+ }
434
+ const error = new Error(`WebSocket closed unexpectedly (code: ${code} ${wsCloseCodeToString(code)}${reason ? `, reason: ${reason}` : ''})`);
435
+ this._finalizeError('connection_closed', error, code, reason);
436
+ }
437
+ handleConnectionError(error) {
438
+ if (this._settled) {
439
+ return;
440
+ }
441
+ this._finalizeError('connection_error', error);
442
+ }
443
+ handleSuperseded() {
444
+ if (this._settled) {
445
+ return;
446
+ }
447
+ this._finalizeError('superseded', new Error('Request superseded by new request'));
448
+ }
449
+ handleCancellation() {
450
+ if (this._settled) {
451
+ return;
452
+ }
453
+ this._finalizeError('canceled', new errors_1.CancellationError());
454
+ }
455
+ handleConnectionDisposed() {
456
+ if (this._settled) {
457
+ return;
458
+ }
459
+ this._finalizeError('connection_disposed', new Error('Connection disposed'));
460
+ }
461
+ _finalizeSuccess(outcome) {
462
+ this._settled = true;
463
+ this._onDidSettle?.({ outcome });
464
+ this._resolve();
465
+ this._dispose();
466
+ }
467
+ _finalizeError(outcome, error, closeCode, closeReason, serverErrorMessage, serverErrorCode) {
468
+ this._onError.fire(error);
469
+ this._settled = true;
470
+ this._onDidSettle?.({ outcome, closeCode, closeReason, serverErrorMessage, serverErrorCode });
471
+ this._reject(error);
472
+ this._dispose();
473
+ }
474
+ _dispose() {
475
+ this._onEvent.dispose();
476
+ this._onError.dispose();
477
+ this._onComplete.dispose();
478
+ }
479
+ }
480
+ //# sourceMappingURL=chatWebSocketManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatWebSocketManager.js","sourceRoot":"","sources":["../../../../../../src/_internal/platform/networking/node/chatWebSocketManager.ts"],"names":[],"mappings":"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"}