@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.
Files changed (79) hide show
  1. package/__tests__/authentication.test.ts +259 -0
  2. package/__tests__/codeguide.test.ts +293 -0
  3. package/__tests__/services/base/base-service.test.ts +334 -0
  4. package/__tests__/services/generation/generation-service.test.ts +294 -0
  5. package/__tests__/services/usage/usage-service.test.ts +385 -0
  6. package/__tests__/simple.test.ts +10 -0
  7. package/__tests__/test-service.ts +37 -0
  8. package/api-service.ts +67 -0
  9. package/codeguide.ts +70 -0
  10. package/dist/__tests__/test-service.d.ts +12 -0
  11. package/dist/__tests__/test-service.js +32 -0
  12. package/dist/api-service.d.ts +8 -0
  13. package/dist/api-service.js +64 -0
  14. package/dist/codeguide.d.ts +14 -0
  15. package/dist/codeguide.js +53 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.js +31 -0
  18. package/dist/services/base/base-service.d.ts +30 -0
  19. package/dist/services/base/base-service.js +187 -0
  20. package/dist/services/base/index.d.ts +1 -0
  21. package/dist/services/base/index.js +5 -0
  22. package/dist/services/generation/generation-service.d.ts +15 -0
  23. package/dist/services/generation/generation-service.js +40 -0
  24. package/dist/services/generation/generation-types.d.ts +111 -0
  25. package/dist/services/generation/generation-types.js +2 -0
  26. package/dist/services/generation/index.d.ts +2 -0
  27. package/dist/services/generation/index.js +20 -0
  28. package/dist/services/index.d.ts +11 -0
  29. package/dist/services/index.js +45 -0
  30. package/dist/services/projects/index.d.ts +2 -0
  31. package/dist/services/projects/index.js +20 -0
  32. package/dist/services/projects/project-service.d.ts +14 -0
  33. package/dist/services/projects/project-service.js +53 -0
  34. package/dist/services/projects/project-types.d.ts +97 -0
  35. package/dist/services/projects/project-types.js +2 -0
  36. package/dist/services/repository-analysis/index.d.ts +2 -0
  37. package/dist/services/repository-analysis/index.js +20 -0
  38. package/dist/services/repository-analysis/repository-service.d.ts +10 -0
  39. package/dist/services/repository-analysis/repository-service.js +31 -0
  40. package/dist/services/repository-analysis/repository-types.d.ts +90 -0
  41. package/dist/services/repository-analysis/repository-types.js +2 -0
  42. package/dist/services/tasks/index.d.ts +2 -0
  43. package/dist/services/tasks/index.js +20 -0
  44. package/dist/services/tasks/task-service.d.ts +30 -0
  45. package/dist/services/tasks/task-service.js +105 -0
  46. package/dist/services/tasks/task-types.d.ts +144 -0
  47. package/dist/services/tasks/task-types.js +2 -0
  48. package/dist/services/usage/index.d.ts +2 -0
  49. package/dist/services/usage/index.js +20 -0
  50. package/dist/services/usage/usage-service.d.ts +14 -0
  51. package/dist/services/usage/usage-service.js +68 -0
  52. package/dist/services/usage/usage-types.d.ts +133 -0
  53. package/dist/services/usage/usage-types.js +2 -0
  54. package/dist/types.d.ts +42 -0
  55. package/dist/types.js +2 -0
  56. package/index.ts +12 -0
  57. package/jest.config.json +19 -0
  58. package/package.json +45 -0
  59. package/services/README.md +113 -0
  60. package/services/base/base-service.ts +230 -0
  61. package/services/base/index.ts +1 -0
  62. package/services/generation/generation-service.ts +81 -0
  63. package/services/generation/generation-types.ts +131 -0
  64. package/services/generation/index.ts +2 -0
  65. package/services/index.ts +22 -0
  66. package/services/projects/index.ts +2 -0
  67. package/services/projects/project-service.ts +67 -0
  68. package/services/projects/project-types.ts +108 -0
  69. package/services/repository-analysis/index.ts +2 -0
  70. package/services/repository-analysis/repository-service.ts +42 -0
  71. package/services/repository-analysis/repository-types.ts +99 -0
  72. package/services/tasks/index.ts +2 -0
  73. package/services/tasks/task-service.ts +143 -0
  74. package/services/tasks/task-types.ts +165 -0
  75. package/services/usage/index.ts +2 -0
  76. package/services/usage/usage-service.ts +96 -0
  77. package/services/usage/usage-types.ts +147 -0
  78. package/tsconfig.json +10 -0
  79. package/types.ts +51 -0
