Skip to content

Commit a09aea9

Browse files
committed
Improve tool call handling
1 parent 99f2f1f commit a09aea9

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

apps/desktop/src/lib/codegen/claude.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type ClaudeMessage, type ClaudeSessionDetails } from '$lib/codegen/types';
22
import { hasTauriExtra } from '$lib/state/backendQuery';
3-
import { invalidatesItem, providesItem, ReduxTag } from '$lib/state/tags';
3+
import { providesItem, ReduxTag } from '$lib/state/tags';
44
import { InjectionToken } from '@gitbutler/shared/context';
55
import type { ClientState } from '$lib/state/clientState.svelte';
66

@@ -44,10 +44,7 @@ function injectEndpoints(api: ClientState['backendApi']) {
4444
command: 'claude_send_message',
4545
actionName: 'Send message'
4646
},
47-
query: (args) => args,
48-
invalidatesTags: (_result, _error, args) => [
49-
invalidatesItem(ReduxTag.EditChangesSinceInitial, args.projectId + args.stackId)
50-
]
47+
query: (args) => args
5148
}),
5249
getSessionDetails: build.query<
5350
ClaudeSessionDetails,
@@ -63,7 +60,7 @@ function injectEndpoints(api: ClientState['backendApi']) {
6360
extraOptions: { command: 'claude_get_messages' },
6461
query: (args) => args,
6562
providesTags: (_result, _error, args) => [
66-
...providesItem(ReduxTag.EditChangesSinceInitial, args.projectId + args.stackId)
63+
...providesItem(ReduxTag.ClaudeCodeTranscript, args.projectId + args.stackId)
6764
],
6865
async onCacheEntryAdded(arg, lifecycleApi) {
6966
if (!hasTauriExtra(lifecycleApi.extra)) {

apps/desktop/src/lib/codegen/messages.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* This module is responsible for taking the messages from a near-incomprehesable mess into something _vaugly_ useful.
33
*/
44

5+
import { isDefined } from '@gitbutler/ui/utils/typeguards';
56
import type { ClaudeMessage } from '$lib/codegen/types';
67

78
export type Message =
@@ -77,9 +78,10 @@ export function formatMessages(events: ClaudeMessage[]): Message[] {
7778
const result = content[0]!;
7879
const foundToolCall = toolCalls[result.tool_use_id];
7980
if (!foundToolCall) {
80-
return [];
81-
} else if (!result.content) {
82-
foundToolCall.result = undefined;
81+
// This should never happen
82+
continue;
83+
} else if (!isDefined(result.content)) {
84+
foundToolCall.result = 'Tool completed with no output';
8385
} else if (typeof result.content === 'string') {
8486
foundToolCall.result = result.content;
8587
} else if (result.content[0]!.type === 'text') {

0 commit comments

Comments
 (0)