autoagent-cli
Version:
Run autonomous AI agents using Claude or Gemini for task execution
66 lines (65 loc) • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MockProvider = exports.GeminiProvider = exports.ClaudeProvider = exports.Provider = void 0;
exports.createProvider = createProvider;
exports.getAvailableProviders = getAvailableProviders;
exports.getFirstAvailableProvider = getFirstAvailableProvider;
const Provider_1 = require("./Provider");
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return Provider_1.Provider; } });
const ClaudeProvider_1 = require("./ClaudeProvider");
Object.defineProperty(exports, "ClaudeProvider", { enumerable: true, get: function () { return ClaudeProvider_1.ClaudeProvider; } });
const GeminiProvider_1 = require("./GeminiProvider");
Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return GeminiProvider_1.GeminiProvider; } });
const MockProvider_1 = require("./MockProvider");
Object.defineProperty(exports, "MockProvider", { enumerable: true, get: function () { return MockProvider_1.MockProvider; } });
function createProvider(providerType) {
switch (providerType) {
case 'claude':
return new ClaudeProvider_1.ClaudeProvider();
case 'gemini':
return new GeminiProvider_1.GeminiProvider();
case 'mock':
return new MockProvider_1.MockProvider();
default:
throw new Error(`Invalid provider type: ${providerType}`);
}
}
async function getAvailableProviders() {
const providers = [
new ClaudeProvider_1.ClaudeProvider(),
new GeminiProvider_1.GeminiProvider(),
new MockProvider_1.MockProvider()
];
const availabilityChecks = await Promise.all(providers.map(async (provider) => ({
name: provider.name,
available: await provider.checkAvailability()
})));
return availabilityChecks
.filter(({ available }) => available)
.map(({ name }) => name);
}
async function getFirstAvailableProvider(preferredProviders) {
if (process.env.AUTOAGENT_MOCK_PROVIDER === 'true') {
try {
const mockProvider = createProvider('mock');
if (await mockProvider.checkAvailability()) {
return mockProvider;
}
}
catch (error) {
}
}
const checkOrder = preferredProviders || ['claude', 'gemini', 'mock'];
for (const providerType of checkOrder) {
try {
const provider = createProvider(providerType);
if (await provider.checkAvailability()) {
return provider;
}
}
catch (error) {
continue;
}
}
return null;
}