@@ -1196,16 +1196,14 @@ export interface SessionFsReaddirParams {
11961196 path : string ;
11971197}
11981198
1199- export interface SessionFsDirEntry {
1200- name : string ;
1201- type : "file" | "directory" ;
1202- }
1203-
12041199export interface SessionFsReaddirWithTypesResult {
12051200 /**
12061201 * Directory entries with type information
12071202 */
1208- entries : SessionFsDirEntry [ ] ;
1203+ entries : {
1204+ name : string ;
1205+ type : "file" | "directory" ;
1206+ } [ ] ;
12091207}
12101208
12111209export interface SessionFsReaddirWithTypesParams {
@@ -1378,10 +1376,7 @@ export function createSessionRpc(connection: MessageConnection, sessionId: strin
13781376 } ;
13791377}
13801378
1381- /**
1382- * Handler interface for the `sessionFs` client API group.
1383- * Implement this to provide a custom sessionFs backend.
1384- */
1379+ /** Handler for `sessionFs` client session API methods. */
13851380export interface SessionFsHandler {
13861381 readFile ( params : SessionFsReadFileParams ) : Promise < SessionFsReadFileResult > ;
13871382 writeFile ( params : SessionFsWriteFileParams ) : Promise < void > ;
@@ -1395,32 +1390,89 @@ export interface SessionFsHandler {
13951390 rename ( params : SessionFsRenameParams ) : Promise < void > ;
13961391}
13971392
1398- /** All client API handler groups. Each group is optional . */
1399- export interface ClientApiHandlers {
1393+ /** All client session API handler groups. */
1394+ export interface ClientSessionApiHandlers {
14001395 sessionFs ?: SessionFsHandler ;
14011396}
14021397
14031398/**
1404- * Register client API handlers on a JSON-RPC connection.
1399+ * Register client session API handlers on a JSON-RPC connection.
14051400 * The server calls these methods to delegate work to the client.
1406- * Methods for unregistered groups will respond with a standard JSON-RPC
1407- * method-not-found error .
1401+ * Each incoming call includes a `sessionId` in the params; the registration
1402+ * function uses `getHandlers` to resolve the session's handlers .
14081403 */
1409- export function registerClientApiHandlers (
1404+ export function registerClientSessionApiHandlers (
14101405 connection : MessageConnection ,
1411- handlers : ClientApiHandlers ,
1406+ getHandlers : ( sessionId : string ) => ClientSessionApiHandlers | undefined ,
14121407) : void {
1413- if ( handlers . sessionFs ) {
1414- const h = handlers . sessionFs ! ;
1415- connection . onRequest ( "sessionFs.readFile" , ( params : SessionFsReadFileParams ) => h . readFile ( params ) ) ;
1416- connection . onRequest ( "sessionFs.writeFile" , ( params : SessionFsWriteFileParams ) => h . writeFile ( params ) ) ;
1417- connection . onRequest ( "sessionFs.appendFile" , ( params : SessionFsAppendFileParams ) => h . appendFile ( params ) ) ;
1418- connection . onRequest ( "sessionFs.exists" , ( params : SessionFsExistsParams ) => h . exists ( params ) ) ;
1419- connection . onRequest ( "sessionFs.stat" , ( params : SessionFsStatParams ) => h . stat ( params ) ) ;
1420- connection . onRequest ( "sessionFs.mkdir" , ( params : SessionFsMkdirParams ) => h . mkdir ( params ) ) ;
1421- connection . onRequest ( "sessionFs.readdir" , ( params : SessionFsReaddirParams ) => h . readdir ( params ) ) ;
1422- connection . onRequest ( "sessionFs.readdirWithTypes" , ( params : SessionFsReaddirWithTypesParams ) => h . readdirWithTypes ( params ) ) ;
1423- connection . onRequest ( "sessionFs.rm" , ( params : SessionFsRmParams ) => h . rm ( params ) ) ;
1424- connection . onRequest ( "sessionFs.rename" , ( params : SessionFsRenameParams ) => h . rename ( params ) ) ;
1425- }
1408+ connection . onRequest ( "sessionFs.readFile" , async ( params : SessionFsReadFileParams ) => {
1409+ const handlers = getHandlers ( params . sessionId ) ;
1410+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1411+ const handler = handlers . sessionFs ;
1412+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1413+ return handler . readFile ( params ) ;
1414+ } ) ;
1415+ connection . onRequest ( "sessionFs.writeFile" , async ( params : SessionFsWriteFileParams ) => {
1416+ const handlers = getHandlers ( params . sessionId ) ;
1417+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1418+ const handler = handlers . sessionFs ;
1419+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1420+ return handler . writeFile ( params ) ;
1421+ } ) ;
1422+ connection . onRequest ( "sessionFs.appendFile" , async ( params : SessionFsAppendFileParams ) => {
1423+ const handlers = getHandlers ( params . sessionId ) ;
1424+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1425+ const handler = handlers . sessionFs ;
1426+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1427+ return handler . appendFile ( params ) ;
1428+ } ) ;
1429+ connection . onRequest ( "sessionFs.exists" , async ( params : SessionFsExistsParams ) => {
1430+ const handlers = getHandlers ( params . sessionId ) ;
1431+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1432+ const handler = handlers . sessionFs ;
1433+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1434+ return handler . exists ( params ) ;
1435+ } ) ;
1436+ connection . onRequest ( "sessionFs.stat" , async ( params : SessionFsStatParams ) => {
1437+ const handlers = getHandlers ( params . sessionId ) ;
1438+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1439+ const handler = handlers . sessionFs ;
1440+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1441+ return handler . stat ( params ) ;
1442+ } ) ;
1443+ connection . onRequest ( "sessionFs.mkdir" , async ( params : SessionFsMkdirParams ) => {
1444+ const handlers = getHandlers ( params . sessionId ) ;
1445+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1446+ const handler = handlers . sessionFs ;
1447+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1448+ return handler . mkdir ( params ) ;
1449+ } ) ;
1450+ connection . onRequest ( "sessionFs.readdir" , async ( params : SessionFsReaddirParams ) => {
1451+ const handlers = getHandlers ( params . sessionId ) ;
1452+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1453+ const handler = handlers . sessionFs ;
1454+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1455+ return handler . readdir ( params ) ;
1456+ } ) ;
1457+ connection . onRequest ( "sessionFs.readdirWithTypes" , async ( params : SessionFsReaddirWithTypesParams ) => {
1458+ const handlers = getHandlers ( params . sessionId ) ;
1459+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1460+ const handler = handlers . sessionFs ;
1461+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1462+ return handler . readdirWithTypes ( params ) ;
1463+ } ) ;
1464+ connection . onRequest ( "sessionFs.rm" , async ( params : SessionFsRmParams ) => {
1465+ const handlers = getHandlers ( params . sessionId ) ;
1466+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1467+ const handler = handlers . sessionFs ;
1468+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1469+ return handler . rm ( params ) ;
1470+ } ) ;
1471+ connection . onRequest ( "sessionFs.rename" , async ( params : SessionFsRenameParams ) => {
1472+ const handlers = getHandlers ( params . sessionId ) ;
1473+ if ( ! handlers ) throw new Error ( `No session found for sessionId: ${ params . sessionId } ` ) ;
1474+ const handler = handlers . sessionFs ;
1475+ if ( ! handler ) throw new Error ( `No sessionFs handler registered for session: ${ params . sessionId } ` ) ;
1476+ return handler . rename ( params ) ;
1477+ } ) ;
14261478}
0 commit comments