AIClient-2-API/test-droid.js
bee4come 3111119f93 Add Droid (Factory.ai) provider support
This commit adds support for Factory.ai's Droid CLI as a provider,
enabling users to use Droid through an OpenAI-compatible API interface.

Implementation details:
- Created DroidApiService that wraps the droid CLI
- Added DroidStrategy for protocol conversion (Claude-compatible)
- Supports both streaming and non-streaming responses
- No API keys or token management required - uses droid CLI directly

Files added:
- src/droid/droid-core.js: Core service using CLI wrapper
- src/droid/droid-strategy.js: Strategy pattern implementation
- src/droid/README.md: Comprehensive documentation
- test-droid.js: Test script for validation

Files modified:
- src/adapter.js: Added DroidApiServiceAdapter
- src/common.js: Added DROID constants
- src/provider-strategies.js: Registered DroidStrategy
- README.md: Updated with Droid provider information
2025-10-15 11:29:17 +08:00

59 lines
2.2 KiB
JavaScript

// Test script for Droid provider
import { DroidApiService } from './src/droid/droid-core.js';
import { promises as fs } from 'fs';
async function testDroidProvider() {
console.log('🧪 Testing Droid Provider (CLI-based)...\n');
try {
// Test 1: Initialize DroidApiService (check droid CLI availability)
console.log('✅ Test 1: Initializing DroidApiService...');
const service = new DroidApiService();
await service.initialize();
console.log(' DroidApiService initialized successfully');
console.log(' isInitialized:', service.isInitialized);
// Test 2: List models
console.log('\n✅ Test 2: Listing available models...');
const models = await service.listModels();
console.log(` Available models: ${models.data.length}`);
models.data.forEach(model => {
console.log(` - ${model.id}`);
});
// Test 3: Test simple request (non-streaming)
console.log('\n✅ Test 3: Testing simple request...');
try {
const response = await service.generateContent('claude-sonnet-4-5-20250929', {
messages: [
{ role: 'user', content: 'Say "Hello from Droid test!" in one sentence.' }
],
max_tokens: 50
});
console.log(' Response received:');
console.log(' Model:', response.model);
console.log(' Stop reason:', response.stop_reason);
if (response.content && response.content[0]) {
console.log(' Content:', response.content[0].text);
}
} catch (error) {
console.error(' ❌ Request failed:', error.message);
console.log(' 💡 Make sure you are authenticated with: droid');
}
console.log('\n✅ All tests completed!');
} catch (error) {
console.error('\n❌ Test failed:', error.message);
console.error('Stack:', error.stack);
}
}
// Run tests
testDroidProvider().then(() => {
console.log('\n🎉 Test suite finished');
process.exit(0);
}).catch(error => {
console.error('\n💥 Test suite error:', error);
process.exit(1);
});