@vscode/chat-lib 0.43.2026040706-0 → 0.44.1

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 (102) hide show
  1. package/dist/src/_internal/extension/common/constants.d.ts +1 -2
  2. package/dist/src/_internal/extension/common/constants.d.ts.map +1 -1
  3. package/dist/src/_internal/extension/common/constants.js +0 -3
  4. package/dist/src/_internal/extension/common/constants.js.map +1 -1
  5. package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/openai/fetch.d.ts.map +1 -1
  6. package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/openai/fetch.js +13 -20
  7. package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/openai/fetch.js.map +1 -1
  8. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.d.ts.map +1 -1
  9. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js +11 -17
  10. package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js.map +1 -1
  11. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.d.ts.map +1 -1
  12. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.js +0 -2
  13. package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.js.map +1 -1
  14. package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.d.ts +9 -12
  15. package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.d.ts.map +1 -1
  16. package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.js +26 -26
  17. package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.js.map +1 -1
  18. package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.d.ts +2 -2
  19. package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.d.ts.map +1 -1
  20. package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.js +31 -6
  21. package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.js.map +1 -1
  22. package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts +1 -1
  23. package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts.map +1 -1
  24. package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js +5 -5
  25. package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js.map +1 -1
  26. package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
  27. package/dist/src/_internal/extension/xtab/node/xtabProvider.js +131 -157
  28. package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
  29. package/dist/src/_internal/platform/chat/common/chatMLFetcher.d.ts +0 -1
  30. package/dist/src/_internal/platform/chat/common/chatMLFetcher.d.ts.map +1 -1
  31. package/dist/src/_internal/platform/chat/common/chatMLFetcher.js +0 -4
  32. package/dist/src/_internal/platform/chat/common/chatMLFetcher.js.map +1 -1
  33. package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +10 -14
  34. package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
  35. package/dist/src/_internal/platform/configuration/common/configurationService.js +13 -17
  36. package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
  37. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts +3 -3
  38. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts.map +1 -1
  39. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +12 -15
  40. package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js.map +1 -1
  41. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts +1 -11
  42. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
  43. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js +58 -28
  44. package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
  45. package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts +12 -4
  46. package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts.map +1 -1
  47. package/dist/src/_internal/platform/endpoint/node/messagesApi.js +152 -13
  48. package/dist/src/_internal/platform/endpoint/node/messagesApi.js.map +1 -1
  49. package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts +1 -4
  50. package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts.map +1 -1
  51. package/dist/src/_internal/platform/endpoint/node/responsesApi.js +31 -70
  52. package/dist/src/_internal/platform/endpoint/node/responsesApi.js.map +1 -1
  53. package/dist/src/_internal/platform/git/common/gitService.d.ts +9 -2
  54. package/dist/src/_internal/platform/git/common/gitService.d.ts.map +1 -1
  55. package/dist/src/_internal/platform/git/common/gitService.js.map +1 -1
  56. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts +0 -15
  57. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts.map +1 -1
  58. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js +1 -17
  59. package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js.map +1 -1
  60. package/dist/src/_internal/platform/networking/common/anthropic.d.ts +42 -0
  61. package/dist/src/_internal/platform/networking/common/anthropic.d.ts.map +1 -1
  62. package/dist/src/_internal/platform/networking/common/anthropic.js +30 -1
  63. package/dist/src/_internal/platform/networking/common/anthropic.js.map +1 -1
  64. package/dist/src/_internal/platform/networking/common/fetch.d.ts +12 -0
  65. package/dist/src/_internal/platform/networking/common/fetch.d.ts.map +1 -1
  66. package/dist/src/_internal/platform/networking/common/fetch.js +1 -5
  67. package/dist/src/_internal/platform/networking/common/fetch.js.map +1 -1
  68. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts +0 -1
  69. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts.map +1 -1
  70. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js +3 -3
  71. package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js.map +1 -1
  72. package/dist/src/_internal/platform/otel/common/genAiEvents.d.ts.map +1 -1
  73. package/dist/src/_internal/platform/otel/common/genAiEvents.js +2 -10
  74. package/dist/src/_internal/platform/otel/common/genAiEvents.js.map +1 -1
  75. package/dist/src/_internal/platform/otel/common/index.d.ts +1 -1
  76. package/dist/src/_internal/platform/otel/common/index.d.ts.map +1 -1
  77. package/dist/src/_internal/platform/otel/common/index.js +1 -2
  78. package/dist/src/_internal/platform/otel/common/index.js.map +1 -1
  79. package/dist/src/_internal/platform/otel/common/messageFormatters.d.ts +1 -13
  80. package/dist/src/_internal/platform/otel/common/messageFormatters.d.ts.map +1 -1
  81. package/dist/src/_internal/platform/otel/common/messageFormatters.js +0 -98
  82. package/dist/src/_internal/platform/otel/common/messageFormatters.js.map +1 -1
  83. package/dist/src/_internal/platform/requestLogger/common/requestLogger.d.ts +1 -0
  84. package/dist/src/_internal/platform/requestLogger/common/requestLogger.d.ts.map +1 -1
  85. package/dist/src/_internal/platform/requestLogger/common/requestLogger.js.map +1 -1
  86. package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.d.ts +3 -2
  87. package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.d.ts.map +1 -1
  88. package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.js +3 -1
  89. package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.js.map +1 -1
  90. package/dist/src/_internal/platform/requestLogger/node/requestLogger.d.ts +1 -0
  91. package/dist/src/_internal/platform/requestLogger/node/requestLogger.d.ts.map +1 -1
  92. package/dist/src/_internal/platform/requestLogger/node/requestLogger.js.map +1 -1
  93. package/dist/src/package.json +59 -90
  94. package/package.json +2 -1
  95. package/dist/src/_internal/extension/xtab/common/fetchStreamError.d.ts +0 -10
  96. package/dist/src/_internal/extension/xtab/common/fetchStreamError.d.ts.map +0 -1
  97. package/dist/src/_internal/extension/xtab/common/fetchStreamError.js +0 -19
  98. package/dist/src/_internal/extension/xtab/common/fetchStreamError.js.map +0 -1
  99. package/dist/src/_internal/platform/endpoint/node/imageLimits.d.ts +0 -14
  100. package/dist/src/_internal/platform/endpoint/node/imageLimits.d.ts.map +0 -1
  101. package/dist/src/_internal/platform/endpoint/node/imageLimits.js +0 -156
  102. package/dist/src/_internal/platform/endpoint/node/imageLimits.js.map +0 -1