@@ -0,0 +1,14 @@
1
+ import { GenerationService, ProjectService, UsageService, RepositoryAnalysisService, TaskService } from './services';
2
+ import { APIServiceConfig, CodeGuideOptions } from './types';
3
+ export declare class CodeGuide {
4
+ generation: GenerationService;
5
+ projects: ProjectService;
6
+ usage: UsageService;
7
+ repositoryAnalysis: RepositoryAnalysisService;
8
+ tasks: TaskService;
9
+ private options;
10
+ constructor(config: APIServiceConfig, options?: CodeGuideOptions);
11
+ getGuidance(prompt: string): Promise<any>;
12
+ isHealthy(): Promise<boolean>;
13
+ setOptions(options: Partial<CodeGuideOptions>): void;
14
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CodeGuide = void 0;
7
+ const dotenv_1 = __importDefault(require("dotenv"));
8
+ const path_1 = __importDefault(require("path"));
9
+ // Load environment variables from project root
10
+ dotenv_1.default.config({
11
+ path: path_1.default.resolve(__dirname, '../../../.env'),
12
+ quiet: true,
13
+ });
14
+ const services_1 = require("./services");
15
+ class CodeGuide {
16
+ constructor(config, options = {}) {
17
+ this.options = options;
18
+ // Initialize all services with the same config
19
+ this.generation = new services_1.GenerationService(config);
20
+ this.projects = new services_1.ProjectService(config);
21
+ this.usage = new services_1.UsageService(config);
22
+ this.repositoryAnalysis = new services_1.RepositoryAnalysisService(config);
23
+ this.tasks = new services_1.TaskService(config);
24
+ }
25
+ // Convenience method for backward compatibility
26
+ async getGuidance(prompt) {
27
+ const request = {
28
+ user_prompt: prompt,
29
+ ...(this.options.language && { language: this.options.language }),
30
+ ...(this.options.context && { context: this.options.context }),
31
+ };
32
+ if (this.options.verbose) {
33
+ console.log('Sending request:', JSON.stringify(request, null, 2));
34
+ }
35
+ const response = await this.generation.refinePrompt(request);
36
+ if (this.options.verbose) {
37
+ console.log('Received response:', JSON.stringify(response, null, 2));
38
+ }
39
+ return {
40
+ id: Date.now().toString(),
41
+ response: response.refined_prompt,
42
+ timestamp: new Date().toISOString(),
43
+ language: this.options.language,
44
+ };
45
+ }
46
+ async isHealthy() {
47
+ return this.usage.healthCheck();
48
+ }
49
+ setOptions(options) {
50
+ this.options = { ...this.options, ...options };
51
+ }
52
+ }
53
+ exports.CodeGuide = CodeGuide;
@@ -0,0 +1,3 @@
1
+ export { CodeGuide } from './codeguide';
2
+ export * from './services';
3
+ export * from './types';
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.CodeGuide = void 0;
21
+ const dotenv_1 = __importDefault(require("dotenv"));
22
+ const path_1 = __importDefault(require("path"));
23
+ // Load environment variables from project root
24
+ dotenv_1.default.config({
25
+ path: path_1.default.resolve(__dirname, '../../../.env'),
26
+ quiet: true,
27
+ });
28
+ var codeguide_1 = require("./codeguide");
29
+ Object.defineProperty(exports, "CodeGuide", { enumerable: true, get: function () { return codeguide_1.CodeGuide; } });
30
+ __exportStar(require("./services"), exports);
31
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,30 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { APIServiceConfig, AuthenticationMethod, AuthenticationResult } from '../../types';
3
+ export declare abstract class BaseService {
4
+ protected client: AxiosInstance;
5
+ protected config: APIServiceConfig;
6
+ constructor(config: APIServiceConfig);
7
+ /**
8
+ * Determine and return authentication headers based on priority
9
+ * Priority: 1. Database API Key, 2. Legacy API Key, 3. Clerk JWT
10
+ */
11
+ private getAuthenticationHeaders;
12
+ /**
13
+ * Get the current authentication method being used
14
+ */
15
+ getAuthenticationMethod(): AuthenticationMethod | null;
16
+ /**
17
+ * Validate the current authentication configuration
18
+ */
19
+ validateAuthentication(): AuthenticationResult;
20
+ private setupInterceptors;
21
+ protected get<T>(url: string, config?: any): Promise<T>;
22
+ /**
23
+ * Safely format error message to avoid [object Object]
24
+ */
25
+ private formatErrorMessage;
26
+ protected post<T>(url: string, data?: any, config?: any): Promise<T>;
27
+ protected put<T>(url: string, data?: any, config?: any): Promise<T>;
28
+ protected delete<T>(url: string, config?: any): Promise<T>;
29
+ protected buildUrl(endpoint: string): string;
30
+ }
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ class BaseService {
9
+ constructor(config) {
10
+ this.config = config;
11
+ // Ensure baseUrl includes the API version
12
+ const baseUrl = config.baseUrl;
13
+ this.client = axios_1.default.create({
14
+ baseURL: baseUrl,
15
+ timeout: config.timeout || 3600000, // 1 hour timeout for document generation
16
+ headers: this.getAuthenticationHeaders(),
17
+ });
18
+ this.setupInterceptors();
19
+ }
20
+ /**
21
+ * Determine and return authentication headers based on priority
22
+ * Priority: 1. Database API Key, 2. Legacy API Key, 3. Clerk JWT
23
+ */
24
+ getAuthenticationHeaders() {
25
+ const headers = {
26
+ 'Content-Type': 'application/json',
27
+ };
28
+ // Priority 1: Database API Key (format: sk_...)
29
+ if (this.config.databaseApiKey && this.config.databaseApiKey.startsWith('sk_')) {
30
+ headers['Authorization'] = `Bearer ${this.config.databaseApiKey}`;
31
+ return headers;
32
+ }
33
+ return headers;
34
+ }
35
+ /**
36
+ * Get the current authentication method being used
37
+ */
38
+ getAuthenticationMethod() {
39
+ // Priority 1: Database API Key
40
+ if (this.config.databaseApiKey && this.config.databaseApiKey.startsWith('sk_')) {
41
+ return {
42
+ type: 'database-api-key',
43
+ priority: 1,
44
+ headers: {
45
+ Authorization: `Bearer ${this.config.databaseApiKey}`,
46
+ 'Content-Type': 'application/json',
47
+ },
48
+ };
49
+ }
50
+ // Priority 2: Legacy API Key + User ID
51
+ if (this.config.apiKey && this.config.userId) {
52
+ return {
53
+ type: 'legacy-api-key',
54
+ priority: 2,
55
+ headers: {
56
+ 'X-API-Key': this.config.apiKey,
57
+ 'X-User-ID': this.config.userId,
58
+ 'Content-Type': 'application/json',
59
+ },
60
+ };
61
+ }
62
+ // Priority 3: Clerk JWT Token
63
+ if (this.config.jwtToken) {
64
+ return {
65
+ type: 'clerk-jwt',
66
+ priority: 3,
67
+ headers: {
68
+ Authorization: `Bearer ${this.config.jwtToken}`,
69
+ 'Content-Type': 'application/json',
70
+ },
71
+ };
72
+ }
73
+ // Fallback: Legacy API key without user ID
74
+ if (this.config.apiKey) {
75
+ return {
76
+ type: 'legacy-api-key',
77
+ priority: 2,
78
+ headers: {
79
+ 'X-API-Key': this.config.apiKey,
80
+ 'Content-Type': 'application/json',
81
+ },
82
+ };
83
+ }
84
+ return null;
85
+ }
86
+ /**
87
+ * Validate the current authentication configuration
88
+ */
89
+ validateAuthentication() {
90
+ const method = this.getAuthenticationMethod();
91
+ if (!method) {
92
+ return {
93
+ success: false,
94
+ error: 'No authentication method configured. Please provide either databaseApiKey, apiKey + userId, or jwtToken.',
95
+ };
96
+ }
97
+ // Validate database API key format
98
+ if (method.type === 'database-api-key') {
99
+ if (!this.config.databaseApiKey?.startsWith('sk_')) {
100
+ return {
101
+ success: false,
102
+ error: 'Database API key must start with "sk_"',
103
+ };
104
+ }
105
+ }
106
+ // Validate legacy API key requires user ID
107
+ if (method.type === 'legacy-api-key' && !this.config.userId) {
108
+ return {
109
+ success: false,
110
+ error: 'Legacy API key authentication requires both apiKey and userId',
111
+ };
112
+ }
113
+ return {
114
+ success: true,
115
+ method,
116
+ };
117
+ }
118
+ setupInterceptors() {
119
+ this.client.interceptors.response.use((response) => response, error => {
120
+ if (axios_1.default.isAxiosError(error)) {
121
+ const authMethod = this.getAuthenticationMethod();
122
+ const status = error.response?.status;
123
+ const detail = error.response?.data?.detail;
124
+ const message = error.response?.data?.message || error.message;
125
+ // Handle authentication-specific errors
126
+ if (status === 401) {
127
+ if (authMethod?.type === 'database-api-key') {
128
+ throw new Error(`Database API key authentication failed: ${this.formatErrorMessage(detail, 'Invalid, expired, or inactive API key')}`);
129
+ }
130
+ else if (authMethod?.type === 'legacy-api-key') {
131
+ throw new Error(`Legacy API key authentication failed: ${this.formatErrorMessage(detail, 'Invalid API key or user ID')}`);
132
+ }
133
+ else if (authMethod?.type === 'clerk-jwt') {
134
+ throw new Error(`Clerk JWT authentication failed: ${this.formatErrorMessage(detail, 'Invalid or expired token')}`);
135
+ }
136
+ else {
137
+ throw new Error(`Authentication failed: ${this.formatErrorMessage(detail || message, 'Authentication failed')}`);
138
+ }
139
+ }
140
+ // Handle subscription/permission errors
141
+ if (status === 403) {
142
+ throw new Error(`Access denied: ${this.formatErrorMessage(detail, 'Insufficient permissions or subscription required')}`);
143
+ }
144
+ // Handle rate limiting
145
+ if (status === 429) {
146
+ throw new Error(`Rate limit exceeded: ${this.formatErrorMessage(detail, 'Too many requests. Please try again later.')}`);
147
+ }
148
+ // Handle usage limit errors
149
+ if (detail?.includes('credits') || detail?.includes('usage')) {
150
+ throw new Error(`Usage limit exceeded: ${this.formatErrorMessage(detail, 'Usage limit exceeded')}`);
151
+ }
152
+ // Generic API error
153
+ throw new Error(`API Error: ${this.formatErrorMessage(detail || message, 'Unknown API error')}`);
154
+ }
155
+ throw error;
156
+ });
157
+ }
158
+ async get(url, config) {
159
+ const response = await this.client.get(url, config);
160
+ return response.data;
161
+ }
162
+ /**
163
+ * Safely format error message to avoid [object Object]
164
+ */
165
+ formatErrorMessage(value, fallback) {
166
+ if (value && typeof value === 'object') {
167
+ return JSON.stringify(value);
168
+ }
169
+ return value || fallback;
170
+ }
171
+ async post(url, data, config) {
172
+ const response = await this.client.post(url, data, config);
173
+ return response.data;
174
+ }
175
+ async put(url, data, config) {
176
+ const response = await this.client.put(url, data, config);
177
+ return response.data;
178
+ }
179
+ async delete(url, config) {
180
+ const response = await this.client.delete(url, config);
181
+ return response.data;
182
+ }
183
+ buildUrl(endpoint) {
184
+ return endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
185
+ }
186
+ }
187
+ exports.BaseService = BaseService;
@@ -0,0 +1 @@
1
+ export { BaseService } from './base-service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseService = void 0;
4
+ var base_service_1 = require("./base-service");
5
+ Object.defineProperty(exports, "BaseService", { enumerable: true, get: function () { return base_service_1.BaseService; } });
@@ -0,0 +1,15 @@
1
+ import { BaseService } from '../base/base-service';
2
+ import { RefinePromptRequest, RefinePromptResponse, GenerateTitleRequest, GenerateTitleResponse, GenerateQuestionnaireRequest, GenerateQuestionnaireResponse, GeneratePRDRequest, GeneratePRDResponse, GenerateCategoryRequest, GenerateCategoryResponse, GenerateOutlineRequest, GenerateOutlineResponse, GenerateDocumentRequest, GenerateDocumentResponse, GenerateMultipleDocumentsRequest, GenerateMultipleDocumentsResponse, GenerateMissingDocumentsRequest, GenerateMissingDocumentsResponse, BackgroundGenerationRequest, BackgroundGenerationResponse, BackgroundGenerationStatusResponse } from './generation-types';
3
+ export declare class GenerationService extends BaseService {
4
+ refinePrompt(request: RefinePromptRequest): Promise<RefinePromptResponse>;
5
+ generateTitle(request: GenerateTitleRequest): Promise<GenerateTitleResponse>;
6
+ generateQuestionnaire(request: GenerateQuestionnaireRequest): Promise<GenerateQuestionnaireResponse>;
7
+ generatePRD(request: GeneratePRDRequest): Promise<GeneratePRDResponse>;
8
+ generateCategory(request: GenerateCategoryRequest): Promise<GenerateCategoryResponse>;
9
+ generateOutline(request: GenerateOutlineRequest): Promise<GenerateOutlineResponse>;
10
+ generateDocument(request: GenerateDocumentRequest): Promise<GenerateDocumentResponse>;
11
+ generateMultipleDocuments(request: GenerateMultipleDocumentsRequest): Promise<GenerateMultipleDocumentsResponse>;
12
+ generateMissingDocuments(request: GenerateMissingDocumentsRequest): Promise<GenerateMissingDocumentsResponse>;
13
+ startBackgroundGeneration(request: BackgroundGenerationRequest): Promise<BackgroundGenerationResponse>;
14
+ getBackgroundGenerationStatus(jobId: string): Promise<BackgroundGenerationStatusResponse>;
15
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerationService = void 0;
4
+ const base_service_1 = require("../base/base-service");
5
+ class GenerationService extends base_service_1.BaseService {
6
+ async refinePrompt(request) {
7
+ return this.post('/generate/refine-prompt', request);
8
+ }
9
+ async generateTitle(request) {
10
+ return this.post('/generate/title', request);
11
+ }
12
+ async generateQuestionnaire(request) {
13
+ return this.post('/generate/questionnaire', request);
14
+ }
15
+ async generatePRD(request) {
16
+ return this.post('/generate/prd', request);
17
+ }
18
+ async generateCategory(request) {
19
+ return this.post('/generate/category', request);
20
+ }
21
+ async generateOutline(request) {
22
+ return this.post('/generate/outline', request);
23
+ }
24
+ async generateDocument(request) {
25
+ return this.post('/generate/document', request);
26
+ }
27
+ async generateMultipleDocuments(request) {
28
+ return this.post('/generate/multiple-documents', request);
29
+ }
30
+ async generateMissingDocuments(request) {
31
+ return this.post('/generate/generate-missing-documents', request);
32
+ }
33
+ async startBackgroundGeneration(request) {
34
+ return this.post('/generate/background', request);
35
+ }
36
+ async getBackgroundGenerationStatus(jobId) {
37
+ return this.get(`/generate/background/${jobId}/status`);
38
+ }
39
+ }
40
+ exports.GenerationService = GenerationService;
@@ -0,0 +1,111 @@
1
+ export interface RefinePromptRequest {
2
+ user_prompt: string;
3
+ image_urls?: string[];
4
+ language?: string;
5
+ context?: string;
6
+ }
7
+ export interface RefinePromptResponse {
8
+ refined_prompt: string;
9
+ }
10
+ export interface GenerateTitleRequest {
11
+ description: string;
12
+ is_deep_research?: boolean;
13
+ }
14
+ export interface GenerateTitleResponse {
15
+ title: string;
16
+ }
17
+ export interface GenerateQuestionnaireRequest {
18
+ project_context: string;
19
+ }
20
+ export interface GenerateQuestionnaireResponse {
21
+ questions: string[];
22
+ }
23
+ export interface GeneratePRDRequest {
24
+ description: string;
25
+ selected_tools: string[];
26
+ answers: Record<string, any>;
27
+ outline?: string;
28
+ }
29
+ export interface GeneratePRDResponse {
30
+ content: string;
31
+ }
32
+ export interface GenerateCategoryRequest {
33
+ title: string;
34
+ existing_categories?: string[];
35
+ }
36
+ export interface GenerateCategoryResponse {
37
+ category: string;
38
+ }
39
+ export interface GenerateOutlineRequest {
40
+ project_type: string;
41
+ description: string;
42
+ selected_tools: string[];
43
+ answers: Record<string, any>;
44
+ custom_document_type?: string;
45
+ title?: string;
46
+ outline?: string;
47
+ prd?: string;
48
+ app_flow?: string;
49
+ tech_stack_doc?: string;
50
+ starter_kit?: string;
51
+ }
52
+ export interface GenerateOutlineResponse {
53
+ outline: string;
54
+ }
55
+ export interface GenerateDocumentRequest {
56
+ project_type?: string;
57
+ description: string;
58
+ selected_tools: string[];
59
+ answers: Record<string, any>;
60
+ outline?: string;
61
+ custom_document_type?: string;
62
+ prd?: string;
63
+ app_flow?: string;
64
+ tech_stack_doc?: string;
65
+ title?: string;
66
+ starter_kit?: string;
67
+ }
68
+ export interface GenerateDocumentResponse {
69
+ content: string;
70
+ }
71
+ export interface GenerateMultipleDocumentsRequest {
72
+ project_id: string;
73
+ description: string;
74
+ selected_tools: string[];
75
+ document_types: string[];
76
+ answers: Record<string, any>;
77
+ outline?: string;
78
+ prd?: string;
79
+ app_flow?: string;
80
+ tech_stack_doc?: string;
81
+ starter_kit?: string;
82
+ }
83
+ export interface GenerateMultipleDocumentsResponse {
84
+ success: boolean;
85
+ error?: string;
86
+ }
87
+ export interface BackgroundGenerationRequest {
88
+ project_id: string;
89
+ document_types?: string[];
90
+ }
91
+ export interface BackgroundGenerationResponse {
92
+ job_id: string;
93
+ status: string;
94
+ message: string;
95
+ }
96
+ export interface BackgroundGenerationStatusResponse {
97
+ job_id: string;
98
+ status: string;
99
+ progress: Record<string, any>;
100
+ results: Record<string, any>;
101
+ error?: string;
102
+ }
103
+ export interface GenerateMissingDocumentsRequest {
104
+ project_id: string;
105
+ }
106
+ export interface GenerateMissingDocumentsResponse {
107
+ success: boolean;
108
+ message?: string;
109
+ error?: string;
110
+ generated_documents?: string[];
111
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export { GenerationService } from './generation-service';
2
+ export * from './generation-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.GenerationService = void 0;
18
+ var generation_service_1 = require("./generation-service");
19
+ Object.defineProperty(exports, "GenerationService", { enumerable: true, get: function () { return generation_service_1.GenerationService; } });
20
+ __exportStar(require("./generation-types"), exports);
@@ -0,0 +1,11 @@
1
+ export { BaseService } from './base';
2
+ export { GenerationService } from './generation';
3
+ export { ProjectService } from './projects';
4
+ export { UsageService } from './usage';
5
+ export { RepositoryAnalysisService } from './repository-analysis';
6
+ export { TaskService } from './tasks';
7
+ export * from './generation';
8
+ export * from './projects';
9
+ export * from './usage';
10
+ export * from './repository-analysis';
11
+ export * from './tasks';
@@ -0,0 +1,45 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.TaskService = exports.RepositoryAnalysisService = exports.UsageService = exports.ProjectService = exports.GenerationService = exports.BaseService = void 0;
21
+ const dotenv_1 = __importDefault(require("dotenv"));
22
+ const path_1 = __importDefault(require("path"));
23
+ // Load environment variables from project root
24
+ dotenv_1.default.config({
25
+ path: path_1.default.resolve(__dirname, '../../../.env'),
26
+ quiet: true,
27
+ });
28
+ var base_1 = require("./base");
29
+ Object.defineProperty(exports, "BaseService", { enumerable: true, get: function () { return base_1.BaseService; } });
30
+ var generation_1 = require("./generation");
31
+ Object.defineProperty(exports, "GenerationService", { enumerable: true, get: function () { return generation_1.GenerationService; } });
32
+ var projects_1 = require("./projects");
33
+ Object.defineProperty(exports, "ProjectService", { enumerable: true, get: function () { return projects_1.ProjectService; } });
34
+ var usage_1 = require("./usage");
35
+ Object.defineProperty(exports, "UsageService", { enumerable: true, get: function () { return usage_1.UsageService; } });
36
+ var repository_analysis_1 = require("./repository-analysis");
37
+ Object.defineProperty(exports, "RepositoryAnalysisService", { enumerable: true, get: function () { return repository_analysis_1.RepositoryAnalysisService; } });
38
+ var tasks_1 = require("./tasks");
39
+ Object.defineProperty(exports, "TaskService", { enumerable: true, get: function () { return tasks_1.TaskService; } });
40
+ // Re-export all types for convenience
41
+ __exportStar(require("./generation"), exports);
42
+ __exportStar(require("./projects"), exports);
43
+ __exportStar(require("./usage"), exports);
44
+ __exportStar(require("./repository-analysis"), exports);
45
+ __exportStar(require("./tasks"), exports);
@@ -0,0 +1,2 @@
1
+ export { ProjectService } from './project-service';
2
+ export * from './project-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.ProjectService = void 0;
18
+ var project_service_1 = require("./project-service");
19
+ Object.defineProperty(exports, "ProjectService", { enumerable: true, get: function () { return project_service_1.ProjectService; } });
20
+ __exportStar(require("./project-types"), exports);
@@ -0,0 +1,14 @@
1
+ import { BaseService } from '../base/base-service';
2
+ import { Project, CreateProjectRequest, UpdateProjectRequest, PaginatedProjectsRequest, PaginatedProjectsResponse, GetProjectDocumentsRequest, GetProjectDocumentsResponse } from './project-types';
3
+ export declare class ProjectService extends BaseService {
4
+ getAllProjects(): Promise<Project[]>;
5
+ getPaginatedProjects(params: PaginatedProjectsRequest): Promise<PaginatedProjectsResponse>;
6
+ getProjectById(projectId: string): Promise<Project>;
7
+ createProject(request: CreateProjectRequest): Promise<Project>;
8
+ updateProject(projectId: string, request: UpdateProjectRequest): Promise<Project>;
9
+ deleteProject(projectId: string): Promise<{
10
+ status: string;
11
+ message: string;
12
+ }>;
13
+ getProjectDocuments(projectId: string, params?: GetProjectDocumentsRequest): Promise<GetProjectDocumentsResponse>;
14
+ }