computer-agents 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +253 -385
  2. package/dist/ComputerAgentsClient.d.ts +358 -0
  3. package/dist/ComputerAgentsClient.js +360 -0
  4. package/dist/ComputerAgentsClient.js.map +1 -0
  5. package/dist/cloud/ApiClient.d.ts +62 -0
  6. package/dist/cloud/ApiClient.js +150 -0
  7. package/dist/cloud/ApiClient.js.map +1 -0
  8. package/dist/cloud/resources/AgentsResource.d.ts +39 -0
  9. package/dist/cloud/resources/AgentsResource.js +58 -0
  10. package/dist/cloud/resources/AgentsResource.js.map +1 -0
  11. package/dist/cloud/resources/BudgetResource.d.ts +167 -0
  12. package/dist/cloud/resources/BudgetResource.js +179 -0
  13. package/dist/cloud/resources/BudgetResource.js.map +1 -0
  14. package/dist/cloud/resources/EnvironmentsResource.d.ts +167 -0
  15. package/dist/cloud/resources/EnvironmentsResource.js +256 -0
  16. package/dist/cloud/resources/EnvironmentsResource.js.map +1 -0
  17. package/dist/cloud/resources/FilesResource.d.ts +201 -0
  18. package/dist/cloud/resources/FilesResource.js +204 -0
  19. package/dist/cloud/resources/FilesResource.js.map +1 -0
  20. package/dist/cloud/resources/GitResource.d.ts +28 -0
  21. package/dist/cloud/resources/GitResource.js +45 -0
  22. package/dist/cloud/resources/GitResource.js.map +1 -0
  23. package/dist/cloud/resources/ProjectsResource.d.ts +78 -0
  24. package/dist/cloud/resources/ProjectsResource.js +117 -0
  25. package/dist/cloud/resources/ProjectsResource.js.map +1 -0
  26. package/dist/cloud/resources/RunsResource.d.ts +61 -0
  27. package/dist/cloud/resources/RunsResource.js +84 -0
  28. package/dist/cloud/resources/RunsResource.js.map +1 -0
  29. package/dist/cloud/resources/SchedulesResource.d.ts +58 -0
  30. package/dist/cloud/resources/SchedulesResource.js +82 -0
  31. package/dist/cloud/resources/SchedulesResource.js.map +1 -0
  32. package/dist/cloud/resources/ThreadsResource.d.ts +124 -0
  33. package/dist/cloud/resources/ThreadsResource.js +178 -0
  34. package/dist/cloud/resources/ThreadsResource.js.map +1 -0
  35. package/dist/cloud/resources/index.d.ts +17 -0
  36. package/dist/cloud/resources/index.js +28 -0
  37. package/dist/cloud/resources/index.js.map +1 -0
  38. package/dist/cloud/types.d.ts +676 -0
  39. package/dist/cloud/types.js +9 -0
  40. package/dist/cloud/types.js.map +1 -0
  41. package/dist/index.d.ts +28 -5
  42. package/dist/index.js +51 -194
  43. package/dist/index.js.map +1 -1
  44. package/package.json +25 -24
  45. package/dist/metadata.d.ts +0 -8
  46. package/dist/metadata.js +0 -13
  47. package/dist/metadata.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComputerAgentsClient.js","sourceRoot":"","sources":["../src/ComputerAgentsClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Low-level API client for the Computer Agents Cloud API
