@codeguide/core 0.0.1
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.
- package/__tests__/authentication.test.ts +259 -0
- package/__tests__/codeguide.test.ts +293 -0
- package/__tests__/services/base/base-service.test.ts +334 -0
- package/__tests__/services/generation/generation-service.test.ts +294 -0
- package/__tests__/services/usage/usage-service.test.ts +385 -0
- package/__tests__/simple.test.ts +10 -0
- package/__tests__/test-service.ts +37 -0
- package/api-service.ts +67 -0
- package/codeguide.ts +70 -0
- package/dist/__tests__/test-service.d.ts +12 -0
- package/dist/__tests__/test-service.js +32 -0
- package/dist/api-service.d.ts +8 -0
- package/dist/api-service.js +64 -0
- package/dist/codeguide.d.ts +14 -0
- package/dist/codeguide.js +53 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +31 -0
- package/dist/services/base/base-service.d.ts +30 -0
- package/dist/services/base/base-service.js +187 -0
- package/dist/services/base/index.d.ts +1 -0
- package/dist/services/base/index.js +5 -0
- package/dist/services/generation/generation-service.d.ts +15 -0
- package/dist/services/generation/generation-service.js +40 -0
- package/dist/services/generation/generation-types.d.ts +111 -0
- package/dist/services/generation/generation-types.js +2 -0
- package/dist/services/generation/index.d.ts +2 -0
- package/dist/services/generation/index.js +20 -0
- package/dist/services/index.d.ts +11 -0
- package/dist/services/index.js +45 -0
- package/dist/services/projects/index.d.ts +2 -0
- package/dist/services/projects/index.js +20 -0
- package/dist/services/projects/project-service.d.ts +14 -0
- package/dist/services/projects/project-service.js +53 -0
- package/dist/services/projects/project-types.d.ts +97 -0
- package/dist/services/projects/project-types.js +2 -0
- package/dist/services/repository-analysis/index.d.ts +2 -0
- package/dist/services/repository-analysis/index.js +20 -0
- package/dist/services/repository-analysis/repository-service.d.ts +10 -0
- package/dist/services/repository-analysis/repository-service.js +31 -0
- package/dist/services/repository-analysis/repository-types.d.ts +90 -0
- package/dist/services/repository-analysis/repository-types.js +2 -0
- package/dist/services/tasks/index.d.ts +2 -0
- package/dist/services/tasks/index.js +20 -0
- package/dist/services/tasks/task-service.d.ts +30 -0
- package/dist/services/tasks/task-service.js +105 -0
- package/dist/services/tasks/task-types.d.ts +144 -0
- package/dist/services/tasks/task-types.js +2 -0
- package/dist/services/usage/index.d.ts +2 -0
- package/dist/services/usage/index.js +20 -0
- package/dist/services/usage/usage-service.d.ts +14 -0
- package/dist/services/usage/usage-service.js +68 -0
- package/dist/services/usage/usage-types.d.ts +133 -0
- package/dist/services/usage/usage-types.js +2 -0
- package/dist/types.d.ts +42 -0
- package/dist/types.js +2 -0
- package/index.ts +12 -0
- package/jest.config.json +19 -0
- package/package.json +45 -0
- package/services/README.md +113 -0
- package/services/base/base-service.ts +230 -0
- package/services/base/index.ts +1 -0
- package/services/generation/generation-service.ts +81 -0
- package/services/generation/generation-types.ts +131 -0
- package/services/generation/index.ts +2 -0
- package/services/index.ts +22 -0
- package/services/projects/index.ts +2 -0
- package/services/projects/project-service.ts +67 -0
- package/services/projects/project-types.ts +108 -0
- package/services/repository-analysis/index.ts +2 -0
- package/services/repository-analysis/repository-service.ts +42 -0
- package/services/repository-analysis/repository-types.ts +99 -0
- package/services/tasks/index.ts +2 -0
- package/services/tasks/task-service.ts +143 -0
- package/services/tasks/task-types.ts +165 -0
- package/services/usage/index.ts +2 -0
- package/services/usage/usage-service.ts +96 -0
- package/services/usage/usage-types.ts +147 -0
- package/tsconfig.json +10 -0
- package/types.ts +51 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { BaseService } from '../base/base-service'
|
|
2
|
+
import {
|
|
3
|
+
RefinePromptRequest,
|
|
4
|
+
RefinePromptResponse,
|
|
5
|
+
GenerateTitleRequest,
|
|
6
|
+
GenerateTitleResponse,
|
|
7
|
+
GenerateQuestionnaireRequest,
|
|
8
|
+
GenerateQuestionnaireResponse,
|
|
9
|
+
GeneratePRDRequest,
|
|
10
|
+
GeneratePRDResponse,
|
|
11
|
+
GenerateCategoryRequest,
|
|
12
|
+
GenerateCategoryResponse,
|
|
13
|
+
GenerateOutlineRequest,
|
|
14
|
+
GenerateOutlineResponse,
|
|
15
|
+
GenerateDocumentRequest,
|
|
16
|
+
GenerateDocumentResponse,
|
|
17
|
+
GenerateMultipleDocumentsRequest,
|
|
18
|
+
GenerateMultipleDocumentsResponse,
|
|
19
|
+
GenerateMissingDocumentsRequest,
|
|
20
|
+
GenerateMissingDocumentsResponse,
|
|
21
|
+
BackgroundGenerationRequest,
|
|
22
|
+
BackgroundGenerationResponse,
|
|
23
|
+
BackgroundGenerationStatusResponse,
|
|
24
|
+
} from './generation-types'
|
|
25
|
+
|
|
26
|
+
export class GenerationService extends BaseService {
|
|
27
|
+
async refinePrompt(request: RefinePromptRequest): Promise<RefinePromptResponse> {
|
|
28
|
+
return this.post<RefinePromptResponse>('/generate/refine-prompt', request)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async generateTitle(request: GenerateTitleRequest): Promise<GenerateTitleResponse> {
|
|
32
|
+
return this.post<GenerateTitleResponse>('/generate/title', request)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async generateQuestionnaire(
|
|
36
|
+
request: GenerateQuestionnaireRequest
|
|
37
|
+
): Promise<GenerateQuestionnaireResponse> {
|
|
38
|
+
return this.post<GenerateQuestionnaireResponse>('/generate/questionnaire', request)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async generatePRD(request: GeneratePRDRequest): Promise<GeneratePRDResponse> {
|
|
42
|
+
return this.post<GeneratePRDResponse>('/generate/prd', request)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async generateCategory(request: GenerateCategoryRequest): Promise<GenerateCategoryResponse> {
|
|
46
|
+
return this.post<GenerateCategoryResponse>('/generate/category', request)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async generateOutline(request: GenerateOutlineRequest): Promise<GenerateOutlineResponse> {
|
|
50
|
+
return this.post<GenerateOutlineResponse>('/generate/outline', request)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async generateDocument(request: GenerateDocumentRequest): Promise<GenerateDocumentResponse> {
|
|
54
|
+
return this.post<GenerateDocumentResponse>('/generate/document', request)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async generateMultipleDocuments(
|
|
58
|
+
request: GenerateMultipleDocumentsRequest
|
|
59
|
+
): Promise<GenerateMultipleDocumentsResponse> {
|
|
60
|
+
return this.post<GenerateMultipleDocumentsResponse>('/generate/multiple-documents', request)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async generateMissingDocuments(
|
|
64
|
+
request: GenerateMissingDocumentsRequest
|
|
65
|
+
): Promise<GenerateMissingDocumentsResponse> {
|
|
66
|
+
return this.post<GenerateMissingDocumentsResponse>(
|
|
67
|
+
'/generate/generate-missing-documents',
|
|
68
|
+
request
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async startBackgroundGeneration(
|
|
73
|
+
request: BackgroundGenerationRequest
|
|
74
|
+
): Promise<BackgroundGenerationResponse> {
|
|
75
|
+
return this.post<BackgroundGenerationResponse>('/generate/background', request)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async getBackgroundGenerationStatus(jobId: string): Promise<BackgroundGenerationStatusResponse> {
|
|
79
|
+
return this.get<BackgroundGenerationStatusResponse>(`/generate/background/${jobId}/status`)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export interface RefinePromptRequest {
|
|
2
|
+
user_prompt: string
|
|
3
|
+
image_urls?: string[]
|
|
4
|
+
language?: string
|
|
5
|
+
context?: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface RefinePromptResponse {
|
|
9
|
+
refined_prompt: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface GenerateTitleRequest {
|
|
13
|
+
description: string
|
|
14
|
+
is_deep_research?: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface GenerateTitleResponse {
|
|
18
|
+
title: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface GenerateQuestionnaireRequest {
|
|
22
|
+
project_context: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface GenerateQuestionnaireResponse {
|
|
26
|
+
questions: string[]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface GeneratePRDRequest {
|
|
30
|
+
description: string
|
|
31
|
+
selected_tools: string[]
|
|
32
|
+
answers: Record<string, any>
|
|
33
|
+
outline?: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface GeneratePRDResponse {
|
|
37
|
+
content: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface GenerateCategoryRequest {
|
|
41
|
+
title: string
|
|
42
|
+
existing_categories?: string[]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface GenerateCategoryResponse {
|
|
46
|
+
category: string
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface GenerateOutlineRequest {
|
|
50
|
+
project_type: string
|
|
51
|
+
description: string
|
|
52
|
+
selected_tools: string[]
|
|
53
|
+
answers: Record<string, any>
|
|
54
|
+
custom_document_type?: string
|
|
55
|
+
title?: string
|
|
56
|
+
outline?: string
|
|
57
|
+
prd?: string
|
|
58
|
+
app_flow?: string
|
|
59
|
+
tech_stack_doc?: string
|
|
60
|
+
starter_kit?: string
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface GenerateOutlineResponse {
|
|
64
|
+
outline: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface GenerateDocumentRequest {
|
|
68
|
+
project_type?: string
|
|
69
|
+
description: string
|
|
70
|
+
selected_tools: string[]
|
|
71
|
+
answers: Record<string, any>
|
|
72
|
+
outline?: string
|
|
73
|
+
custom_document_type?: string
|
|
74
|
+
prd?: string
|
|
75
|
+
app_flow?: string
|
|
76
|
+
tech_stack_doc?: string
|
|
77
|
+
title?: string
|
|
78
|
+
starter_kit?: string
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface GenerateDocumentResponse {
|
|
82
|
+
content: string
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface GenerateMultipleDocumentsRequest {
|
|
86
|
+
project_id: string
|
|
87
|
+
description: string
|
|
88
|
+
selected_tools: string[]
|
|
89
|
+
document_types: string[]
|
|
90
|
+
answers: Record<string, any>
|
|
91
|
+
outline?: string
|
|
92
|
+
prd?: string
|
|
93
|
+
app_flow?: string
|
|
94
|
+
tech_stack_doc?: string
|
|
95
|
+
starter_kit?: string
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface GenerateMultipleDocumentsResponse {
|
|
99
|
+
success: boolean
|
|
100
|
+
error?: string
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface BackgroundGenerationRequest {
|
|
104
|
+
project_id: string
|
|
105
|
+
document_types?: string[]
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface BackgroundGenerationResponse {
|
|
109
|
+
job_id: string
|
|
110
|
+
status: string
|
|
111
|
+
message: string
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export interface BackgroundGenerationStatusResponse {
|
|
115
|
+
job_id: string
|
|
116
|
+
status: string
|
|
117
|
+
progress: Record<string, any>
|
|
118
|
+
results: Record<string, any>
|
|
119
|
+
error?: string
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface GenerateMissingDocumentsRequest {
|
|
123
|
+
project_id: string
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface GenerateMissingDocumentsResponse {
|
|
127
|
+
success: boolean
|
|
128
|
+
message?: string
|
|
129
|
+
error?: string
|
|
130
|
+
generated_documents?: string[]
|
|
131
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import dotenv from 'dotenv'
|
|
2
|
+
import path from 'path'
|
|
3
|
+
|
|
4
|
+
// Load environment variables from project root
|
|
5
|
+
dotenv.config({
|
|
6
|
+
path: path.resolve(__dirname, '../../../.env'),
|
|
7
|
+
quiet: true,
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
export { BaseService } from './base'
|
|
11
|
+
export { GenerationService } from './generation'
|
|
12
|
+
export { ProjectService } from './projects'
|
|
13
|
+
export { UsageService } from './usage'
|
|
14
|
+
export { RepositoryAnalysisService } from './repository-analysis'
|
|
15
|
+
export { TaskService } from './tasks'
|
|
16
|
+
|
|
17
|
+
// Re-export all types for convenience
|
|
18
|
+
export * from './generation'
|
|
19
|
+
export * from './projects'
|
|
20
|
+
export * from './usage'
|
|
21
|
+
export * from './repository-analysis'
|
|
22
|
+
export * from './tasks'
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { BaseService } from '../base/base-service'
|
|
2
|
+
import {
|
|
3
|
+
Project,
|
|
4
|
+
CreateProjectRequest,
|
|
5
|
+
UpdateProjectRequest,
|
|
6
|
+
ProjectListResponse,
|
|
7
|
+
ProjectResponse,
|
|
8
|
+
PaginatedProjectsRequest,
|
|
9
|
+
PaginatedProjectsResponse,
|
|
10
|
+
GetProjectDocumentsRequest,
|
|
11
|
+
GetProjectDocumentsResponse,
|
|
12
|
+
} from './project-types'
|
|
13
|
+
|
|
14
|
+
export class ProjectService extends BaseService {
|
|
15
|
+
async getAllProjects(): Promise<Project[]> {
|
|
16
|
+
const response = await this.get<ProjectListResponse>('/projects')
|
|
17
|
+
return response.data
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async getPaginatedProjects(params: PaginatedProjectsRequest): Promise<PaginatedProjectsResponse> {
|
|
21
|
+
const queryParams = new URLSearchParams()
|
|
22
|
+
|
|
23
|
+
if (params.page !== undefined) queryParams.append('page', params.page.toString())
|
|
24
|
+
if (params.page_size !== undefined) queryParams.append('page_size', params.page_size.toString())
|
|
25
|
+
if (params.search_query) queryParams.append('search_query', params.search_query)
|
|
26
|
+
if (params.status) queryParams.append('status', params.status)
|
|
27
|
+
if (params.start_date) queryParams.append('start_date', params.start_date)
|
|
28
|
+
if (params.end_date) queryParams.append('end_date', params.end_date)
|
|
29
|
+
if (params.sort_by_date) queryParams.append('sort_by_date', params.sort_by_date)
|
|
30
|
+
|
|
31
|
+
const url = `/projects/paginated${queryParams.toString() ? `?${queryParams.toString()}` : ''}`
|
|
32
|
+
return this.get<PaginatedProjectsResponse>(url)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getProjectById(projectId: string): Promise<Project> {
|
|
36
|
+
const response = await this.get<ProjectResponse>(`/projects/${projectId}`)
|
|
37
|
+
return response.data
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async createProject(request: CreateProjectRequest): Promise<Project> {
|
|
41
|
+
const response = await this.post<ProjectResponse>('/projects', request)
|
|
42
|
+
return response.data
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async updateProject(projectId: string, request: UpdateProjectRequest): Promise<Project> {
|
|
46
|
+
const response = await this.put<ProjectResponse>(`/projects/${projectId}`, request)
|
|
47
|
+
return response.data
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async deleteProject(projectId: string): Promise<{ status: string; message: string }> {
|
|
51
|
+
return this.delete<{ status: string; message: string }>(`/projects/${projectId}`)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async getProjectDocuments(
|
|
55
|
+
projectId: string,
|
|
56
|
+
params?: GetProjectDocumentsRequest
|
|
57
|
+
): Promise<GetProjectDocumentsResponse> {
|
|
58
|
+
const queryParams = new URLSearchParams()
|
|
59
|
+
|
|
60
|
+
if (params?.current_version_only !== undefined) {
|
|
61
|
+
queryParams.append('current_version_only', params.current_version_only.toString())
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const url = `/projects/${projectId}/documents${queryParams.toString() ? `?${queryParams.toString()}` : ''}`
|
|
65
|
+
return this.get<GetProjectDocumentsResponse>(url)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export interface Project {
|
|
2
|
+
id: string
|
|
3
|
+
title: string
|
|
4
|
+
description: string
|
|
5
|
+
user_id: string
|
|
6
|
+
created_at: string
|
|
7
|
+
updated_at: string
|
|
8
|
+
project_documents: ProjectDocument[]
|
|
9
|
+
category?: Category
|
|
10
|
+
codie_tool?: CodieTool
|
|
11
|
+
github_url?: string
|
|
12
|
+
status?: string
|
|
13
|
+
tools_selected?: string[]
|
|
14
|
+
ai_questionaire?: Record<string, any>
|
|
15
|
+
project_outline?: Record<string, any>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ProjectDocument {
|
|
19
|
+
id: string
|
|
20
|
+
created_at: string
|
|
21
|
+
updated_at: string | null
|
|
22
|
+
project_id: string
|
|
23
|
+
user_id: string
|
|
24
|
+
title: string
|
|
25
|
+
document_type: string
|
|
26
|
+
description: string | null
|
|
27
|
+
content: string
|
|
28
|
+
custom_document_type: string
|
|
29
|
+
last_action: string
|
|
30
|
+
is_current_version: boolean
|
|
31
|
+
status: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface GetProjectDocumentsRequest {
|
|
35
|
+
current_version_only?: boolean
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface GetProjectDocumentsResponse {
|
|
39
|
+
status: string
|
|
40
|
+
data: ProjectDocument[]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface Category {
|
|
44
|
+
id: string
|
|
45
|
+
name: string
|
|
46
|
+
description?: string
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface CodieTool {
|
|
50
|
+
id: string
|
|
51
|
+
name: string
|
|
52
|
+
description?: string
|
|
53
|
+
category?: string
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface CreateProjectRequest {
|
|
57
|
+
title: string
|
|
58
|
+
description: string
|
|
59
|
+
category_id?: string
|
|
60
|
+
codie_tool_id?: string
|
|
61
|
+
tools_selected?: string[]
|
|
62
|
+
ai_questionaire?: Record<string, any>
|
|
63
|
+
project_outline?: Record<string, any>
|
|
64
|
+
github_url?: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface UpdateProjectRequest {
|
|
68
|
+
title?: string
|
|
69
|
+
description?: string
|
|
70
|
+
category_id?: string
|
|
71
|
+
codie_tool_id?: string
|
|
72
|
+
tools_selected?: string[]
|
|
73
|
+
ai_questionaire?: Record<string, any>
|
|
74
|
+
project_outline?: Record<string, any>
|
|
75
|
+
github_url?: string
|
|
76
|
+
status?: string
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface ProjectListResponse {
|
|
80
|
+
status: string
|
|
81
|
+
data: Project[]
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface ProjectResponse {
|
|
85
|
+
status: string
|
|
86
|
+
data: Project
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface PaginatedProjectsRequest {
|
|
90
|
+
page?: number
|
|
91
|
+
page_size?: number
|
|
92
|
+
search_query?: string
|
|
93
|
+
status?: string
|
|
94
|
+
start_date?: string
|
|
95
|
+
end_date?: string
|
|
96
|
+
sort_by_date?: 'asc' | 'desc'
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface PaginatedProjectsResponse {
|
|
100
|
+
status: string
|
|
101
|
+
data: Project[]
|
|
102
|
+
pagination: {
|
|
103
|
+
total: number
|
|
104
|
+
page: number
|
|
105
|
+
page_size: number
|
|
106
|
+
total_pages: number
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BaseService } from '../base/base-service'
|
|
2
|
+
import {
|
|
3
|
+
AnalyzeRepositoryRequest,
|
|
4
|
+
AnalyzeRepositoryResponse,
|
|
5
|
+
RepositoryAnalysisStatusResponse,
|
|
6
|
+
RepositoryAnalysisResultResponse,
|
|
7
|
+
RepositoryListResponse,
|
|
8
|
+
RepositoryDetailsResponse,
|
|
9
|
+
DeleteRepositoryResponse,
|
|
10
|
+
} from './repository-types'
|
|
11
|
+
|
|
12
|
+
export class RepositoryAnalysisService extends BaseService {
|
|
13
|
+
async analyzeRepository(request: AnalyzeRepositoryRequest): Promise<AnalyzeRepositoryResponse> {
|
|
14
|
+
return this.post<AnalyzeRepositoryResponse>('/repository-analysis/analyze', request)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async getAnalysisStatus(taskId: string): Promise<RepositoryAnalysisStatusResponse> {
|
|
18
|
+
return this.get<RepositoryAnalysisStatusResponse>(`/repository-analysis/tasks/${taskId}`)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async getAnalysisResult(taskId: string): Promise<RepositoryAnalysisResultResponse> {
|
|
22
|
+
return this.get<RepositoryAnalysisResultResponse>(`/repository-analysis/tasks/${taskId}/result`)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async listRepositories(skip?: number, limit?: number): Promise<RepositoryListResponse> {
|
|
26
|
+
const queryParams = new URLSearchParams()
|
|
27
|
+
|
|
28
|
+
if (skip !== undefined) queryParams.append('skip', skip.toString())
|
|
29
|
+
if (limit !== undefined) queryParams.append('limit', limit.toString())
|
|
30
|
+
|
|
31
|
+
const url = `/repository-analysis/repositories${queryParams.toString() ? `?${queryParams.toString()}` : ''}`
|
|
32
|
+
return this.get<RepositoryListResponse>(url)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getRepositoryDetails(repoId: string): Promise<RepositoryDetailsResponse> {
|
|
36
|
+
return this.get<RepositoryDetailsResponse>(`/repository-analysis/repositories/${repoId}`)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async deleteRepository(repoId: string): Promise<DeleteRepositoryResponse> {
|
|
40
|
+
return this.delete<DeleteRepositoryResponse>(`/repository-analysis/repositories/${repoId}`)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export interface AnalyzeRepositoryRequest {
|
|
2
|
+
repository_url: string
|
|
3
|
+
generate_documents?: boolean
|
|
4
|
+
create_codespace_task?: boolean
|
|
5
|
+
project_id?: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface AnalyzeRepositoryResponse {
|
|
9
|
+
task_id: string
|
|
10
|
+
status: string
|
|
11
|
+
message: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface RepositoryAnalysisStatusResponse {
|
|
15
|
+
task_id: string
|
|
16
|
+
status: string
|
|
17
|
+
message: string
|
|
18
|
+
progress?: number
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RepositoryAnalysisResultResponse {
|
|
22
|
+
task_id: string
|
|
23
|
+
status: string
|
|
24
|
+
result: {
|
|
25
|
+
repository: RepositoryInfo
|
|
26
|
+
documents: RepositoryDocument[]
|
|
27
|
+
statistics: RepositoryStatistics
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface RepositoryInfo {
|
|
32
|
+
id: string
|
|
33
|
+
name: string
|
|
34
|
+
full_name: string
|
|
35
|
+
description?: string
|
|
36
|
+
language?: string
|
|
37
|
+
stars: number
|
|
38
|
+
forks: number
|
|
39
|
+
open_issues: number
|
|
40
|
+
default_branch: string
|
|
41
|
+
created_at: string
|
|
42
|
+
updated_at: string
|
|
43
|
+
clone_url: string
|
|
44
|
+
homepage?: string
|
|
45
|
+
owner: {
|
|
46
|
+
login: string
|
|
47
|
+
id: number
|
|
48
|
+
avatar_url: string
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface RepositoryDocument {
|
|
53
|
+
id: string
|
|
54
|
+
filename: string
|
|
55
|
+
path: string
|
|
56
|
+
content: string
|
|
57
|
+
language?: string
|
|
58
|
+
size: number
|
|
59
|
+
type: string
|
|
60
|
+
created_at: string
|
|
61
|
+
updated_at: string
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface RepositoryStatistics {
|
|
65
|
+
total_files: number
|
|
66
|
+
total_lines_of_code: number
|
|
67
|
+
languages: Record<string, number>
|
|
68
|
+
file_types: Record<string, number>
|
|
69
|
+
dependencies: string[]
|
|
70
|
+
complexity_metrics: {
|
|
71
|
+
average_complexity: number
|
|
72
|
+
max_complexity: number
|
|
73
|
+
min_complexity: number
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface RepositoryListResponse {
|
|
78
|
+
repositories: RepositoryInfo[]
|
|
79
|
+
total: number
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface RepositoryDetailsResponse {
|
|
83
|
+
id: string
|
|
84
|
+
repository_url: string
|
|
85
|
+
user_id: string
|
|
86
|
+
created_at: string
|
|
87
|
+
updated_at: string
|
|
88
|
+
analysis_results?: {
|
|
89
|
+
repository: RepositoryInfo
|
|
90
|
+
documents: RepositoryDocument[]
|
|
91
|
+
statistics: RepositoryStatistics
|
|
92
|
+
analyzed_at: string
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface DeleteRepositoryResponse {
|
|
97
|
+
status: string
|
|
98
|
+
message: string
|
|
99
|
+
}
|