UNPKG

test-wuying-agentbay-sdk

Version:

TypeScript SDK for interacting with the Wuying AgentBay cloud runtime environment

413 lines (285 loc) 11.5 kB
# Class: Session ## 🔧 Related Tutorial - [Session Management Guide](../../../../../docs/guides/common-features/basics/session-management.md) - Detailed tutorial on session lifecycle and management Represents a session in the AgentBay cloud environment. ## Table of contents ### Properties ### Methods - [callMcpTool](#callmcptool) - [delete](#delete) - [getLabels](#getlabels) - [getLink](#getlink) - [getLinkAsync](#getlinkasync) - [info](#info) - [listMcpTools](#listmcptools) - [setLabels](#setlabels) ## Properties ```typescript agent: [`Agent`](../advanced/agent.md) browser: [`Browser`](../../browser-use/browser.md) code: [`Code`](../../codespace/code.md) command: [`Command`](command.md) computer: [`Computer`](../../computer-use/computer.md) context: [`ContextManager`](context-manager.md) enableBrowserReplay: `boolean` = `false` fileSystem: [`FileSystem`](filesystem.md) fileTransferContextId: ``null`` | `string` = `null` httpPort: `string` = `""` isVpc: `boolean` = `false` mcpTools: `McpTool`[] = `[]` mobile: [`Mobile`](../../mobile-use/mobile.md) networkInterfaceIp: `string` = `""` oss: [`Oss`](../advanced/oss.md) recordContextId: ``null`` | `string` = `null` resourceUrl: `string` = `""` sessionId: `string` token: `string` = `""` ``` ## Methods ### callMcpTool ▸ **callMcpTool**(`toolName`, `args`, `autoGenSession?`): `Promise`\<``McpToolResult``\> Call an MCP tool and return the result in a format compatible with Agent. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `toolName` | `string` | `undefined` | Name of the MCP tool to call | | `args` | `any` | `undefined` | Arguments to pass to the tool | | `autoGenSession` | `boolean` | `false` | Whether to automatically generate session if not exists (default: false) | #### Returns `Promise`\<``McpToolResult``\> McpToolResult containing the response data **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { const shellResult = await result.session.callMcpTool('shell', { command: "echo 'Hello'" }); console.log(`Output: ${shellResult.data}`); await result.session.delete(); } ``` **`Remarks`** For press_keys tool, key names are automatically normalized to correct case format. This improves case compatibility (e.g., "CTRL" -> "Ctrl", "tab" -> "Tab"). ___ ### delete ▸ **delete**(`syncContext?`): `Promise`\<``DeleteResult``\> Deletes the session and releases all associated resources. #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `syncContext` | `boolean` | `false` | Whether to synchronize context data before deletion. If true, uploads all context data to OSS. If false but browser replay is enabled, syncs only the recording context. Defaults to false. | #### Returns `Promise`\<``DeleteResult``\> Promise resolving to DeleteResult containing: - success: Whether deletion succeeded - requestId: Unique identifier for this API request - errorMessage: Error description if deletion failed **`Throws`** Error if the API call fails or network issues occur. **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { await result.session.fileSystem.writeFile('/tmp/data.txt', 'data'); const deleteResult = await result.session.delete(true); console.log('Session deleted:', deleteResult.success); } ``` **`Remarks`** **Behavior:** - If `syncContext=true`: Uploads all context data to OSS before deletion - If `syncContext=false` but browser replay enabled: Syncs only recording context - If `syncContext=false` and no browser replay: Deletes immediately without sync - Continues with deletion even if context sync fails - Releases all associated resources (browser, computer, mobile, etc.) **Best Practices:** - Use `syncContext=true` when you need to preserve context data for later retrieval - For temporary sessions, use `syncContext=false` for faster cleanup - Always call `delete()` when done to avoid resource leaks - Handle deletion errors gracefully in production code **`See`** [info](#info), [ContextManager.sync](context-manager.md#sync) ___ ### getLabels ▸ **getLabels**(): `Promise`\<`OperationResult`\> Gets the labels for this session. #### Returns `Promise`\<`OperationResult`\> OperationResult containing the labels as data and request ID **`Throws`** Error if the operation fails (matching Python SessionError) **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { await result.session.setLabels({ project: 'demo', env: 'test' }); const getResult = await result.session.getLabels(); console.log('Labels:', JSON.stringify(getResult.data)); await result.session.delete(); } ``` ___ ### getLink ▸ **getLink**(`protocolType?`, `port?`, `options?`): `Promise`\<`OperationResult`\> Retrieves an access link for the session. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `protocolType?` | `string` | Protocol type for the link (optional, reserved for future use) | | `port?` | `number` | Specific port number to access (must be in range [30100, 30199]). If not specified, returns the default session link. | | `options?` | `string` | - | #### Returns `Promise`\<`OperationResult`\> Promise resolving to OperationResult containing: - success: Whether the operation succeeded - data: String URL for accessing the session - requestId: Unique identifier for this API request - errorMessage: Error description if operation failed **`Throws`** Error if the API call fails or port is out of valid range. **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { const linkResult = await result.session.getLink(); console.log(`Session link: ${linkResult.data}`); await result.session.delete(); } ``` **`Remarks`** **Behavior:** - Without port: Returns the default session access URL - With port: Returns URL for accessing specific port-mapped service - Port must be in range [30100, 30199] for port forwarding - For ADB connections, use `session.mobile.getAdbUrl()` with appropriate ADB public key **Best Practices:** - Use default link for general session access - Use port-specific links when you've started services on specific ports - Validate port range before calling to avoid errors **`See`** [info](#info) ___ ### getLinkAsync ▸ **getLinkAsync**(`protocolType?`, `port?`, `options?`): `Promise`\<`OperationResult`\> Asynchronously get a link associated with the current session. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `protocolType?` | `string` | Optional protocol type to use for the link | | `port?` | `number` | Optional port to use for the link (must be in range [30100, 30199]) | | `options?` | `string` | - | #### Returns `Promise`\<`OperationResult`\> OperationResult containing the link as data and request ID **`Throws`** Error if the operation fails (matching Python SessionError) **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { const linkResult = await result.session.getLinkAsync(undefined, 30150); console.log(`Port link: ${linkResult.data}`); await result.session.delete(); } ``` ___ ### info ▸ **info**(): `Promise`\<`OperationResult`\> Retrieves detailed information about the current session. #### Returns `Promise`\<`OperationResult`\> Promise resolving to OperationResult containing: - success: Whether the operation succeeded (always true if no exception) - data: SessionInfo object with the following fields: - sessionId (string): The session identifier - resourceUrl (string): URL for accessing the session - appId (string): Application ID (for desktop sessions) - authCode (string): Authentication code - connectionProperties (string): Connection configuration - resourceId (string): Resource identifier - resourceType (string): Type of resource (e.g., "Desktop") - ticket (string): Access ticket - requestId: Unique identifier for this API request - errorMessage: Error description if operation failed **`Throws`** Error if the API request fails or response is invalid. **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { const infoResult = await result.session.info(); console.log(`Session ID: ${infoResult.data.sessionId}`); console.log(`Resource URL: ${infoResult.data.resourceUrl}`); await result.session.delete(); } ``` **`Remarks`** **Behavior:** - This method calls the GetMcpResource API to retrieve session metadata - The returned SessionInfo contains: - sessionId: The session identifier - resourceUrl: URL for accessing the session - Desktop-specific fields (appId, authCode, connectionProperties, etc.) are populated from the DesktopInfo section of the API response - Session info is retrieved from the AgentBay API in real-time - The resourceUrl can be used for browser-based access - Desktop-specific fields (appId, authCode) are only populated for desktop sessions - This method does not modify the session state **`See`** [delete](#delete), [getLink](#getlink) ___ ### listMcpTools ▸ **listMcpTools**(`imageId?`): `Promise`\<`McpToolsResult`\> List MCP tools available for this session. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `imageId?` | `string` | Optional image ID, defaults to session's imageId or "linux_latest" | #### Returns `Promise`\<`McpToolsResult`\> McpToolsResult containing tools list and request ID **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { const toolsResult = await result.session.listMcpTools(); console.log(`Found ${toolsResult.tools.length} MCP tools`); await result.session.delete(); } ``` ___ ### setLabels ▸ **setLabels**(`labels`): `Promise`\<`OperationResult`\> Sets the labels for this session. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `labels` | `Record`\<`string`, `string`\> | The labels to set for the session. | #### Returns `Promise`\<`OperationResult`\> OperationResult indicating success or failure with request ID **`Throws`** Error if the operation fails (matching Python SessionError) **`Example`** ```typescript const agentBay = new AgentBay({ apiKey: 'your_api_key' }); const result = await agentBay.create(); if (result.success) { const setResult = await result.session.setLabels({ project: 'demo', env: 'test' }); console.log('Labels set:', setResult.success); await result.session.delete(); } ``` ## Related Resources - [FileSystem API Reference](filesystem.md) - [Command API Reference](command.md) - [Context API Reference](context.md) - [Context Manager API Reference](context-manager.md) - [OSS API Reference](../../common-features/advanced/oss.md)