@meshcore/cli
Version:
Official CLI for managing AI agents in MeshCore.ai with LLM-powered metadata extraction
141 lines • 5.24 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiService = void 0;
const axios_1 = __importDefault(require("axios"));
const config_1 = require("./config");
class ApiService {
constructor() {
this.config = config_1.ConfigService.getInstance();
this.client = axios_1.default.create({
baseURL: this.config.getApiUrl(),
headers: {
'Content-Type': 'application/json'
}
});
this.client.interceptors.request.use((config) => {
const token = this.config.getAuthToken();
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
console.log(`[API] Making request to: ${config.baseURL}${config.url}`);
return config;
});
this.client.interceptors.response.use((response) => response, (error) => {
const message = error.response?.data?.message || error.message;
const enhancedError = new Error(message);
enhancedError.code = error.response?.status;
enhancedError.details = error.response?.data?.details;
// Debug logging
console.error(`[API] Error ${error.response?.status}: ${message}`);
if (error.response?.data?.details) {
console.error(`[API] Details:`, JSON.stringify(error.response.data.details, null, 2));
}
return Promise.reject(enhancedError);
});
}
static getInstance() {
if (!ApiService.instance) {
ApiService.instance = new ApiService();
}
return ApiService.instance;
}
async validateToken() {
try {
await this.getMyAgents();
return true;
}
catch (error) {
return false;
}
}
async logout() {
this.config.clearAuth();
}
async createAgent(agent) {
const response = await this.client.post('/agents', agent);
return response.data;
}
async getMyAgents() {
const response = await this.client.get('/agents/my');
return response.data;
}
async getAgent(id) {
const response = await this.client.get(`/agents/${id}`);
return response.data;
}
async updateAgent(id, updates) {
const response = await this.client.put(`/agents/${id}`, updates);
return response.data;
}
async deleteAgent(id) {
await this.client.delete(`/agents/${id}`);
}
async checkAgentHealth(id) {
const response = await this.client.get(`/agents/${id}/health-check`);
return response.data;
}
async checkAllAgentsHealth() {
const response = await this.client.get('/agents/health-check-all');
return response.data;
}
async rewriteReadme(agentId, request) {
const response = await this.client.post(`/agents/${agentId}/rewrite-readme`, request);
return response.data;
}
async generateMetadata(request) {
const response = await this.client.post('/agents/generate-metadata', request);
return response.data;
}
async getUserProfile() {
const response = await this.client.get('/users/profile');
return response.data;
}
async getUserTeams() {
try {
const response = await this.client.get('/teams');
console.log('[API] Teams response:', JSON.stringify(response.data, null, 2));
// For testing: uncomment the next line to simulate no teams scenario
// return [];
// The response might be wrapped in an object, so handle both cases
if (Array.isArray(response.data)) {
return response.data;
}
else if (response.data && response.data.teams) {
return response.data.teams;
}
else if (response.data && response.data.data) {
return response.data.data;
}
return [];
}
catch (error) {
console.error('[API] Failed to fetch teams:', error);
throw error;
}
}
async getDefaultTeamId() {
try {
const teams = await this.getUserTeams();
if (teams && teams.length > 0) {
// Return the first team ID as default
return teams[0].id;
}
throw new Error('No teams found for user');
}
catch (error) {
console.error('[API] Failed to get team ID:', error);
// If we can't get team info due to permissions, try some fallback strategies
if (error.code === 401 || error.code === 403) {
console.log('[API] Using fallback team ID strategy...');
// Use a default UUID for personal workspace
return '00000000-0000-0000-0000-000000000000'; // Default UUID fallback
}
throw new Error('Unable to retrieve team ID');
}
}
}
exports.ApiService = ApiService;
//# sourceMappingURL=api.js.map
;