@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.
Files changed (45) hide show
  1. package/lib/browser/chat-session-store-impl.d.ts.map +1 -1
  2. package/lib/browser/chat-session-store-impl.js +7 -2
  3. package/lib/browser/chat-session-store-impl.js.map +1 -1
  4. package/lib/common/chat-content-deserializer.d.ts.map +1 -1
  5. package/lib/common/chat-content-deserializer.js +5 -6
  6. package/lib/common/chat-content-deserializer.js.map +1 -1
  7. package/lib/common/chat-content-deserializer.spec.js +12 -1
  8. package/lib/common/chat-content-deserializer.spec.js.map +1 -1
  9. package/lib/common/chat-model.d.ts +23 -1
  10. package/lib/common/chat-model.d.ts.map +1 -1
  11. package/lib/common/chat-model.js +23 -9
  12. package/lib/common/chat-model.js.map +1 -1
  13. package/lib/common/chat-response-model.spec.js +15 -0
  14. package/lib/common/chat-response-model.spec.js.map +1 -1
  15. package/lib/common/chat-service.d.ts.map +1 -1
  16. package/lib/common/chat-service.js +4 -2
  17. package/lib/common/chat-service.js.map +1 -1
  18. package/lib/common/chat-session-store.d.ts +8 -0
  19. package/lib/common/chat-session-store.d.ts.map +1 -1
  20. package/lib/common/index.d.ts +1 -0
  21. package/lib/common/index.d.ts.map +1 -1
  22. package/lib/common/index.js +1 -0
  23. package/lib/common/index.js.map +1 -1
  24. package/lib/common/provider-error-formatter.d.ts +16 -0
  25. package/lib/common/provider-error-formatter.d.ts.map +1 -0
  26. package/lib/common/provider-error-formatter.js +111 -0
  27. package/lib/common/provider-error-formatter.js.map +1 -0
  28. package/lib/common/provider-error-formatter.spec.d.ts +2 -0
  29. package/lib/common/provider-error-formatter.spec.d.ts.map +1 -0
  30. package/lib/common/provider-error-formatter.spec.js +167 -0
  31. package/lib/common/provider-error-formatter.spec.js.map +1 -0
  32. package/lib/common/tool-call-response-content.spec.js +17 -0
  33. package/lib/common/tool-call-response-content.spec.js.map +1 -1
  34. package/package.json +10 -10
  35. package/src/browser/chat-session-store-impl.ts +7 -2
  36. package/src/common/chat-content-deserializer.spec.ts +16 -1
  37. package/src/common/chat-content-deserializer.ts +7 -6
  38. package/src/common/chat-model.ts +53 -11
  39. package/src/common/chat-response-model.spec.ts +20 -1
  40. package/src/common/chat-service.ts +4 -2
  41. package/src/common/chat-session-store.ts +8 -0
  42. package/src/common/index.ts +1 -0
  43. package/src/common/provider-error-formatter.spec.ts +190 -0
  44. package/src/common/provider-error-formatter.ts +110 -0
  45. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider-error-formatter.spec.d.ts.map
@@ -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-next.59+044f7bfc5",
3
+ "version": "1.72.0",
4
4
  "description": "Theia - AI Chat Extension",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.72.0-next.59+044f7bfc5",
7
- "@theia/core": "1.72.0-next.59+044f7bfc5",
8
- "@theia/editor": "1.72.0-next.59+044f7bfc5",
9
- "@theia/file-search": "1.72.0-next.59+044f7bfc5",
10
- "@theia/filesystem": "1.72.0-next.59+044f7bfc5",
11
- "@theia/monaco": "1.72.0-next.59+044f7bfc5",
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-next.59+044f7bfc5",
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.71.0"
52
+ "@theia/ext-scripts": "1.72.0"
53
53
  },
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "044f7bfc503932372f324434beabbf5422dc583f"
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) ? { ...s, saveDate: Date.now() } : { model: s, saveDate: Date.now() })
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
- const wasInterrupted = data.finished !== true && data.result === undefined;
274
- const finished = wasInterrupted || data.finished;
275
- const result = wasInterrupted
276
- ? createToolCallError('Tool call was interrupted. No result is available.')
277
- : data.result;
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
- finished,
283
+ true,
283
284
  result,
284
285
  data.data
285
286
  );
@@ -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
- constructor(id?: string, name?: string, arg_string?: string, finished?: boolean, result?: ToolCallResult, data?: Record<string, string>) {
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
- return {
2527
- kind: 'toolCall',
2528
- data: {
2529
- id: this._id,
2530
- name: this._name,
2531
- arguments: this._arguments,
2532
- finished: this._finished,
2533
- result: this._result
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