@yuzumican/jules-api
Version:
Official Node.js client for the Jules API
108 lines • 3.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JulesClient = void 0;
const axios_1 = __importDefault(require("axios"));
class JulesClient {
constructor(options) {
const { apiKey, baseUrl = 'https://jules.googleapis.com/v1alpha' } = options;
this.apiKey = apiKey;
this.httpClient = axios_1.default.create({
baseURL: baseUrl,
headers: {
'X-Goog-Api-Key': apiKey,
'Content-Type': 'application/json',
},
});
}
/**
* List all available sources
* @param nextPageToken - Token for pagination
* @returns Promise<ListSourcesResponse>
*/
async listSources(nextPageToken) {
const params = nextPageToken ? { nextPageToken } : {};
const response = await this.httpClient.get('/sources', { params });
return response.data;
}
/**
* Create a new session
* @param request - Session creation parameters
* @returns Promise<Session>
*/
async createSession(request) {
const response = await this.httpClient.post('/sessions', request);
return response.data;
}
/**
* List sessions
* @param pageSize - Maximum number of sessions to return
* @param nextPageToken - Token for pagination
* @returns Promise<ListSessionsResponse>
*/
async listSessions(pageSize, nextPageToken) {
const params = {};
if (pageSize)
params.pageSize = pageSize;
if (nextPageToken)
params.nextPageToken = nextPageToken;
const response = await this.httpClient.get('/sessions', { params });
return response.data;
}
/**
* Approve the latest plan for a session
* @param sessionId - The session ID
* @returns Promise<void>
*/
async approvePlan(sessionId) {
await this.httpClient.post(`/sessions/${sessionId}:approvePlan`);
}
/**
* List activities for a session
* @param sessionId - The session ID
* @param pageSize - Maximum number of activities to return
* @param nextPageToken - Token for pagination
* @returns Promise<ListActivitiesResponse>
*/
async listActivities(sessionId, pageSize, nextPageToken) {
const params = {};
if (pageSize)
params.pageSize = pageSize;
if (nextPageToken)
params.nextPageToken = nextPageToken;
const response = await this.httpClient.get(`/sessions/${sessionId}/activities`, { params });
return response.data;
}
/**
* Send a message to the agent
* @param sessionId - The session ID
* @param request - Message parameters
* @returns Promise<void>
*/
async sendMessage(sessionId, request) {
await this.httpClient.post(`/sessions/${sessionId}:sendMessage`, request);
}
/**
* Get a specific session
* @param sessionId - The session ID
* @returns Promise<Session>
*/
async getSession(sessionId) {
const response = await this.httpClient.get(`/sessions/${sessionId}`);
return response.data;
}
/**
* Get a specific source
* @param sourceId - The source ID
* @returns Promise<Source>
*/
async getSource(sourceId) {
const response = await this.httpClient.get(`/sources/${sourceId}`);
return response.data;
}
}
exports.JulesClient = JulesClient;
exports.default = JulesClient;
//# sourceMappingURL=client.js.map