@cloudbase/agent-tools 0.0.2

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 (194) hide show
  1. package/CHANGELOG.md +416 -0
  2. package/dist/agent_tool.d.ts +7 -0
  3. package/dist/agent_tool.d.ts.map +1 -0
  4. package/dist/agent_tool.js +16 -0
  5. package/dist/agent_tool.js.map +1 -0
  6. package/dist/bash/bash-tool.d.ts +61 -0
  7. package/dist/bash/bash-tool.d.ts.map +1 -0
  8. package/dist/bash/bash-tool.js +191 -0
  9. package/dist/bash/bash-tool.js.map +1 -0
  10. package/dist/bash/index.d.ts +7 -0
  11. package/dist/bash/index.d.ts.map +1 -0
  12. package/dist/bash/index.js +17 -0
  13. package/dist/bash/index.js.map +1 -0
  14. package/dist/bash/operator/base-operator.d.ts +44 -0
  15. package/dist/bash/operator/base-operator.d.ts.map +1 -0
  16. package/dist/bash/operator/base-operator.js +14 -0
  17. package/dist/bash/operator/base-operator.js.map +1 -0
  18. package/dist/bash/operator/local-operator.d.ts +15 -0
  19. package/dist/bash/operator/local-operator.d.ts.map +1 -0
  20. package/dist/bash/operator/local-operator.js +145 -0
  21. package/dist/bash/operator/local-operator.js.map +1 -0
  22. package/dist/bash/operator/sandbox-operator.d.ts +22 -0
  23. package/dist/bash/operator/sandbox-operator.d.ts.map +1 -0
  24. package/dist/bash/operator/sandbox-operator.js +112 -0
  25. package/dist/bash/operator/sandbox-operator.js.map +1 -0
  26. package/dist/bash/utils.d.ts +106 -0
  27. package/dist/bash/utils.d.ts.map +1 -0
  28. package/dist/bash/utils.js +197 -0
  29. package/dist/bash/utils.js.map +1 -0
  30. package/dist/browser/browser-instance-manager.d.ts +79 -0
  31. package/dist/browser/browser-instance-manager.d.ts.map +1 -0
  32. package/dist/browser/browser-instance-manager.js +242 -0
  33. package/dist/browser/browser-instance-manager.js.map +1 -0
  34. package/dist/browser/browser-tool-executor.d.ts +57 -0
  35. package/dist/browser/browser-tool-executor.d.ts.map +1 -0
  36. package/dist/browser/browser-tool-executor.js +205 -0
  37. package/dist/browser/browser-tool-executor.js.map +1 -0
  38. package/dist/browser/browser_client_unified.d.ts +52 -0
  39. package/dist/browser/browser_client_unified.d.ts.map +1 -0
  40. package/dist/browser/browser_client_unified.js +381 -0
  41. package/dist/browser/browser_client_unified.js.map +1 -0
  42. package/dist/browser/browser_tool_unified.d.ts +93 -0
  43. package/dist/browser/browser_tool_unified.d.ts.map +1 -0
  44. package/dist/browser/browser_tool_unified.js +181 -0
  45. package/dist/browser/browser_tool_unified.js.map +1 -0
  46. package/dist/browser/index.d.ts +7 -0
  47. package/dist/browser/index.d.ts.map +1 -0
  48. package/dist/browser/index.js +19 -0
  49. package/dist/browser/index.js.map +1 -0
  50. package/dist/browser/sandbox-connector.d.ts +93 -0
  51. package/dist/browser/sandbox-connector.d.ts.map +1 -0
  52. package/dist/browser/sandbox-connector.js +272 -0
  53. package/dist/browser/sandbox-connector.js.map +1 -0
  54. package/dist/browser/types.d.ts +53 -0
  55. package/dist/browser/types.d.ts.map +1 -0
  56. package/dist/browser/types.js +3 -0
  57. package/dist/browser/types.js.map +1 -0
  58. package/dist/code_executers/base_code_executor.d.ts +17 -0
  59. package/dist/code_executers/base_code_executor.d.ts.map +1 -0
  60. package/dist/code_executers/base_code_executor.js +20 -0
  61. package/dist/code_executers/base_code_executor.js.map +1 -0
  62. package/dist/code_executers/built_in_code_executor.d.ts +25 -0
  63. package/dist/code_executers/built_in_code_executor.d.ts.map +1 -0
  64. package/dist/code_executers/built_in_code_executor.js +106 -0
  65. package/dist/code_executers/built_in_code_executor.js.map +1 -0
  66. package/dist/code_executers/unsafe_local_code_executor.d.ts +118 -0
  67. package/dist/code_executers/unsafe_local_code_executor.d.ts.map +1 -0
  68. package/dist/code_executers/unsafe_local_code_executor.js +605 -0
  69. package/dist/code_executers/unsafe_local_code_executor.js.map +1 -0
  70. package/dist/fs/edit-tool.d.ts +26 -0
  71. package/dist/fs/edit-tool.d.ts.map +1 -0
  72. package/dist/fs/edit-tool.js +202 -0
  73. package/dist/fs/edit-tool.js.map +1 -0
  74. package/dist/fs/glob-tool.d.ts +31 -0
  75. package/dist/fs/glob-tool.d.ts.map +1 -0
  76. package/dist/fs/glob-tool.js +287 -0
  77. package/dist/fs/glob-tool.js.map +1 -0
  78. package/dist/fs/grep-tool.d.ts +32 -0
  79. package/dist/fs/grep-tool.d.ts.map +1 -0
  80. package/dist/fs/grep-tool.js +353 -0
  81. package/dist/fs/grep-tool.js.map +1 -0
  82. package/dist/fs/index.d.ts +11 -0
  83. package/dist/fs/index.d.ts.map +1 -0
  84. package/dist/fs/index.js +38 -0
  85. package/dist/fs/index.js.map +1 -0
  86. package/dist/fs/ls-tool.d.ts +26 -0
  87. package/dist/fs/ls-tool.d.ts.map +1 -0
  88. package/dist/fs/ls-tool.js +235 -0
  89. package/dist/fs/ls-tool.js.map +1 -0
  90. package/dist/fs/multiedit-tool.d.ts +34 -0
  91. package/dist/fs/multiedit-tool.d.ts.map +1 -0
  92. package/dist/fs/multiedit-tool.js +158 -0
  93. package/dist/fs/multiedit-tool.js.map +1 -0
  94. package/dist/fs/operator/base-operator.d.ts +28 -0
  95. package/dist/fs/operator/base-operator.d.ts.map +1 -0
  96. package/dist/fs/operator/base-operator.js +21 -0
  97. package/dist/fs/operator/base-operator.js.map +1 -0
  98. package/dist/fs/operator/in-memory-operator.d.ts +39 -0
  99. package/dist/fs/operator/in-memory-operator.d.ts.map +1 -0
  100. package/dist/fs/operator/in-memory-operator.js +115 -0
  101. package/dist/fs/operator/in-memory-operator.js.map +1 -0
  102. package/dist/fs/operator/index.d.ts +6 -0
  103. package/dist/fs/operator/index.d.ts.map +1 -0
  104. package/dist/fs/operator/index.js +28 -0
  105. package/dist/fs/operator/index.js.map +1 -0
  106. package/dist/fs/operator/local-operator.d.ts +25 -0
  107. package/dist/fs/operator/local-operator.d.ts.map +1 -0
  108. package/dist/fs/operator/local-operator.js +62 -0
  109. package/dist/fs/operator/local-operator.js.map +1 -0
  110. package/dist/fs/operator/sanbox-operator.d.ts +31 -0
  111. package/dist/fs/operator/sanbox-operator.d.ts.map +1 -0
  112. package/dist/fs/operator/sanbox-operator.js +172 -0
  113. package/dist/fs/operator/sanbox-operator.js.map +1 -0
  114. package/dist/fs/operator/transaction/index.d.ts +6 -0
  115. package/dist/fs/operator/transaction/index.d.ts.map +1 -0
  116. package/dist/fs/operator/transaction/index.js +28 -0
  117. package/dist/fs/operator/transaction/index.js.map +1 -0
  118. package/dist/fs/operator/transaction/snapshot-strategies.d.ts +54 -0
  119. package/dist/fs/operator/transaction/snapshot-strategies.d.ts.map +1 -0
  120. package/dist/fs/operator/transaction/snapshot-strategies.js +278 -0
  121. package/dist/fs/operator/transaction/snapshot-strategies.js.map +1 -0
  122. package/dist/fs/operator/transaction/transaction-operator.d.ts +53 -0
  123. package/dist/fs/operator/transaction/transaction-operator.d.ts.map +1 -0
  124. package/dist/fs/operator/transaction/transaction-operator.js +195 -0
  125. package/dist/fs/operator/transaction/transaction-operator.js.map +1 -0
  126. package/dist/fs/operator/transaction/transaction-utils.d.ts +80 -0
  127. package/dist/fs/operator/transaction/transaction-utils.d.ts.map +1 -0
  128. package/dist/fs/operator/transaction/transaction-utils.js +156 -0
  129. package/dist/fs/operator/transaction/transaction-utils.js.map +1 -0
  130. package/dist/fs/read-tool.d.ts +32 -0
  131. package/dist/fs/read-tool.d.ts.map +1 -0
  132. package/dist/fs/read-tool.js +271 -0
  133. package/dist/fs/read-tool.js.map +1 -0
  134. package/dist/fs/str-replace-editor.d.ts +23 -0
  135. package/dist/fs/str-replace-editor.d.ts.map +1 -0
  136. package/dist/fs/str-replace-editor.js +74 -0
  137. package/dist/fs/str-replace-editor.js.map +1 -0
  138. package/dist/fs/toolkit.d.ts +61 -0
  139. package/dist/fs/toolkit.d.ts.map +1 -0
  140. package/dist/fs/toolkit.js +113 -0
  141. package/dist/fs/toolkit.js.map +1 -0
  142. package/dist/fs/utils.d.ts +32 -0
  143. package/dist/fs/utils.d.ts.map +1 -0
  144. package/dist/fs/utils.js +133 -0
  145. package/dist/fs/utils.js.map +1 -0
  146. package/dist/fs/write-tool.d.ts +26 -0
  147. package/dist/fs/write-tool.d.ts.map +1 -0
  148. package/dist/fs/write-tool.js +110 -0
  149. package/dist/fs/write-tool.js.map +1 -0
  150. package/dist/index.d.ts +10 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +40 -0
  153. package/dist/index.js.map +1 -0
  154. package/dist/mcp/agkit-mcp-server.d.ts +291 -0
  155. package/dist/mcp/agkit-mcp-server.d.ts.map +1 -0
  156. package/dist/mcp/agkit-mcp-server.js +821 -0
  157. package/dist/mcp/agkit-mcp-server.js.map +1 -0
  158. package/dist/mcp/client-tool.d.ts +65 -0
  159. package/dist/mcp/client-tool.d.ts.map +1 -0
  160. package/dist/mcp/client-tool.js +220 -0
  161. package/dist/mcp/client-tool.js.map +1 -0
  162. package/dist/mcp/index.d.ts +14 -0
  163. package/dist/mcp/index.d.ts.map +1 -0
  164. package/dist/mcp/index.js +26 -0
  165. package/dist/mcp/index.js.map +1 -0
  166. package/dist/mcp/mcp-client-manager.d.ts +153 -0
  167. package/dist/mcp/mcp-client-manager.d.ts.map +1 -0
  168. package/dist/mcp/mcp-client-manager.js +606 -0
  169. package/dist/mcp/mcp-client-manager.js.map +1 -0
  170. package/dist/mcp/mcp-toolkit.d.ts +112 -0
  171. package/dist/mcp/mcp-toolkit.d.ts.map +1 -0
  172. package/dist/mcp/mcp-toolkit.js +188 -0
  173. package/dist/mcp/mcp-toolkit.js.map +1 -0
  174. package/dist/mcp/types.d.ts +157 -0
  175. package/dist/mcp/types.d.ts.map +1 -0
  176. package/dist/mcp/types.js +34 -0
  177. package/dist/mcp/types.js.map +1 -0
  178. package/dist/mcp/utils.d.ts +17 -0
  179. package/dist/mcp/utils.d.ts.map +1 -0
  180. package/dist/mcp/utils.js +48 -0
  181. package/dist/mcp/utils.js.map +1 -0
  182. package/dist/types/index.d.ts +31 -0
  183. package/dist/types/index.d.ts.map +1 -0
  184. package/dist/types/index.js +3 -0
  185. package/dist/types/index.js.map +1 -0
  186. package/dist/types/zod.d.ts +18 -0
  187. package/dist/types/zod.d.ts.map +1 -0
  188. package/dist/types/zod.js +3 -0
  189. package/dist/types/zod.js.map +1 -0
  190. package/dist/utils.d.ts +141 -0
  191. package/dist/utils.d.ts.map +1 -0
  192. package/dist/utils.js +379 -0
  193. package/dist/utils.js.map +1 -0
  194. package/package.json +46 -0
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandBuilders = void 0;
4
+ exports.createLocalBashContext = createLocalBashContext;
5
+ exports.createSandboxBashContext = createSandboxBashContext;
6
+ exports.validateCommand = validateCommand;
7
+ exports.escapeShellArg = escapeShellArg;
8
+ exports.buildCommand = buildCommand;
9
+ exports.parseCommandOutput = parseCommandOutput;
10
+ exports.formatExecutionTime = formatExecutionTime;
11
+ const local_operator_1 = require("./operator/local-operator");
12
+ const sandbox_operator_1 = require("./operator/sandbox-operator");
13
+ /**
14
+ * Create a local bash execution context
15
+ */
16
+ function createLocalBashContext(options) {
17
+ const bashOperator = new local_operator_1.LocalBashOperator({
18
+ cwd: options?.cwd,
19
+ env: options?.env,
20
+ });
21
+ return {
22
+ bashOperator,
23
+ workingDirectory: options?.cwd || process.cwd(),
24
+ environmentVariables: options?.env || {},
25
+ defaultTimeout: options?.defaultTimeout || 30000,
26
+ };
27
+ }
28
+ /**
29
+ * Create a sandbox bash execution context
30
+ */
31
+ function createSandboxBashContext(options) {
32
+ const bashOperator = new sandbox_operator_1.SandboxBashOperator({
33
+ sandbox: options.sandbox,
34
+ cwd: options.cwd,
35
+ env: options.env,
36
+ });
37
+ return {
38
+ bashOperator,
39
+ workingDirectory: options.cwd || "/home/user",
40
+ environmentVariables: options.env || {},
41
+ defaultTimeout: options.defaultTimeout || 30000,
42
+ };
43
+ }
44
+ /**
45
+ * Validate command for security (basic checks)
46
+ */
47
+ function validateCommand(command) {
48
+ // Basic security checks
49
+ const dangerousPatterns = [
50
+ /rm\s+-rf\s+\//, // rm -rf /
51
+ /:\(\)\{.*\}/, // Fork bomb pattern
52
+ /sudo\s+rm/, // sudo rm
53
+ /mkfs/, // Format filesystem
54
+ /dd\s+if=.*of=\/dev/, // Direct disk write
55
+ />\s*\/dev\/sd[a-z]/, // Write to disk device
56
+ ];
57
+ for (const pattern of dangerousPatterns) {
58
+ if (pattern.test(command)) {
59
+ return {
60
+ isValid: false,
61
+ reason: `Command contains potentially dangerous pattern: ${pattern.source}`,
62
+ };
63
+ }
64
+ }
65
+ return { isValid: true };
66
+ }
67
+ /**
68
+ * Escape shell arguments
69
+ */
70
+ function escapeShellArg(arg) {
71
+ return `'${arg.replace(/'/g, "'\"'\"'")}'`;
72
+ }
73
+ /**
74
+ * Build command with escaped arguments
75
+ */
76
+ function buildCommand(command, args = []) {
77
+ if (args.length === 0) {
78
+ return command;
79
+ }
80
+ const escapedArgs = args.map(escapeShellArg);
81
+ return `${command} ${escapedArgs.join(" ")}`;
82
+ }
83
+ /**
84
+ * Parse command output for common patterns
85
+ */
86
+ function parseCommandOutput(stdout, stderr) {
87
+ return {
88
+ lines: stdout.split("\n").filter((line) => line.trim()),
89
+ errorLines: stderr.split("\n").filter((line) => line.trim()),
90
+ isEmpty: !stdout.trim() && !stderr.trim(),
91
+ hasErrors: stderr.trim().length > 0,
92
+ exitedCleanly: stderr.trim().length === 0,
93
+ };
94
+ }
95
+ /**
96
+ * Format execution time
97
+ */
98
+ function formatExecutionTime(ms) {
99
+ if (ms < 1000) {
100
+ return `${ms}ms`;
101
+ }
102
+ else if (ms < 60000) {
103
+ return `${(ms / 1000).toFixed(2)}s`;
104
+ }
105
+ else {
106
+ const minutes = Math.floor(ms / 60000);
107
+ const seconds = ((ms % 60000) / 1000).toFixed(2);
108
+ return `${minutes}m ${seconds}s`;
109
+ }
110
+ }
111
+ /**
112
+ * Common command builders
113
+ */
114
+ exports.CommandBuilders = {
115
+ /**
116
+ * List files with details
117
+ */
118
+ listFiles: (path = ".", options) => {
119
+ let cmd = "ls";
120
+ if (options?.all)
121
+ cmd += " -a";
122
+ if (options?.long)
123
+ cmd += " -l";
124
+ if (options?.human)
125
+ cmd += " -h";
126
+ return `${cmd} ${escapeShellArg(path)}`;
127
+ },
128
+ /**
129
+ * Find files by pattern
130
+ */
131
+ findFiles: (pattern, path = ".") => {
132
+ return `find ${escapeShellArg(path)} -name ${escapeShellArg(pattern)}`;
133
+ },
134
+ /**
135
+ * Search in files
136
+ */
137
+ grep: (pattern, files = "*", options) => {
138
+ let cmd = "grep";
139
+ if (options?.recursive)
140
+ cmd += " -r";
141
+ if (options?.ignoreCase)
142
+ cmd += " -i";
143
+ if (options?.lineNumbers)
144
+ cmd += " -n";
145
+ return `${cmd} ${escapeShellArg(pattern)} ${escapeShellArg(files)}`;
146
+ },
147
+ /**
148
+ * Check if file/directory exists
149
+ */
150
+ exists: (path) => {
151
+ return `test -e ${escapeShellArg(path)} && echo "exists" || echo "not found"`;
152
+ },
153
+ /**
154
+ * Get file info
155
+ */
156
+ stat: (path) => {
157
+ return `stat ${escapeShellArg(path)}`;
158
+ },
159
+ /**
160
+ * Create directory
161
+ */
162
+ mkdir: (path, options) => {
163
+ let cmd = "mkdir";
164
+ if (options?.parents)
165
+ cmd += " -p";
166
+ return `${cmd} ${escapeShellArg(path)}`;
167
+ },
168
+ /**
169
+ * Copy files
170
+ */
171
+ copy: (source, destination, options) => {
172
+ let cmd = "cp";
173
+ if (options?.recursive)
174
+ cmd += " -r";
175
+ if (options?.preserve)
176
+ cmd += " -p";
177
+ return `${cmd} ${escapeShellArg(source)} ${escapeShellArg(destination)}`;
178
+ },
179
+ /**
180
+ * Move/rename files
181
+ */
182
+ move: (source, destination) => {
183
+ return `mv ${escapeShellArg(source)} ${escapeShellArg(destination)}`;
184
+ },
185
+ /**
186
+ * Remove files/directories
187
+ */
188
+ remove: (path, options) => {
189
+ let cmd = "rm";
190
+ if (options?.recursive)
191
+ cmd += " -r";
192
+ if (options?.force)
193
+ cmd += " -f";
194
+ return `${cmd} ${escapeShellArg(path)}`;
195
+ },
196
+ };
197
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/bash/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { EventEmitter } from "events";
2
+ import { SandboxConnector, SandboxConnectorConfig, SandboxConnectionInfo } from "./sandbox-connector";
3
+ export interface BrowserInstanceConfig extends SandboxConnectorConfig {
4
+ maxInstances?: number;
5
+ instanceTtl?: number;
6
+ cleanupInterval?: number;
7
+ }
8
+ export interface BrowserInstanceInfo {
9
+ sessionId: string;
10
+ connector: SandboxConnector;
11
+ connectionInfo: SandboxConnectionInfo;
12
+ createdAt: Date;
13
+ lastUsed: Date;
14
+ isActive: boolean;
15
+ }
16
+ /**
17
+ * BrowserInstanceManager provides multi-instance isolation and lifecycle management
18
+ * Supports concurrent users with isolated browser environments
19
+ */
20
+ export declare class BrowserInstanceManager extends EventEmitter {
21
+ private config;
22
+ private instances;
23
+ private cleanupTimer?;
24
+ constructor(config: BrowserInstanceConfig);
25
+ /**
26
+ * Create or get existing browser instance for session
27
+ */
28
+ getInstance(sessionId: string): Promise<BrowserInstanceInfo>;
29
+ /**
30
+ * Get existing instance without creating new one
31
+ */
32
+ getExistingInstance(sessionId: string): BrowserInstanceInfo | undefined;
33
+ /**
34
+ * Remove and cleanup specific instance
35
+ */
36
+ removeInstance(sessionId: string): Promise<void>;
37
+ /**
38
+ * Get all active instances
39
+ */
40
+ getActiveInstances(): BrowserInstanceInfo[];
41
+ /**
42
+ * Get instance count
43
+ */
44
+ getInstanceCount(): number;
45
+ /**
46
+ * Health check for specific instance
47
+ */
48
+ checkInstanceHealth(sessionId: string): Promise<boolean>;
49
+ /**
50
+ * Cleanup expired instances
51
+ */
52
+ cleanupExpiredInstances(): Promise<void>;
53
+ /**
54
+ * Cleanup all instances
55
+ */
56
+ cleanup(): Promise<void>;
57
+ /**
58
+ * Setup event handlers for connector
59
+ */
60
+ private setupConnectorEvents;
61
+ /**
62
+ * Start cleanup timer
63
+ */
64
+ private startCleanupTimer;
65
+ /**
66
+ * Stop cleanup timer
67
+ */
68
+ private stopCleanupTimer;
69
+ /**
70
+ * Get statistics
71
+ */
72
+ getStatistics(): {
73
+ totalInstances: number;
74
+ activeInstances: number;
75
+ oldestInstance?: Date;
76
+ newestInstance?: Date;
77
+ };
78
+ }
79
+ //# sourceMappingURL=browser-instance-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-instance-manager.d.ts","sourceRoot":"","sources":["../../src/browser/browser-instance-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEtG,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,cAAc,EAAE,qBAAqB,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAE1B,MAAM,EAAE,qBAAqB;IAazC;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqDlE;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IASvE;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtD;;OAEG;IACH,kBAAkB,IAAI,mBAAmB,EAAE;IAI3C;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,aAAa,IAAI;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,cAAc,CAAC,EAAE,IAAI,CAAC;KACvB;CAcF"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserInstanceManager = void 0;
4
+ const events_1 = require("events");
5
+ const sandbox_connector_1 = require("./sandbox-connector");
6
+ /**
7
+ * BrowserInstanceManager provides multi-instance isolation and lifecycle management
8
+ * Supports concurrent users with isolated browser environments
9
+ */
10
+ class BrowserInstanceManager extends events_1.EventEmitter {
11
+ constructor(config) {
12
+ super();
13
+ this.instances = new Map();
14
+ this.config = {
15
+ maxInstances: 10,
16
+ instanceTtl: 3600, // 1 hour
17
+ cleanupInterval: 300, // 5 minutes
18
+ ...config,
19
+ };
20
+ // Start cleanup timer
21
+ this.startCleanupTimer();
22
+ }
23
+ /**
24
+ * Create or get existing browser instance for session
25
+ */
26
+ async getInstance(sessionId) {
27
+ // Check if instance already exists
28
+ const existing = this.instances.get(sessionId);
29
+ if (existing && existing.isActive) {
30
+ // Update last used time
31
+ existing.lastUsed = new Date();
32
+ return existing;
33
+ }
34
+ // Check instance limit
35
+ if (this.instances.size >= this.config.maxInstances) {
36
+ await this.cleanupExpiredInstances();
37
+ if (this.instances.size >= this.config.maxInstances) {
38
+ throw new Error(`Maximum number of browser instances reached: ${this.config.maxInstances}`);
39
+ }
40
+ }
41
+ // Create new instance
42
+ const connector = new sandbox_connector_1.SandboxConnector({
43
+ apiKey: this.config.apiKey,
44
+ domain: this.config.domain,
45
+ timeout: this.config.timeout,
46
+ sessionId,
47
+ });
48
+ // Set up event handlers
49
+ this.setupConnectorEvents(sessionId, connector);
50
+ // Connect to sandbox
51
+ await connector.connect();
52
+ const connectionInfo = connector.getConnectionInfo();
53
+ if (!connectionInfo) {
54
+ throw new Error("Failed to get connection info from connector");
55
+ }
56
+ const instanceInfo = {
57
+ sessionId,
58
+ connector,
59
+ connectionInfo,
60
+ createdAt: new Date(),
61
+ lastUsed: new Date(),
62
+ isActive: true,
63
+ };
64
+ this.instances.set(sessionId, instanceInfo);
65
+ this.emit('instance-created', instanceInfo);
66
+ console.log(`✅ Created browser instance for session: ${sessionId}`);
67
+ return instanceInfo;
68
+ }
69
+ /**
70
+ * Get existing instance without creating new one
71
+ */
72
+ getExistingInstance(sessionId) {
73
+ const instance = this.instances.get(sessionId);
74
+ if (instance && instance.isActive) {
75
+ instance.lastUsed = new Date();
76
+ return instance;
77
+ }
78
+ return undefined;
79
+ }
80
+ /**
81
+ * Remove and cleanup specific instance
82
+ */
83
+ async removeInstance(sessionId) {
84
+ const instance = this.instances.get(sessionId);
85
+ if (!instance) {
86
+ console.warn(`Instance not found for session: ${sessionId}`);
87
+ return;
88
+ }
89
+ try {
90
+ // Disconnect and cleanup
91
+ await instance.connector.disconnect();
92
+ instance.isActive = false;
93
+ this.instances.delete(sessionId);
94
+ this.emit('instance-removed', sessionId);
95
+ console.log(`✅ Removed browser instance for session: ${sessionId}`);
96
+ }
97
+ catch (error) {
98
+ console.error(`Failed to remove instance for session ${sessionId}:`, error);
99
+ throw error;
100
+ }
101
+ }
102
+ /**
103
+ * Get all active instances
104
+ */
105
+ getActiveInstances() {
106
+ return Array.from(this.instances.values()).filter(instance => instance.isActive);
107
+ }
108
+ /**
109
+ * Get instance count
110
+ */
111
+ getInstanceCount() {
112
+ return this.instances.size;
113
+ }
114
+ /**
115
+ * Health check for specific instance
116
+ */
117
+ async checkInstanceHealth(sessionId) {
118
+ const instance = this.instances.get(sessionId);
119
+ if (!instance || !instance.isActive) {
120
+ return false;
121
+ }
122
+ try {
123
+ return await instance.connector.healthCheck();
124
+ }
125
+ catch (error) {
126
+ console.error(`Health check failed for session ${sessionId}:`, error);
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * Cleanup expired instances
132
+ */
133
+ async cleanupExpiredInstances() {
134
+ const now = new Date();
135
+ const expiredSessions = [];
136
+ for (const [sessionId, instance] of this.instances.entries()) {
137
+ const ageInSeconds = (now.getTime() - instance.lastUsed.getTime()) / 1000;
138
+ if (ageInSeconds > this.config.instanceTtl) {
139
+ expiredSessions.push(sessionId);
140
+ }
141
+ }
142
+ console.log(`Cleaning up ${expiredSessions.length} expired instances`);
143
+ for (const sessionId of expiredSessions) {
144
+ try {
145
+ await this.removeInstance(sessionId);
146
+ }
147
+ catch (error) {
148
+ console.error(`Failed to cleanup expired instance ${sessionId}:`, error);
149
+ }
150
+ }
151
+ if (expiredSessions.length > 0) {
152
+ this.emit('cleanup-completed', expiredSessions);
153
+ }
154
+ }
155
+ /**
156
+ * Cleanup all instances
157
+ */
158
+ async cleanup() {
159
+ console.log(`Cleaning up all ${this.instances.size} browser instances`);
160
+ const sessionIds = Array.from(this.instances.keys());
161
+ for (const sessionId of sessionIds) {
162
+ try {
163
+ await this.removeInstance(sessionId);
164
+ }
165
+ catch (error) {
166
+ console.error(`Failed to cleanup instance ${sessionId}:`, error);
167
+ }
168
+ }
169
+ this.stopCleanupTimer();
170
+ console.log("✅ All browser instances cleaned up");
171
+ }
172
+ /**
173
+ * Setup event handlers for connector
174
+ */
175
+ setupConnectorEvents(sessionId, connector) {
176
+ connector.on('error', (error) => {
177
+ console.error(`Connector error for session ${sessionId}:`, error);
178
+ this.emit('instance-error', sessionId, error);
179
+ });
180
+ connector.on('disconnected', () => {
181
+ console.log(`Connector disconnected for session ${sessionId}`);
182
+ const instance = this.instances.get(sessionId);
183
+ if (instance) {
184
+ instance.isActive = false;
185
+ }
186
+ this.emit('instance-disconnected', sessionId);
187
+ });
188
+ connector.on('reconnected', () => {
189
+ console.log(`Connector reconnected for session ${sessionId}`);
190
+ const instance = this.instances.get(sessionId);
191
+ if (instance) {
192
+ instance.isActive = true;
193
+ instance.lastUsed = new Date();
194
+ }
195
+ this.emit('instance-reconnected', sessionId);
196
+ });
197
+ }
198
+ /**
199
+ * Start cleanup timer
200
+ */
201
+ startCleanupTimer() {
202
+ if (this.cleanupTimer) {
203
+ clearInterval(this.cleanupTimer);
204
+ }
205
+ this.cleanupTimer = setInterval(async () => {
206
+ try {
207
+ await this.cleanupExpiredInstances();
208
+ }
209
+ catch (error) {
210
+ console.error("Error during scheduled cleanup:", error);
211
+ }
212
+ }, this.config.cleanupInterval * 1000);
213
+ console.log(`Started cleanup timer with interval: ${this.config.cleanupInterval}s`);
214
+ }
215
+ /**
216
+ * Stop cleanup timer
217
+ */
218
+ stopCleanupTimer() {
219
+ if (this.cleanupTimer) {
220
+ clearInterval(this.cleanupTimer);
221
+ this.cleanupTimer = undefined;
222
+ }
223
+ }
224
+ /**
225
+ * Get statistics
226
+ */
227
+ getStatistics() {
228
+ const instances = this.getActiveInstances();
229
+ return {
230
+ totalInstances: this.instances.size,
231
+ activeInstances: instances.length,
232
+ oldestInstance: instances.length > 0
233
+ ? new Date(Math.min(...instances.map(i => i.createdAt.getTime())))
234
+ : undefined,
235
+ newestInstance: instances.length > 0
236
+ ? new Date(Math.max(...instances.map(i => i.createdAt.getTime())))
237
+ : undefined,
238
+ };
239
+ }
240
+ }
241
+ exports.BrowserInstanceManager = BrowserInstanceManager;
242
+ //# sourceMappingURL=browser-instance-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-instance-manager.js","sourceRoot":"","sources":["../../src/browser/browser-instance-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { Browser, BrowserContext, Page } from 'playwright';
2
+ /**
3
+ * Browser tool call interface
4
+ */
5
+ export interface BrowserToolCall {
6
+ name: string;
7
+ arguments?: Record<string, any>;
8
+ }
9
+ /**
10
+ * Browser tool result interface
11
+ */
12
+ export interface BrowserToolResult {
13
+ content: Array<{
14
+ type: string;
15
+ text?: string;
16
+ data?: string;
17
+ mimeType?: string;
18
+ }>;
19
+ isError?: boolean;
20
+ }
21
+ /**
22
+ * Browser page provider interface
23
+ * Different clients implement this to provide access to browser pages
24
+ */
25
+ export interface BrowserPageProvider {
26
+ getPage(pageIndex?: number): Page;
27
+ getPages(): Page[];
28
+ createPage(): Promise<Page>;
29
+ closePage(pageIndex: number): Promise<void>;
30
+ getBrowser(): Browser | null;
31
+ getContext(): BrowserContext | null;
32
+ }
33
+ /**
34
+ * Shared browser tool executor
35
+ * Handles all Playwright operations regardless of connection method
36
+ */
37
+ export declare class BrowserToolExecutor {
38
+ private pageProvider;
39
+ constructor(pageProvider: BrowserPageProvider);
40
+ /**
41
+ * Get list of available tools
42
+ */
43
+ listTools(): any[];
44
+ /**
45
+ * Execute a browser tool
46
+ */
47
+ executeTool(toolCall: BrowserToolCall): Promise<BrowserToolResult>;
48
+ /**
49
+ * Execute Playwright tool operations
50
+ */
51
+ private executePlaywrightTool;
52
+ /**
53
+ * Handle tabs operations
54
+ */
55
+ private handleTabsOperation;
56
+ }
57
+ //# sourceMappingURL=browser-tool-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-tool-executor.d.ts","sourceRoot":"","sources":["../../src/browser/browser-tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,UAAU,IAAI,OAAO,GAAG,IAAI,CAAC;IAC7B,UAAU,IAAI,cAAc,GAAG,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,YAAY,EAAE,mBAAmB;IAI7C;;OAEG;IACH,SAAS,IAAI,GAAG,EAAE;IAiBlB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0BxE;;OAEG;YACW,qBAAqB;IAmHnC;;OAEG;YACW,mBAAmB;CA4ClC"}