3
+ *
4
+ * This handles HTTP requests, authentication, and error handling.
5
+ * Higher-level resource managers use this client.
6
+ */
7
+ export interface ApiClientConfig {
8
+ /**
9
+ * API key for authentication
10
+ */
11
+ apiKey: string;
12
+ /**
13
+ * Base URL for the API
14
+ * @default 'https://api.computer-agents.com'
15
+ */
16
+ baseUrl?: string;
17
+ /**
18
+ * Request timeout in milliseconds
19
+ * @default 60000 (1 minute)
20
+ */
21
+ timeout?: number;
22
+ /**
23
+ * Enable debug logging
24
+ * @default false
25
+ */
26
+ debug?: boolean;
27
+ }
28
+ export declare class ApiClientError extends Error {
29
+ readonly status: number;
30
+ readonly code?: string | undefined;
31
+ readonly details?: Record<string, unknown> | undefined;
32
+ constructor(message: string, status: number, code?: string | undefined, details?: Record<string, unknown> | undefined);
33
+ }
34
+ export declare class ApiClient {
35
+ private readonly baseUrl;
36
+ private readonly apiKey;
37
+ private readonly timeout;
38
+ private readonly debug;
39
+ constructor(config: ApiClientConfig);
40
+ /**
41
+ * Make an HTTP request to the API
42
+ */
43
+ request<T>(method: string, path: string, options?: {
44
+ body?: unknown;
45
+ query?: Record<string, string | number | boolean | undefined>;
46
+ headers?: Record<string, string>;
47
+ timeout?: number;
48
+ stream?: boolean;
49
+ }): Promise<T>;
50
+ private parseError;
51
+ get<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;
52
+ post<T>(path: string, body?: unknown, options?: {
53
+ stream?: boolean;
54
+ }): Promise<T>;
55
+ patch<T>(path: string, body?: unknown): Promise<T>;
56
+ put<T>(path: string, body?: unknown): Promise<T>;
57
+ delete<T>(path: string): Promise<T>;
58
+ /**
59
+ * Get the base URL
60
+ */
61
+ getBaseUrl(): string;
62
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /**
3
+ * Low-level API client for the Computer Agents Cloud API
4
+ *
5
+ * This handles HTTP requests, authentication, and error handling.
6
+ * Higher-level resource managers use this client.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ApiClient = exports.ApiClientError = void 0;
10
+ class ApiClientError extends Error {
11
+ status;
12
+ code;
13
+ details;
14
+ constructor(message, status, code, details) {
15
+ super(message);
16
+ this.status = status;
17
+ this.code = code;
18
+ this.details = details;
19
+ this.name = 'ApiClientError';
20
+ }
21
+ }
22
+ exports.ApiClientError = ApiClientError;
23
+ class ApiClient {
24
+ baseUrl;
25
+ apiKey;
26
+ timeout;
27
+ debug;
28
+ constructor(config) {
29
+ if (!config.apiKey) {
30
+ throw new Error('API key is required. Provide it via:\n' +
31
+ '1. Constructor: new ApiClient({ apiKey: "..." })\n' +
32
+ '2. Environment variable: COMPUTER_AGENTS_API_KEY');
33
+ }
34
+ this.apiKey = config.apiKey;
35
+ this.baseUrl = (config.baseUrl || 'https://api.computer-agents.com').replace(/\/$/, '');
36
+ this.timeout = config.timeout ?? 60000;
37
+ this.debug = config.debug ?? false;
38
+ }
39
+ /**
40
+ * Make an HTTP request to the API
41
+ */
42
+ async request(method, path, options = {}) {
43
+ const url = new URL(path, this.baseUrl);
44
+ // Add query parameters
45
+ if (options.query) {
46
+ for (const [key, value] of Object.entries(options.query)) {
47
+ if (value !== undefined) {
48
+ url.searchParams.set(key, String(value));
49
+ }
50
+ }
51
+ }
52
+ const headers = {
53
+ 'Authorization': `Bearer ${this.apiKey}`,
54
+ ...options.headers,
55
+ };
56
+ if (options.body && !options.headers?.['Content-Type']) {
57
+ headers['Content-Type'] = 'application/json';
58
+ }
59
+ if (options.stream) {
60
+ headers['Accept'] = 'text/event-stream';
61
+ }
62
+ if (this.debug) {
63
+ console.log(`[ApiClient] ${method} ${url.toString()}`);
64
+ }
65
+ const controller = new AbortController();
66
+ const timeoutId = setTimeout(() => controller.abort(), options.timeout ?? this.timeout);
67
+ try {
68
+ const response = await fetch(url.toString(), {
69
+ method,
70
+ headers,
71
+ body: options.body ? JSON.stringify(options.body) : undefined,
72
+ signal: controller.signal,
73
+ });
74
+ clearTimeout(timeoutId);
75
+ // For streaming responses, return the response directly
76
+ if (options.stream) {
77
+ if (!response.ok) {
78
+ const error = await this.parseError(response);
79
+ throw error;
80
+ }
81
+ return response;
82
+ }
83
+ // Parse JSON response
84
+ if (!response.ok) {
85
+ const error = await this.parseError(response);
86
+ throw error;
87
+ }
88
+ // Handle 204 No Content
89
+ if (response.status === 204) {
90
+ return undefined;
91
+ }
92
+ const data = await response.json();
93
+ return data;
94
+ }
95
+ catch (error) {
96
+ clearTimeout(timeoutId);
97
+ if (error instanceof ApiClientError) {
98
+ throw error;
99
+ }
100
+ if (error instanceof Error && error.name === 'AbortError') {
101
+ throw new ApiClientError(`Request timeout after ${options.timeout ?? this.timeout}ms`, 408, 'TIMEOUT');
102
+ }
103
+ throw new ApiClientError(error instanceof Error ? error.message : 'Unknown error', 500, 'NETWORK_ERROR');
104
+ }
105
+ }
106
+ async parseError(response) {
107
+ let errorData;
108
+ try {
109
+ errorData = await response.json();
110
+ }
111
+ catch {
112
+ errorData = {
113
+ error: response.statusText,
114
+ message: `HTTP ${response.status}`,
115
+ };
116
+ }
117
+ return new ApiClientError(errorData.message || errorData.error, response.status, errorData.code, errorData.details);
118
+ }
119
+ // Convenience methods
120
+ async get(path, query) {
121
+ return this.request('GET', path, { query });
122
+ }
123
+ async post(path, body, options) {
124
+ return this.request('POST', path, { body, ...options });
125
+ }
126
+ async patch(path, body) {
127
+ return this.request('PATCH', path, { body });
128
+ }
129
+ async put(path, body) {
130
+ return this.request('PUT', path, { body });
131
+ }
132
+ async delete(path) {
133
+ return this.request('DELETE', path);
134
+ }
135
+ /**
136
+ * Get the base URL
137
+ */
138
+ getBaseUrl() {
139
+ return this.baseUrl;
140
+ }
141
+ /**
142
+ * Get the API key (for special requests like FormData)
143
+ * @internal
144
+ */
145
+ getApiKey() {
146
+ return this.apiKey;
147
+ }
148
+ }
149
+ exports.ApiClient = ApiClient;
150
+ //# sourceMappingURL=ApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/cloud/ApiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Agents Resource Manager
3
+ *
4
+ * Handles agent configuration including CRUD operations
5
+ * and model/skill configuration.
6
+ *
7
+ * Note: projectId is now embedded in the API key, so routes use
8
+ * simplified paths without /projects/:projectId prefix.
9
+ */
10
+ import type { ApiClient } from '../ApiClient';
11
+ import type { CloudAgent, CreateAgentParams, UpdateAgentParams } from '../types';
12
+ export declare class AgentsResource {
13
+ private readonly client;
14
+ constructor(client: ApiClient);
15
+ /**
16
+ * Create a new agent
17
+ *
18
+ * Project is determined automatically from the API key.
19
+ */
20
+ create(params: CreateAgentParams): Promise<CloudAgent>;
21
+ /**
22
+ * List all agents
23
+ *
24
+ * Project is determined automatically from the API key.
25
+ */
26
+ list(): Promise<CloudAgent[]>;
27
+ /**
28
+ * Get an agent by ID
29
+ */
30
+ get(agentId: string): Promise<CloudAgent>;
31
+ /**
32
+ * Update an agent
33
+ */
34
+ update(agentId: string, params: UpdateAgentParams): Promise<CloudAgent>;
35
+ /**
36
+ * Delete an agent
37
+ */
38
+ delete(agentId: string, hard?: boolean): Promise<void>;
39
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * Agents Resource Manager
4
+ *
5
+ * Handles agent configuration including CRUD operations
6
+ * and model/skill configuration.
7
+ *
8
+ * Note: projectId is now embedded in the API key, so routes use
9
+ * simplified paths without /projects/:projectId prefix.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AgentsResource = void 0;
13
+ class AgentsResource {
14
+ client;
15
+ constructor(client) {
16
+ this.client = client;
17
+ }
18
+ /**
19
+ * Create a new agent
20
+ *
21
+ * Project is determined automatically from the API key.
22
+ */
23
+ async create(params) {
24
+ const response = await this.client.post(`/agents`, params);
25
+ return response.agent;
26
+ }
27
+ /**
28
+ * List all agents
29
+ *
30
+ * Project is determined automatically from the API key.
31
+ */
32
+ async list() {
33
+ const response = await this.client.get(`/agents`);
34
+ return response.data;
35
+ }
36
+ /**
37
+ * Get an agent by ID
38
+ */
39
+ async get(agentId) {
40
+ const response = await this.client.get(`/agents/${agentId}`);
41
+ return response.agent;
42
+ }
43
+ /**
44
+ * Update an agent
45
+ */
46
+ async update(agentId, params) {
47
+ const response = await this.client.patch(`/agents/${agentId}`, params);
48
+ return response.agent;
49
+ }
50
+ /**
51
+ * Delete an agent
52
+ */
53
+ async delete(agentId, hard = false) {
54
+ await this.client.delete(`/agents/${agentId}${hard ? '?hard=true' : ''}`);
55
+ }
56
+ }
57
+ exports.AgentsResource = AgentsResource;
58
+ //# sourceMappingURL=AgentsResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentsResource.js","sourceRoot":"","sources":["../../../src/cloud/resources/AgentsResource.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AASH,MAAa,cAAc;IACI;IAA7B,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,MAAyB;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,SAAS,EACT,MAAM,CACP,CAAC;QACF,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACpC,SAAS,CACV,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACpC,WAAW,OAAO,EAAE,CACrB,CAAC;QACF,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,OAAe,EACf,MAAyB;QAEzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACtC,WAAW,OAAO,EAAE,EACpB,MAAM,CACP,CAAC;QACF,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAgB,KAAK;QACjD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACtB,WAAW,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,CAAC;IACJ,CAAC;CACF;AA5DD,wCA4DC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Budget & Billing Resource Manager
3
+ *
4
+ * Handles budget management, billing records, and usage tracking.
5
+ *
6
+ * Note: projectId is now embedded in the API key, so routes use
7
+ * simplified paths without /projects/:projectId prefix.
8
+ */
9
+ import type { ApiClient } from '../ApiClient';
10
+ import type { BudgetStatus, CanExecuteResult, IncreaseBudgetParams, IncreaseBudgetResult, BillingRecord, ListBillingRecordsParams, BillingAccount, UsageStats, UsageStatsParams } from '../types';
11
+ export declare class BudgetResource {
12
+ private readonly client;
13
+ constructor(client: ApiClient);
14
+ /**
15
+ * Get budget status via costs summary
16
+ *
17
+ * Project is determined automatically from the API key.
18
+ */
19
+ getStatus(): Promise<BudgetStatus>;
20
+ /**
21
+ * Check if execution is allowed given current budget
22
+ *
23
+ * Note: This is a convenience method that always returns true
24
+ * since the backend handles budget checks during execution.
25
+ */
26
+ canExecute(estimatedCost?: number): Promise<CanExecuteResult>;
27
+ /**
28
+ * Increase budget
29
+ *
30
+ * Project is determined automatically from the API key.
31
+ */
32
+ increase(params: IncreaseBudgetParams): Promise<IncreaseBudgetResult>;
33
+ /**
34
+ * Get billing records
35
+ *
36
+ * Project is determined automatically from the API key.
37
+ */
38
+ getRecords(params?: ListBillingRecordsParams): Promise<{
39
+ records: BillingRecord[];
40
+ pagination: {
41
+ total: number;
42
+ limit: number;
43
+ offset: number;
44
+ };
45
+ }>;
46
+ /**
47
+ * Get billing summary
48
+ *
49
+ * Project is determined automatically from the API key.
50
+ */
51
+ getSummary(): Promise<{
52
+ totalSpent: number;
53
+ periodStart: string;
54
+ periodEnd: string;
55
+ runCount: number;
56
+ tokenCount: number;
57
+ }>;
58
+ /**
59
+ * Get daily spending breakdown
60
+ *
61
+ * Project is determined automatically from the API key.
62
+ */
63
+ getDailySpending(): Promise<{
64
+ days: Array<{
65
+ date: string;
66
+ cost: number;
67
+ runs: number;
68
+ tokens: number;
69
+ }>;
70
+ }>;
71
+ /**
72
+ * Record MCP server usage
73
+ *
74
+ * Project is determined automatically from the API key.
75
+ */
76
+ recordMcpUsage(params: {
77
+ serverType: 'deep_research' | 'nano_banana';
78
+ referenceId?: string;
79
+ metadata?: Record<string, unknown>;
80
+ }): Promise<void>;
81
+ /**
82
+ * Get available top-up options
83
+ *
84
+ * Project is determined automatically from the API key.
85
+ */
86
+ getTopUpOptions(): Promise<{
87
+ options: Array<{
88
+ amount: number;
89
+ variantId: string;
90
+ label: string;
91
+ }>;
92
+ }>;
93
+ /**
94
+ * Create a checkout session for adding funds
95
+ *
96
+ * Project is determined automatically from the API key.
97
+ */
98
+ createCheckout(params: {
99
+ variantId: string;
100
+ userEmail?: string;
101
+ userName?: string;
102
+ redirectUrl?: string;
103
+ }): Promise<{
104
+ checkoutUrl: string;
105
+ }>;
106
+ /**
107
+ * Get payment integration status
108
+ *
109
+ * Project is determined automatically from the API key.
110
+ */
111
+ getPaymentStatus(): Promise<{
112
+ configured: boolean;
113
+ provider?: string;
114
+ pendingPayments: number;
115
+ }>;
116
+ }
117
+ export declare class BillingResource {
118
+ private readonly client;
119
+ constructor(client: ApiClient);
120
+ /**
121
+ * Get billing account information
122
+ */
123
+ getAccount(): Promise<BillingAccount>;
124
+ /**
125
+ * Get usage statistics
126
+ */
127
+ getStats(params?: UsageStatsParams): Promise<UsageStats>;
128
+ /**
129
+ * Get workspace usage breakdown
130
+ */
131
+ getWorkspaceUsage(): Promise<{
132
+ workspaces: Array<{
133
+ projectId: string;
134
+ projectName: string;
135
+ storageBytes: number;
136
+ fileCount: number;
137
+ lastAccessed: string;
138
+ }>;
139
+ total: {
140
+ storageBytes: number;
141
+ projectCount: number;
142
+ };
143
+ }>;
144
+ /**
145
+ * Get transaction history
146
+ */
147
+ getTransactions(params?: {
148
+ from?: string;
149
+ to?: string;
150
+ type?: string;
151
+ limit?: number;
152
+ offset?: number;
153
+ }): Promise<{
154
+ transactions: Array<{
155
+ id: string;
156
+ type: string;
157
+ amount: number;
158
+ description?: string;
159
+ createdAt: string;
160
+ }>;
161
+ pagination: {
162
+ total: number;
163
+ limit: number;
164
+ offset: number;
165
+ };
166
+ }>;
167
+ }
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ /**
3
+ * Budget & Billing Resource Manager
4
+ *
5
+ * Handles budget management, billing records, and usage tracking.
6
+ *
7
+ * Note: projectId is now embedded in the API key, so routes use
8
+ * simplified paths without /projects/:projectId prefix.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.BillingResource = exports.BudgetResource = void 0;
12
+ class BudgetResource {
13
+ client;
14
+ constructor(client) {
15
+ this.client = client;
16
+ }
17
+ // =========================================================================
18
+ // Budget Operations
19
+ // =========================================================================
20
+ /**
21
+ * Get budget status via costs summary
22
+ *
23
+ * Project is determined automatically from the API key.
24
+ */
25
+ async getStatus() {
26
+ // Use costs/summary endpoint since /budget doesn't exist
27
+ const response = await this.client.get(`/costs/summary`);
28
+ // Map to BudgetStatus format
29
+ return {
30
+ balance: 0, // Not available from this endpoint
31
+ spent: response.totals.totalCost,
32
+ limit: 0, // Not available
33
+ remaining: 0, // Not available
34
+ };
35
+ }
36
+ /**
37
+ * Check if execution is allowed given current budget
38
+ *
39
+ * Note: This is a convenience method that always returns true
40
+ * since the backend handles budget checks during execution.
41
+ */
42
+ async canExecute(estimatedCost) {
43
+ // Budget checks are handled server-side during execution
44
+ return {
45
+ canExecute: true,
46
+ reason: 'Budget checks performed during execution',
47
+ };
48
+ }
49
+ /**
50
+ * Increase budget
51
+ *
52
+ * Project is determined automatically from the API key.
53
+ */
54
+ async increase(params) {
55
+ const response = await this.client.post(`/budget/increase`, params);
56
+ return response;
57
+ }
58
+ // =========================================================================
59
+ // Billing Records
60
+ // =========================================================================
61
+ /**
62
+ * Get billing records
63
+ *
64
+ * Project is determined automatically from the API key.
65
+ */
66
+ async getRecords(params = {}) {
67
+ const response = await this.client.get(`/billing/records`, {
68
+ limit: params.limit,
69
+ offset: params.offset,
70
+ since: params.since,
71
+ until: params.until,
72
+ type: params.type,
73
+ });
74
+ return {
75
+ records: response.data,
76
+ pagination: {
77
+ total: response.total_count,
78
+ limit: params.limit || 50,
79
+ offset: params.offset || 0,
80
+ },
81
+ };
82
+ }
83
+ /**
84
+ * Get billing summary
85
+ *
86
+ * Project is determined automatically from the API key.
87
+ */
88
+ async getSummary() {
89
+ const response = await this.client.get(`/billing/summary`);
90
+ return response;
91
+ }
92
+ /**
93
+ * Get daily spending breakdown
94
+ *
95
+ * Project is determined automatically from the API key.
96
+ */
97
+ async getDailySpending() {
98
+ const response = await this.client.get(`/billing/daily`);
99
+ return response;
100
+ }
101
+ /**
102
+ * Record MCP server usage
103
+ *
104
+ * Project is determined automatically from the API key.
105
+ */
106
+ async recordMcpUsage(params) {
107
+ await this.client.post(`/billing/mcp-usage`, params);
108
+ }
109
+ // =========================================================================
110
+ // Payment Integration
111
+ // =========================================================================
112
+ /**
113
+ * Get available top-up options
114
+ *
115
+ * Project is determined automatically from the API key.
116
+ */
117
+ async getTopUpOptions() {
118
+ const response = await this.client.get(`/budget/topup-options`);
119
+ return response;
120
+ }
121
+ /**
122
+ * Create a checkout session for adding funds
123
+ *
124
+ * Project is determined automatically from the API key.
125
+ */
126
+ async createCheckout(params) {
127
+ const response = await this.client.post(`/budget/checkout`, params);
128
+ return response;
129
+ }
130
+ /**
131
+ * Get payment integration status
132
+ *
133
+ * Project is determined automatically from the API key.
134
+ */
135
+ async getPaymentStatus() {
136
+ const response = await this.client.get(`/budget/payment-status`);
137
+ return response;
138
+ }
139
+ }
140
+ exports.BudgetResource = BudgetResource;
141
+ class BillingResource {
142
+ client;
143
+ constructor(client) {
144
+ this.client = client;
145
+ }
146
+ /**
147
+ * Get billing account information
148
+ */
149
+ async getAccount() {
150
+ const response = await this.client.get('/billing/account');
151
+ return response.account;
152
+ }
153
+ /**
154
+ * Get usage statistics
155
+ */
156
+ async getStats(params = {}) {
157
+ const response = await this.client.get('/billing/stats', {
158
+ period: params.period,
159
+ breakdown: params.breakdown,
160
+ });
161
+ return response.stats;
162
+ }
163
+ /**
164
+ * Get workspace usage breakdown
165
+ */
166
+ async getWorkspaceUsage() {
167
+ const response = await this.client.get('/billing/usage/workspace');
168
+ return response;
169
+ }
170
+ /**
171
+ * Get transaction history
172
+ */
173
+ async getTransactions(params) {
174
+ const response = await this.client.get('/billing/transactions', params);
175
+ return response;
176
+ }
177
+ }
178
+ exports.BillingResource = BillingResource;
179
+ //# sourceMappingURL=BudgetResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BudgetResource.js","sourceRoot":"","sources":["../../../src/cloud/resources/BudgetResource.ts"],"names":[],"mappings":"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"}