Skip to content

Commit 235ffcf

Browse files
committed
chore: PR improvements and use notify one single change
1 parent c5b696b commit 235ffcf

File tree

1 file changed

+11
-18
lines changed

1 file changed

+11
-18
lines changed

src/resources/resource.ts

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,33 @@ import { Session } from "../common/session.js";
33
import { UserConfig } from "../common/config.js";
44
import { Telemetry } from "../telemetry/telemetry.js";
55
import type { SessionEvents } from "../common/session.js";
6-
import { ReadResourceCallback, RegisteredResource, ResourceMetadata } from "@modelcontextprotocol/sdk/server/mcp.js";
6+
import { ReadResourceCallback, ResourceMetadata } from "@modelcontextprotocol/sdk/server/mcp.js";
77

88
type PayloadOf<K extends keyof SessionEvents> = SessionEvents[K][0];
99

1010
type ResourceConfiguration = { name: string; uri: string; config: ResourceMetadata };
1111

12-
export function ReactiveResource<V, KE extends readonly (keyof SessionEvents)[]>(
12+
export function ReactiveResource<Value, RelevantEvents extends readonly (keyof SessionEvents)[]>(
1313
{ name, uri, config: resourceConfig }: ResourceConfiguration,
1414
{
1515
initial,
1616
events,
1717
}: {
18-
initial: V;
19-
events: KE;
18+
initial: Value;
19+
events: RelevantEvents;
2020
}
2121
) {
22-
type E = KE[number];
22+
type SomeEvent = RelevantEvents[number];
2323

2424
abstract class NewReactiveResource {
25-
private registeredResource?: RegisteredResource;
2625
protected readonly session: Session;
2726
protected readonly config: UserConfig;
28-
protected current: V;
27+
protected current: Value;
2928

3029
constructor(
3130
protected readonly server: Server,
3231
protected readonly telemetry: Telemetry,
33-
current?: V
32+
current?: Value
3433
) {
3534
this.current = current ?? initial;
3635
this.session = server.session;
@@ -45,12 +44,7 @@ export function ReactiveResource<V, KE extends readonly (keyof SessionEvents)[]>
4544
}
4645

4746
public register(): void {
48-
this.registeredResource = this.server.mcpServer.registerResource(
49-
name,
50-
uri,
51-
resourceConfig,
52-
this.resourceCallback
53-
);
47+
this.server.mcpServer.registerResource(name, uri, resourceConfig, this.resourceCallback);
5448
}
5549

5650
private resourceCallback: ReadResourceCallback = (uri) => ({
@@ -64,15 +58,14 @@ export function ReactiveResource<V, KE extends readonly (keyof SessionEvents)[]>
6458
});
6559

6660
private triggerUpdate() {
67-
this.registeredResource?.update({});
68-
this.server.mcpServer.sendResourceListChanged();
61+
void this.server.mcpServer.server.sendResourceUpdated({ uri });
6962
}
7063

71-
reduceApply(eventName: E, ...event: PayloadOf<E>[]): void {
64+
reduceApply(eventName: SomeEvent, ...event: PayloadOf<SomeEvent>[]): void {
7265
this.current = this.reduce(eventName, ...event);
7366
}
7467

75-
protected abstract reduce(eventName: E, ...event: PayloadOf<E>[]): V;
68+
protected abstract reduce(eventName: SomeEvent, ...event: PayloadOf<SomeEvent>[]): Value;
7669
abstract toOutput(): string;
7770
}
7871

0 commit comments

Comments
 (0)