@ragul1233332/docpilot 0.1.0
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/README.md +147 -0
- package/dist/ai/anthropic.provider.d.ts +9 -0
- package/dist/ai/anthropic.provider.d.ts.map +1 -0
- package/dist/ai/anthropic.provider.js +54 -0
- package/dist/ai/anthropic.provider.js.map +1 -0
- package/dist/ai/openai.provider.d.ts +9 -0
- package/dist/ai/openai.provider.d.ts.map +1 -0
- package/dist/ai/openai.provider.js +53 -0
- package/dist/ai/openai.provider.js.map +1 -0
- package/dist/ai/prompts.d.ts +4 -0
- package/dist/ai/prompts.d.ts.map +1 -0
- package/dist/ai/prompts.js +199 -0
- package/dist/ai/prompts.js.map +1 -0
- package/dist/ai/provider.d.ts +4 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +13 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/template.provider.d.ts +7 -0
- package/dist/ai/template.provider.d.ts.map +1 -0
- package/dist/ai/template.provider.js +19 -0
- package/dist/ai/template.provider.js.map +1 -0
- package/dist/cli/commands/changelog.d.ts +3 -0
- package/dist/cli/commands/changelog.d.ts.map +1 -0
- package/dist/cli/commands/changelog.js +118 -0
- package/dist/cli/commands/changelog.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +109 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +3 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +82 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +3 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +140 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/score.d.ts +13 -0
- package/dist/cli/commands/score.d.ts.map +1 -0
- package/dist/cli/commands/score.js +153 -0
- package/dist/cli/commands/score.js.map +1 -0
- package/dist/cli/commands/suggest.d.ts +3 -0
- package/dist/cli/commands/suggest.d.ts.map +1 -0
- package/dist/cli/commands/suggest.js +72 -0
- package/dist/cli/commands/suggest.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +120 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +63 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +35 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +76 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/constants.d.ts +22 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +201 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors.d.ts +26 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +48 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/registry.d.ts +21 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +99 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/schemas.d.ts +170 -0
- package/dist/core/schemas.d.ts.map +1 -0
- package/dist/core/schemas.js +43 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/core/types.d.ts +246 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/generators/index.d.ts +9 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +181 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/sections/api-docs.d.ts +3 -0
- package/dist/generators/sections/api-docs.d.ts.map +1 -0
- package/dist/generators/sections/api-docs.js +39 -0
- package/dist/generators/sections/api-docs.js.map +1 -0
- package/dist/generators/sections/contributing.d.ts +3 -0
- package/dist/generators/sections/contributing.d.ts.map +1 -0
- package/dist/generators/sections/contributing.js +24 -0
- package/dist/generators/sections/contributing.js.map +1 -0
- package/dist/generators/sections/deployment.d.ts +3 -0
- package/dist/generators/sections/deployment.d.ts.map +1 -0
- package/dist/generators/sections/deployment.js +30 -0
- package/dist/generators/sections/deployment.js.map +1 -0
- package/dist/generators/sections/env-vars.d.ts +3 -0
- package/dist/generators/sections/env-vars.d.ts.map +1 -0
- package/dist/generators/sections/env-vars.js +18 -0
- package/dist/generators/sections/env-vars.js.map +1 -0
- package/dist/generators/sections/features.d.ts +4 -0
- package/dist/generators/sections/features.d.ts.map +1 -0
- package/dist/generators/sections/features.js +34 -0
- package/dist/generators/sections/features.js.map +1 -0
- package/dist/generators/sections/folder-tree.d.ts +3 -0
- package/dist/generators/sections/folder-tree.d.ts.map +1 -0
- package/dist/generators/sections/folder-tree.js +43 -0
- package/dist/generators/sections/folder-tree.js.map +1 -0
- package/dist/generators/sections/installation.d.ts +4 -0
- package/dist/generators/sections/installation.d.ts.map +1 -0
- package/dist/generators/sections/installation.js +33 -0
- package/dist/generators/sections/installation.js.map +1 -0
- package/dist/generators/sections/license.d.ts +3 -0
- package/dist/generators/sections/license.d.ts.map +1 -0
- package/dist/generators/sections/license.js +13 -0
- package/dist/generators/sections/license.js.map +1 -0
- package/dist/generators/sections/overview.d.ts +4 -0
- package/dist/generators/sections/overview.d.ts.map +1 -0
- package/dist/generators/sections/overview.js +39 -0
- package/dist/generators/sections/overview.js.map +1 -0
- package/dist/generators/sections/scripts.d.ts +3 -0
- package/dist/generators/sections/scripts.d.ts.map +1 -0
- package/dist/generators/sections/scripts.js +18 -0
- package/dist/generators/sections/scripts.js.map +1 -0
- package/dist/generators/sections/tech-stack.d.ts +4 -0
- package/dist/generators/sections/tech-stack.d.ts.map +1 -0
- package/dist/generators/sections/tech-stack.js +31 -0
- package/dist/generators/sections/tech-stack.js.map +1 -0
- package/dist/generators/sections/types.d.ts +13 -0
- package/dist/generators/sections/types.d.ts.map +1 -0
- package/dist/generators/sections/types.js +2 -0
- package/dist/generators/sections/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/scanners/base.d.ts +11 -0
- package/dist/scanners/base.d.ts.map +1 -0
- package/dist/scanners/base.js +7 -0
- package/dist/scanners/base.js.map +1 -0
- package/dist/scanners/config-file.scanner.d.ts +11 -0
- package/dist/scanners/config-file.scanner.d.ts.map +1 -0
- package/dist/scanners/config-file.scanner.js +94 -0
- package/dist/scanners/config-file.scanner.js.map +1 -0
- package/dist/scanners/env-var.scanner.d.ts +13 -0
- package/dist/scanners/env-var.scanner.d.ts.map +1 -0
- package/dist/scanners/env-var.scanner.js +144 -0
- package/dist/scanners/env-var.scanner.js.map +1 -0
- package/dist/scanners/folder-tree.scanner.d.ts +13 -0
- package/dist/scanners/folder-tree.scanner.d.ts.map +1 -0
- package/dist/scanners/folder-tree.scanner.js +74 -0
- package/dist/scanners/folder-tree.scanner.js.map +1 -0
- package/dist/scanners/framework.d.ts +12 -0
- package/dist/scanners/framework.d.ts.map +1 -0
- package/dist/scanners/framework.js +71 -0
- package/dist/scanners/framework.js.map +1 -0
- package/dist/scanners/git.scanner.d.ts +11 -0
- package/dist/scanners/git.scanner.d.ts.map +1 -0
- package/dist/scanners/git.scanner.js +92 -0
- package/dist/scanners/git.scanner.js.map +1 -0
- package/dist/scanners/index.d.ts +10 -0
- package/dist/scanners/index.d.ts.map +1 -0
- package/dist/scanners/index.js +29 -0
- package/dist/scanners/index.js.map +1 -0
- package/dist/scanners/package.scanner.d.ts +11 -0
- package/dist/scanners/package.scanner.d.ts.map +1 -0
- package/dist/scanners/package.scanner.js +70 -0
- package/dist/scanners/package.scanner.js.map +1 -0
- package/dist/scanners/script.scanner.d.ts +12 -0
- package/dist/scanners/script.scanner.d.ts.map +1 -0
- package/dist/scanners/script.scanner.js +105 -0
- package/dist/scanners/script.scanner.js.map +1 -0
- package/dist/utils/files.d.ts +12 -0
- package/dist/utils/files.d.ts.map +1 -0
- package/dist/utils/files.js +86 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +63 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/markdown.d.ts +10 -0
- package/dist/utils/markdown.d.ts.map +1 -0
- package/dist/utils/markdown.js +153 -0
- package/dist/utils/markdown.js.map +1 -0
- package/package.json +61 -0
package/README.md
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# docpilot
|
|
2
|
+
AI-powered README Engineering Toolkit — scan, generate, sync, and maintain project documentation automatically
|
|
3
|
+
 
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
<!-- docpilot:start:overview -->
|
|
8
|
+
**@ragul/docpilot** is a modern software project that AI-powered README Engineering Toolkit — scan, generate, sync, and maintain project documentation automatically.
|
|
9
|
+
|
|
10
|
+
This README provides an overview of the project architecture, setup instructions, and available commands.
|
|
11
|
+
<!-- docpilot:end:overview -->
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
<!-- docpilot:start:features -->
|
|
16
|
+
- **Comprehensive test suite**
|
|
17
|
+
<!-- docpilot:end:features -->
|
|
18
|
+
|
|
19
|
+
## Tech Stack
|
|
20
|
+
|
|
21
|
+
<!-- docpilot:start:tech-stack -->
|
|
22
|
+
| Technology | Category | Version |
|
|
23
|
+
|------------|----------|---------|
|
|
24
|
+
| Playwright | Testing | ^1.61.0 |
|
|
25
|
+
| Vite | Bundler | ^2.1.0 |
|
|
26
|
+
<!-- docpilot:end:tech-stack -->
|
|
27
|
+
|
|
28
|
+
## Installation
|
|
29
|
+
|
|
30
|
+
<!-- docpilot:start:installation -->
|
|
31
|
+
```bash
|
|
32
|
+
# Installation steps
|
|
33
|
+
```
|
|
34
|
+
<!-- docpilot:end:installation -->
|
|
35
|
+
|
|
36
|
+
## Folder Structure
|
|
37
|
+
|
|
38
|
+
<!-- docpilot:start:folder-structure -->
|
|
39
|
+
```
|
|
40
|
+
docpilot/
|
|
41
|
+
│ ├── src/
|
|
42
|
+
│ │ │ ├── openai.provider.ts
|
|
43
|
+
│ │ │ ├── prompts.ts
|
|
44
|
+
│ │ │ ├── provider.ts
|
|
45
|
+
│ │ │ └── template.provider.ts
|
|
46
|
+
│ │ ├── analyzers/
|
|
47
|
+
│ │ ├── cli/
|
|
48
|
+
│ │ │ │ ├── doctor.ts
|
|
49
|
+
│ │ │ │ ├── generate.ts
|
|
50
|
+
│ │ │ │ ├── scan.ts
|
|
51
|
+
│ │ │ │ ├── score.ts
|
|
52
|
+
│ │ │ │ ├── suggest.ts
|
|
53
|
+
│ │ │ │ ├── sync.ts
|
|
54
|
+
│ │ │ │ └── watch.ts
|
|
55
|
+
│ │ │ └── index.ts
|
|
56
|
+
│ │ ├── config/
|
|
57
|
+
│ │ ├── core/
|
|
58
|
+
│ │ │ ├── errors.ts
|
|
59
|
+
│ │ │ ├── registry.ts
|
|
60
|
+
│ │ │ ├── schemas.ts
|
|
61
|
+
│ │ │ └── types.ts
|
|
62
|
+
│ │ ├── generators/
|
|
63
|
+
│ │ │ │ ├── contributing.ts
|
|
64
|
+
│ │ │ │ ├── deployment.ts
|
|
65
|
+
│ │ │ │ ├── env-vars.ts
|
|
66
|
+
│ │ │ │ ├── features.ts
|
|
67
|
+
│ │ │ │ ├── folder-tree.ts
|
|
68
|
+
│ │ │ │ ├── installation.ts
|
|
69
|
+
│ │ │ │ ├── license.ts
|
|
70
|
+
│ │ │ │ ├── overview.ts
|
|
71
|
+
│ │ │ │ ├── scripts.ts
|
|
72
|
+
│ │ │ │ ├── tech-stack.ts
|
|
73
|
+
│ │ │ │ └── types.ts
|
|
74
|
+
│ │ │ ├── templates/
|
|
75
|
+
│ │ │ └── index.ts
|
|
76
|
+
│ │ ├── scanners/
|
|
77
|
+
│ │ │ ├── config-file.scanner.ts
|
|
78
|
+
│ │ │ ├── env-var.scanner.ts
|
|
79
|
+
│ │ │ ├── folder-tree.scanner.ts
|
|
80
|
+
│ │ │ ├── framework.ts
|
|
81
|
+
│ │ │ ├── git.scanner.ts
|
|
82
|
+
│ │ │ ├── index.ts
|
|
83
|
+
│ │ │ ├── package.scanner.ts
|
|
84
|
+
│ │ │ └── script.scanner.ts
|
|
85
|
+
│ │ ├── sync/
|
|
86
|
+
│ │ ├── utils/
|
|
87
|
+
│ │ │ ├── logger.ts
|
|
88
|
+
│ │ │ └── markdown.ts
|
|
89
|
+
│ │ ├── verifier/
|
|
90
|
+
│ │ ├── watcher/
|
|
91
|
+
│ │ └── index.ts
|
|
92
|
+
│ ├── tests/
|
|
93
|
+
│ │ │ ├── next-fullstack/
|
|
94
|
+
│ │ │ └── node-express/
|
|
95
|
+
│ │ ├── integration/
|
|
96
|
+
│ │ └── unit/
|
|
97
|
+
│ │ ├── core/
|
|
98
|
+
│ │ ├── generators/
|
|
99
|
+
│ │ ├── quality/
|
|
100
|
+
│ │ ├── scanners/
|
|
101
|
+
│ │ └── sync/
|
|
102
|
+
│ ├── .env.example
|
|
103
|
+
│ ├── .gitignore
|
|
104
|
+
│ ├── package-lock.json
|
|
105
|
+
│ ├── package.json
|
|
106
|
+
│ ├── README.md
|
|
107
|
+
│ ├── tsconfig.json
|
|
108
|
+
│ └── vitest.config.ts
|
|
109
|
+
```
|
|
110
|
+
<!-- docpilot:end:folder-structure -->
|
|
111
|
+
|
|
112
|
+
## Scripts
|
|
113
|
+
|
|
114
|
+
<!-- docpilot:start:scripts -->
|
|
115
|
+
| Command | Description |
|
|
116
|
+
|---------|-------------|
|
|
117
|
+
| `build` | Build the project for production |
|
|
118
|
+
| `dev` | Start development server |
|
|
119
|
+
| `start` | Start the application |
|
|
120
|
+
| `test` | Run tests |
|
|
121
|
+
| `test:watch` | Run tests in watch mode |
|
|
122
|
+
| `test:coverage` | Run tests with coverage report |
|
|
123
|
+
| `typecheck` | Run TypeScript type checking |
|
|
124
|
+
| `prepublishOnly` | npm run build |
|
|
125
|
+
<!-- docpilot:end:scripts -->
|
|
126
|
+
|
|
127
|
+
## Environment Variables
|
|
128
|
+
|
|
129
|
+
<!-- docpilot:start:env-vars -->
|
|
130
|
+
No environment variables detected.
|
|
131
|
+
<!-- docpilot:end:env-vars -->
|
|
132
|
+
|
|
133
|
+
## Contributing
|
|
134
|
+
|
|
135
|
+
<!-- docpilot:start:contributing -->
|
|
136
|
+
1. Fork the repository
|
|
137
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
138
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
139
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
140
|
+
5. Open a Pull Request
|
|
141
|
+
<!-- docpilot:end:contributing -->
|
|
142
|
+
|
|
143
|
+
## License
|
|
144
|
+
|
|
145
|
+
<!-- docpilot:start:license -->
|
|
146
|
+
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
147
|
+
<!-- docpilot:end:license -->
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IAIProvider, AIGenerationRequest, AIGenerationResponse } from '../core/types.js';
|
|
2
|
+
export declare class AnthropicProvider implements IAIProvider {
|
|
3
|
+
readonly name = "anthropic";
|
|
4
|
+
private client;
|
|
5
|
+
constructor();
|
|
6
|
+
get available(): boolean;
|
|
7
|
+
generateText(request: AIGenerationRequest): Promise<AIGenerationResponse>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=anthropic.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.provider.d.ts","sourceRoot":"","sources":["../../src/ai/anthropic.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAM/F,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,MAAM,CAAa;;IAgB3B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+BhF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// DocPilot — Anthropic AI Provider
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export class AnthropicProvider {
|
|
5
|
+
name = 'anthropic';
|
|
6
|
+
client = null;
|
|
7
|
+
constructor() {
|
|
8
|
+
const apiKey = process.env.ANTHROPIC_API_KEY ?? process.env.DOCPILOT_ANTHROPIC_API_KEY;
|
|
9
|
+
if (apiKey) {
|
|
10
|
+
try {
|
|
11
|
+
// Dynamic import — optional dependency
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
13
|
+
const Anthropic = require('@anthropic-ai/sdk');
|
|
14
|
+
this.client = new Anthropic.default({ apiKey });
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
this.client = null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
get available() {
|
|
22
|
+
return this.client !== null;
|
|
23
|
+
}
|
|
24
|
+
async generateText(request) {
|
|
25
|
+
if (!this.client) {
|
|
26
|
+
return { content: '', finishReason: 'error' };
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const response = await this.client.messages.create({
|
|
30
|
+
model: request.model ?? 'claude-sonnet-4-20250514',
|
|
31
|
+
max_tokens: request.maxTokens ?? 2048,
|
|
32
|
+
temperature: request.temperature ?? 0.3,
|
|
33
|
+
system: request.systemPrompt,
|
|
34
|
+
messages: [{ role: 'user', content: request.userPrompt }],
|
|
35
|
+
});
|
|
36
|
+
const content = response.content
|
|
37
|
+
.map((block) => block.text ?? '')
|
|
38
|
+
.join('');
|
|
39
|
+
return {
|
|
40
|
+
content,
|
|
41
|
+
finishReason: response.stop_reason === 'end_turn' ? 'stop' : 'length',
|
|
42
|
+
usage: {
|
|
43
|
+
promptTokens: response.usage?.input_tokens ?? 0,
|
|
44
|
+
completionTokens: response.usage?.output_tokens ?? 0,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
50
|
+
return { content: `Error: ${message}`, finishReason: 'error' };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=anthropic.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.provider.js","sourceRoot":"","sources":["../../src/ai/anthropic.provider.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,WAAW,CAAC;IACpB,MAAM,GAAQ,IAAI,CAAC;IAE3B;QACE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;QACvF,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,uCAAuC;gBACvC,iEAAiE;gBACjE,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,0BAA0B;gBAClD,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;gBACrC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;gBACvC,MAAM,EAAE,OAAO,CAAC,YAAY;gBAC5B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;aAC1D,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO;iBAC7B,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;iBACrC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,OAAO;gBACL,OAAO;gBACP,YAAY,EAAE,QAAQ,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBACrE,KAAK,EAAE;oBACL,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;oBAC/C,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;iBACrD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,UAAU,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IAIProvider, AIGenerationRequest, AIGenerationResponse } from '../core/types.js';
|
|
2
|
+
export declare class OpenAIProvider implements IAIProvider {
|
|
3
|
+
readonly name = "openai";
|
|
4
|
+
private client;
|
|
5
|
+
constructor();
|
|
6
|
+
get available(): boolean;
|
|
7
|
+
generateText(request: AIGenerationRequest): Promise<AIGenerationResponse>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=openai.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.provider.d.ts","sourceRoot":"","sources":["../../src/ai/openai.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAM/F,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAa;;IAe3B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAEK,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+BhF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// DocPilot — OpenAI AI Provider
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export class OpenAIProvider {
|
|
5
|
+
name = 'openai';
|
|
6
|
+
client = null;
|
|
7
|
+
constructor() {
|
|
8
|
+
const apiKey = process.env.OPENAI_API_KEY ?? process.env.DOCPILOT_OPENAI_API_KEY;
|
|
9
|
+
if (apiKey) {
|
|
10
|
+
try {
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
12
|
+
const OpenAI = require('openai');
|
|
13
|
+
this.client = new OpenAI.default({ apiKey });
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
this.client = null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
get available() {
|
|
21
|
+
return this.client !== null;
|
|
22
|
+
}
|
|
23
|
+
async generateText(request) {
|
|
24
|
+
if (!this.client) {
|
|
25
|
+
return { content: '', finishReason: 'error' };
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const response = await this.client.chat.completions.create({
|
|
29
|
+
model: request.model ?? 'gpt-4o',
|
|
30
|
+
max_tokens: request.maxTokens ?? 2048,
|
|
31
|
+
temperature: request.temperature ?? 0.3,
|
|
32
|
+
messages: [
|
|
33
|
+
{ role: 'system', content: request.systemPrompt },
|
|
34
|
+
{ role: 'user', content: request.userPrompt },
|
|
35
|
+
],
|
|
36
|
+
});
|
|
37
|
+
const content = response.choices[0]?.message?.content ?? '';
|
|
38
|
+
return {
|
|
39
|
+
content,
|
|
40
|
+
finishReason: response.choices[0]?.finish_reason === 'stop' ? 'stop' : 'length',
|
|
41
|
+
usage: {
|
|
42
|
+
promptTokens: response.usage?.prompt_tokens ?? 0,
|
|
43
|
+
completionTokens: response.usage?.completion_tokens ?? 0,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
49
|
+
return { content: `Error: ${message}`, finishReason: 'error' };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=openai.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.provider.js","sourceRoot":"","sources":["../../src/ai/openai.provider.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IACjB,MAAM,GAAQ,IAAI,CAAC;IAE3B;QACE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACjF,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,iEAAiE;gBACjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,QAAQ;gBAChC,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;gBACrC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;gBACvC,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE;oBACjD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;iBAC9C;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAE5D,OAAO;gBACL,OAAO;gBACP,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBAC/E,KAAK,EAAE;oBACL,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;oBAChD,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;iBACzD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,UAAU,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const SYSTEM_PROMPTS: Record<string, string>;
|
|
2
|
+
export declare function buildUserPrompt(sectionId: string, projectData: Record<string, unknown>): string;
|
|
3
|
+
export declare function buildFallbackContent(sectionId: string, projectData: Record<string, any>): string;
|
|
4
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0BjD,CAAC;AAEF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAU/F;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/B,MAAM,CAuBR"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// DocPilot — AI Prompt Templates
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export const SYSTEM_PROMPTS = {
|
|
5
|
+
overview: `You are a technical documentation expert. Write a clear, concise project overview for a README file.
|
|
6
|
+
Focus on: what the project does, who it's for, the key problem it solves.
|
|
7
|
+
Keep it to 2-4 paragraphs. Use markdown. Be specific — avoid marketing fluff.`,
|
|
8
|
+
features: `List the 5-10 most important features of this project as a bulleted list.
|
|
9
|
+
Be specific and technical ("RESTful API with JWT authentication" not "Secure API").
|
|
10
|
+
Base every feature claim on evidence in the project data provided.`,
|
|
11
|
+
techStack: `Generate a clean technology stack table with columns: Technology, Purpose.
|
|
12
|
+
Group by category (Frontend, Backend, Database, DevOps, Testing, etc.).`,
|
|
13
|
+
installation: `Write clear installation instructions for developers.
|
|
14
|
+
Include: prerequisites, environment setup, install command, and a basic "getting started" example.
|
|
15
|
+
Assume the reader is a developer familiar with the tech stack.`,
|
|
16
|
+
contributing: `Write a brief contributing guide covering:
|
|
17
|
+
- How to set up the dev environment
|
|
18
|
+
- How to run tests
|
|
19
|
+
- Coding standards
|
|
20
|
+
- Pull request process
|
|
21
|
+
Keep it friendly and encouraging.`,
|
|
22
|
+
apiReference: `Generate an API reference section from the provided route data.
|
|
23
|
+
For each endpoint include: HTTP method, path, authentication requirements, description.
|
|
24
|
+
Use a clean markdown table format.`,
|
|
25
|
+
};
|
|
26
|
+
export function buildUserPrompt(sectionId, projectData) {
|
|
27
|
+
const dataStr = JSON.stringify(projectData, null, 2);
|
|
28
|
+
return `Generate the "${sectionId}" section for a README file.
|
|
29
|
+
|
|
30
|
+
Project Data:
|
|
31
|
+
\`\`\`json
|
|
32
|
+
${dataStr}
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
Generate clean markdown content for this section only. Do not include the section heading — just the body content.`;
|
|
36
|
+
}
|
|
37
|
+
export function buildFallbackContent(sectionId, projectData) {
|
|
38
|
+
switch (sectionId) {
|
|
39
|
+
case 'overview':
|
|
40
|
+
return buildFallbackOverview(projectData);
|
|
41
|
+
case 'features':
|
|
42
|
+
return buildFallbackFeatures(projectData);
|
|
43
|
+
case 'tech-stack':
|
|
44
|
+
return buildFallbackTechStack(projectData);
|
|
45
|
+
case 'installation':
|
|
46
|
+
return buildFallbackInstallation(projectData);
|
|
47
|
+
case 'folder-structure':
|
|
48
|
+
return buildFallbackFolderStructure(projectData);
|
|
49
|
+
case 'scripts':
|
|
50
|
+
return buildFallbackScripts(projectData);
|
|
51
|
+
case 'env-vars':
|
|
52
|
+
return buildFallbackEnvVars(projectData);
|
|
53
|
+
case 'contributing':
|
|
54
|
+
return `1. Fork the repository\n2. Create your feature branch (\`git checkout -b feature/amazing-feature\`)\n3. Commit your changes (\`git commit -m 'Add amazing feature'\`)\n4. Push to the branch (\`git push origin feature/amazing-feature\`)\n5. Open a Pull Request`;
|
|
55
|
+
case 'license':
|
|
56
|
+
return `This project is licensed under the MIT License - see the LICENSE file for details.`;
|
|
57
|
+
default:
|
|
58
|
+
return `Content for ${sectionId} is being generated.`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function buildFallbackOverview(data) {
|
|
62
|
+
const pkg = data.packageJson ?? {};
|
|
63
|
+
const name = pkg.name || data.projectName || 'My Project';
|
|
64
|
+
const desc = pkg.description || '';
|
|
65
|
+
const frameworks = (data.frameworks ?? []);
|
|
66
|
+
const mainTechs = frameworks
|
|
67
|
+
.filter((f) => !['testing', 'linting', 'bundler', 'monitoring'].includes(f.category))
|
|
68
|
+
.map((f) => f.name);
|
|
69
|
+
const techs = mainTechs.length > 0 ? mainTechs.join(', ') : 'modern tooling';
|
|
70
|
+
let overview = `**${name}** is a modern software project`;
|
|
71
|
+
if (desc)
|
|
72
|
+
overview += ` that ${desc}`;
|
|
73
|
+
if (mainTechs.length > 0)
|
|
74
|
+
overview += ` built with ${techs}.`;
|
|
75
|
+
else
|
|
76
|
+
overview += '.';
|
|
77
|
+
overview += '\n\nThis README provides an overview of the project architecture, setup instructions, and available commands.';
|
|
78
|
+
return overview;
|
|
79
|
+
}
|
|
80
|
+
function buildFallbackFeatures(data) {
|
|
81
|
+
const features = [];
|
|
82
|
+
const frameworks = (data.frameworks ?? []);
|
|
83
|
+
if (frameworks.some((f) => f.category === 'meta-framework')) {
|
|
84
|
+
features.push('Server-side rendering and static site generation');
|
|
85
|
+
}
|
|
86
|
+
if (frameworks.some((f) => f.name === 'Express' || f.name === 'Fastify')) {
|
|
87
|
+
features.push('RESTful API with middleware support');
|
|
88
|
+
}
|
|
89
|
+
if (frameworks.some((f) => f.category === 'database')) {
|
|
90
|
+
features.push('Database integration with type-safe queries');
|
|
91
|
+
}
|
|
92
|
+
if (frameworks.some((f) => f.category === 'orm')) {
|
|
93
|
+
features.push('Type-safe database ORM with migrations');
|
|
94
|
+
}
|
|
95
|
+
if (frameworks.some((f) => f.category === 'auth')) {
|
|
96
|
+
features.push('Authentication and authorization');
|
|
97
|
+
}
|
|
98
|
+
if (frameworks.some((f) => f.category === 'payments')) {
|
|
99
|
+
features.push('Payment processing integration');
|
|
100
|
+
}
|
|
101
|
+
if (frameworks.some((f) => f.category === 'testing')) {
|
|
102
|
+
features.push('Comprehensive test suite');
|
|
103
|
+
}
|
|
104
|
+
if (frameworks.some((f) => f.category === 'ci-cd')) {
|
|
105
|
+
features.push('Continuous integration and deployment');
|
|
106
|
+
}
|
|
107
|
+
if (features.length === 0) {
|
|
108
|
+
features.push('Modular architecture for easy extensibility');
|
|
109
|
+
features.push('TypeScript for type safety and developer experience');
|
|
110
|
+
}
|
|
111
|
+
return features.map(f => `- **${f}**`).join('\n');
|
|
112
|
+
}
|
|
113
|
+
function buildFallbackTechStack(data) {
|
|
114
|
+
const frameworks = (data.frameworks ?? []);
|
|
115
|
+
if (frameworks.length === 0)
|
|
116
|
+
return 'No technologies detected.';
|
|
117
|
+
const groups = {};
|
|
118
|
+
for (const fw of frameworks) {
|
|
119
|
+
const cat = fw.category || 'other';
|
|
120
|
+
if (!groups[cat])
|
|
121
|
+
groups[cat] = [];
|
|
122
|
+
groups[cat].push({ name: fw.name, version: fw.version });
|
|
123
|
+
}
|
|
124
|
+
const categoryLabels = {
|
|
125
|
+
'meta-framework': 'Framework',
|
|
126
|
+
'frontend-framework': 'Frontend',
|
|
127
|
+
'backend-framework': 'Backend',
|
|
128
|
+
'database': 'Database',
|
|
129
|
+
'orm': 'ORM',
|
|
130
|
+
'auth': 'Authentication',
|
|
131
|
+
'payments': 'Payments',
|
|
132
|
+
'styling': 'Styling',
|
|
133
|
+
'css-framework': 'CSS Framework',
|
|
134
|
+
'ui-library': 'UI Library',
|
|
135
|
+
'state-management': 'State Management',
|
|
136
|
+
'testing': 'Testing',
|
|
137
|
+
'linting': 'Linting / Formatting',
|
|
138
|
+
'bundler': 'Bundler',
|
|
139
|
+
'runtime': 'Runtime',
|
|
140
|
+
'cloud': 'Cloud / Infrastructure',
|
|
141
|
+
'ci-cd': 'CI / CD',
|
|
142
|
+
'monitoring': 'Monitoring',
|
|
143
|
+
'messaging': 'Messaging / Queues',
|
|
144
|
+
};
|
|
145
|
+
const table = ['| Technology | Category | Version |', '|------------|----------|---------|'];
|
|
146
|
+
for (const [cat, items] of Object.entries(groups)) {
|
|
147
|
+
for (const item of items) {
|
|
148
|
+
table.push(`| ${item.name} | ${categoryLabels[cat] || cat} | ${item.version || '-'} |`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return table.join('\n');
|
|
152
|
+
}
|
|
153
|
+
function buildFallbackInstallation(data) {
|
|
154
|
+
const pkg = data.packageJson ?? {};
|
|
155
|
+
const hasLock = data.lockFiles ?? {};
|
|
156
|
+
const pm = hasLock?.yarn ? 'yarn' : hasLock?.pnpm ? 'pnpm' : 'npm';
|
|
157
|
+
const hasScripts = pkg.scripts && Object.keys(pkg.scripts).length > 0;
|
|
158
|
+
let install = '';
|
|
159
|
+
if (data.frameworks?.some((f) => f.name === 'Node.js') || pkg.dependencies) {
|
|
160
|
+
install += `### Prerequisites\n\n- Node.js >= 18.0.0\n- ${pm === 'npm' ? 'npm' : pm} (package manager)\n\n### Setup\n\n1. Clone the repository\n \`\`\`bash\n git clone <repository-url>\n cd ${pkg.name || 'project'}\n \`\`\`\n\n2. Install dependencies\n \`\`\`bash\n ${pm} install\n \`\`\`\n\n3. Copy environment variables\n \`\`\`bash\n cp .env.example .env\n \`\`\`\n`;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
install += '```bash\n# Installation steps\n```';
|
|
164
|
+
}
|
|
165
|
+
if (hasScripts) {
|
|
166
|
+
install += '\n### Quick Start\n\n```bash\n';
|
|
167
|
+
if (pkg.scripts?.dev)
|
|
168
|
+
install += `${pm} run dev\n`;
|
|
169
|
+
else if (pkg.scripts?.start)
|
|
170
|
+
install += `${pm} start\n`;
|
|
171
|
+
install += '```\n';
|
|
172
|
+
}
|
|
173
|
+
return install;
|
|
174
|
+
}
|
|
175
|
+
function buildFallbackScripts(data) {
|
|
176
|
+
const scripts = (data.scripts ?? []);
|
|
177
|
+
if (scripts.length === 0)
|
|
178
|
+
return 'No scripts available.';
|
|
179
|
+
const table = ['| Command | Description |', '|---------|-------------|'];
|
|
180
|
+
for (const s of scripts) {
|
|
181
|
+
const desc = s.description || s.command;
|
|
182
|
+
table.push(`| \`${s.name}\` | ${desc} |`);
|
|
183
|
+
}
|
|
184
|
+
return table.join('\n');
|
|
185
|
+
}
|
|
186
|
+
function buildFallbackEnvVars(data) {
|
|
187
|
+
const envVars = (data.envVars ?? []);
|
|
188
|
+
if (envVars.length === 0)
|
|
189
|
+
return 'No environment variables detected.';
|
|
190
|
+
const table = ['| Variable | Description | Required |', '|----------|-------------|----------|'];
|
|
191
|
+
for (const ev of envVars) {
|
|
192
|
+
table.push(`| \`${ev.name}\` | ${ev.description || '-'} | ${ev.required ? 'Yes' : 'No'} |`);
|
|
193
|
+
}
|
|
194
|
+
return table.join('\n');
|
|
195
|
+
}
|
|
196
|
+
function buildFallbackFolderStructure(data) {
|
|
197
|
+
return '```\n' + (data.folderTreeSyntax || 'Project structure not available') + '\n```';
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IAIProvider } from '../core/types.js';
|
|
2
|
+
export { type IAIProvider, type AIGenerationRequest, type AIGenerationResponse } from '../core/types.js';
|
|
3
|
+
export declare function resolveAIProvider(): Promise<IAIProvider | null>;
|
|
4
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6C,MAAM,kBAAkB,CAAC;AAM/F,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEzG,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAWrE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export async function resolveAIProvider() {
|
|
2
|
+
// Try AI providers in order of preference
|
|
3
|
+
const { AnthropicProvider } = await import('./anthropic.provider.js');
|
|
4
|
+
const anthropic = new AnthropicProvider();
|
|
5
|
+
if (anthropic.available)
|
|
6
|
+
return anthropic;
|
|
7
|
+
const { OpenAIProvider } = await import('./openai.provider.js');
|
|
8
|
+
const openai = new OpenAIProvider();
|
|
9
|
+
if (openai.available)
|
|
10
|
+
return openai;
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,0CAA0C;IAC1C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC1C,IAAI,SAAS,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC;IAEpC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IAIProvider, AIGenerationRequest, AIGenerationResponse } from '../core/types.js';
|
|
2
|
+
export declare class TemplateProvider implements IAIProvider {
|
|
3
|
+
readonly name = "template";
|
|
4
|
+
readonly available = true;
|
|
5
|
+
generateText(request: AIGenerationRequest): Promise<AIGenerationResponse>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=template.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.provider.d.ts","sourceRoot":"","sources":["../../src/ai/template.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAQ/F,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,SAAS,QAAQ;IAEpB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAUhF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// DocPilot — Template-Based Fallback Provider
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Always available, no API key needed. Generates content from templates.
|
|
5
|
+
// The userPrompt serves as a section identifier.
|
|
6
|
+
export class TemplateProvider {
|
|
7
|
+
name = 'template';
|
|
8
|
+
available = true;
|
|
9
|
+
async generateText(request) {
|
|
10
|
+
// In a full implementation, this would load Handlebars templates
|
|
11
|
+
// For now, we return the system prompt as a reasonable fallback
|
|
12
|
+
const content = request.systemPrompt || request.userPrompt || '';
|
|
13
|
+
return {
|
|
14
|
+
content,
|
|
15
|
+
finishReason: 'stop',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=template.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.provider.js","sourceRoot":"","sources":["../../src/ai/template.provider.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,8CAA8C;AAC9C,+EAA+E;AAC/E,yEAAyE;AACzE,iDAAiD;AAEjD,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,UAAU,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IAE1B,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAEjE,OAAO;YACL,OAAO;YACP,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/changelog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiC/D"}
|