@codeguide/core 0.0.22 → 0.0.23

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.
@@ -0,0 +1,2 @@
1
+ declare function demonstrateProjectFiltering(): Promise<void>;
2
+ export { demonstrateProjectFiltering };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.demonstrateProjectFiltering = demonstrateProjectFiltering;
4
+ const index_1 = require("../index");
5
+ // Example usage of the new has_repository filtering functionality
6
+ async function demonstrateProjectFiltering() {
7
+ const codeGuide = new index_1.CodeGuide({
8
+ baseUrl: 'https://api.example.com',
9
+ apiKey: 'your-api-key'
10
+ });
11
+ console.log('=== Project Filtering Examples ===\n');
12
+ // Example 1: Get all projects with repositories
13
+ console.log('1. Getting all projects with repositories:');
14
+ try {
15
+ const projectsWithRepos = await codeGuide.projects.getAllProjects({
16
+ has_repository: true
17
+ });
18
+ console.log(`Found ${projectsWithRepos.length} projects with repositories`);
19
+ projectsWithRepos.forEach((project) => {
20
+ console.log(`- ${project.title} (${project.project_repositories.length} repositories)`);
21
+ });
22
+ }
23
+ catch (error) {
24
+ console.log('Error:', error.message);
25
+ }
26
+ console.log('\n');
27
+ // Example 2: Get all projects without repositories
28
+ console.log('2. Getting all projects without repositories:');
29
+ try {
30
+ const projectsWithoutRepos = await codeGuide.projects.getAllProjects({
31
+ has_repository: false
32
+ });
33
+ console.log(`Found ${projectsWithoutRepos.length} projects without repositories`);
34
+ projectsWithoutRepos.forEach((project) => {
35
+ console.log(`- ${project.title}`);
36
+ });
37
+ }
38
+ catch (error) {
39
+ console.log('Error:', error.message);
40
+ }
41
+ console.log('\n');
42
+ // Example 3: Paginated projects with repository filter
43
+ console.log('3. Getting paginated projects with repositories:');
44
+ try {
45
+ const paginatedRequest = {
46
+ page: 1,
47
+ page_size: 10,
48
+ has_repository: true,
49
+ status: 'active'
50
+ };
51
+ const paginatedResponse = await codeGuide.projects.getPaginatedProjects(paginatedRequest);
52
+ console.log(`Page ${paginatedResponse.pagination.page} of ${paginatedResponse.pagination.total_pages}`);
53
+ console.log(`Total projects with repositories: ${paginatedResponse.pagination.total}`);
54
+ console.log(`Showing ${paginatedResponse.data.length} projects:`);
55
+ paginatedResponse.data.forEach((project) => {
56
+ console.log(`- ${project.title}`);
57
+ project.project_repositories.forEach((repo) => {
58
+ console.log(` Repository: ${repo.repo_url} (${repo.branch})`);
59
+ });
60
+ });
61
+ }
62
+ catch (error) {
63
+ console.log('Error:', error.message);
64
+ }
65
+ console.log('\n');
66
+ // Example 4: Combining filters
67
+ console.log('4. Combining multiple filters:');
68
+ try {
69
+ const combinedFilters = {
70
+ page: 1,
71
+ page_size: 5,
72
+ has_repository: false,
73
+ search_query: 'web',
74
+ sort_by_date: 'desc'
75
+ };
76
+ const filteredProjects = await codeGuide.projects.getPaginatedProjects(combinedFilters);
77
+ console.log(`Found ${filteredProjects.pagination.total} projects matching filters:`);
78
+ filteredProjects.data.forEach((project) => {
79
+ console.log(`- ${project.title} (Updated: ${project.updated_at})`);
80
+ });
81
+ }
82
+ catch (error) {
83
+ console.log('Error:', error.message);
84
+ }
85
+ }
86
+ // Run example if this file is executed directly
87
+ if (require.main === module) {
88
+ demonstrateProjectFiltering().catch(console.error);
89
+ }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { CodeGuide } from './codeguide';
2
2
  export * from './services';
3
3
  export * from './types';
