bedrock-agentcore 0.0.1 → 0.2.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.
- package/LICENSE +202 -0
- package/README.md +131 -9
- package/dist/src/_utils/endpoints.d.ts +28 -0
- package/dist/src/_utils/endpoints.d.ts.map +1 -0
- package/dist/src/_utils/endpoints.js +44 -0
- package/dist/src/_utils/endpoints.js.map +1 -0
- package/dist/src/identity/client.d.ts +40 -0
- package/dist/src/identity/client.d.ts.map +1 -0
- package/dist/src/identity/client.js +109 -0
- package/dist/src/identity/client.js.map +1 -0
- package/dist/src/identity/index.d.ts +22 -0
- package/dist/src/identity/index.d.ts.map +1 -0
- package/dist/src/identity/index.js +24 -0
- package/dist/src/identity/index.js.map +1 -0
- package/dist/src/identity/types.d.ts +82 -0
- package/dist/src/identity/types.d.ts.map +1 -0
- package/dist/src/identity/types.js +5 -0
- package/dist/src/identity/types.js.map +1 -0
- package/dist/src/identity/wrappers.d.ts +54 -0
- package/dist/src/identity/wrappers.d.ts.map +1 -0
- package/dist/src/identity/wrappers.js +95 -0
- package/dist/src/identity/wrappers.js.map +1 -0
- package/dist/src/runtime/app.d.ts +144 -0
- package/dist/src/runtime/app.d.ts.map +1 -0
- package/dist/src/runtime/app.js +485 -0
- package/dist/src/runtime/app.js.map +1 -0
- package/dist/src/runtime/client.d.ts +154 -0
- package/dist/src/runtime/client.d.ts.map +1 -0
- package/dist/src/runtime/client.js +319 -0
- package/dist/src/runtime/client.js.map +1 -0
- package/dist/src/runtime/context.d.ts +33 -0
- package/dist/src/runtime/context.d.ts.map +1 -0
- package/dist/src/runtime/context.js +49 -0
- package/dist/src/runtime/context.js.map +1 -0
- package/dist/src/runtime/index.d.ts +8 -0
- package/dist/src/runtime/index.d.ts.map +1 -0
- package/dist/src/runtime/index.js +7 -0
- package/dist/src/runtime/index.js.map +1 -0
- package/dist/src/runtime/types.d.ts +429 -0
- package/dist/src/runtime/types.d.ts.map +1 -0
- package/dist/src/runtime/types.js +26 -0
- package/dist/src/runtime/types.js.map +1 -0
- package/dist/src/tools/browser/client.d.ts +125 -0
- package/dist/src/tools/browser/client.d.ts.map +1 -0
- package/dist/src/tools/browser/client.js +320 -0
- package/dist/src/tools/browser/client.js.map +1 -0
- package/dist/src/tools/browser/index.d.ts +4 -0
- package/dist/src/tools/browser/index.d.ts.map +1 -0
- package/dist/src/tools/browser/index.js +3 -0
- package/dist/src/tools/browser/index.js.map +1 -0
- package/dist/src/tools/browser/integrations/playwright/client.d.ts +147 -0
- package/dist/src/tools/browser/integrations/playwright/client.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/playwright/client.js +324 -0
- package/dist/src/tools/browser/integrations/playwright/client.js.map +1 -0
- package/dist/src/tools/browser/integrations/playwright/index.d.ts +20 -0
- package/dist/src/tools/browser/integrations/playwright/index.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/playwright/index.js +19 -0
- package/dist/src/tools/browser/integrations/playwright/index.js.map +1 -0
- package/dist/src/tools/browser/integrations/playwright/types.d.ts +169 -0
- package/dist/src/tools/browser/integrations/playwright/types.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/playwright/types.js +2 -0
- package/dist/src/tools/browser/integrations/playwright/types.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/click-tool.d.ts +20 -0
- package/dist/src/tools/browser/integrations/strands/click-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/click-tool.js +33 -0
- package/dist/src/tools/browser/integrations/strands/click-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/evaluate-tool.d.ts +20 -0
- package/dist/src/tools/browser/integrations/strands/evaluate-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/evaluate-tool.js +34 -0
- package/dist/src/tools/browser/integrations/strands/evaluate-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/get-html-tool.d.ts +19 -0
- package/dist/src/tools/browser/integrations/strands/get-html-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/get-html-tool.js +32 -0
- package/dist/src/tools/browser/integrations/strands/get-html-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/get-text-tool.d.ts +19 -0
- package/dist/src/tools/browser/integrations/strands/get-text-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/get-text-tool.js +32 -0
- package/dist/src/tools/browser/integrations/strands/get-text-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/index.d.ts +25 -0
- package/dist/src/tools/browser/integrations/strands/index.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/index.js +25 -0
- package/dist/src/tools/browser/integrations/strands/index.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/navigate-tool.d.ts +21 -0
- package/dist/src/tools/browser/integrations/strands/navigate-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/navigate-tool.js +41 -0
- package/dist/src/tools/browser/integrations/strands/navigate-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/screenshot-tool.d.ts +29 -0
- package/dist/src/tools/browser/integrations/strands/screenshot-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/screenshot-tool.js +52 -0
- package/dist/src/tools/browser/integrations/strands/screenshot-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/tools.d.ts +119 -0
- package/dist/src/tools/browser/integrations/strands/tools.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/tools.js +141 -0
- package/dist/src/tools/browser/integrations/strands/tools.js.map +1 -0
- package/dist/src/tools/browser/integrations/strands/type-tool.d.ts +22 -0
- package/dist/src/tools/browser/integrations/strands/type-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/strands/type-tool.js +37 -0
- package/dist/src/tools/browser/integrations/strands/type-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/click-tool.d.ts +18 -0
- package/dist/src/tools/browser/integrations/vercel-ai/click-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/click-tool.js +31 -0
- package/dist/src/tools/browser/integrations/vercel-ai/click-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/evaluate-tool.d.ts +18 -0
- package/dist/src/tools/browser/integrations/vercel-ai/evaluate-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/evaluate-tool.js +32 -0
- package/dist/src/tools/browser/integrations/vercel-ai/evaluate-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-html-tool.d.ts +17 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-html-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-html-tool.js +30 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-html-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-text-tool.d.ts +17 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-text-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-text-tool.js +30 -0
- package/dist/src/tools/browser/integrations/vercel-ai/get-text-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/index.d.ts +19 -0
- package/dist/src/tools/browser/integrations/vercel-ai/index.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/index.js +19 -0
- package/dist/src/tools/browser/integrations/vercel-ai/index.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/navigate-tool.d.ts +19 -0
- package/dist/src/tools/browser/integrations/vercel-ai/navigate-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/navigate-tool.js +39 -0
- package/dist/src/tools/browser/integrations/vercel-ai/navigate-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/screenshot-tool.d.ts +22 -0
- package/dist/src/tools/browser/integrations/vercel-ai/screenshot-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/screenshot-tool.js +44 -0
- package/dist/src/tools/browser/integrations/vercel-ai/screenshot-tool.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/tools.d.ts +123 -0
- package/dist/src/tools/browser/integrations/vercel-ai/tools.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/tools.js +145 -0
- package/dist/src/tools/browser/integrations/vercel-ai/tools.js.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/type-tool.d.ts +20 -0
- package/dist/src/tools/browser/integrations/vercel-ai/type-tool.d.ts.map +1 -0
- package/dist/src/tools/browser/integrations/vercel-ai/type-tool.js +35 -0
- package/dist/src/tools/browser/integrations/vercel-ai/type-tool.js.map +1 -0
- package/dist/src/tools/browser/types.d.ts +336 -0
- package/dist/src/tools/browser/types.d.ts.map +1 -0
- package/dist/src/tools/browser/types.js +17 -0
- package/dist/src/tools/browser/types.js.map +1 -0
- package/dist/src/tools/code-interpreter/client.d.ts +214 -0
- package/dist/src/tools/code-interpreter/client.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/client.js +518 -0
- package/dist/src/tools/code-interpreter/client.js.map +1 -0
- package/dist/src/tools/code-interpreter/index.d.ts +4 -0
- package/dist/src/tools/code-interpreter/index.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/index.js +5 -0
- package/dist/src/tools/code-interpreter/index.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-code-tool.d.ts +28 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-code-tool.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-code-tool.js +47 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-code-tool.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-command-tool.d.ts +27 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-command-tool.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-command-tool.js +42 -0
- package/dist/src/tools/code-interpreter/integrations/strands/execute-command-tool.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/file-operations-tool.d.ts +33 -0
- package/dist/src/tools/code-interpreter/integrations/strands/file-operations-tool.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/file-operations-tool.js +78 -0
- package/dist/src/tools/code-interpreter/integrations/strands/file-operations-tool.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/index.d.ts +32 -0
- package/dist/src/tools/code-interpreter/integrations/strands/index.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/index.js +32 -0
- package/dist/src/tools/code-interpreter/integrations/strands/index.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/tools.d.ts +94 -0
- package/dist/src/tools/code-interpreter/integrations/strands/tools.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/strands/tools.js +112 -0
- package/dist/src/tools/code-interpreter/integrations/strands/tools.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-code-tool.d.ts +27 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-code-tool.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-code-tool.js +46 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-code-tool.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-command-tool.d.ts +26 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-command-tool.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-command-tool.js +41 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/execute-command-tool.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/file-operations-tool.d.ts +32 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/file-operations-tool.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/file-operations-tool.js +77 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/file-operations-tool.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/index.d.ts +26 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/index.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/index.js +26 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/index.js.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/tools.d.ts +94 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/tools.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/tools.js +112 -0
- package/dist/src/tools/code-interpreter/integrations/vercel-ai/tools.js.map +1 -0
- package/dist/src/tools/code-interpreter/types.d.ts +473 -0
- package/dist/src/tools/code-interpreter/types.d.ts.map +1 -0
- package/dist/src/tools/code-interpreter/types.js +52 -0
- package/dist/src/tools/code-interpreter/types.js.map +1 -0
- package/package.json +134 -12
- package/index.js +0 -4
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { BedrockAgentCoreClient, StartBrowserSessionCommand, StopBrowserSessionCommand, GetBrowserSessionCommand, ListBrowserSessionsCommand, UpdateBrowserStreamCommand, } from '@aws-sdk/client-bedrock-agentcore';
|
|
2
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
|
+
import { HttpRequest } from '@smithy/protocol-http';
|
|
4
|
+
import { SignatureV4 } from '@smithy/signature-v4';
|
|
5
|
+
import { Sha256 } from '@aws-crypto/sha256-js';
|
|
6
|
+
import { DEFAULT_IDENTIFIER, DEFAULT_SESSION_NAME, DEFAULT_TIMEOUT, DEFAULT_REGION } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Base client for AWS Bedrock AgentCore Browser service.
|
|
9
|
+
*
|
|
10
|
+
* Provides core AWS SDK operations for browser session management and WebSocket connectivity.
|
|
11
|
+
* This client handles session lifecycle and authentication but does not include browser
|
|
12
|
+
* automation methods. Use PlaywrightBrowser for full browser automation capabilities.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const browser = new Browser({ region: 'us-east-1' })
|
|
17
|
+
*
|
|
18
|
+
* // Start a session
|
|
19
|
+
* const session = await browser.startSession({ sessionName: 'my-session' })
|
|
20
|
+
*
|
|
21
|
+
* // Get WebSocket URL for custom browser integration
|
|
22
|
+
* const wsConnection = await browser.generateWebSocketUrl()
|
|
23
|
+
*
|
|
24
|
+
* // Stop the session
|
|
25
|
+
* await browser.stopSession()
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export class Browser {
|
|
29
|
+
region;
|
|
30
|
+
identifier;
|
|
31
|
+
_client;
|
|
32
|
+
_session = null;
|
|
33
|
+
_credentialsProvider = undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new BrowserClient instance.
|
|
36
|
+
*
|
|
37
|
+
* @param config - Configuration options for the client
|
|
38
|
+
*/
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.region = config.region ?? process.env.AWS_REGION ?? DEFAULT_REGION;
|
|
41
|
+
this.identifier = config.identifier ?? DEFAULT_IDENTIFIER;
|
|
42
|
+
this._credentialsProvider = config.credentialsProvider;
|
|
43
|
+
this._client = new BedrockAgentCoreClient({
|
|
44
|
+
region: this.region,
|
|
45
|
+
...(this._credentialsProvider && { credentials: this._credentialsProvider }),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// ===========================
|
|
49
|
+
// Session Management
|
|
50
|
+
// ===========================
|
|
51
|
+
/**
|
|
52
|
+
* Starts a new browser session.
|
|
53
|
+
*
|
|
54
|
+
* @param params - Optional parameters for session configuration
|
|
55
|
+
* @returns Information about the started session
|
|
56
|
+
*
|
|
57
|
+
* @throws Error if a session is already active
|
|
58
|
+
*/
|
|
59
|
+
async startSession(params) {
|
|
60
|
+
if (this._session) {
|
|
61
|
+
throw new Error('Session already active. Call stopSession() first.');
|
|
62
|
+
}
|
|
63
|
+
const sessionName = params?.sessionName ?? DEFAULT_SESSION_NAME;
|
|
64
|
+
const sessionTimeoutSeconds = params?.timeout ?? DEFAULT_TIMEOUT;
|
|
65
|
+
// Prepare command input
|
|
66
|
+
const input = {
|
|
67
|
+
browserIdentifier: this.identifier,
|
|
68
|
+
name: sessionName,
|
|
69
|
+
sessionTimeoutSeconds: sessionTimeoutSeconds,
|
|
70
|
+
viewPort: params?.viewport
|
|
71
|
+
? {
|
|
72
|
+
width: params.viewport.width,
|
|
73
|
+
height: params.viewport.height,
|
|
74
|
+
}
|
|
75
|
+
: undefined,
|
|
76
|
+
};
|
|
77
|
+
// Start the session
|
|
78
|
+
const command = new StartBrowserSessionCommand(input);
|
|
79
|
+
const response = await this._client.send(command);
|
|
80
|
+
// Store session info
|
|
81
|
+
const sessionInfo = {
|
|
82
|
+
sessionName,
|
|
83
|
+
sessionId: response.sessionId,
|
|
84
|
+
createdAt: response.createdAt ?? new Date(),
|
|
85
|
+
};
|
|
86
|
+
this._session = sessionInfo;
|
|
87
|
+
return sessionInfo;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Stops the active browser session.
|
|
91
|
+
*
|
|
92
|
+
* @throws Error if no session is active
|
|
93
|
+
*/
|
|
94
|
+
async stopSession() {
|
|
95
|
+
if (!this._session) {
|
|
96
|
+
// Silently succeed if no session (idempotent)
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// Stop the AWS session
|
|
100
|
+
const command = new StopBrowserSessionCommand({
|
|
101
|
+
browserIdentifier: this.identifier,
|
|
102
|
+
sessionId: this._session.sessionId,
|
|
103
|
+
});
|
|
104
|
+
await this._client.send(command);
|
|
105
|
+
// Clear session state
|
|
106
|
+
this._session = null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get detailed information about a browser session.
|
|
110
|
+
*
|
|
111
|
+
* @param params - Optional parameters specifying which session to query
|
|
112
|
+
* @returns Detailed session information
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Get current active session details
|
|
117
|
+
* const sessionInfo = await browser.getSession()
|
|
118
|
+
* console.log(`Session status: ${sessionInfo.status}`)
|
|
119
|
+
*
|
|
120
|
+
* // Get details for a specific session
|
|
121
|
+
* const sessionInfo = await browser.getSession({
|
|
122
|
+
* sessionId: 'specific-session-id'
|
|
123
|
+
* })
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
async getSession(params) {
|
|
127
|
+
const browserId = params?.browserId ?? this.identifier;
|
|
128
|
+
const sessionId = params?.sessionId ?? this._session?.sessionId;
|
|
129
|
+
if (!browserId || !sessionId) {
|
|
130
|
+
throw new Error('Browser ID and Session ID must be provided or available from current session. ' +
|
|
131
|
+
'Start a session first or provide explicit IDs.');
|
|
132
|
+
}
|
|
133
|
+
const command = new GetBrowserSessionCommand({
|
|
134
|
+
browserIdentifier: browserId,
|
|
135
|
+
sessionId,
|
|
136
|
+
});
|
|
137
|
+
const response = await this._client.send(command);
|
|
138
|
+
// Parse streams if present - using type extension for fields not in SDK types yet
|
|
139
|
+
const responseWithExtras = response;
|
|
140
|
+
const responseData = {
|
|
141
|
+
sessionId: response.sessionId,
|
|
142
|
+
browserIdentifier: response.browserIdentifier,
|
|
143
|
+
name: response.name,
|
|
144
|
+
status: response.status ?? 'UNKNOWN',
|
|
145
|
+
createdAt: response.createdAt,
|
|
146
|
+
lastUpdatedAt: responseWithExtras.lastUpdatedAt ?? response.createdAt,
|
|
147
|
+
sessionTimeoutSeconds: response.sessionTimeoutSeconds,
|
|
148
|
+
};
|
|
149
|
+
// Add streams if present
|
|
150
|
+
if (responseWithExtras.streams) {
|
|
151
|
+
const streams = {};
|
|
152
|
+
const autoStream = responseWithExtras.streams.automationStream;
|
|
153
|
+
if (autoStream?.streamEndpoint) {
|
|
154
|
+
const streamInfo = {
|
|
155
|
+
streamEndpoint: autoStream.streamEndpoint,
|
|
156
|
+
};
|
|
157
|
+
if (autoStream.streamStatus) {
|
|
158
|
+
streamInfo.streamStatus = autoStream.streamStatus;
|
|
159
|
+
}
|
|
160
|
+
streams.automationStream = streamInfo;
|
|
161
|
+
}
|
|
162
|
+
const liveStream = responseWithExtras.streams.liveViewStream;
|
|
163
|
+
if (liveStream?.streamEndpoint) {
|
|
164
|
+
streams.liveViewStream = {
|
|
165
|
+
streamEndpoint: liveStream.streamEndpoint,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
responseData.streams = streams;
|
|
169
|
+
}
|
|
170
|
+
return responseData;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* List browser sessions for this browser.
|
|
174
|
+
*
|
|
175
|
+
* @param params - Optional filtering and pagination parameters
|
|
176
|
+
* @returns List of session summaries with optional pagination token
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* // List all active sessions
|
|
181
|
+
* const response = await browser.listSessions({ status: 'READY' })
|
|
182
|
+
* for (const session of response.items) {
|
|
183
|
+
* console.log(`Session ${session.sessionId}: ${session.status}`)
|
|
184
|
+
* }
|
|
185
|
+
*
|
|
186
|
+
* // Paginate through results
|
|
187
|
+
* let response = await browser.listSessions({ maxResults: 10 })
|
|
188
|
+
* while (response.nextToken) {
|
|
189
|
+
* response = await browser.listSessions({
|
|
190
|
+
* maxResults: 10,
|
|
191
|
+
* nextToken: response.nextToken
|
|
192
|
+
* })
|
|
193
|
+
* }
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
async listSessions(params) {
|
|
197
|
+
const browserId = params?.browserId ?? this.identifier;
|
|
198
|
+
if (!browserId) {
|
|
199
|
+
throw new Error('Browser ID must be provided or available from configuration');
|
|
200
|
+
}
|
|
201
|
+
const command = new ListBrowserSessionsCommand({
|
|
202
|
+
browserIdentifier: browserId,
|
|
203
|
+
...(params?.status && {
|
|
204
|
+
status: params.status,
|
|
205
|
+
}),
|
|
206
|
+
...(params?.maxResults && { maxResults: params.maxResults }),
|
|
207
|
+
...(params?.nextToken && { nextToken: params.nextToken }),
|
|
208
|
+
});
|
|
209
|
+
const response = await this._client.send(command);
|
|
210
|
+
const items = response.items?.map((item) => ({
|
|
211
|
+
sessionId: item.sessionId,
|
|
212
|
+
name: item.name,
|
|
213
|
+
status: item.status ?? 'UNKNOWN',
|
|
214
|
+
createdAt: item.createdAt,
|
|
215
|
+
lastUpdatedAt: item.lastUpdatedAt,
|
|
216
|
+
})) ?? [];
|
|
217
|
+
return {
|
|
218
|
+
items,
|
|
219
|
+
...(response.nextToken && { nextToken: response.nextToken }),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Update the browser automation stream status.
|
|
224
|
+
*
|
|
225
|
+
* @param params - Stream update parameters
|
|
226
|
+
* @returns Updated stream information
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* // Enable automation stream
|
|
231
|
+
* const result = await browser.updateBrowserStream({
|
|
232
|
+
* streamStatus: 'ENABLED'
|
|
233
|
+
* })
|
|
234
|
+
*
|
|
235
|
+
* // Disable automation stream
|
|
236
|
+
* await browser.updateBrowserStream({
|
|
237
|
+
* streamStatus: 'DISABLED'
|
|
238
|
+
* })
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
async updateBrowserStream(params) {
|
|
242
|
+
const browserId = params.browserId ?? this.identifier;
|
|
243
|
+
const sessionId = params.sessionId ?? this._session?.sessionId;
|
|
244
|
+
if (!browserId || !sessionId) {
|
|
245
|
+
throw new Error('Browser ID and Session ID must be provided or available from current session. ' +
|
|
246
|
+
'Start a session first or provide explicit IDs.');
|
|
247
|
+
}
|
|
248
|
+
const command = new UpdateBrowserStreamCommand({
|
|
249
|
+
browserIdentifier: browserId,
|
|
250
|
+
sessionId,
|
|
251
|
+
streamUpdate: {
|
|
252
|
+
automationStreamUpdate: {
|
|
253
|
+
streamStatus: params.streamStatus,
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
const response = await this._client.send(command);
|
|
258
|
+
// Extract the updated stream information from the response
|
|
259
|
+
const automationStream = response.streams?.automationStream;
|
|
260
|
+
const result = {};
|
|
261
|
+
if (automationStream?.streamEndpoint) {
|
|
262
|
+
result.streamEndpoint = automationStream.streamEndpoint;
|
|
263
|
+
}
|
|
264
|
+
if (automationStream?.streamStatus) {
|
|
265
|
+
result.streamStatus = automationStream.streamStatus;
|
|
266
|
+
}
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Generates a WebSocket URL and authentication headers for browser automation.
|
|
271
|
+
* Uses AWS Signature Version 4 to sign the WebSocket connection request.
|
|
272
|
+
*
|
|
273
|
+
* @returns WebSocket connection details with URL and authentication headers
|
|
274
|
+
*
|
|
275
|
+
* @throws Error if no session is active
|
|
276
|
+
*/
|
|
277
|
+
async generateWebSocketUrl() {
|
|
278
|
+
if (!this._session) {
|
|
279
|
+
throw new Error('No active session. Call startSession() first.');
|
|
280
|
+
}
|
|
281
|
+
// Construct WebSocket URL
|
|
282
|
+
const host = `bedrock-agentcore.${this.region}.amazonaws.com`;
|
|
283
|
+
const path = `/browser-streams/${this.identifier}/sessions/${this._session.sessionId}/automation`;
|
|
284
|
+
const wsUrl = `wss://${host}${path}`;
|
|
285
|
+
// Obtain AWS credentials for SigV4 signing of WebSocket connection
|
|
286
|
+
// Use provided credentials or fall back to default chain
|
|
287
|
+
const credentialsProvider = this._credentialsProvider ?? fromNodeProviderChain();
|
|
288
|
+
const credentials = await credentialsProvider();
|
|
289
|
+
// Create HTTP request for signing
|
|
290
|
+
const request = new HttpRequest({
|
|
291
|
+
protocol: 'wss:',
|
|
292
|
+
hostname: host,
|
|
293
|
+
path,
|
|
294
|
+
method: 'GET',
|
|
295
|
+
headers: {
|
|
296
|
+
host,
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
// Sign the request using SigV4
|
|
300
|
+
const signer = new SignatureV4({
|
|
301
|
+
service: 'bedrock-agentcore',
|
|
302
|
+
region: this.region,
|
|
303
|
+
credentials,
|
|
304
|
+
sha256: Sha256,
|
|
305
|
+
});
|
|
306
|
+
const signedRequest = await signer.sign(request);
|
|
307
|
+
// Extract headers for WebSocket connection
|
|
308
|
+
const headers = {};
|
|
309
|
+
for (const [key, value] of Object.entries(signedRequest.headers)) {
|
|
310
|
+
if (typeof value === 'string') {
|
|
311
|
+
headers[key] = value;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
url: wsUrl,
|
|
316
|
+
headers,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/tools/browser/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Browser } from './client.js';
|
|
2
|
+
export type { BrowserClientConfig, SessionInfo, StartSessionParams, ViewportConfig, WebSocketConnection, SessionStatus, BrowserOperationResult, } from './types.js';
|
|
3
|
+
export { DEFAULT_IDENTIFIER, DEFAULT_SESSION_NAME, DEFAULT_TIMEOUT } from './types.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAUrC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Browser } from '../../client.js';
|
|
2
|
+
import type { BrowserClientConfig } from '../../types.js';
|
|
3
|
+
import type { NavigateParams, ClickParams, TypeParams, GetTextParams, GetHtmlParams, ScreenshotParams, EvaluateParams, CookieParams, WaitForSelectorParams, FillParams, IsVisibleParams } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Playwright-based browser automation client for AWS Bedrock AgentCore Browser service.
|
|
6
|
+
*
|
|
7
|
+
* Extends Browser with full browser automation capabilities using Playwright.
|
|
8
|
+
* Provides methods for navigation, interaction, content extraction, and JavaScript execution.
|
|
9
|
+
*
|
|
10
|
+
* Sessions are automatically created on first use and Playwright connections are
|
|
11
|
+
* managed internally.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const browser = new PlaywrightBrowser({ region: 'us-east-1' })
|
|
16
|
+
*
|
|
17
|
+
* // Direct usage (auto-creates session)
|
|
18
|
+
* await browser.navigate({ url: 'https://example.com' })
|
|
19
|
+
* await browser.click({ selector: 'button' })
|
|
20
|
+
* const text = await browser.getText({ selector: 'h1' })
|
|
21
|
+
*
|
|
22
|
+
* // Explicit session management
|
|
23
|
+
* await browser.startSession({ sessionName: 'my-session' })
|
|
24
|
+
* await browser.navigate({ url: 'https://example.com' })
|
|
25
|
+
* await browser.stopSession()
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class PlaywrightBrowser extends Browser {
|
|
29
|
+
private _playwrightBrowser;
|
|
30
|
+
private _playwrightPage;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new PlaywrightBrowser instance.
|
|
33
|
+
*
|
|
34
|
+
* @param config - Configuration options for the client
|
|
35
|
+
*/
|
|
36
|
+
constructor(config: BrowserClientConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Stops the active browser session and closes Playwright connections.
|
|
39
|
+
*/
|
|
40
|
+
stopSession(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Navigates to a URL.
|
|
43
|
+
* Automatically creates a session and connects if needed.
|
|
44
|
+
*
|
|
45
|
+
* @param params - Navigation parameters
|
|
46
|
+
*/
|
|
47
|
+
navigate(params: NavigateParams): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Clicks an element on the page.
|
|
50
|
+
*
|
|
51
|
+
* @param params - Click parameters
|
|
52
|
+
*/
|
|
53
|
+
click(params: ClickParams): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Types text into an input element.
|
|
56
|
+
*
|
|
57
|
+
* @param params - Type parameters
|
|
58
|
+
*/
|
|
59
|
+
type(params: TypeParams): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Gets text content from an element or the page.
|
|
62
|
+
*
|
|
63
|
+
* @param params - GetText parameters
|
|
64
|
+
* @returns Text content
|
|
65
|
+
*/
|
|
66
|
+
getText(params?: GetTextParams): Promise<string>;
|
|
67
|
+
/**
|
|
68
|
+
* Gets HTML content from an element or the page.
|
|
69
|
+
*
|
|
70
|
+
* @param params - GetHtml parameters
|
|
71
|
+
* @returns HTML content
|
|
72
|
+
*/
|
|
73
|
+
getHtml(params?: GetHtmlParams): Promise<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Takes a screenshot of the page.
|
|
76
|
+
*
|
|
77
|
+
* @param params - Screenshot parameters
|
|
78
|
+
* @returns Screenshot as base64 string or Buffer
|
|
79
|
+
*/
|
|
80
|
+
screenshot(params?: ScreenshotParams): Promise<globalThis.Buffer | string>;
|
|
81
|
+
/**
|
|
82
|
+
* Evaluates JavaScript code in the page context.
|
|
83
|
+
*
|
|
84
|
+
* @param params - Evaluate parameters
|
|
85
|
+
* @returns Result of the evaluation
|
|
86
|
+
*/
|
|
87
|
+
evaluate(params: EvaluateParams): Promise<any>;
|
|
88
|
+
/**
|
|
89
|
+
* Navigates back in browser history.
|
|
90
|
+
*/
|
|
91
|
+
back(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Navigates forward in browser history.
|
|
94
|
+
*/
|
|
95
|
+
forward(): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Refreshes the current page.
|
|
98
|
+
*/
|
|
99
|
+
refresh(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Gets all cookies.
|
|
102
|
+
*
|
|
103
|
+
* @returns Array of cookies
|
|
104
|
+
*/
|
|
105
|
+
getCookies(): Promise<any[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Sets cookies.
|
|
108
|
+
*
|
|
109
|
+
* @param params - Cookie parameters
|
|
110
|
+
*/
|
|
111
|
+
setCookies(params: CookieParams): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Presses a keyboard key.
|
|
114
|
+
*
|
|
115
|
+
* @param key - Key name (e.g., 'Enter', 'Tab', 'Escape')
|
|
116
|
+
*/
|
|
117
|
+
pressKey(key: string): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Waits for an element to be present in the DOM.
|
|
120
|
+
*
|
|
121
|
+
* @param params - WaitForSelector parameters
|
|
122
|
+
*/
|
|
123
|
+
waitForSelector(params: WaitForSelectorParams): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Fills an input element with text (clears existing value first).
|
|
126
|
+
* More reliable than type() for forms.
|
|
127
|
+
*
|
|
128
|
+
* @param params - Fill parameters
|
|
129
|
+
*/
|
|
130
|
+
fill(params: FillParams): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Checks if an element is visible on the page.
|
|
133
|
+
*
|
|
134
|
+
* @param params - IsVisible parameters
|
|
135
|
+
* @returns true if element is visible, false otherwise
|
|
136
|
+
*/
|
|
137
|
+
isVisible(params: IsVisibleParams): Promise<boolean>;
|
|
138
|
+
/**
|
|
139
|
+
* Ensures a session exists and Playwright is connected.
|
|
140
|
+
*/
|
|
141
|
+
private _ensureConnected;
|
|
142
|
+
/**
|
|
143
|
+
* Connects to the browser via Playwright WebSocket.
|
|
144
|
+
*/
|
|
145
|
+
private _connectPlaywright;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/tools/browser/integrations/playwright/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,iBAAkB,SAAQ,OAAO;IAE5C,OAAO,CAAC,kBAAkB,CAAY;IAEtC,OAAO,CAAC,eAAe,CAAY;IAEnC;;;;OAIG;gBACS,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACY,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3C;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C;;;;OAIG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;;;;OAKG;IACG,OAAO,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D;;;;;OAKG;IACG,OAAO,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D;;;;;OAKG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IAUhF;;;;;OAKG;IAEG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAKpD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;OAIG;IAEG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKlC;;;;OAIG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnE;;;;;OAKG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C;;;;;OAKG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB1D;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;YACW,kBAAkB;CAkCjC"}
|