@codeguide/core 0.0.33 → 0.0.35

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 (49) hide show
  1. package/__tests__/services/usage/usage-service.test.ts +53 -29
  2. package/codeguide.ts +3 -0
  3. package/dist/codeguide.d.ts +2 -1
  4. package/dist/codeguide.js +1 -0
  5. package/dist/index.d.ts +1 -1
  6. package/dist/services/chat/chat-service.d.ts +44 -0
  7. package/dist/services/chat/chat-service.js +85 -0
  8. package/dist/services/chat/chat-types.d.ts +88 -0
  9. package/dist/services/chat/chat-types.js +5 -0
  10. package/dist/services/chat/index.d.ts +2 -0
  11. package/dist/services/chat/index.js +20 -0
  12. package/dist/services/generation/generation-service.d.ts +7 -1
  13. package/dist/services/generation/generation-service.js +18 -0
  14. package/dist/services/generation/generation-types.d.ts +95 -0
  15. package/dist/services/index.d.ts +4 -0
  16. package/dist/services/index.js +7 -1
  17. package/dist/services/projects/project-service.d.ts +3 -1
  18. package/dist/services/projects/project-service.js +13 -1
  19. package/dist/services/projects/project-types.d.ts +24 -1
  20. package/dist/services/streaming/index.d.ts +2 -0
  21. package/dist/services/streaming/index.js +20 -0
  22. package/dist/services/streaming/streaming-service.d.ts +30 -0
  23. package/dist/services/streaming/streaming-service.js +107 -0
  24. package/dist/services/streaming/streaming-types.d.ts +14 -0
  25. package/dist/services/streaming/streaming-types.js +2 -0
  26. package/dist/services/tasks/task-service.d.ts +3 -1
  27. package/dist/services/tasks/task-service.js +8 -0
  28. package/dist/services/tasks/task-types.d.ts +15 -0
  29. package/dist/services/usage/usage-service.d.ts +35 -1
  30. package/dist/services/usage/usage-service.js +68 -0
  31. package/dist/services/usage/usage-types.d.ts +108 -33
  32. package/index.ts +3 -0
  33. package/package.json +1 -1
  34. package/services/chat/chat-service.ts +110 -0
  35. package/services/chat/chat-types.ts +145 -0
  36. package/services/chat/index.ts +2 -0
  37. package/services/generation/generation-service.ts +40 -0
  38. package/services/generation/generation-types.ts +110 -0
  39. package/services/index.ts +4 -0
  40. package/services/projects/README.md +54 -0
  41. package/services/projects/project-service.ts +20 -1
  42. package/services/projects/project-types.ts +27 -1
  43. package/services/streaming/index.ts +2 -0
  44. package/services/streaming/streaming-service.ts +123 -0
  45. package/services/streaming/streaming-types.ts +15 -0
  46. package/services/tasks/task-service.ts +30 -2
  47. package/services/tasks/task-types.ts +19 -1
  48. package/services/usage/usage-service.ts +81 -0
  49. package/services/usage/usage-types.ts +116 -36
@@ -86,8 +86,9 @@ export interface StarterKitReference {
86
86
  description: string;
87
87
  }
