@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,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;
|
package/dist/index.d.ts
ADDED
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,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,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
|
+
}
|