test-wuying-agentbay-sdk
Version:
TypeScript SDK for interacting with the Wuying AgentBay cloud runtime environment
296 lines (248 loc) • 9.64 kB
text/typescript
import { AgentBay, log, logError, CreateSessionParams, ContextSync, newSyncPolicy, ContextStatusData, newCreateSessionParams, MobileExtraConfig, AppManagerRule, ExtraConfigs } from 'wuying-agentbay-sdk'
/**
* Create a session with default parameters
*/
async function createSessionWithDefaultParams() {
// Initialize the AgentBay client
const agent_bay = new AgentBay({ apiKey: process.env.AGENTBAY_API_KEY });
try {
// Create a session with default parameters
const result = await agent_bay.create();
if (result.success && result.session) {
log(`Session created successfully with ID: ${result.session.sessionId}`);
log(`Request ID: ${result.requestId}`);
// Clean up
const deleteResult = await agent_bay.delete(result.session);
if (deleteResult.success) {
log('Session deleted successfully');
} else {
log(`Failed to delete session: ${deleteResult.errorMessage}`);
}
} else {
log(`Failed to create session: ${result.errorMessage}`);
}
} catch (error) {
logError('Error:', error);
}
}
/**
* Create a session with labels
*/
async function createSessionWithLabels() {
// Initialize the AgentBay client
const agent_bay = new AgentBay({ apiKey: process.env.AGENTBAY_API_KEY });
try {
// Define labels
const labels = {
environment: 'development',
project: 'example',
owner: 'user123'
};
// Create session parameters with labels
const params: CreateSessionParams = {
labels
};
// Create a session with the parameters
const result = await agent_bay.create(params);
if (result.success && result.session) {
log(`Session with labels created successfully with ID: ${result.session.sessionId}`);
log(`Request ID: ${result.requestId}`);
// Verify the labels were set
const labelResult = await result.session.getLabels();
if (labelResult.success && labelResult.data) {
log('Retrieved labels:');
Object.entries(labelResult.data).forEach(([key, value]) => {
log(` ${key}: ${value}`);
});
}
// Clean up
const deleteResult = await agent_bay.delete(result.session);
if (deleteResult.success) {
log('Session deleted successfully');
} else {
log(`Failed to delete session: ${deleteResult.errorMessage}`);
}
} else {
log(`Failed to create session with labels: ${result.errorMessage}`);
}
} catch (error) {
logError('Error:', error);
}
}
/**
* Create a session with persistent context
*/
async function createSessionWithContext() {
// Initialize the AgentBay client
const agent_bay = new AgentBay({ apiKey: process.env.AGENTBAY_API_KEY });
try {
// Create or get a persistent context
const contextResult = await agent_bay.context.get('example-context', true);
if (contextResult.success && contextResult.context) {
log(`Using context with ID: ${contextResult.context.id}`);
// Create a session linked to the context
const params = newCreateSessionParams()
.addContextSync(contextResult.context.id, "/home/wuying");
const sessionResult = await agent_bay.create(params);
if (sessionResult.success && sessionResult.session) {
log(`Session with context created successfully with ID: ${sessionResult.session.sessionId}`);
log(`Request ID: ${sessionResult.requestId}`);
// Clean up
const deleteResult = await agent_bay.delete(sessionResult.session);
if (deleteResult.success) {
log('Session deleted successfully');
} else {
log(`Failed to delete session: ${deleteResult.errorMessage}`);
}
} else {
log(`Failed to create session with context: ${sessionResult.errorMessage}`);
}
} else {
log(`Failed to get or create context: ${contextResult.errorMessage}`);
}
} catch (error) {
logError('Error:', error);
}
}
/**
* Create a session with context synchronization
*/
async function createSessionWithContextSync() {
// Initialize the AgentBay client
const agent_bay = new AgentBay({ apiKey: process.env.AGENTBAY_API_KEY });
try {
// Create or get a persistent context
const contextResult = await agent_bay.context.get('example-sync-context', true);
if (contextResult.success && contextResult.context) {
log(`Using context with ID: ${contextResult.context.id}`);
// Create a context sync configuration with default policy
const contextId = contextResult.context.id;
const path = '/mnt/persistent'
const policy = newSyncPolicy();
const contextSync = new ContextSync(contextId,path,policy);
// Create a session with context synchronization
const params: CreateSessionParams = {
contextSync: [contextSync]
};
const sessionResult = await agent_bay.create(params);
if (sessionResult.success && sessionResult.session) {
log(`Session with context sync created successfully with ID: ${sessionResult.session.sessionId}`);
log(`Request ID: ${sessionResult.requestId}`);
// List the synchronized contexts
// Wait for context to be synchronized
await new Promise(resolve => setTimeout(resolve, 2000));
const listResult = await sessionResult.session.context.info();
if (listResult.requestId && listResult.contextStatusData.length > 0) {
log(`Found ${listResult.contextStatusData.length} synchronized contexts:`);
listResult.contextStatusData.forEach((ctx:ContextStatusData) => {
log(`Context ID: ${ctx.contextId}, Path: ${ctx.path}, State: ${ctx.status}`);
});
}
// Clean up
const deleteResult = await agent_bay.delete(sessionResult.session);
if (deleteResult.success) {
log('Session deleted successfully');
} else {
log(`Failed to delete session: ${deleteResult.errorMessage}`);
}
} else {
log(`Failed to create session with context sync: ${sessionResult.errorMessage}`);
}
} else {
log(`Failed to get or create context: ${contextResult.errorMessage}`);
}
} catch (error) {
logError('Error:', error);
}
}
/**
* Create a mobile session with extra configurations
*/
async function createMobileSessionWithExtraConfigs() {
// Initialize the AgentBay client
const agent_bay = new AgentBay({ apiKey: process.env.AGENTBAY_API_KEY });
try {
// Create mobile configuration with app manager rule, resolution lock, navigation bar control, and uninstall protection
const appRule: AppManagerRule = {
ruleType: "White",
appPackageNameList: [
"com.android.settings",
"com.example.test.app",
"com.trusted.service",
"com.system.essential.service"
]
};
const mobileConfig: MobileExtraConfig = {
lockResolution: true, // Lock screen resolution for consistent testing
appManagerRule: appRule,
hideNavigationBar: true, // Hide navigation bar for immersive experience
uninstallBlacklist: [ // Protect critical apps from uninstallation
"com.android.systemui",
"com.android.settings",
"com.google.android.gms"
]
};
const extraConfigs: ExtraConfigs = {
mobile: mobileConfig
};
// Create session parameters with extra configurations
const params = newCreateSessionParams()
.withImageId("mobile_latest")
.withLabels({
project: "mobile-testing",
environment: "development",
config_type: "comprehensive"
})
.withExtraConfigs(extraConfigs);
// Create session
const result = await agent_bay.create(params);
if (result.success && result.session) {
log(`Mobile session with extra configs created with ID: ${result.session.sessionId}`);
log(`Request ID: ${result.requestId}`);
log('Extra configurations applied:');
log(`- Lock Resolution: ${mobileConfig.lockResolution}`);
log(`- Hide Navigation Bar: ${mobileConfig.hideNavigationBar}`);
log(`- App Manager Rule Type: ${appRule.ruleType}`);
log(`- Managed Apps: ${appRule.appPackageNameList.length}`);
appRule.appPackageNameList.forEach(pkg => {
log(` - ${pkg}`);
});
log(`- Uninstall Protection: ${mobileConfig.uninstallBlacklist?.length} packages`);
mobileConfig.uninstallBlacklist?.forEach(pkg => {
log(` - ${pkg}`);
});
// Clean up
const deleteResult = await agent_bay.delete(result.session);
if (deleteResult.success) {
log('Mobile session deleted successfully');
} else {
log(`Failed to delete mobile session: ${deleteResult.errorMessage}`);
}
} else {
log(`Failed to create mobile session: ${result.errorMessage}`);
}
} catch (error) {
logError('Error:', error);
}
}
/**
* Run all examples
*/
async function main() {
log('Session Creation Examples');
log('=========================');
log('\n1. Creating session with default parameters...');
await createSessionWithDefaultParams();
log('\n2. Creating session with labels...');
await createSessionWithLabels();
log('\n3. Creating session with context...');
await createSessionWithContext();
log('\n4. Creating session with context synchronization...');
await createSessionWithContextSync();
log('\n5. Creating mobile session with extra configurations...');
await createMobileSessionWithExtraConfigs();
}
main().catch(error => {
logError('Error in main:', error);
process.exit(1);
});