4
- export type { ConnectRepositoryRequest, ConnectRepositoryResponse } from './services/projects/project-types';
5
- export type { CreateCodespaceTaskRequestV2 as CreateCodespaceTaskRequest, CreateCodespaceTaskResponseV2 as CreateCodespaceTaskResponse, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, ModelApiKey, GetCodespaceTaskResponse, CodespaceTaskData, TechnicalDocument, GetProjectTasksByCodespaceResponse } from './services/codespace/codespace-types';
4
+ export type { ConnectRepositoryRequest, ConnectRepositoryResponse, ProjectRepository, GetProjectsRequest, PaginatedProjectsRequest, PaginatedProjectsResponse } from './services/projects/project-types';
5
+ export type { CreateCodespaceTaskRequestV2 as CreateCodespaceTaskRequest, CreateCodespaceTaskResponseV2 as CreateCodespaceTaskResponse, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, ModelApiKey, Attachment, GetCodespaceTaskResponse, CodespaceTaskData, TechnicalDocument, GetProjectTasksByCodespaceResponse } from './services/codespace/codespace-types';
6
6
  export type { StoreExternalTokenRequest, StoreExternalTokenResponse, ListTokensQuery, ListTokensResponse, ValidateTokenRequest, ValidateTokenResponse, FindBestMatchRequest, FindBestMatchResponse, Platform, TokenType } from './services/external-tokens/external-tokens-types';
@@ -1,5 +1,5 @@
1
1
  import { BaseService } from '../base/base-service';
2
- import { GenerateTaskTitleRequest, GenerateTaskTitleResponse, CreateCodespaceTaskRequest, CreateCodespaceTaskResponse, CreateCodespaceTaskRequestV2, CreateCodespaceTaskResponseV2, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, GetCodespaceTaskResponse, GetProjectTasksByCodespaceResponse } from './codespace-types';
2
+ import { GenerateTaskTitleRequest, GenerateTaskTitleResponse, CreateCodespaceTaskRequest, CreateCodespaceTaskResponse, CreateCodespaceTaskRequestV2, CreateCodespaceTaskResponseV2, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, GetCodespaceTaskResponse, GetProjectTasksByCodespaceResponse, GetCodespaceTasksByProjectRequest, GetCodespaceTasksByProjectResponse, CodespaceTaskDetailedResponse } from './codespace-types';
3
3
  export declare class CodespaceService extends BaseService {
4
4
  generateTaskTitle(request: GenerateTaskTitleRequest): Promise<GenerateTaskTitleResponse>;
5
5
  createCodespaceTask(request: CreateCodespaceTaskRequest): Promise<CreateCodespaceTaskResponse>;
@@ -7,5 +7,7 @@ export declare class CodespaceService extends BaseService {
7
7
  createBackgroundCodespaceTask(request: CreateBackgroundCodespaceTaskRequest): Promise<CreateBackgroundCodespaceTaskResponse>;
8
8
  getCodespaceTask(codespaceTaskId: string): Promise<GetCodespaceTaskResponse>;
9
9
  getProjectTasksByCodespace(codespaceTaskId: string): Promise<GetProjectTasksByCodespaceResponse>;
10
+ getCodespaceTasksByProject(params: GetCodespaceTasksByProjectRequest): Promise<GetCodespaceTasksByProjectResponse>;
11
+ getCodespaceTaskDetailed(codespaceTaskId: string): Promise<CodespaceTaskDetailedResponse>;
10
12
  private validateCodespaceTaskRequest;
11
13
  }
@@ -29,6 +29,30 @@ class CodespaceService extends base_service_1.BaseService {
29
29
  }
30
30
  return this.get(`/project-tasks/by-codespace/${codespaceTaskId}`);
31
31
  }
