Skip to content

Commit 3054236

Browse files
olaservoclaude
andcommitted
fix: don't cache failed resource reads and rename force to bypassCache
Failed resource reads were cached in resourceContentMap, causing stale errors to be served on re-click instead of retrying. Errors now only set the display content without polluting the cache. Also renamed the `force` boolean parameter to a `{ bypassCache }` options object for self-documenting call sites. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 234b209 commit 3054236

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

client/src/App.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -893,12 +893,15 @@ const App = () => {
893893
setPromptContent(JSON.stringify(response, null, 2));
894894
};
895895

896-
const readResource = async (uri: string, force: boolean = false) => {
896+
const readResource = async (
897+
uri: string,
898+
{ bypassCache = false }: { bypassCache?: boolean } = {},
899+
) => {
897900
if (fetchingResources.has(uri)) {
898901
return;
899902
}
900903

901-
if (!force && resourceContentMap[uri]) {
904+
if (!bypassCache && resourceContentMap[uri]) {
902905
setResourceContent(resourceContentMap[uri]);
903906
return;
904907
}
@@ -930,10 +933,7 @@ const App = () => {
930933
} catch (error) {
931934
console.error(`[App] Failed to read resource ${uri}:`, error);
932935
const errorString = (error as Error).message ?? String(error);
933-
setResourceContentMap((prev) => ({
934-
...prev,
935-
[uri]: JSON.stringify({ error: errorString }),
936-
}));
936+
setResourceContent(JSON.stringify({ error: errorString }));
937937
} finally {
938938
setFetchingResources((prev) => {
939939
const next = new Set(prev);
@@ -1476,9 +1476,9 @@ const App = () => {
14761476
setResourceTemplates([]);
14771477
setNextResourceTemplateCursor(undefined);
14781478
}}
1479-
readResource={(uri, force) => {
1479+
readResource={(uri, opts) => {
14801480
clearError("resources");
1481-
readResource(uri, force);
1481+
readResource(uri, opts);
14821482
}}
14831483
selectedResource={selectedResource}
14841484
setSelectedResource={(resource) => {

client/src/components/ResourcesTab.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const ResourcesTab = ({
4646
clearResources: () => void;
4747
listResourceTemplates: () => void;
4848
clearResourceTemplates: () => void;
49-
readResource: (uri: string, force?: boolean) => void;
49+
readResource: (uri: string, opts?: { bypassCache?: boolean }) => void;
5050
selectedResource: Resource | null;
5151
setSelectedResource: (resource: Resource | null) => void;
5252
handleCompletion: (
@@ -229,7 +229,9 @@ const ResourcesTab = ({
229229
<Button
230230
variant="outline"
231231
size="sm"
232-
onClick={() => readResource(selectedResource.uri, true)}
232+
onClick={() =>
233+
readResource(selectedResource.uri, { bypassCache: true })
234+
}
233235
>
234236
<RefreshCw className="w-4 h-4 mr-2" />
235237
Refresh

0 commit comments

Comments
 (0)