@@ -1,156 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.filterHistoryImages = filterHistoryImages;
37
- /*---------------------------------------------------------------------------------------------
38
- * Copyright (c) Microsoft Corporation. All rights reserved.
39
- * Licensed under the MIT License. See License.txt in the project root for license information.
40
- *--------------------------------------------------------------------------------------------*/
41
- const l10n = __importStar(require("@vscode/l10n"));
42
- const prompt_tsx_1 = require("@vscode/prompt-tsx");
43
- /**
44
- * Model-facing placeholder substituted for dropped history images.
45
- * Intentionally not localized — this text is sent to the model, not the user.
46
- */
47
- const IMAGE_PLACEHOLDER_TEXT = '[Image omitted from conversation history due to model limit.]';
48
- /**
49
- * Silently drops the oldest images from history when the total number of images
50
- * in the conversation exceeds `maxImages`. Images belonging to the current turn
51
- * (the last user message and anything after it, e.g. recent tool results) are
52
- * always preserved.
53
- *
54
- * If the current turn alone exceeds the limit, throws a localized error rather
55
- * than sending a request we know will be rejected with an opaque server error.
56
- *
57
- * @returns A (possibly filtered) copy of messages. The original array is never mutated.
58
- */
59
- function filterHistoryImages(messages, maxImages) {
60
- // Anchor the current turn at the last user message; anything at or after this
61
- // index is treated as "current turn" and its images are never filtered.
62
- let lastUserIdx = -1;
63
- for (let i = messages.length - 1; i >= 0; i--) {
64
- if (messages[i].role === prompt_tsx_1.Raw.ChatRole.User) {
65
- lastUserIdx = i;
66
- break;
67
- }
68
- }
69
- // Corner case: no user message at all (e.g. system-only history). Treat the
70
- // last message as the current turn so we still filter earlier images.
71
- if (lastUserIdx === -1 && messages.length > 0) {
72
- lastUserIdx = messages.length - 1;
73
- }
74
- // Count images in the current turn (the last user message and anything after it).
75
- let currentTurnImages = 0;
76
- for (let i = Math.max(lastUserIdx, 0); i < messages.length; i++) {
77
- const content = messages[i].content;
78
- if (!Array.isArray(content)) {
79
- continue;
80
- }
81
- for (const part of content) {
82
- if (part.type === prompt_tsx_1.Raw.ChatCompletionContentPartKind.Image) {
83
- currentTurnImages++;
84
- }
85
- }
86
- }
87
- // Count total images across all messages
88
- let totalImages = 0;
89
- for (const message of messages) {
90
- if (Array.isArray(message.content)) {
91
- for (const part of message.content) {
92
- if (part.type === prompt_tsx_1.Raw.ChatCompletionContentPartKind.Image) {
93
- totalImages++;
94
- }
95
- }
96
- }
97
- }
98
- // No filtering needed if total is within the limit
99
- if (totalImages <= maxImages) {
100
- return messages;
101
- }
102
- // Fail fast with a clear, localized error when the current turn alone exceeds
103
- // the limit — otherwise we'd send a request the server will reject with an
104
- // opaque error. Silent history filtering is only safe when dropping history
105
- // images can bring the total down to the limit.
106
- if (currentTurnImages > maxImages) {
107
- throw new Error(l10n.t('Too many images in request: {0} images provided, but the model supports a maximum of {1} images.', currentTurnImages, maxImages));
108
- }
109
- // Walk backward through history (before the current turn), keeping the
110
- // most recent images and replacing the oldest with placeholders.
111
- let historyBudget = maxImages - currentTurnImages;
112
- // Collect keep/drop decisions by walking backward through history
113
- const historyImageDecisions = new Map(); // "msgIdx:partIdx" -> keep
114
- for (let i = lastUserIdx - 1; i >= 0; i--) {
115
- if (!Array.isArray(messages[i].content)) {
116
- continue;
117
- }
118
- for (let j = messages[i].content.length - 1; j >= 0; j--) {
119
- if (messages[i].content[j].type === prompt_tsx_1.Raw.ChatCompletionContentPartKind.Image) {
120
- const key = `${i}:${j}`;
121
- if (historyBudget > 0) {
122
- historyImageDecisions.set(key, true);
123
- historyBudget--;
124
- }
125
- else {
126
- historyImageDecisions.set(key, false);
127
- }
128
- }
129
- }
130
- }
131
- // Build filtered messages, replacing dropped images with text placeholders
132
- return messages.map((message, msgIdx) => {
133
- if (msgIdx >= lastUserIdx) {
134
- return message;
135
- }
136
- if (!Array.isArray(message.content)) {
137
- return message;
138
- }
139
- if (!message.content.some(p => p.type === prompt_tsx_1.Raw.ChatCompletionContentPartKind.Image)) {
140
- return message;
141
- }
142
- return {
143
- ...message,
144
- content: message.content.map((part, partIdx) => {
145
- if (part.type !== prompt_tsx_1.Raw.ChatCompletionContentPartKind.Image) {
146
- return part;
147
- }
148
- if (historyImageDecisions.get(`${msgIdx}:${partIdx}`)) {
149
- return part;
150
- }
151
- return { type: prompt_tsx_1.Raw.ChatCompletionContentPartKind.Text, text: IMAGE_PLACEHOLDER_TEXT };
152
- })
153
- };
154
- });
155
- }
156
- //# sourceMappingURL=imageLimits.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageLimits.js","sourceRoot":"","sources":["../../../../../../src/_internal/platform/endpoint/node/imageLimits.ts"],"names":[],"mappings":"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"}