@theia/ai-chat 1.72.0-next.59 → 1.72.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.
- package/lib/browser/chat-session-store-impl.d.ts.map +1 -1
- package/lib/browser/chat-session-store-impl.js +7 -2
- package/lib/browser/chat-session-store-impl.js.map +1 -1
- package/lib/common/chat-content-deserializer.d.ts.map +1 -1
- package/lib/common/chat-content-deserializer.js +5 -6
- package/lib/common/chat-content-deserializer.js.map +1 -1
- package/lib/common/chat-content-deserializer.spec.js +12 -1
- package/lib/common/chat-content-deserializer.spec.js.map +1 -1
- package/lib/common/chat-model.d.ts +23 -1
- package/lib/common/chat-model.d.ts.map +1 -1
- package/lib/common/chat-model.js +23 -9
- package/lib/common/chat-model.js.map +1 -1
- package/lib/common/chat-response-model.spec.js +15 -0
- package/lib/common/chat-response-model.spec.js.map +1 -1
- package/lib/common/chat-service.d.ts.map +1 -1
- package/lib/common/chat-service.js +4 -2
- package/lib/common/chat-service.js.map +1 -1
- package/lib/common/chat-session-store.d.ts +8 -0
- package/lib/common/chat-session-store.d.ts.map +1 -1
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/provider-error-formatter.d.ts +16 -0
- package/lib/common/provider-error-formatter.d.ts.map +1 -0
- package/lib/common/provider-error-formatter.js +111 -0
- package/lib/common/provider-error-formatter.js.map +1 -0
- package/lib/common/provider-error-formatter.spec.d.ts +2 -0
- package/lib/common/provider-error-formatter.spec.d.ts.map +1 -0
- package/lib/common/provider-error-formatter.spec.js +167 -0
- package/lib/common/provider-error-formatter.spec.js.map +1 -0
- package/lib/common/tool-call-response-content.spec.js +17 -0
- package/lib/common/tool-call-response-content.spec.js.map +1 -1
- package/package.json +10 -10
- package/src/browser/chat-session-store-impl.ts +7 -2
- package/src/common/chat-content-deserializer.spec.ts +16 -1
- package/src/common/chat-content-deserializer.ts +7 -6
- package/src/common/chat-model.ts +53 -11
- package/src/common/chat-response-model.spec.ts +20 -1
- package/src/common/chat-service.ts +4 -2
- package/src/common/chat-session-store.ts +8 -0
- package/src/common/index.ts +1 -0
- package/src/common/provider-error-formatter.spec.ts +190 -0
- package/src/common/provider-error-formatter.ts +110 -0
- package/src/common/tool-call-response-content.spec.ts +23 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.formatProviderError = formatProviderError;
|
|
19
|
+
exports.formattedProviderErrorToShortString = formattedProviderErrorToShortString;
|
|
20
|
+
function formatProviderError(raw) {
|
|
21
|
+
const safeRaw = (raw ?? '').toString();
|
|
22
|
+
const trimmed = safeRaw.trim();
|
|
23
|
+
if (!trimmed) {
|
|
24
|
+
return { message: safeRaw, raw: safeRaw };
|
|
25
|
+
}
|
|
26
|
+
// Optional leading HTTP status followed by a JSON body, e.g. "401 {...}".
|
|
27
|
+
// The JSON-body anchor avoids misreading arbitrary text that happens to
|
|
28
|
+
// start with 3 digits (e.g. "404 routes were processed") as a status.
|
|
29
|
+
// Real provider errors (Anthropic, OpenAI) always carry a JSON body here.
|
|
30
|
+
const match = trimmed.match(/^(\d{3})\b[\s:-]*(?=[{[])/);
|
|
31
|
+
const remainder = match ? trimmed.slice(match[0].length).trim() : trimmed;
|
|
32
|
+
const body = parseJson(remainder);
|
|
33
|
+
if (!body || typeof body !== 'object') {
|
|
34
|
+
return { status: match?.[1], message: remainder || safeRaw, raw: safeRaw };
|
|
35
|
+
}
|
|
36
|
+
let message;
|
|
37
|
+
let code;
|
|
38
|
+
const walk = (node) => {
|
|
39
|
+
if (typeof node === 'string') {
|
|
40
|
+
const inner = parseJson(node);
|
|
41
|
+
if (inner && typeof inner === 'object') {
|
|
42
|
+
walk(inner);
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!node || typeof node !== 'object') {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
for (const [k, v] of Object.entries(node)) {
|
|
50
|
+
if (k === 'message' && typeof v === 'string' && !looksLikeJson(v)) {
|
|
51
|
+
message = v;
|
|
52
|
+
}
|
|
53
|
+
else if (!code && (k === 'code' || k === 'status')) {
|
|
54
|
+
code = asStatus(v);
|
|
55
|
+
}
|
|
56
|
+
walk(v);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
walk(body);
|
|
60
|
+
return {
|
|
61
|
+
status: match?.[1] ?? code,
|
|
62
|
+
message: message ?? remainder,
|
|
63
|
+
details: stringifyUnwrapped(body),
|
|
64
|
+
raw: safeRaw
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Compact one-liner suitable for notification toasts. */
|
|
68
|
+
function formattedProviderErrorToShortString(e) {
|
|
69
|
+
return e.status ? `${e.status}: ${e.message}` : e.message;
|
|
70
|
+
}
|
|
71
|
+
function parseJson(text) {
|
|
72
|
+
const start = text.search(/[{[]/);
|
|
73
|
+
if (start < 0) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
return JSON.parse(text.slice(start));
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function looksLikeJson(text) {
|
|
84
|
+
const t = text.trimStart();
|
|
85
|
+
return t.startsWith('{') || t.startsWith('[');
|
|
86
|
+
}
|
|
87
|
+
function asStatus(value) {
|
|
88
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
89
|
+
const s = String(value);
|
|
90
|
+
return /^\d{3}$/.test(s) ? s : undefined;
|
|
91
|
+
}
|
|
92
|
+
return typeof value === 'string' ? value.match(/^(\d{3})\b/)?.[1] : undefined;
|
|
93
|
+
}
|
|
94
|
+
/** Pretty-print JSON, transparently parsing any string field that itself contains JSON. */
|
|
95
|
+
function stringifyUnwrapped(value) {
|
|
96
|
+
try {
|
|
97
|
+
return JSON.stringify(value, (_, v) => {
|
|
98
|
+
if (typeof v === 'string' && looksLikeJson(v)) {
|
|
99
|
+
const inner = parseJson(v);
|
|
100
|
+
if (inner && typeof inner === 'object') {
|
|
101
|
+
return inner;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return v;
|
|
105
|
+
}, 2);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=provider-error-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-error-formatter.js","sourceRoot":"","sources":["../../src/common/provider-error-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-error-formatter.spec.d.ts","sourceRoot":"","sources":["../../src/common/provider-error-formatter.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const provider_error_formatter_1 = require("./provider-error-formatter");
|
|
20
|
+
describe('formatProviderError', () => {
|
|
21
|
+
it('should handle undefined input', () => {
|
|
22
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(undefined);
|
|
23
|
+
(0, chai_1.expect)(result.message).to.equal('');
|
|
24
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
25
|
+
(0, chai_1.expect)(result.details).to.be.undefined;
|
|
26
|
+
(0, chai_1.expect)(result.raw).to.equal('');
|
|
27
|
+
});
|
|
28
|
+
it('should handle empty string input', () => {
|
|
29
|
+
const result = (0, provider_error_formatter_1.formatProviderError)('');
|
|
30
|
+
(0, chai_1.expect)(result.message).to.equal('');
|
|
31
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
32
|
+
(0, chai_1.expect)(result.details).to.be.undefined;
|
|
33
|
+
(0, chai_1.expect)(result.raw).to.equal('');
|
|
34
|
+
});
|
|
35
|
+
it('should handle plain text error without JSON', () => {
|
|
36
|
+
const result = (0, provider_error_formatter_1.formatProviderError)('Something went wrong');
|
|
37
|
+
(0, chai_1.expect)(result.message).to.equal('Something went wrong');
|
|
38
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
39
|
+
(0, chai_1.expect)(result.details).to.be.undefined;
|
|
40
|
+
(0, chai_1.expect)(result.raw).to.equal('Something went wrong');
|
|
41
|
+
});
|
|
42
|
+
it('should extract HTTP status from leading prefix', () => {
|
|
43
|
+
const raw = '401 {"error":{"message":"Invalid API key","type":"auth_error"}}';
|
|
44
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
45
|
+
(0, chai_1.expect)(result.status).to.equal('401');
|
|
46
|
+
(0, chai_1.expect)(result.message).to.equal('Invalid API key');
|
|
47
|
+
(0, chai_1.expect)(result.details).to.be.a('string');
|
|
48
|
+
(0, chai_1.expect)(result.raw).to.equal(raw);
|
|
49
|
+
});
|
|
50
|
+
it('should extract status from JSON code field when no leading prefix', () => {
|
|
51
|
+
const raw = '{"error":{"message":"Permission denied","code":403}}';
|
|
52
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
53
|
+
(0, chai_1.expect)(result.status).to.equal('403');
|
|
54
|
+
(0, chai_1.expect)(result.message).to.equal('Permission denied');
|
|
55
|
+
});
|
|
56
|
+
it('should extract status from JSON status field', () => {
|
|
57
|
+
const raw = '{"error":{"message":"Not found","status":404}}';
|
|
58
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
59
|
+
(0, chai_1.expect)(result.status).to.equal('404');
|
|
60
|
+
(0, chai_1.expect)(result.message).to.equal('Not found');
|
|
61
|
+
});
|
|
62
|
+
it('should prefer leading HTTP status over JSON code field', () => {
|
|
63
|
+
const raw = '500 {"error":{"message":"Server error","code":503}}';
|
|
64
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
65
|
+
(0, chai_1.expect)(result.status).to.equal('500');
|
|
66
|
+
(0, chai_1.expect)(result.message).to.equal('Server error');
|
|
67
|
+
});
|
|
68
|
+
it('should extract the deepest message from nested JSON', () => {
|
|
69
|
+
const raw = '400 {"error":{"message":"Top level","details":{"message":"Deeper reason"}}}';
|
|
70
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
71
|
+
(0, chai_1.expect)(result.status).to.equal('400');
|
|
72
|
+
(0, chai_1.expect)(result.message).to.equal('Deeper reason');
|
|
73
|
+
});
|
|
74
|
+
it('should handle Gemini-style errors with JSON-encoded inner body', () => {
|
|
75
|
+
const inner = JSON.stringify({ error: { message: 'API key not valid', status: 'INVALID_ARGUMENT' } });
|
|
76
|
+
const raw = `{"error":{"message":${JSON.stringify(inner)},"code":400}}`;
|
|
77
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
78
|
+
(0, chai_1.expect)(result.status).to.equal('400');
|
|
79
|
+
(0, chai_1.expect)(result.message).to.equal('API key not valid');
|
|
80
|
+
});
|
|
81
|
+
it('should fall back to remainder when JSON has no message field', () => {
|
|
82
|
+
const raw = '429 {"error":{"type":"rate_limit"}}';
|
|
83
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
84
|
+
(0, chai_1.expect)(result.status).to.equal('429');
|
|
85
|
+
(0, chai_1.expect)(result.message).to.equal('{"error":{"type":"rate_limit"}}');
|
|
86
|
+
});
|
|
87
|
+
it('should not treat a leading 3-digit prefix as a status when no JSON body follows', () => {
|
|
88
|
+
// Avoid misreading arbitrary text that happens to start with 3 digits.
|
|
89
|
+
const raw = '404 routes were processed';
|
|
90
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
91
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
92
|
+
(0, chai_1.expect)(result.message).to.equal('404 routes were processed');
|
|
93
|
+
(0, chai_1.expect)(result.details).to.be.undefined;
|
|
94
|
+
});
|
|
95
|
+
it('should produce unwrapped details for nested JSON strings', () => {
|
|
96
|
+
const inner = JSON.stringify({ reason: 'quota exceeded' });
|
|
97
|
+
const raw = `{"error":{"message":"Rate limited","body":${JSON.stringify(inner)}}}`;
|
|
98
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
99
|
+
(0, chai_1.expect)(result.details).to.be.a('string');
|
|
100
|
+
// The details should contain the unwrapped inner object, not the escaped JSON string
|
|
101
|
+
const parsed = JSON.parse(result.details);
|
|
102
|
+
(0, chai_1.expect)(parsed.error.body).to.deep.equal({ reason: 'quota exceeded' });
|
|
103
|
+
});
|
|
104
|
+
it('should not treat a message that looks like JSON as the headline', () => {
|
|
105
|
+
const raw = '{"error":{"message":"{\\"key\\":\\"value\\"}","code":400}}';
|
|
106
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
107
|
+
// The JSON-like message should be skipped; headline falls back to remainder
|
|
108
|
+
(0, chai_1.expect)(result.message).to.equal('{"error":{"message":"{\\"key\\":\\"value\\"}","code":400}}');
|
|
109
|
+
});
|
|
110
|
+
it('should handle leading status with colon separator', () => {
|
|
111
|
+
const raw = '401: {"error":{"message":"Unauthorized"}}';
|
|
112
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
113
|
+
(0, chai_1.expect)(result.status).to.equal('401');
|
|
114
|
+
(0, chai_1.expect)(result.message).to.equal('Unauthorized');
|
|
115
|
+
});
|
|
116
|
+
it('should extract message from an array of errors', () => {
|
|
117
|
+
const raw = '{"errors":[{"message":"Rate limit exceeded","code":429}]}';
|
|
118
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
119
|
+
(0, chai_1.expect)(result.status).to.equal('429');
|
|
120
|
+
(0, chai_1.expect)(result.message).to.equal('Rate limit exceeded');
|
|
121
|
+
});
|
|
122
|
+
it('should ignore non-3-digit numeric codes', () => {
|
|
123
|
+
const raw = '{"error":{"message":"Something broke","code":42}}';
|
|
124
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
125
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
126
|
+
(0, chai_1.expect)(result.message).to.equal('Something broke');
|
|
127
|
+
});
|
|
128
|
+
it('should ignore non-numeric status strings', () => {
|
|
129
|
+
const raw = '{"error":{"message":"Invalid key","status":"INVALID_ARGUMENT"}}';
|
|
130
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
131
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
132
|
+
(0, chai_1.expect)(result.message).to.equal('Invalid key');
|
|
133
|
+
});
|
|
134
|
+
it('should find JSON preceded by non-JSON text', () => {
|
|
135
|
+
const raw = 'Error occurred: {"error":{"message":"connection refused"}}';
|
|
136
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
137
|
+
(0, chai_1.expect)(result.message).to.equal('connection refused');
|
|
138
|
+
(0, chai_1.expect)(result.details).to.be.a('string');
|
|
139
|
+
});
|
|
140
|
+
it('should handle whitespace-only input', () => {
|
|
141
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(' ');
|
|
142
|
+
(0, chai_1.expect)(result.message).to.equal(' ');
|
|
143
|
+
(0, chai_1.expect)(result.status).to.be.undefined;
|
|
144
|
+
});
|
|
145
|
+
it('should walk into a top-level JSON array', () => {
|
|
146
|
+
const raw = '[{"error":{"message":"first"}},{"error":{"message":"second"}}]';
|
|
147
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
148
|
+
// walk visits in order, last message wins
|
|
149
|
+
(0, chai_1.expect)(result.message).to.equal('second');
|
|
150
|
+
});
|
|
151
|
+
it('should extract 3-digit status from a longer string value', () => {
|
|
152
|
+
const raw = '{"error":{"message":"Too many requests","status":"429 RESOURCE_EXHAUSTED"}}';
|
|
153
|
+
const result = (0, provider_error_formatter_1.formatProviderError)(raw);
|
|
154
|
+
(0, chai_1.expect)(result.status).to.equal('429');
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe('formattedProviderErrorToShortString', () => {
|
|
158
|
+
it('should include status when present', () => {
|
|
159
|
+
const result = (0, provider_error_formatter_1.formattedProviderErrorToShortString)({ status: '401', message: 'Invalid API key', raw: '' });
|
|
160
|
+
(0, chai_1.expect)(result).to.equal('401: Invalid API key');
|
|
161
|
+
});
|
|
162
|
+
it('should return only headline when no status', () => {
|
|
163
|
+
const result = (0, provider_error_formatter_1.formattedProviderErrorToShortString)({ message: 'Something went wrong', raw: '' });
|
|
164
|
+
(0, chai_1.expect)(result).to.equal('Something went wrong');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=provider-error-formatter.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-error-formatter.spec.js","sourceRoot":"","sources":["../../src/common/provider-error-formatter.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,23 @@ describe('ToolCallChatResponseContentImpl', () => {
|
|
|
85
85
|
(0, chai_1.expect)(toolResultMessage.tool_use_id).to.equal('test-id');
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
|
+
describe('updateResult', () => {
|
|
89
|
+
it('should set the result without marking the tool finished', () => {
|
|
90
|
+
const toolCall = new chat_model_1.ToolCallChatResponseContentImpl('id', 'tool', '{}', false);
|
|
91
|
+
toolCall.updateResult('partial');
|
|
92
|
+
(0, chai_1.expect)(toolCall.result).to.equal('partial');
|
|
93
|
+
(0, chai_1.expect)(toolCall.finished).to.be.false;
|
|
94
|
+
});
|
|
95
|
+
it('should fire onDidChange so auto-save picks up the partial result', () => {
|
|
96
|
+
const toolCall = new chat_model_1.ToolCallChatResponseContentImpl('id', 'tool', '{}', false);
|
|
97
|
+
let fireCount = 0;
|
|
98
|
+
toolCall.onDidChange(() => { fireCount++; });
|
|
99
|
+
toolCall.updateResult('partial-1');
|
|
100
|
+
toolCall.updateResult('partial-2');
|
|
101
|
+
(0, chai_1.expect)(fireCount).to.equal(2);
|
|
102
|
+
(0, chai_1.expect)(toolCall.result).to.equal('partial-2');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
88
105
|
describe('restored tool calls', () => {
|
|
89
106
|
it('should have finished=true when restored with a result', () => {
|
|
90
107
|
const restoredToolCall = new chat_model_1.ToolCallChatResponseContentImpl('restored-id', 'shellExecute', '{"command": "ls -la"}', true, '{"success": true, "output": "file1.txt\\nfile2.txt"}');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-response-content.spec.js","sourceRoot":"","sources":["../../src/common/tool-call-response-content.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-call-response-content.spec.js","sourceRoot":"","sources":["../../src/common/tool-call-response-content.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-chat",
|
|
3
|
-
"version": "1.72.0
|
|
3
|
+
"version": "1.72.0",
|
|
4
4
|
"description": "Theia - AI Chat Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.72.0
|
|
7
|
-
"@theia/core": "1.72.0
|
|
8
|
-
"@theia/editor": "1.72.0
|
|
9
|
-
"@theia/file-search": "1.72.0
|
|
10
|
-
"@theia/filesystem": "1.72.0
|
|
11
|
-
"@theia/monaco": "1.72.0
|
|
6
|
+
"@theia/ai-core": "1.72.0",
|
|
7
|
+
"@theia/core": "1.72.0",
|
|
8
|
+
"@theia/editor": "1.72.0",
|
|
9
|
+
"@theia/file-search": "1.72.0",
|
|
10
|
+
"@theia/filesystem": "1.72.0",
|
|
11
|
+
"@theia/monaco": "1.72.0",
|
|
12
12
|
"@theia/monaco-editor-core": "1.108.201",
|
|
13
|
-
"@theia/workspace": "1.72.0
|
|
13
|
+
"@theia/workspace": "1.72.0",
|
|
14
14
|
"js-yaml": "^4.1.1",
|
|
15
15
|
"tslib": "^2.8.1"
|
|
16
16
|
},
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"watch": "theiaext watch"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@theia/ext-scripts": "1.
|
|
52
|
+
"@theia/ext-scripts": "1.72.0"
|
|
53
53
|
},
|
|
54
54
|
"nyc": {
|
|
55
55
|
"extends": "../../configs/nyc.json"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "5bc20bc672aa732fb7e05234cf63c1b514868896"
|
|
58
58
|
}
|
|
@@ -95,9 +95,14 @@ export class ChatSessionStoreImpl implements ChatSessionStore {
|
|
|
95
95
|
}
|
|
96
96
|
this.logger.debug('Starting to store sessions', { totalSessions: sessions.length, storageRoot: root.toString() });
|
|
97
97
|
|
|
98
|
-
// Normalize to SessionWithTitle and filter empty sessions
|
|
98
|
+
// Normalize to SessionWithTitle and filter empty sessions.
|
|
99
|
+
// Use the lastInteraction timestamp when available so that the
|
|
100
|
+
// displayed "time ago" reflects the last user activity, not the
|
|
101
|
+
// last auto-save.
|
|
99
102
|
const nonEmptySessions = sessions
|
|
100
|
-
.map(s => this.isChatModelWithMetadata(s)
|
|
103
|
+
.map(s => this.isChatModelWithMetadata(s)
|
|
104
|
+
? { ...s, saveDate: s.lastInteraction ?? Date.now() }
|
|
105
|
+
: { model: s, saveDate: Date.now() })
|
|
101
106
|
.filter(s => !s.model.isEmpty());
|
|
102
107
|
this.logger.debug('Filtered empty sessions', { nonEmptySessions: nonEmptySessions.length });
|
|
103
108
|
|
|
@@ -202,7 +202,6 @@ describe('Chat Content Serialization', () => {
|
|
|
202
202
|
id: 'id123',
|
|
203
203
|
name: 'toolName',
|
|
204
204
|
arguments: '{"arg": "value"}',
|
|
205
|
-
finished: true,
|
|
206
205
|
result: 'result'
|
|
207
206
|
});
|
|
208
207
|
|
|
@@ -240,6 +239,22 @@ describe('Chat Content Serialization', () => {
|
|
|
240
239
|
expect(deserialized.finished).to.be.true;
|
|
241
240
|
expect(deserialized.result).to.equal('real-result');
|
|
242
241
|
});
|
|
242
|
+
|
|
243
|
+
it('should preserve a partial result written via updateResult and finalize the tool call', async () => {
|
|
244
|
+
// Simulates a still-pending tool that persisted intermediate state
|
|
245
|
+
// (e.g. user-interaction wizard) before the chat session was reloaded.
|
|
246
|
+
const original = new ToolCallChatResponseContentImpl('id', 'toolName', '{}', false);
|
|
247
|
+
original.updateResult('{"completed":false,"steps":[{"title":"S1","value":"a"}]}');
|
|
248
|
+
|
|
249
|
+
const serialized = original.toSerializable?.();
|
|
250
|
+
const withFallback = { ...serialized!, fallbackMessage: '' };
|
|
251
|
+
const deserialized = await registry.deserialize(withFallback) as ToolCallChatResponseContentImpl;
|
|
252
|
+
|
|
253
|
+
expect(deserialized.finished).to.be.true;
|
|
254
|
+
expect(deserialized.result).to.equal('{"completed":false,"steps":[{"title":"S1","value":"a"}]}');
|
|
255
|
+
expect(ToolCallChatResponseContent.isErrorResult(deserialized.result)).to.be.false;
|
|
256
|
+
});
|
|
257
|
+
|
|
243
258
|
});
|
|
244
259
|
|
|
245
260
|
describe('ErrorChatResponseContentImpl', () => {
|
|
@@ -270,16 +270,17 @@ export class DefaultChatContentDeserializerContribution implements ChatContentDe
|
|
|
270
270
|
registry.register({
|
|
271
271
|
kind: 'toolCall',
|
|
272
272
|
deserialize: (data: ToolCallContentData) => {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
273
|
+
// Restored tool calls have no live handler, so always mark them finished.
|
|
274
|
+
// A persisted (partial) result is preserved as-is; otherwise we synthesize
|
|
275
|
+
// a stand-in so the LLM history stays valid when the chat continues.
|
|
276
|
+
const result = data.result ?? createToolCallError(
|
|
277
|
+
'Tool call was interrupted. No result is available.'
|
|
278
|
+
);
|
|
278
279
|
return new ToolCallChatResponseContentImpl(
|
|
279
280
|
data.id,
|
|
280
281
|
data.name,
|
|
281
282
|
data.arguments,
|
|
282
|
-
|
|
283
|
+
true,
|
|
283
284
|
result,
|
|
284
285
|
data.data
|
|
285
286
|
);
|
package/src/common/chat-model.ts
CHANGED
|
@@ -488,7 +488,6 @@ export interface ToolCallContentData {
|
|
|
488
488
|
id?: string;
|
|
489
489
|
name?: string;
|
|
490
490
|
arguments?: string;
|
|
491
|
-
finished?: boolean;
|
|
492
491
|
result?: ToolCallResult;
|
|
493
492
|
data?: Record<string, string>;
|
|
494
493
|
}
|
|
@@ -568,12 +567,32 @@ export interface ToolCallChatResponseContent extends Required<ChatResponseConten
|
|
|
568
567
|
/** Resolves when the tool call requires user confirmation (show Allow/Deny UI). */
|
|
569
568
|
needsUserConfirmation: Promise<void>;
|
|
570
569
|
whenFinished: Promise<void>;
|
|
570
|
+
/**
|
|
571
|
+
* Provider-specific metadata about the tool call that the language model needs back on
|
|
572
|
+
* subsequent turns (e.g. Google's `thoughtSignature`, cache pointers). The full record is
|
|
573
|
+
* passed to the model via {@link toLanguageModelMessage} as `ToolUseMessage.data`.
|
|
574
|
+
*/
|
|
571
575
|
data?: Record<string, string>;
|
|
576
|
+
/**
|
|
577
|
+
* Fires when the serialized form of this tool call changes outside of the agent's stream
|
|
578
|
+
* (e.g. after a renderer persists intermediate state via {@link updateResult}). The
|
|
579
|
+
* parent {@link ChatResponse} forwards this event so chat-session auto-save picks up
|
|
580
|
+
* the change.
|
|
581
|
+
*/
|
|
582
|
+
readonly onDidChange: Event<void>;
|
|
572
583
|
confirm(): void;
|
|
573
584
|
deny(reason?: string): void;
|
|
574
585
|
cancelConfirmation(reason?: unknown): void;
|
|
575
586
|
/** Signal that this tool call needs user confirmation. Resolves the needsUserConfirmation promise. */
|
|
576
587
|
requestUserConfirmation(): void;
|
|
588
|
+
/**
|
|
589
|
+
* Update the tool call's result without marking it finished. Use this to persist
|
|
590
|
+
* intermediate state for long-running tools (e.g. the user-interaction wizard) so
|
|
591
|
+
* progress survives chat-session reloads. On restore the tool call is always marked
|
|
592
|
+
* finished (no live handler exists anymore), so a partial result must be
|
|
593
|
+
* self-describing; consumers should not rely on `finished` to tell partial from final.
|
|
594
|
+
*/
|
|
595
|
+
updateResult(result: ToolCallResult): void;
|
|
577
596
|
/**
|
|
578
597
|
* Mark the tool call as completed with the given result.
|
|
579
598
|
*
|
|
@@ -2310,7 +2329,17 @@ export class ToolCallChatResponseContentImpl implements ToolCallChatResponseCont
|
|
|
2310
2329
|
protected _whenFinished: Promise<void>;
|
|
2311
2330
|
protected _finishedResolver?: () => void;
|
|
2312
2331
|
|
|
2313
|
-
|
|
2332
|
+
protected readonly _onDidChangeEmitter = new Emitter<void>();
|
|
2333
|
+
readonly onDidChange: Event<void> = this._onDidChangeEmitter.event;
|
|
2334
|
+
|
|
2335
|
+
constructor(
|
|
2336
|
+
id?: string,
|
|
2337
|
+
name?: string,
|
|
2338
|
+
arg_string?: string,
|
|
2339
|
+
finished?: boolean,
|
|
2340
|
+
result?: ToolCallResult,
|
|
2341
|
+
data?: Record<string, string>
|
|
2342
|
+
) {
|
|
2314
2343
|
this._id = id;
|
|
2315
2344
|
this._name = name;
|
|
2316
2345
|
this._arguments = arg_string;
|
|
@@ -2426,6 +2455,11 @@ export class ToolCallChatResponseContentImpl implements ToolCallChatResponseCont
|
|
|
2426
2455
|
}
|
|
2427
2456
|
}
|
|
2428
2457
|
|
|
2458
|
+
updateResult(result: ToolCallResult): void {
|
|
2459
|
+
this._result = result;
|
|
2460
|
+
this._onDidChangeEmitter.fire();
|
|
2461
|
+
}
|
|
2462
|
+
|
|
2429
2463
|
cancelConfirmation(reason?: unknown): void {
|
|
2430
2464
|
if (this._confirmationRejecter) {
|
|
2431
2465
|
this._confirmationRejecter(reason);
|
|
@@ -2436,6 +2470,7 @@ export class ToolCallChatResponseContentImpl implements ToolCallChatResponseCont
|
|
|
2436
2470
|
this._finished = true;
|
|
2437
2471
|
this._result = result;
|
|
2438
2472
|
this.resolveFinished();
|
|
2473
|
+
this._onDidChangeEmitter.fire();
|
|
2439
2474
|
}
|
|
2440
2475
|
|
|
2441
2476
|
protected resolveFinished(): void {
|
|
@@ -2523,16 +2558,19 @@ export class ToolCallChatResponseContentImpl implements ToolCallChatResponseCont
|
|
|
2523
2558
|
}
|
|
2524
2559
|
|
|
2525
2560
|
toSerializable(): SerializableChatResponseContentData<ToolCallContentData> {
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
}
|
|
2561
|
+
// `finished` is intentionally not persisted: on restore there is no live handler,
|
|
2562
|
+
// so every restored tool call is necessarily finished. Whether the result is
|
|
2563
|
+
// partial or final must be encoded in the result itself.
|
|
2564
|
+
const data: ToolCallContentData = {
|
|
2565
|
+
id: this._id,
|
|
2566
|
+
name: this._name,
|
|
2567
|
+
arguments: this._arguments,
|
|
2568
|
+
result: this._result
|
|
2535
2569
|
};
|
|
2570
|
+
if (this._data && Object.keys(this._data).length > 0) {
|
|
2571
|
+
data.data = this._data;
|
|
2572
|
+
}
|
|
2573
|
+
return { kind: 'toolCall', data };
|
|
2536
2574
|
}
|
|
2537
2575
|
}
|
|
2538
2576
|
|
|
@@ -2793,6 +2831,10 @@ class ChatResponseImpl implements ChatResponse {
|
|
|
2793
2831
|
fittingTool.merge?.(nextContent);
|
|
2794
2832
|
} else {
|
|
2795
2833
|
this._content.push(nextContent);
|
|
2834
|
+
// Forward content-level change events (e.g. partial-result updates from a
|
|
2835
|
+
// renderer) so auto-save can persist them. Without this, mutations that
|
|
2836
|
+
// don't go through addContent/merge are invisible to listeners.
|
|
2837
|
+
nextContent.onDidChange(() => this._onDidChangeEmitter.fire());
|
|
2796
2838
|
}
|
|
2797
2839
|
} else {
|
|
2798
2840
|
const lastElement = this._content.length > 0
|