wuying-agentbay-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/README.md +122 -0
  2. package/dist/src/adb/adb.d.ts +20 -0
  3. package/dist/src/adb/adb.js +57 -0
  4. package/dist/src/adb/index.d.ts +1 -0
  5. package/dist/src/adb/index.js +17 -0
  6. package/dist/src/agent-bay.d.ts +68 -0
  7. package/dist/src/agent-bay.js +213 -0
  8. package/dist/src/api/client.d.ts +191 -0
  9. package/dist/src/api/client.js +629 -0
  10. package/dist/src/api/index.d.ts +4 -0
  11. package/dist/src/api/index.js +26 -0
  12. package/dist/src/api/models/CallMcpToolRequest.d.ts +21 -0
  13. package/dist/src/api/models/CallMcpToolRequest.js +71 -0
  14. package/dist/src/api/models/CallMcpToolResponse.d.ts +19 -0
  15. package/dist/src/api/models/CallMcpToolResponse.js +68 -0
  16. package/dist/src/api/models/CallMcpToolResponseBody.d.ts +19 -0
  17. package/dist/src/api/models/CallMcpToolResponseBody.js +67 -0
  18. package/dist/src/api/models/CreateMcpSessionRequest.d.ts +19 -0
  19. package/dist/src/api/models/CreateMcpSessionRequest.js +67 -0
  20. package/dist/src/api/models/CreateMcpSessionResponse.d.ts +19 -0
  21. package/dist/src/api/models/CreateMcpSessionResponse.js +68 -0
  22. package/dist/src/api/models/CreateMcpSessionResponseBody.d.ts +20 -0
  23. package/dist/src/api/models/CreateMcpSessionResponseBody.js +71 -0
  24. package/dist/src/api/models/CreateMcpSessionResponseBodyData.d.ts +19 -0
  25. package/dist/src/api/models/CreateMcpSessionResponseBodyData.js +67 -0
  26. package/dist/src/api/models/DeleteContextRequest.d.ts +15 -0
  27. package/dist/src/api/models/DeleteContextRequest.js +59 -0
  28. package/dist/src/api/models/DeleteContextResponse.d.ts +19 -0
  29. package/dist/src/api/models/DeleteContextResponse.js +68 -0
  30. package/dist/src/api/models/DeleteContextResponseBody.d.ts +18 -0
  31. package/dist/src/api/models/DeleteContextResponseBody.js +65 -0
  32. package/dist/src/api/models/GetContextRequest.d.ts +16 -0
  33. package/dist/src/api/models/GetContextRequest.js +61 -0
  34. package/dist/src/api/models/GetContextResponse.d.ts +19 -0
  35. package/dist/src/api/models/GetContextResponse.js +68 -0
  36. package/dist/src/api/models/GetContextResponseBody.d.ts +20 -0
  37. package/dist/src/api/models/GetContextResponseBody.js +71 -0
  38. package/dist/src/api/models/GetContextResponseBodyData.d.ts +19 -0
  39. package/dist/src/api/models/GetContextResponseBodyData.js +67 -0
  40. package/dist/src/api/models/GetLabelRequest.d.ts +17 -0
  41. package/dist/src/api/models/GetLabelRequest.js +63 -0
  42. package/dist/src/api/models/GetLabelResponse.d.ts +19 -0
  43. package/dist/src/api/models/GetLabelResponse.js +68 -0
  44. package/dist/src/api/models/GetLabelResponseBody.d.ts +23 -0
  45. package/dist/src/api/models/GetLabelResponseBody.js +77 -0
  46. package/dist/src/api/models/GetLabelResponseBodyData.d.ts +14 -0
  47. package/dist/src/api/models/GetLabelResponseBodyData.js +57 -0
  48. package/dist/src/api/models/GetLinkRequest.d.ts +15 -0
  49. package/dist/src/api/models/GetLinkRequest.js +59 -0
  50. package/dist/src/api/models/GetLinkResponse.d.ts +19 -0
  51. package/dist/src/api/models/GetLinkResponse.js +68 -0
  52. package/dist/src/api/models/GetLinkResponseBody.d.ts +19 -0
  53. package/dist/src/api/models/GetLinkResponseBody.js +67 -0
  54. package/dist/src/api/models/GetMcpResourceRequest.d.ts +15 -0
  55. package/dist/src/api/models/GetMcpResourceRequest.js +59 -0
  56. package/dist/src/api/models/GetMcpResourceResponse.d.ts +19 -0
  57. package/dist/src/api/models/GetMcpResourceResponse.js +68 -0
  58. package/dist/src/api/models/GetMcpResourceResponseBody.d.ts +20 -0
  59. package/dist/src/api/models/GetMcpResourceResponseBody.js +71 -0
  60. package/dist/src/api/models/GetMcpResourceResponseBodyData.d.ts +17 -0
  61. package/dist/src/api/models/GetMcpResourceResponseBodyData.js +65 -0
  62. package/dist/src/api/models/GetMcpResourceResponseBodyDataDesktopInfo.d.ts +18 -0
  63. package/dist/src/api/models/GetMcpResourceResponseBodyDataDesktopInfo.js +65 -0
  64. package/dist/src/api/models/ListContextsRequest.d.ts +16 -0
  65. package/dist/src/api/models/ListContextsRequest.js +61 -0
  66. package/dist/src/api/models/ListContextsResponse.d.ts +19 -0
  67. package/dist/src/api/models/ListContextsResponse.js +68 -0
  68. package/dist/src/api/models/ListContextsResponseBody.d.ts +23 -0
  69. package/dist/src/api/models/ListContextsResponseBody.js +77 -0
  70. package/dist/src/api/models/ListContextsResponseBodyData.d.ts +19 -0
  71. package/dist/src/api/models/ListContextsResponseBodyData.js +67 -0
  72. package/dist/src/api/models/ListSessionRequest.d.ts +17 -0
  73. package/dist/src/api/models/ListSessionRequest.js +63 -0
  74. package/dist/src/api/models/ListSessionResponse.d.ts +19 -0
  75. package/dist/src/api/models/ListSessionResponse.js +68 -0
  76. package/dist/src/api/models/ListSessionResponseBody.d.ts +23 -0
  77. package/dist/src/api/models/ListSessionResponseBody.js +77 -0
  78. package/dist/src/api/models/ListSessionResponseBodyData.d.ts +14 -0
  79. package/dist/src/api/models/ListSessionResponseBodyData.js +57 -0
  80. package/dist/src/api/models/ModifyContextRequest.d.ts +16 -0
  81. package/dist/src/api/models/ModifyContextRequest.js +61 -0
  82. package/dist/src/api/models/ModifyContextResponse.d.ts +19 -0
  83. package/dist/src/api/models/ModifyContextResponse.js +68 -0
  84. package/dist/src/api/models/ModifyContextResponseBody.d.ts +18 -0
  85. package/dist/src/api/models/ModifyContextResponseBody.js +65 -0
  86. package/dist/src/api/models/ReleaseMcpSessionRequest.d.ts +15 -0
  87. package/dist/src/api/models/ReleaseMcpSessionRequest.js +59 -0
  88. package/dist/src/api/models/ReleaseMcpSessionResponse.d.ts +19 -0
  89. package/dist/src/api/models/ReleaseMcpSessionResponse.js +68 -0
  90. package/dist/src/api/models/ReleaseMcpSessionResponseBody.d.ts +18 -0
  91. package/dist/src/api/models/ReleaseMcpSessionResponseBody.js +65 -0
  92. package/dist/src/api/models/SetLabelRequest.d.ts +16 -0
  93. package/dist/src/api/models/SetLabelRequest.js +61 -0
  94. package/dist/src/api/models/SetLabelResponse.d.ts +19 -0
  95. package/dist/src/api/models/SetLabelResponse.js +68 -0
  96. package/dist/src/api/models/SetLabelResponseBody.d.ts +18 -0
  97. package/dist/src/api/models/SetLabelResponseBody.js +65 -0
  98. package/dist/src/api/models/model.d.ts +43 -0
  99. package/dist/src/api/models/model.js +89 -0
  100. package/dist/src/application/application.d.ts +88 -0
  101. package/dist/src/application/application.js +172 -0
  102. package/dist/src/application/index.d.ts +1 -0
  103. package/dist/src/application/index.js +17 -0
  104. package/dist/src/command/command.d.ts +43 -0
  105. package/dist/src/command/command.js +120 -0
  106. package/dist/src/command/index.d.ts +1 -0
  107. package/dist/src/command/index.js +17 -0
  108. package/dist/src/config.d.ts +15 -0
  109. package/dist/src/config.js +114 -0
  110. package/dist/src/context.d.ts +87 -0
  111. package/dist/src/context.js +208 -0
  112. package/dist/src/exceptions.d.ts +30 -0
  113. package/dist/src/exceptions.js +58 -0
  114. package/dist/src/filesystem/filesystem.d.ts +109 -0
  115. package/dist/src/filesystem/filesystem.js +245 -0
  116. package/dist/src/filesystem/index.d.ts +1 -0
  117. package/dist/src/filesystem/index.js +17 -0
  118. package/dist/src/index.d.ts +10 -0
  119. package/dist/src/index.js +32 -0
  120. package/dist/src/oss/index.d.ts +1 -0
  121. package/dist/src/oss/index.js +5 -0
  122. package/dist/src/oss/oss.d.ts +80 -0
  123. package/dist/src/oss/oss.js +233 -0
  124. package/dist/src/session.d.ts +99 -0
  125. package/dist/src/session.js +226 -0
  126. package/dist/src/ui/index.d.ts +1 -0
  127. package/dist/src/ui/index.js +17 -0
  128. package/dist/src/ui/ui.d.ts +95 -0
  129. package/dist/src/ui/ui.js +206 -0
  130. package/dist/src/utils/logger.d.ts +15 -0
  131. package/dist/src/utils/logger.js +48 -0
  132. package/dist/src/window/index.d.ts +1 -0
  133. package/dist/src/window/index.js +17 -0
  134. package/dist/src/window/window.d.ts +109 -0
  135. package/dist/src/window/window.js +220 -0
  136. package/dist/tests/agent-bay.test.d.ts +1 -0
  137. package/dist/tests/agent-bay.test.js +366 -0
  138. package/dist/tests/integration/context-persistence.test.d.ts +1 -0
  139. package/dist/tests/integration/context-persistence.test.js +226 -0
  140. package/dist/tests/integration/context-session.test.d.ts +1 -0
  141. package/dist/tests/integration/context-session.test.js +223 -0
  142. package/dist/tests/integration/window-operations.test.d.ts +1 -0
  143. package/dist/tests/integration/window-operations.test.js +228 -0
  144. package/dist/tests/unit/adb.test.d.ts +1 -0
  145. package/dist/tests/unit/adb.test.js +60 -0
  146. package/dist/tests/unit/agent-bay.test.d.ts +1 -0
  147. package/dist/tests/unit/agent-bay.test.js +182 -0
  148. package/dist/tests/unit/application.test.d.ts +1 -0
  149. package/dist/tests/unit/application.test.js +260 -0
  150. package/dist/tests/unit/command.test.d.ts +1 -0
  151. package/dist/tests/unit/command.test.js +252 -0
  152. package/dist/tests/unit/context.test.d.ts +1 -0
  153. package/dist/tests/unit/context.test.js +199 -0
  154. package/dist/tests/unit/filesystem.test.d.ts +1 -0
  155. package/dist/tests/unit/filesystem.test.js +493 -0
  156. package/dist/tests/unit/oss.test.d.ts +1 -0
  157. package/dist/tests/unit/oss.test.js +243 -0
  158. package/dist/tests/unit/session-labels.test.d.ts +1 -0
  159. package/dist/tests/unit/session-labels.test.js +138 -0
  160. package/dist/tests/unit/session-params.test.d.ts +1 -0
  161. package/dist/tests/unit/session-params.test.js +78 -0
  162. package/dist/tests/unit/session.test.d.ts +1 -0
  163. package/dist/tests/unit/session.test.js +204 -0
  164. package/dist/tests/unit/ui.test.d.ts +1 -0
  165. package/dist/tests/unit/ui.test.js +158 -0
  166. package/dist/tests/unit/window.test.d.ts +1 -0
  167. package/dist/tests/unit/window.test.js +331 -0
  168. package/dist/tests/utils/test-helpers.d.ts +35 -0
  169. package/dist/tests/utils/test-helpers.js +79 -0
  170. package/package.json +50 -0
