@@ -3,34 +3,33 @@ import { Session } from "../common/session.js";
33import { UserConfig } from "../common/config.js" ;
44import { Telemetry } from "../telemetry/telemetry.js" ;
55import 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
88type PayloadOf < K extends keyof SessionEvents > = SessionEvents [ K ] [ 0 ] ;
99
1010type 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