32
+ async getCodespaceTasksByProject(params) {
33
+ if (!params.project_id) {
34
+ throw new Error('project_id is required');
35
+ }
36
+ const queryParams = new URLSearchParams();
37
+ if (params.status)
38
+ queryParams.append('status', params.status);
39
+ if (params.limit !== undefined)
40
+ queryParams.append('limit', params.limit.toString());
41
+ if (params.offset !== undefined)
42
+ queryParams.append('offset', params.offset.toString());
43
+ if (params.sort_by)
44
+ queryParams.append('sort_by', params.sort_by);
45
+ if (params.sort_order)
46
+ queryParams.append('sort_order', params.sort_order);
47
+ const url = `/codespace/tasks/project/${params.project_id}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
48
+ return this.get(url);
49
+ }
50
+ async getCodespaceTaskDetailed(codespaceTaskId) {
51
+ if (!codespaceTaskId) {
52
+ throw new Error('codespace_task_id is required');
53
+ }
54
+ return this.get(`/codespace/task/${codespaceTaskId}/detailed`);
55
+ }
32
56
  validateCodespaceTaskRequest(request) {
33
57
  if (!request.project_id) {
34
58
  throw new Error('project_id is required');
@@ -36,7 +60,8 @@ class CodespaceService extends base_service_1.BaseService {
36
60
  if (!request.task_description) {
37
61
  throw new Error('task_description is required');
38
62
  }
39
- if (request.execution_mode && !['implementation', 'docs-only'].includes(request.execution_mode)) {
63
+ if (request.execution_mode &&
64
+ !['implementation', 'docs-only'].includes(request.execution_mode)) {
40
65
  throw new Error('execution_mode must be either "implementation" or "docs-only"');
41
66
  }
42
67
  // Validate model_api_keys if provided
@@ -20,6 +20,13 @@ export interface ModelApiKey {
20
20
  model_name: string;
21
21
  api_key: string;
22
22
  }
23
+ export interface Attachment {
24
+ filename: string;
25
+ file_data: string;
26
+ mime_type: string;
27
+ file_size: number;
28
+ description?: string;
29
+ }
23
30
  export interface CreateCodespaceTaskRequestV2 {
24
31
  project_id: string;
25
32
  project_repository_id?: string;
@@ -35,6 +42,8 @@ export interface CreateCodespaceTaskRequestV2 {
35
42
  execution_mode?: 'implementation' | 'docs-only';
36
43
  model_name?: string;
37
44
  starter_kit_repo?: string;
45
+ use_enhanced_summary?: boolean;
46
+ attachments?: Attachment[];
38
47
  }
39
48
  export interface CreateCodespaceTaskResponseV2 {
40
49
  success: boolean;
@@ -115,3 +124,27 @@ export interface CreateBackgroundCodespaceTaskRequest extends CreateCodespaceTas
115
124
  }
116
125
  export interface CreateBackgroundCodespaceTaskResponse extends CreateCodespaceTaskResponseV2 {
117
126
  }
127
+ export interface GetCodespaceTasksByProjectRequest {
128
+ project_id: string;
129
+ status?: 'completed' | 'failed' | 'in_progress' | 'created' | 'cancelled';
130
+ limit?: number;
131
+ offset?: number;
132
+ sort_by?: string;
133
+ sort_order?: 'asc' | 'desc';
134
+ }
135
+ export interface GetCodespaceTasksByProjectResponse {
136
+ status: string;
137
+ data: CodespaceTaskData[];
138
+ total_count: number;
139
+ message: string;
140
+ }
141
+ export interface CodespaceTaskDetailedResponse {
142
+ status: string;
143
+ data: {
144
+ task: CodespaceTaskData;
145
+ project: any;
146
+ repository: any;
147
+ usage_summary: any;
148
+ };
149
+ message: string;
150
+ }
@@ -1,3 +1,3 @@
1
1
  export { CodespaceService } from './codespace-service';
2
2
  export * from './codespace-types';
3
- export type { CreateCodespaceTaskRequestV2 as CreateCodespaceTaskRequest, CreateCodespaceTaskResponseV2 as CreateCodespaceTaskResponse, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, ModelApiKey, GetCodespaceTaskResponse, CodespaceTaskData, TechnicalDocument, GetProjectTasksByCodespaceResponse } from './codespace-types';
3
+ export type { CreateCodespaceTaskRequestV2 as CreateCodespaceTaskRequest, CreateCodespaceTaskResponseV2 as CreateCodespaceTaskResponse, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, ModelApiKey, Attachment, GetCodespaceTaskResponse, CodespaceTaskData, TechnicalDocument, GetProjectTasksByCodespaceResponse } from './codespace-types';
@@ -1,7 +1,7 @@
1
1
  import { BaseService } from '../base/base-service';
2
- import { Project, CreateProjectRequest, UpdateProjectRequest, PaginatedProjectsRequest, PaginatedProjectsResponse, GetProjectDocumentsRequest, GetProjectDocumentsResponse, ConnectRepositoryRequest, ConnectRepositoryResponse } from './project-types';
2
+ import { Project, CreateProjectRequest, UpdateProjectRequest, PaginatedProjectsRequest, PaginatedProjectsResponse, GetProjectsRequest, GetProjectDocumentsRequest, GetProjectDocumentsResponse, ConnectRepositoryRequest, ConnectRepositoryResponse } from './project-types';
3
3
  export declare class ProjectService extends BaseService {
4
- getAllProjects(): Promise<Project[]>;
4
+ getAllProjects(params?: GetProjectsRequest): Promise<Project[]>;
5
5
  getPaginatedProjects(params: PaginatedProjectsRequest): Promise<PaginatedProjectsResponse>;
6
6
  getProjectById(projectId: string): Promise<Project>;
7
7
  createProject(request: CreateProjectRequest): Promise<Project>;
@@ -3,8 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProjectService = void 0;
4
4
  const base_service_1 = require("../base/base-service");
5
5
  class ProjectService extends base_service_1.BaseService {
6
- async getAllProjects() {
7
- const response = await this.get('/projects');
6
+ async getAllProjects(params) {
7
+ const queryParams = new URLSearchParams();
8
+ if (params?.has_repository !== undefined) {
9
+ queryParams.append('has_repository', params.has_repository.toString());
10
+ }
11
+ const url = `/projects${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
12
+ const response = await this.get(url);
8
13
  return response.data;
9
14
  }
10
15
  async getPaginatedProjects(params) {
@@ -23,6 +28,8 @@ class ProjectService extends base_service_1.BaseService {
23
28
  queryParams.append('end_date', params.end_date);
24
29
  if (params.sort_by_date)
25
30
  queryParams.append('sort_by_date', params.sort_by_date);
31
+ if (params.has_repository !== undefined)
32
+ queryParams.append('has_repository', params.has_repository.toString());
26
33
  const url = `/projects/paginated${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
27
34
  return this.get(url);
28
35
  }
@@ -1,3 +1,14 @@
1
+ export interface ProjectRepository {
2
+ id: string;
3
+ project_id: string;
4
+ repo_url: string;
5
+ branch: string;
6
+ author: string;
7
+ name: string;
8
+ connection_status: 'pending' | 'connected' | 'failed';
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
1
12
  export interface Project {
2
13
  id: string;
3
14
  title: string;
@@ -6,6 +17,7 @@ export interface Project {
6
17
  created_at: string;
7
18
  updated_at: string;
8
19
  project_documents: ProjectDocument[];
20
+ project_repositories: ProjectRepository[];
9
21
  category?: Category;
10
22
  codie_tool?: CodieTool;
11
23
  github_url?: string;
@@ -76,6 +88,9 @@ export interface ProjectResponse {
76
88
  status: string;
77
89
  data: Project;
78
90
  }
91
+ export interface GetProjectsRequest {
92
+ has_repository?: boolean;
93
+ }
79
94
  export interface PaginatedProjectsRequest {
80
95
  page?: number;
81
96
  page_size?: number;
@@ -84,6 +99,7 @@ export interface PaginatedProjectsRequest {
84
99
  start_date?: string;
85
100
  end_date?: string;
86
101
  sort_by_date?: 'asc' | 'desc';
102
+ has_repository?: boolean;
87
103
  }
88
104
  export interface PaginatedProjectsResponse {
89
105
  status: string;
@@ -1,8 +1,21 @@
1
+ import { Attachment } from '../codespace/codespace-types';
1
2
  export interface AnalyzeRepositoryRequest {
2
- repository_url: string;
3
+ github_url: string;
4
+ github_token?: string;
3
5
  generate_documents?: boolean;
4
6
  create_codespace_task?: boolean;
5
7
  project_id?: string;
8
+ codespace_task_description?: string;
9
+ codespace_branch?: string;
10
+ codespace_base_branch?: string;
11
+ model_api_keys?: {
12
+ model_name: string;
13
+ api_key: string;
14
+ }[];
15
+ model_name?: string;
16
+ starter_kit_repo?: string;
17
+ use_enhanced_summary?: boolean;
18
+ attachments?: Attachment[];
6
19
  }
7
20
  export interface AnalyzeRepositoryResponse {
8
21
  task_id: string;