package/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # TypeScript SDK for Wuying AgentBay
2
+
3
+ This directory contains the TypeScript implementation of the Wuying AgentBay SDK.
4
+
5
+ ## Prerequisites
6
+
7
+ - Node.js (v14 or later)
8
+ - npm (v6 or later)
9
+
10
+ ## Installation
11
+
12
+ ### For Development
13
+
14
+ Clone the repository and install dependencies:
15
+
16
+ ```bash
17
+ git clone https://github.com/aliyun/wuying-agentbay-sdk.git
18
+ cd wuying-agentbay-sdk/typescript
19
+ npm install
20
+ ```
21
+
22
+ ### For Usage in Your Project
23
+
24
+ ```bash
25
+ npm install wuying-agentbay-sdk
26
+ ```
27
+
28
+ ## Development Scripts
29
+
30
+ - **Build the project**:
31
+ ```bash
32
+ npm run build
33
+ ```
34
+
35
+ - **Run tests**:
36
+ ```bash
37
+ npm test
38
+ ```
39
+
40
+ - **Lint the code**:
41
+ ```bash
42
+ npm run lint
43
+ ```
44
+
45
+ - **Format the code**:
46
+ ```bash
47
+ npm run format
48
+ ```
49
+
50
+ ## Running Examples
51
+
52
+ You can run the example file using ts-node:
53
+
54
+ ```bash
55
+ npx ts-node examples/basic-usage.ts
56
+ ```
57
+
58
+ ## TypeScript-Specific Usage
59
+
60
+ ```typescript
61
+ import { AgentBay } from 'wuying-agentbay-sdk';
62
+
63
+ async function main() {
64
+ // Initialize with API key
65
+ const agentBay = new AgentBay({ apiKey: 'your_api_key' });
66
+
67
+ try {
68
+ // Create a session with labels
69
+ const session = await agentBay.create({
70
+ labels: {
71
+ purpose: 'demo',
72
+ environment: 'development'
73
+ }
74
+ });
75
+ log(`Session created with ID: ${session.sessionId}`);
76
+
77
+ // Execute a command
78
+ const result = await session.command.executeCommand('ls -la');
79
+ log(`Command result: ${result}`);
80
+
81
+ // Read a file
82
+ const content = await session.filesystem.readFile('/path/to/file.txt');
83
+ log(`File content: ${content}`);
84
+
85
+ // Get installed applications
86
+ const apps = await session.application.getInstalledApps(true, false, true);
87
+ log(`Found ${apps.length} installed applications`);
88
+
89
+ // List visible applications
90
+ const processes = await session.application.listVisibleApps();
91
+ log(`Found ${processes.length} visible applications`);
92
+
93
+ // List root windows
94
+ const windows = await session.window.listRootWindows();
95
+ log(`Found ${windows.length} root windows`);
96
+
97
+ // Get active window
98
+ const activeWindow = await session.window.getActiveWindow();
99
+ log(`Active window: ${activeWindow.title}`);
100
+
101
+ // Get session labels
102
+ const labels = await session.getLabels();
103
+ log(`Session labels: ${JSON.stringify(labels)}`);
104
+
105
+ // List sessions by labels
106
+ const filteredSessions = await agentBay.listByLabels({
107
+ purpose: 'demo'
108
+ });
109
+ log(`Found ${filteredSessions.length} matching sessions`);
110
+
111
+ // Clean up
112
+ await agentBay.delete(session);
113
+ log('Session deleted successfully');
114
+ } catch (error) {
115
+ logError('Error:', error);
116
+ }
117
+ }
118
+
119
+ main();
120
+ ```
121
+
122
+ For more detailed documentation, please refer to the main [README](../README.md) and [SDK Documentation](../docs/README.md) in the project root.
@@ -0,0 +1,20 @@
1
+ import { Session } from '../session';
2
+ /**
3
+ * Adb handles ADB operations in the AgentBay cloud environment.
4
+ */
5
+ export declare class Adb {
6
+ private session;
7
+ /**
8
+ * Create a new Adb instance.
9
+ *
10
+ * @param session - The session to use for ADB operations
11
+ */
12
+ constructor(session: Session);
13
+ /**
14
+ * Execute an ADB shell command in the mobile environment.
15
+ *
16
+ * @param command - The ADB shell command to execute
17
+ * @returns The output of the ADB shell command
18
+ */
19
+ shell(command: string): Promise<string>;
20
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adb = void 0;
4
+ const model_1 = require("../api/models/model");
5
+ /**
6
+ * Adb handles ADB operations in the AgentBay cloud environment.
7
+ */
8
+ class Adb {
9
+ /**
10
+ * Create a new Adb instance.
11
+ *
12
+ * @param session - The session to use for ADB operations
13
+ */
14
+ constructor(session) {
15
+ this.session = session;
16
+ }
17
+ /**
18
+ * Execute an ADB shell command in the mobile environment.
19
+ *
20
+ * @param command - The ADB shell command to execute
21
+ * @returns The output of the ADB shell command
22
+ */
23
+ async shell(command) {
24
+ try {
25
+ const args = {
26
+ command
27
+ };
28
+ const callToolRequest = new model_1.CallMcpToolRequest({
29
+ authorization: `Bearer ${this.session.getAPIKey()}`,
30
+ sessionId: this.session.getSessionId(),
31
+ name: 'shell',
32
+ args: JSON.stringify(args)
33
+ });
34
+ const response = await this.session.getClient().callMcpTool(callToolRequest);
35
+ if (!response.body?.data) {
36
+ throw new Error('Invalid response data format');
37
+ }
38
+ // Extract content from response
39
+ const data = response.body.data;
40
+ if (!data.content || !Array.isArray(data.content)) {
41
+ throw new Error('Content field not found or not an array');
42
+ }
43
+ // Concatenate all text fields
44
+ let fullText = '';
45
+ for (const item of data.content) {
46
+ if (item && typeof item === 'object' && 'text' in item) {
47
+ fullText += item.text + '\n';
48
+ }
49
+ }
50
+ return fullText;
51
+ }
52
+ catch (error) {
53
+ throw new Error(`Failed to execute ADB shell command: ${error}`);
54
+ }
55
+ }
56
+ }
57
+ exports.Adb = Adb;
@@ -0,0 +1 @@
1
+ export * from './adb';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./adb"), exports);
@@ -0,0 +1,68 @@
1
+ import { Session } from './session';
2
+ import { ContextService } from './context';
3
+ import Client from './api/client';
4
+ import 'dotenv/config';
5
+ /**
6
+ * Main class for interacting with the AgentBay cloud runtime environment.
7
+ */
8
+ export declare class AgentBay {
9
+ private apiKey;
10
+ private client;
11
+ private regionId;
12
+ private endpoint;
13
+ private sessions;
14
+ /**
15
+ * Context service for managing persistent contexts.
16
+ */
17
+ context: ContextService;
18
+ /**
19
+ * Initialize the AgentBay client.
20
+ *
21
+ * @param options - Configuration options
22
+ * @param options.apiKey - API key for authentication. If not provided, will look for AGENTBAY_API_KEY environment variable.
23
+ */
24
+ constructor(options?: {
25
+ apiKey?: string;
26
+ });
27
+ /**
28
+ * Create a new session in the AgentBay cloud environment.
29
+ *
30
+ * @param options - Optional parameters for creating the session
31
+ * @param options.contextId - ID of the context to bind to the session
32
+ * @param options.labels - Custom labels for the session
33
+ * @returns A new Session object.
34
+ */
35
+ create(options?: {
36
+ contextId?: string;
37
+ labels?: Record<string, string>;
38
+ imageId?: string;
39
+ }): Promise<Session>;
40
+ /**
41
+ * List all available sessions.
42
+ *
43
+ * @returns A list of session objects.
44
+ */
45
+ list(): Session[];
46
+ /**
47
+ * List sessions filtered by the provided labels.
48
+ * It returns sessions that match all the specified labels.
49
+ *
50
+ * @param labels - The labels to filter by.
51
+ * @returns A list of session objects that match the labels.
52
+ */
53
+ listByLabels(labels: Record<string, string>): Promise<Session[]>;
54
+ /**
55
+ * Delete a session by ID.
56
+ *
57
+ * @param sessionId - The ID of the session to delete.
58
+ * @returns True if the session was successfully deleted.
59
+ */
60
+ delete(session: Session): Promise<boolean>;
61
+ /**
62
+ *
63
+ * @param sessionId - The ID of the session to remove.
64
+ */
65
+ removeSession(sessionId: string): void;
66
+ getClient(): Client;
67
+ getAPIKey(): string;
68
+ }
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AgentBay = void 0;
40
+ const session_1 = require("./session");
41
+ const context_1 = require("./context");
42
+ const exceptions_1 = require("./exceptions");
43
+ const $_client = __importStar(require("./api"));
44
+ const openapi_core_1 = require("@alicloud/openapi-core");
45
+ const client_1 = __importDefault(require("./api/client"));
46
+ const model_1 = require("./api/models/model");
47
+ const config_1 = require("./config");
48
+ require("dotenv/config");
49
+ const logger_1 = require("./utils/logger");
50
+ /**
51
+ * Main class for interacting with the AgentBay cloud runtime environment.
52
+ */
53
+ class AgentBay {
54
+ /**
55
+ * Initialize the AgentBay client.
56
+ *
57
+ * @param options - Configuration options
58
+ * @param options.apiKey - API key for authentication. If not provided, will look for AGENTBAY_API_KEY environment variable.
59
+ */
60
+ constructor(options = {}) {
61
+ this.sessions = new Map();
62
+ this.apiKey = options.apiKey || process.env.AGENTBAY_API_KEY || '';
63
+ if (!this.apiKey) {
64
+ throw new exceptions_1.AuthenticationError('API key is required. Provide it as a parameter or set the AGENTBAY_API_KEY environment variable.');
65
+ }
66
+ // Load configuration
67
+ const configData = (0, config_1.loadConfig)();
68
+ this.regionId = configData.region_id;
69
+ this.endpoint = configData.endpoint;
70
+ const config = new openapi_core_1.$OpenApiUtil.Config({
71
+ regionId: this.regionId,
72
+ endpoint: this.endpoint
73
+ });
74
+ config.readTimeout = configData.timeout_ms;
75
+ config.connectTimeout = configData.timeout_ms;
76
+ try {
77
+ this.client = new client_1.default(config);
78
+ // Initialize context service
79
+ this.context = new context_1.ContextService(this);
80
+ }
81
+ catch (error) {
82
+ (0, logger_1.logError)(`Failed to constructor:`, error);
83
+ throw new exceptions_1.AuthenticationError(`Failed to constructor: ${error}`);
84
+ }
85
+ }
86
+ /**
87
+ * Create a new session in the AgentBay cloud environment.
88
+ *
89
+ * @param options - Optional parameters for creating the session
90
+ * @param options.contextId - ID of the context to bind to the session
91
+ * @param options.labels - Custom labels for the session
92
+ * @returns A new Session object.
93
+ */
94
+ async create(options = {}) {
95
+ try {
96
+ const createSessionRequest = new $_client.CreateMcpSessionRequest({
97
+ authorization: "Bearer " + this.apiKey,
98
+ imageId: options.imageId
99
+ });
100
+ // Add context_id if provided
101
+ if (options.contextId) {
102
+ createSessionRequest.contextId = options.contextId;
103
+ }
104
+ // Add labels if provided
105
+ if (options.labels) {
106
+ createSessionRequest.labels = JSON.stringify(options.labels);
107
+ }
108
+ // Log API request
109
+ (0, logger_1.log)("API Call: CreateMcpSession");
110
+ (0, logger_1.log)(`Request: ${options.contextId ? `ContextId=${options.contextId}, ` : ''}${options.labels ? `Labels=${JSON.stringify(options.labels)}, ` : ''}${options.imageId ? `ImageId=${options.imageId}` : ''}`);
111
+ const response = await this.client.createMcpSession(createSessionRequest);
112
+ // Log API response
113
+ (0, logger_1.log)(`Response from CreateMcpSession:`, response.body);
114
+ const sessionId = response.body?.data?.sessionId;
115
+ if (!sessionId) {
116
+ throw new exceptions_1.APIError('Invalid session ID in response');
117
+ }
118
+ // ResourceUrl is optional in CreateMcpSession response
119
+ const resourceUrl = response.body?.data?.resourceUrl;
120
+ const session = new session_1.Session(this, sessionId);
121
+ if (resourceUrl) {
122
+ session.resourceUrl = resourceUrl;
123
+ }
124
+ this.sessions.set(session.sessionId, session);
125
+ return session;
126
+ }
127
+ catch (error) {
128
+ (0, logger_1.logError)("Error calling CreateMcpSession:", error);
129
+ throw new exceptions_1.APIError(`Failed to create session: ${error}`);
130
+ }
131
+ }
132
+ /**
133
+ * List all available sessions.
134
+ *
135
+ * @returns A list of session objects.
136
+ */
137
+ list() {
138
+ return Array.from(this.sessions.values());
139
+ }
140
+ /**
141
+ * List sessions filtered by the provided labels.
142
+ * It returns sessions that match all the specified labels.
143
+ *
144
+ * @param labels - The labels to filter by.
145
+ * @returns A list of session objects that match the labels.
146
+ */
147
+ async listByLabels(labels) {
148
+ try {
149
+ // Convert labels to JSON
150
+ const labelsJSON = JSON.stringify(labels);
151
+ const listSessionRequest = new model_1.ListSessionRequest({
152
+ authorization: `Bearer ${this.apiKey}`,
153
+ labels: labelsJSON
154
+ });
155
+ // Log API request
156
+ (0, logger_1.log)("API Call: ListSession");
157
+ (0, logger_1.log)(`Request: Labels=${labelsJSON}`);
158
+ const response = await this.client.listSession(listSessionRequest);
159
+ // Log API response
160
+ (0, logger_1.log)(`Response from ListSession:`, response.body);
161
+ const sessions = [];
162
+ if (response.body?.data) {
163
+ for (const sessionData of response.body.data) {
164
+ if (sessionData.sessionId) {
165
+ const session = new session_1.Session(this, sessionData.sessionId);
166
+ sessions.push(session);
167
+ // Also store in the local cache
168
+ this.sessions.set(sessionData.sessionId, session);
169
+ }
170
+ }
171
+ }
172
+ return sessions;
173
+ }
174
+ catch (error) {
175
+ (0, logger_1.logError)("Error calling ListSession:", error);
176
+ throw new exceptions_1.APIError(`Failed to list sessions by labels: ${error}`);
177
+ }
178
+ }
179
+ /**
180
+ * Delete a session by ID.
181
+ *
182
+ * @param sessionId - The ID of the session to delete.
183
+ * @returns True if the session was successfully deleted.
184
+ */
185
+ async delete(session) {
186
+ const getSession = this.sessions.get(session.sessionId);
187
+ if (!getSession) {
188
+ throw new Error(`Session with ID ${session.sessionId} not found`);
189
+ }
190
+ try {
191
+ await session.delete();
192
+ return true;
193
+ }
194
+ catch (error) {
195
+ throw new exceptions_1.APIError(`Failed to delete session: ${error}`);
196
+ }
197
+ }
198
+ /**
199
+ *
200
+ * @param sessionId - The ID of the session to remove.
201
+ */
202
+ removeSession(sessionId) {
203
+ this.sessions.delete(sessionId);
204
+ }
205
+ // For internal use by the Session class
206
+ getClient() {
207
+ return this.client;
208
+ }
209
+ getAPIKey() {
210
+ return this.apiKey;
211
+ }
212
+ }
213
+ exports.AgentBay = AgentBay;
@@ -0,0 +1,191 @@
1
+ import * as $dara from '@darabonba/typescript';
2
+ import OpenApi from '@alicloud/openapi-core';
3
+ import { $OpenApiUtil } from '@alicloud/openapi-core';
4
+ import * as $_model from './models/model';
5
+ export * from './models/model';
6
+ export default class Client extends OpenApi {
7
+ constructor(config: $OpenApiUtil.Config);
8
+ getEndpoint(productId: string, regionId: string, endpointRule: string, network: string, suffix: string, endpointMap: {
9
+ [key: string]: string;
10
+ }, endpoint: string): string;
11
+ /**
12
+ * 调用mcp工具
13
+ *
14
+ * @param request - CallMcpToolRequest
15
+ * @param runtime - runtime options for this request RuntimeOptions
16
+ * @returns CallMcpToolResponse
17
+ */
18
+ callMcpToolWithOptions(request: $_model.CallMcpToolRequest, runtime: $dara.RuntimeOptions): Promise<$_model.CallMcpToolResponse>;
19
+ /**
20
+ * 调用mcp工具
21
+ *
22
+ * @param request - CallMcpToolRequest
23
+ * @returns CallMcpToolResponse
24
+ */
25
+ callMcpTool(request: $_model.CallMcpToolRequest): Promise<$_model.CallMcpToolResponse>;
26
+ /**
27
+ * 创建 mcp session
28
+ *
29
+ * @param request - CreateMcpSessionRequest
30
+ * @param runtime - runtime options for this request RuntimeOptions
31
+ * @returns CreateMcpSessionResponse
32
+ */
33
+ createMcpSessionWithOptions(request: $_model.CreateMcpSessionRequest, runtime: $dara.RuntimeOptions): Promise<$_model.CreateMcpSessionResponse>;
34
+ /**
35
+ * 创建 mcp session
36
+ *
37
+ * @param request - CreateMcpSessionRequest
38
+ * @returns CreateMcpSessionResponse
39
+ */
40
+ createMcpSession(request: $_model.CreateMcpSessionRequest): Promise<$_model.CreateMcpSessionResponse>;
41
+ /**
42
+ * 删除持久化上下文
43
+ *
44
+ * @param request - DeleteContextRequest
45
+ * @param runtime - runtime options for this request RuntimeOptions
46
+ * @returns DeleteContextResponse
47
+ */
48
+ deleteContextWithOptions(request: $_model.DeleteContextRequest, runtime: $dara.RuntimeOptions): Promise<$_model.DeleteContextResponse>;
49
+ /**
50
+ * 删除持久化上下文
51
+ *
52
+ * @param request - DeleteContextRequest
53
+ * @returns DeleteContextResponse
54
+ */
55
+ deleteContext(request: $_model.DeleteContextRequest): Promise<$_model.DeleteContextResponse>;
56
+ /**
57
+ * 获取上下文
58
+ *
59
+ * @param request - GetContextRequest
60
+ * @param runtime - runtime options for this request RuntimeOptions
61
+ * @returns GetContextResponse
62
+ */
63
+ getContextWithOptions(request: $_model.GetContextRequest, runtime: $dara.RuntimeOptions): Promise<$_model.GetContextResponse>;
64
+ /**
65
+ * 获取上下文
66
+ *
67
+ * @param request - GetContextRequest
68
+ * @returns GetContextResponse
69
+ */
70
+ getContext(request: $_model.GetContextRequest): Promise<$_model.GetContextResponse>;
71
+ /**
72
+ * 获取标签
73
+ *
74
+ * @param request - GetLabelRequest
75
+ * @param runtime - runtime options for this request RuntimeOptions
76
+ * @returns GetLabelResponse
77
+ */
78
+ getLabelWithOptions(request: $_model.GetLabelRequest, runtime: $dara.RuntimeOptions): Promise<$_model.GetLabelResponse>;
79
+ /**
80
+ * 获取标签
81
+ *
82
+ * @param request - GetLabelRequest
83
+ * @returns GetLabelResponse
84
+ */
85
+ getLabel(request: $_model.GetLabelRequest): Promise<$_model.GetLabelResponse>;
86
+ /**
87
+ * 获取特定端口的转发链接
88
+ *
89
+ * @param request - GetLinkRequest
90
+ * @param runtime - runtime options for this request RuntimeOptions
91
+ * @returns GetLinkResponse
92
+ */
93
+ getLinkWithOptions(request: $_model.GetLinkRequest, runtime: $dara.RuntimeOptions): Promise<$_model.GetLinkResponse>;
94
+ /**
95
+ * 获取特定端口的转发链接
96
+ *
97
+ * @param request - GetLinkRequest
98
+ * @returns GetLinkResponse
99
+ */
100
+ getLink(request: $_model.GetLinkRequest): Promise<$_model.GetLinkResponse>;
101
+ /**
102
+ * 获取mcp资源信息
103
+ *
104
+ * @param request - GetMcpResourceRequest
105
+ * @param runtime - runtime options for this request RuntimeOptions
106
+ * @returns GetMcpResourceResponse
107
+ */
108
+ getMcpResourceWithOptions(request: $_model.GetMcpResourceRequest, runtime: $dara.RuntimeOptions): Promise<$_model.GetMcpResourceResponse>;
109
+ /**
110
+ * 获取mcp资源信息
111
+ *
112
+ * @param request - GetMcpResourceRequest
113
+ * @returns GetMcpResourceResponse
114
+ */
115
+ getMcpResource(request: $_model.GetMcpResourceRequest): Promise<$_model.GetMcpResourceResponse>;
116
+ /**
117
+ * 获取上下文列表
118
+ *
119
+ * @param request - ListContextsRequest
120
+ * @param runtime - runtime options for this request RuntimeOptions
121
+ * @returns ListContextsResponse
122
+ */
123
+ listContextsWithOptions(request: $_model.ListContextsRequest, runtime: $dara.RuntimeOptions): Promise<$_model.ListContextsResponse>;
124
+ /**
125
+ * 获取上下文列表
126
+ *
127
+ * @param request - ListContextsRequest
128
+ * @returns ListContextsResponse
129
+ */
130
+ listContexts(request: $_model.ListContextsRequest): Promise<$_model.ListContextsResponse>;
131
+ /**
132
+ * 根据Lable查询Session列表
133
+ *
134
+ * @param request - ListSessionRequest
135
+ * @param runtime - runtime options for this request RuntimeOptions
136
+ * @returns ListSessionResponse
137
+ */
138
+ listSessionWithOptions(request: $_model.ListSessionRequest, runtime: $dara.RuntimeOptions): Promise<$_model.ListSessionResponse>;
139
+ /**
140
+ * 根据Lable查询Session列表
141
+ *
142
+ * @param request - ListSessionRequest
143
+ * @returns ListSessionResponse
144
+ */
145
+ listSession(request: $_model.ListSessionRequest): Promise<$_model.ListSessionResponse>;
146
+ /**
147
+ * 修改上下文
148
+ *
149
+ * @param request - ModifyContextRequest
150
+ * @param runtime - runtime options for this request RuntimeOptions
151
+ * @returns ModifyContextResponse
152
+ */
153
+ modifyContextWithOptions(request: $_model.ModifyContextRequest, runtime: $dara.RuntimeOptions): Promise<$_model.ModifyContextResponse>;
154
+ /**
155
+ * 修改上下文
156
+ *
157
+ * @param request - ModifyContextRequest
158
+ * @returns ModifyContextResponse
159
+ */
160
+ modifyContext(request: $_model.ModifyContextRequest): Promise<$_model.ModifyContextResponse>;
161
+ /**
162
+ * 释放 mcp session
163
+ *
164
+ * @param request - ReleaseMcpSessionRequest
165
+ * @param runtime - runtime options for this request RuntimeOptions
166
+ * @returns ReleaseMcpSessionResponse
167
+ */
168
+ releaseMcpSessionWithOptions(request: $_model.ReleaseMcpSessionRequest, runtime: $dara.RuntimeOptions): Promise<$_model.ReleaseMcpSessionResponse>;
169
+ /**
170
+ * 释放 mcp session
171
+ *
172
+ * @param request - ReleaseMcpSessionRequest
173
+ * @returns ReleaseMcpSessionResponse
174
+ */
175
+ releaseMcpSession(request: $_model.ReleaseMcpSessionRequest): Promise<$_model.ReleaseMcpSessionResponse>;
176
+ /**
177
+ * 设置标签
178
+ *
179
+ * @param request - SetLabelRequest
180
+ * @param runtime - runtime options for this request RuntimeOptions
181
+ * @returns SetLabelResponse
182
+ */
183
+ setLabelWithOptions(request: $_model.SetLabelRequest, runtime: $dara.RuntimeOptions): Promise<$_model.SetLabelResponse>;
184
+ /**
185
+ * 设置标签
186
+ *
187
+ * @param request - SetLabelRequest
188
+ * @returns SetLabelResponse
189
+ */
190
+ setLabel(request: $_model.SetLabelRequest): Promise<$_model.SetLabelResponse>;
191
+ }