88
88
  export interface CreateProjectRequest {
89
- title: string;
89
+ title?: string;
90
90
  description: string;
91
+ status?: 'prompt' | 'draft' | 'in_progress' | 'completed';
91
92
  category_id?: string;
92
93
  starter_kit_id?: string;
93
94
  ai_questionaire?: {
@@ -160,3 +161,25 @@ export interface ConnectRepositoryResponse {
160
161
  status: string;
161
162
  data: ProjectRepository;
162
163
  }
164
+ export interface AITool {
165
+ id: string;
166
+ created_at: string;
167
+ name: string;
168
+ description: string;
169
+ logo_src: string | null;
170
+ is_active: boolean;
171
+ key: string;
172
+ ordinal: number | null;
173
+ metadata: Record<string, any> | null;
174
+ detailed_description: string | null;
175
+ category: string | null;
176
+ doc_type: string;
177
+ }
178
+ export interface GetAiToolsRequest {
179
+ key?: string;
180
+ category?: string;
181
+ }
182
+ export interface GetAiToolsResponse {
183
+ status: string;
184
+ data: AITool[];
185
+ }
@@ -0,0 +1,2 @@
1
+ export { StreamingService } from './streaming-service';
2
+ export * from './streaming-types';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.StreamingService = void 0;
18
+ var streaming_service_1 = require("./streaming-service");
19
+ Object.defineProperty(exports, "StreamingService", { enumerable: true, get: function () { return streaming_service_1.StreamingService; } });
20
+ __exportStar(require("./streaming-types"), exports);
@@ -0,0 +1,30 @@
1
+ import { BaseService } from '../base/base-service';
2
+ import { StreamTechSpecRequest } from './streaming-types';
3
+ export declare class StreamingService extends BaseService {
4
+ /**
5
+ * Stream a tech-spec document for the given project.
6
+ *
7
+ * This method connects to the `/chat/tech-spec` endpoint and streams the response
8
+ * using Server-Sent Events (SSE) format. Each chunk is passed to the `onChunk`
9
+ * callback as it arrives, allowing for incremental UI updates.
10
+ *
11
+ * @param request - The request containing the project_id
12
+ * @param onChunk - Callback function invoked with each content chunk as it arrives
13
+ * @param onError - Optional callback function for handling errors
14
+ * @returns Promise that resolves to the full accumulated content when streaming completes
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const streamingService = new StreamingService(config);
19
+ * let fullContent = '';
20
+ *
21
+ * fullContent = await streamingService.streamTechSpec(
22
+ * { project_id: 'project-123' },
23
+ * (chunk) => {
24
+ * setContent(prev => prev + chunk); // Update UI incrementally
25
+ * }
26
+ * );
27
+ * ```
28
+ */
29
+ streamTechSpec(request: StreamTechSpecRequest, onChunk: (content: string) => void, onError?: (error: Error) => void): Promise<string>;
30
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamingService = void 0;
4
+ const base_service_1 = require("../base/base-service");
5
+ class StreamingService extends base_service_1.BaseService {
6
+ /**
7
+ * Stream a tech-spec document for the given project.
8
+ *
9
+ * This method connects to the `/chat/tech-spec` endpoint and streams the response
10
+ * using Server-Sent Events (SSE) format. Each chunk is passed to the `onChunk`
11
+ * callback as it arrives, allowing for incremental UI updates.
12
+ *
13
+ * @param request - The request containing the project_id
14
+ * @param onChunk - Callback function invoked with each content chunk as it arrives
15
+ * @param onError - Optional callback function for handling errors
16
+ * @returns Promise that resolves to the full accumulated content when streaming completes
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const streamingService = new StreamingService(config);
21
+ * let fullContent = '';
22
+ *
23
+ * fullContent = await streamingService.streamTechSpec(
24
+ * { project_id: 'project-123' },
25
+ * (chunk) => {
26
+ * setContent(prev => prev + chunk); // Update UI incrementally
27
+ * }
28
+ * );
29
+ * ```
30
+ */
31
+ async streamTechSpec(request, onChunk, onError) {
32
+ return new Promise(async (resolve, reject) => {
33
+ let fullContent = '';
34
+ const fullUrl = `${this.client.defaults.baseURL}/chat/tech-spec`;
35
+ try {
36
+ const response = await fetch(fullUrl, {
37
+ method: 'POST',
38
+ headers: {
39
+ ...Object.fromEntries(Object.entries(this.client.defaults.headers).filter(([_, v]) => typeof v === 'string')),
40
+ Accept: 'text/event-stream',
41
+ 'Cache-Control': 'no-cache',
42
+ },
43
+ body: JSON.stringify(request),
44
+ });
45
+ if (!response.ok) {
46
+ const errorText = await response.text();
47
+ const error = new Error(`HTTP ${response.status}: ${errorText || response.statusText}`);
48
+ onError?.(error);
49
+ reject(error);
50
+ return;
51
+ }
52
+ const reader = response.body?.getReader();
53
+ if (!reader) {
54
+ const error = new Error('Response body is not readable');
55
+ onError?.(error);
56
+ reject(error);
57
+ return;
58
+ }
59
+ const decoder = new TextDecoder();
60
+ let buffer = '';
61
+ while (true) {
62
+ const { done, value } = await reader.read();
63
+ if (done) {
64
+ resolve(fullContent);
65
+ break;
66
+ }
67
+ buffer += decoder.decode(value, { stream: true });
68
+ const lines = buffer.split('\n');
69
+ buffer = lines.pop() || ''; // Keep incomplete line in buffer
70
+ for (const line of lines) {
71
+ if (line.startsWith('data: ')) {
72
+ const jsonStr = line.slice(6); // Remove 'data: ' prefix
73
+ if (jsonStr.trim()) {
74
+ try {
75
+ const chunk = JSON.parse(jsonStr);
76
+ if (chunk.error) {
77
+ const error = new Error(chunk.error);
78
+ onError?.(error);
79
+ reject(error);
80
+ return;
81
+ }
82
+ if (chunk.done) {
83
+ resolve(fullContent);
84
+ return;
85
+ }
86
+ if (chunk.content) {
87
+ fullContent += chunk.content;
88
+ onChunk(chunk.content);
89
+ }
90
+ }
91
+ catch (parseError) {
92
+ console.warn('Failed to parse SSE data:', jsonStr, parseError);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ catch (error) {
100
+ const err = error instanceof Error ? error : new Error(String(error));
101
+ onError?.(err);
102
+ reject(err);
103
+ }
104
+ });
105
+ }
106
+ }
107
+ exports.StreamingService = StreamingService;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Request type for streaming a tech-spec
3
+ */
4
+ export interface StreamTechSpecRequest {
5
+ project_id: string;
6
+ }
7
+ /**
8
+ * A single chunk from the SSE stream
9
+ */
10
+ export interface StreamChunk {
11
+ content: string;
12
+ done: boolean;
13
+ error?: string;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,5 @@
1
1
  import { BaseService } from '../base/base-service';
2
- import { TaskGroup, ProjectTask, CreateTaskGroupRequest, UpdateTaskGroupRequest, CreateProjectTaskRequest, UpdateProjectTaskRequest, ProjectTaskListResponse, PaginatedTaskGroupsRequest, PaginatedTaskGroupsResponse, PaginatedProjectTasksRequest, PaginatedProjectTasksResponse, GenerateTasksRequest, GenerateTasksResponse, GetTasksByProjectRequest, GetTasksByProjectResponse, UpdateTaskRequest, UpdateTaskResponse } from './task-types';
2
+ import { TaskGroup, ProjectTask, CreateTaskGroupRequest, UpdateTaskGroupRequest, CreateProjectTaskRequest, UpdateProjectTaskRequest, ProjectTaskListResponse, PaginatedTaskGroupsRequest, PaginatedTaskGroupsResponse, PaginatedProjectTasksRequest, PaginatedProjectTasksResponse, GenerateTasksRequest, GenerateTasksResponse, GetTasksByProjectRequest, GetTasksByProjectResponse, UpdateTaskRequest, UpdateTaskResponse, GenerateTasksCustomBackgroundRequest, GenerateTasksCustomBackgroundResponse, GeneratePromptRequest, GeneratePromptResponse } from './task-types';
3
3
  export declare class TaskService extends BaseService {
4
4
  getAllTaskGroups(): Promise<TaskGroup[]>;
5
5
  getPaginatedTaskGroups(params: PaginatedTaskGroupsRequest): Promise<PaginatedTaskGroupsResponse>;
@@ -25,7 +25,9 @@ export declare class TaskService extends BaseService {
25
25
  message: string;
26
26
  }>;
27
27
  generateTasks(request: GenerateTasksRequest): Promise<GenerateTasksResponse>;
28
+ generateTasksCustomBackground(request: GenerateTasksCustomBackgroundRequest): Promise<GenerateTasksCustomBackgroundResponse>;
28
29
  getTasksByProject(request: GetTasksByProjectRequest): Promise<GetTasksByProjectResponse>;
29
30
  updateTask(taskId: string, request: UpdateTaskRequest): Promise<UpdateTaskResponse>;
30
31
  getProjectTasksbyCodespace(codespaceTaskId: string): Promise<ProjectTaskListResponse>;
32
+ generatePrompt(taskId: string, request?: GeneratePromptRequest): Promise<GeneratePromptResponse>;
31
33
  }
@@ -116,6 +116,10 @@ class TaskService extends base_service_1.BaseService {
116
116
  async generateTasks(request) {
117
117
  return this.post('/project-tasks/generate-tasks', request);
118
118
  }
119
+ // Generate Tasks Custom (Background)
120
+ async generateTasksCustomBackground(request) {
121
+ return this.post('/project-tasks/generate-tasks-custom/background', request);
122
+ }
119
123
  // Get Tasks by Project
120
124
  async getTasksByProject(request) {
121
125
  const queryParams = new URLSearchParams();
@@ -138,5 +142,9 @@ class TaskService extends base_service_1.BaseService {
138
142
  const url = `/project-tasks/by-codespace/${codespaceTaskId}`;
139
143
  return this.get(url);
140
144
  }
145
+ // Generate Prompt for a Project Task
146
+ async generatePrompt(taskId, request = {}) {
147
+ return this.post(`/project-tasks/${taskId}/generate-prompt`, request);
148
+ }
141
149
  }
142
150
  exports.TaskService = TaskService;
@@ -170,3 +170,18 @@ export interface UpdateTaskResponse {
170
170
  task: ProjectTask;
171
171
  };
172
172
  }
173
+ export interface GenerateTasksCustomBackgroundRequest {
174
+ project_id: string;
175
+ }
176
+ export interface GenerateTasksCustomBackgroundResponse {
177
+ status: string;
178
+ job_id: string;
179
+ message: string;
180
+ }
181
+ export interface GeneratePromptRequest {
182
+ additional_context?: string;
183
+ }
184
+ export interface GeneratePromptResponse {
185
+ status: string;
186
+ prompt: string;
187
+ }
@@ -1,5 +1,5 @@
1
1
  import { BaseService } from '../base/base-service';
2
- import { TrackUsageRequest, TrackUsageResponse, CreditBalanceResponse, CreditCheckRequest, CreditCheckResponse, UsageSummaryRequest, UsageSummaryResponse, AuthorizationResponse, FreeUserStatusResponse, CalculateUsageRequest, CalculateUsageResponse, TrackCodespaceUsageRequest, TrackCodespaceUsageResponse, CodespaceTaskUsageResponse, DashboardAnalyticsRequest, DashboardAnalyticsResponse, UsageDetailsRequest, UsageDetailsResponse, ServiceBreakdownRequest, ServiceBreakdownResponse } from './usage-types';
2
+ import { TrackUsageRequest, TrackUsageResponse, CreditBalanceResponse, CreditCheckRequest, CreditCheckResponse, UsageSummaryRequest, UsageSummaryResponse, AuthorizationResponse, FreeUserStatusResponse, CalculateUsageRequest, CalculateUsageResponse, TrackCodespaceUsageRequest, TrackCodespaceUsageResponse, CodespaceTaskUsageResponse, DashboardAnalyticsRequest, DashboardAnalyticsResponse, UsageDetailsRequest, UsageDetailsResponse, ServiceBreakdownRequest, ServiceBreakdownResponse, ActivityHeatmapRequest, ActivityHeatmapResponse, RepositoryAnalysisSummaryRequest, RepositoryAnalysisSummaryResponse, RepositoryAnalysisTimelineRequest, RepositoryAnalysisTimelineResponse } from './usage-types';
3
3
  export declare class UsageService extends BaseService {
4
4
  trackUsage(request: TrackUsageRequest): Promise<TrackUsageResponse>;
5
5
  getCreditBalance(): Promise<CreditBalanceResponse>;
@@ -14,4 +14,38 @@ export declare class UsageService extends BaseService {
14
14
  getUsageDetails(params?: UsageDetailsRequest): Promise<UsageDetailsResponse>;
15
15
  getUsageSummary(params?: UsageSummaryRequest): Promise<UsageSummaryResponse>;
16
16
  getServiceBreakdown(params?: ServiceBreakdownRequest): Promise<ServiceBreakdownResponse>;
17
+ /**
18
+ * Get activity heatmap data based on codespace tasks created.
19
+ * Similar to GitHub's contribution graph.
20
+ *
21
+ * @param params - Optional request parameters
22
+ * @param params.period - Time period: '3m', '6m', '1y' (default: '3m')
23
+ * @param params.start_date - Custom start date in YYYY-MM-DD format
24
+ * @param params.end_date - Custom end date in YYYY-MM-DD format
25
+ * @returns Activity heatmap data with daily counts and levels
26
+ */
27
+ getActivityHeatmap(params?: ActivityHeatmapRequest): Promise<ActivityHeatmapResponse>;
28
+ /**
29
+ * Get summary statistics for repository analysis.
30
+ * Provides aggregated metrics across all analyzed repositories.
31
+ *
32
+ * @param params - Optional request parameters
33
+ * @param params.period - Time period: '7d', '1w', '1m', '3m', '6m', '1y' (optional - defaults to all-time)
34
+ * @param params.start_date - Custom start date in YYYY-MM-DD format
35
+ * @param params.end_date - Custom end date in YYYY-MM-DD format
36
+ * @returns Summary statistics including total repos, lines, files, etc.
37
+ */
38
+ getRepositoryAnalysisSummary(params?: RepositoryAnalysisSummaryRequest): Promise<RepositoryAnalysisSummaryResponse>;
39
+ /**
40
+ * Get timeline data for repository analysis suitable for line graphs.
41
+ * Provides time-series data for visualization.
42
+ *
43
+ * @param params - Optional request parameters
44
+ * @param params.period - Time period: '7d', '1w', '1m', '3m', '6m', '1y' (default: '1m')
45
+ * @param params.start_date - Custom start date in YYYY-MM-DD format
46
+ * @param params.end_date - Custom end date in YYYY-MM-DD format
47
+ * @param params.granularity - Data granularity: 'daily', 'weekly', 'monthly' (default: 'daily')
48
+ * @returns Timeline data with repos analyzed, lines, files per period
49
+ */
50
+ getRepositoryAnalysisTimeline(params?: RepositoryAnalysisTimelineRequest): Promise<RepositoryAnalysisTimelineResponse>;
17
51
  }
@@ -113,5 +113,73 @@ class UsageService extends base_service_1.BaseService {
113
113
  const url = `/usage/dashboard/services${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
114
114
  return this.get(url);
115
115
  }
116
+ // Activity Heatmap Methods
117
+ /**
118
+ * Get activity heatmap data based on codespace tasks created.
119
+ * Similar to GitHub's contribution graph.
120
+ *
121
+ * @param params - Optional request parameters
122
+ * @param params.period - Time period: '3m', '6m', '1y' (default: '3m')
123
+ * @param params.start_date - Custom start date in YYYY-MM-DD format
124
+ * @param params.end_date - Custom end date in YYYY-MM-DD format
125
+ * @returns Activity heatmap data with daily counts and levels
126
+ */
127
+ async getActivityHeatmap(params) {
128
+ const queryParams = new URLSearchParams();
129
+ if (params?.period)
130
+ queryParams.append('period', params.period);
131
+ if (params?.start_date)
132
+ queryParams.append('start_date', params.start_date);
133
+ if (params?.end_date)
134
+ queryParams.append('end_date', params.end_date);
135
+ const url = `/usage/dashboard/activity-heatmap${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
136
+ return this.get(url);
137
+ }
138
+ // Repository Analysis Stats Methods
139
+ /**
140
+ * Get summary statistics for repository analysis.
141
+ * Provides aggregated metrics across all analyzed repositories.
142
+ *
143
+ * @param params - Optional request parameters
144
+ * @param params.period - Time period: '7d', '1w', '1m', '3m', '6m', '1y' (optional - defaults to all-time)
145
+ * @param params.start_date - Custom start date in YYYY-MM-DD format
146
+ * @param params.end_date - Custom end date in YYYY-MM-DD format
147
+ * @returns Summary statistics including total repos, lines, files, etc.
148
+ */
149
+ async getRepositoryAnalysisSummary(params) {
150
+ const queryParams = new URLSearchParams();
151
+ if (params?.period)
152
+ queryParams.append('period', params.period);
153
+ if (params?.start_date)
154
+ queryParams.append('start_date', params.start_date);
155
+ if (params?.end_date)
156
+ queryParams.append('end_date', params.end_date);
157
+ const url = `/usage/dashboard/repo-analysis/summary${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
158
+ return this.get(url);
159
+ }
160
+ /**
161
+ * Get timeline data for repository analysis suitable for line graphs.
162
+ * Provides time-series data for visualization.
163
+ *
164
+ * @param params - Optional request parameters
165
+ * @param params.period - Time period: '7d', '1w', '1m', '3m', '6m', '1y' (default: '1m')
166
+ * @param params.start_date - Custom start date in YYYY-MM-DD format
167
+ * @param params.end_date - Custom end date in YYYY-MM-DD format
168
+ * @param params.granularity - Data granularity: 'daily', 'weekly', 'monthly' (default: 'daily')
169
+ * @returns Timeline data with repos analyzed, lines, files per period
170
+ */
171
+ async getRepositoryAnalysisTimeline(params) {
172
+ const queryParams = new URLSearchParams();
173
+ if (params?.period)
174
+ queryParams.append('period', params.period);
175
+ if (params?.start_date)
176
+ queryParams.append('start_date', params.start_date);
177
+ if (params?.end_date)
178
+ queryParams.append('end_date', params.end_date);
179
+ if (params?.granularity)
180
+ queryParams.append('granularity', params.granularity);
181
+ const url = `/usage/dashboard/repo-analysis/timeline${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
182
+ return this.get(url);
183
+ }
116
184
  }
117
185
  exports.UsageService = UsageService;
@@ -45,8 +45,8 @@ export interface CreditBalance {
45
45
  remaining_credits: number;
46
46
  is_over_limit: boolean;
47
47
  utilization_percentage: number;
48
- billing_cycle_start: string;
49
- billing_cycle_end: string;
48
+ billing_cycle_start?: string;
49
+ billing_cycle_end?: string;
50
50
  }
51
51
  export interface LimitInfo {
52
52
  allowed?: boolean;
@@ -72,14 +72,14 @@ export interface PlanLimits {
72
72
  };
73
73
  }
74
74
  export interface AuthorizationSubscription {
75
- id: string;
76
- status: string;
77
- interval: string;
78
- current_period_start: string;
79
- current_period_end: string;
80
- price_id: string;
81
- product_name: string | null;
82
- plan_name: string;
75
+ id?: string;
76
+ status?: string;
77
+ interval?: string;
78
+ current_period_start?: string;
79
+ current_period_end?: string;
80
+ price_id?: string;
81
+ product_name?: string | null;
82
+ plan_name?: string;
83
83
  }
84
84
  export interface AuthorizationData {
85
85
  user_id: string;
@@ -93,7 +93,7 @@ export interface AuthorizationData {
93
93
  can_create_tasks: boolean;
94
94
  can_analyze_repos: boolean;
95
95
  can_access_previous_projects: boolean;
96
- plan_limits: PlanLimits;
96
+ plan_limits?: PlanLimits | null;
97
97
  codespace_task_limit: LimitInfo | null;
98
98
  }
99
99
  export interface AuthorizationResponse {
@@ -253,31 +253,23 @@ export interface UsageSummaryRequest {
253
253
  start_date?: string;
254
254
  end_date?: string;
255
255
  }
256
- export interface CurrentPeriodUsage {
257
- credits_consumed: number;
258
- cost_usd: number;
259
- requests_count: number;
260
- }
261
- export interface PreviousPeriodUsage {
262
- credits_consumed: number;
263
- cost_usd: number;
264
- requests_count: number;
265
- }
266
- export interface BillingCycleInfo {
267
- total_allotted: number;
268
- total_consumed: number;
269
- remaining_credits: number;
270
- }
271
256
  export interface UsageSummaryResponse {
272
257
  status: string;
273
258
  data: {
274
- current_period: CurrentPeriodUsage;
275
- previous_period: PreviousPeriodUsage;
276
- billing_cycle: BillingCycleInfo;
277
- utilization_percentage: number;
278
- remaining_credits: number;
279
- daily_average: number;
280
- projected_monthly: number;
259
+ period: {
260
+ start?: string;
261
+ end?: string;
262
+ };
263
+ usage: {
264
+ [key: string]: number;
265
+ };
266
+ breakdown: {
267
+ [key: string]: number;
268
+ };
269
+ service_breakdown: Array<{
270
+ service_type: string;
271
+ [key: string]: any;
272
+ }>;
281
273
  };
282
274
  }
283
275
  export interface ServiceBreakdownRequest {
@@ -303,3 +295,86 @@ export interface ServiceBreakdownResponse {
303
295
  status: string;
304
296
  data: ServiceBreakdownData;
305
297
  }
298
+ export type HeatmapPeriodType = '3m' | '6m' | '1y';
299
+ export type ActivityLevel = 0 | 1 | 2 | 3 | 4;
300
+ export interface ActivityHeatmapRequest {
301
+ period?: HeatmapPeriodType;
302
+ start_date?: string;
303
+ end_date?: string;
304
+ }
305
+ export interface HeatmapDayData {
306
+ date: string;
307
+ count: number;
308
+ level: ActivityLevel;
309
+ }
310
+ export interface ActivityHeatmapData {
311
+ period: PeriodInfo;
312
+ days: HeatmapDayData[];
313
+ total_tasks: number;
314
+ most_active_day: string | null;
315
+ max_daily_count: number;
316
+ average_daily: number;
317
+ active_days: number;
318
+ }
319
+ export interface ActivityHeatmapResponse {
320
+ status: string;
321
+ data: ActivityHeatmapData;
322
+ }
323
+ export type RepoAnalysisPeriodType = '7d' | '1w' | '1m' | '3m' | '6m' | '1y';
324
+ export interface RepositoryAnalysisSummaryRequest {
325
+ period?: RepoAnalysisPeriodType;
326
+ start_date?: string;
327
+ end_date?: string;
328
+ }
329
+ export interface RepositoryAnalysisSummaryData {
330
+ total_repositories: number;
331
+ total_lines: number;
332
+ total_files_processed: number;
333
+ total_files_found: number;
334
+ total_directories: number;
335
+ total_characters: number;
336
+ estimated_tokens_total: number;
337
+ total_size_bytes: number;
338
+ binary_files_skipped: number;
339
+ large_files_skipped: number;
340
+ encoding_errors: number;
341
+ average_lines_per_repo: number;
342
+ average_files_per_repo: number;
343
+ period: PeriodInfo | null;
344
+ }
345
+ export interface RepositoryAnalysisSummaryResponse {
346
+ status: string;
347
+ data: RepositoryAnalysisSummaryData;
348
+ }
349
+ export type TimelineGranularity = 'daily' | 'weekly' | 'monthly';
350
+ export interface RepositoryAnalysisTimelineRequest {
351
+ period?: RepoAnalysisPeriodType;
352
+ start_date?: string;
353
+ end_date?: string;
354
+ granularity?: TimelineGranularity;
355
+ }
356
+ export interface RepositoryAnalysisTimelineItem {
357
+ date: string;
358
+ repos_analyzed: number;
359
+ total_lines: number;
360
+ total_files: number;
361
+ total_characters: number;
362
+ estimated_tokens: number;
363
+ }
364
+ export interface RepositoryAnalysisTimelineTotals {
365
+ repos_analyzed: number;
366
+ total_lines: number;
367
+ total_files: number;
368
+ total_characters: number;
369
+ estimated_tokens: number;
370
+ }
371
+ export interface RepositoryAnalysisTimelineData {
372
+ period: PeriodInfo;
373
+ granularity: TimelineGranularity;
374
+ timeline: RepositoryAnalysisTimelineItem[];
375
+ totals: RepositoryAnalysisTimelineTotals;
376
+ }
377
+ export interface RepositoryAnalysisTimelineResponse {
378
+ status: string;
379
+ data: RepositoryAnalysisTimelineData;
380
+ }
package/index.ts CHANGED
@@ -19,6 +19,9 @@ export type {
19
19
  GetProjectsRequest,
20
20
  PaginatedProjectsRequest,
21
21
  PaginatedProjectsResponse,
22
+ AITool,
23
+ GetAiToolsRequest,
24
+ GetAiToolsResponse,
22
25
  } from './services/projects/project-types'
23
26
  export type {
24
27
  CreateCodespaceTaskRequestV2 as CreateCodespaceTaskRequest,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeguide/core",
3
- "version": "0.0.33",
3
+ "version": "0.0.35",
4
4
  "description": "Core package for code guidance with programmatic API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",