@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.
- package/dist/src/_internal/extension/common/constants.d.ts +1 -2
- package/dist/src/_internal/extension/common/constants.d.ts.map +1 -1
- package/dist/src/_internal/extension/common/constants.js +0 -3
- package/dist/src/_internal/extension/common/constants.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/openai/fetch.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/openai/fetch.js +13 -20
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/openai/fetch.js.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.d.ts.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js +11 -17
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.d.ts.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.js +0 -2
- package/dist/src/_internal/extension/prompt/node/chatMLFetcherTelemetry.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.d.ts +9 -12
- package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.js +26 -26
- package/dist/src/_internal/extension/xtab/node/cursorLineDivergence.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.d.ts +2 -2
- package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.js +31 -6
- package/dist/src/_internal/extension/xtab/node/responseFormatHandlers.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js +5 -5
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js +131 -157
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
- package/dist/src/_internal/platform/chat/common/chatMLFetcher.d.ts +0 -1
- package/dist/src/_internal/platform/chat/common/chatMLFetcher.d.ts.map +1 -1
- package/dist/src/_internal/platform/chat/common/chatMLFetcher.js +0 -4
- package/dist/src/_internal/platform/chat/common/chatMLFetcher.js.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +10 -14
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.js +13 -17
- package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts +3 -3
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +12 -15
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts +1 -11
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js +58 -28
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts +12 -4
- package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/messagesApi.js +152 -13
- package/dist/src/_internal/platform/endpoint/node/messagesApi.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts +1 -4
- package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js +31 -70
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js.map +1 -1
- package/dist/src/_internal/platform/git/common/gitService.d.ts +9 -2
- package/dist/src/_internal/platform/git/common/gitService.d.ts.map +1 -1
- package/dist/src/_internal/platform/git/common/gitService.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts +0 -15
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js +1 -17
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts +42 -0
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.js +30 -1
- package/dist/src/_internal/platform/networking/common/anthropic.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/fetch.d.ts +12 -0
- package/dist/src/_internal/platform/networking/common/fetch.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/fetch.js +1 -5
- package/dist/src/_internal/platform/networking/common/fetch.js.map +1 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts +0 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js +3 -3
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js.map +1 -1
- package/dist/src/_internal/platform/otel/common/genAiEvents.d.ts.map +1 -1
- package/dist/src/_internal/platform/otel/common/genAiEvents.js +2 -10
- package/dist/src/_internal/platform/otel/common/genAiEvents.js.map +1 -1
- package/dist/src/_internal/platform/otel/common/index.d.ts +1 -1
- package/dist/src/_internal/platform/otel/common/index.d.ts.map +1 -1
- package/dist/src/_internal/platform/otel/common/index.js +1 -2
- package/dist/src/_internal/platform/otel/common/index.js.map +1 -1
- package/dist/src/_internal/platform/otel/common/messageFormatters.d.ts +1 -13
- package/dist/src/_internal/platform/otel/common/messageFormatters.d.ts.map +1 -1
- package/dist/src/_internal/platform/otel/common/messageFormatters.js +0 -98
- package/dist/src/_internal/platform/otel/common/messageFormatters.js.map +1 -1
- package/dist/src/_internal/platform/requestLogger/common/requestLogger.d.ts +1 -0
- package/dist/src/_internal/platform/requestLogger/common/requestLogger.d.ts.map +1 -1
- package/dist/src/_internal/platform/requestLogger/common/requestLogger.js.map +1 -1
- package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.d.ts +3 -2
- package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.d.ts.map +1 -1
- package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.js +3 -1
- package/dist/src/_internal/platform/requestLogger/node/nullRequestLogger.js.map +1 -1
- package/dist/src/_internal/platform/requestLogger/node/requestLogger.d.ts +1 -0
- package/dist/src/_internal/platform/requestLogger/node/requestLogger.d.ts.map +1 -1
- package/dist/src/_internal/platform/requestLogger/node/requestLogger.js.map +1 -1
- package/dist/src/package.json +59 -90
- package/package.json +2 -1
- package/dist/src/_internal/extension/xtab/common/fetchStreamError.d.ts +0 -10
- package/dist/src/_internal/extension/xtab/common/fetchStreamError.d.ts.map +0 -1
- package/dist/src/_internal/extension/xtab/common/fetchStreamError.js +0 -19
- package/dist/src/_internal/extension/xtab/common/fetchStreamError.js.map +0 -1
- package/dist/src/_internal/platform/endpoint/node/imageLimits.d.ts +0 -14
- package/dist/src/_internal/platform/endpoint/node/imageLimits.d.ts.map +0 -1
- package/dist/src/_internal/platform/endpoint/node/imageLimits.js +0 -156
- 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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"}
|