autogit-tool 1.0.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.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/ai/prompts.d.ts +10 -0
  4. package/dist/ai/prompts.d.ts.map +1 -0
  5. package/dist/ai/prompts.js +169 -0
  6. package/dist/ai/prompts.js.map +1 -0
  7. package/dist/ai/provider.d.ts +24 -0
  8. package/dist/ai/provider.d.ts.map +1 -0
  9. package/dist/ai/provider.js +305 -0
  10. package/dist/ai/provider.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +228 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/commands/analyze.d.ts +4 -0
  16. package/dist/commands/analyze.d.ts.map +1 -0
  17. package/dist/commands/analyze.js +63 -0
  18. package/dist/commands/analyze.js.map +1 -0
  19. package/dist/commands/config.d.ts +8 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +457 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/docs.d.ts +5 -0
  24. package/dist/commands/docs.d.ts.map +1 -0
  25. package/dist/commands/docs.js +22 -0
  26. package/dist/commands/docs.js.map +1 -0
  27. package/dist/commands/doctor.d.ts +2 -0
  28. package/dist/commands/doctor.d.ts.map +1 -0
  29. package/dist/commands/doctor.js +69 -0
  30. package/dist/commands/doctor.js.map +1 -0
  31. package/dist/commands/github.d.ts +5 -0
  32. package/dist/commands/github.d.ts.map +1 -0
  33. package/dist/commands/github.js +46 -0
  34. package/dist/commands/github.js.map +1 -0
  35. package/dist/commands/init.d.ts +2 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +38 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/linkedin.d.ts +4 -0
  40. package/dist/commands/linkedin.d.ts.map +1 -0
  41. package/dist/commands/linkedin.js +42 -0
  42. package/dist/commands/linkedin.js.map +1 -0
  43. package/dist/commands/login.d.ts +2 -0
  44. package/dist/commands/login.d.ts.map +1 -0
  45. package/dist/commands/login.js +301 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/publish.d.ts +5 -0
  48. package/dist/commands/publish.d.ts.map +1 -0
  49. package/dist/commands/publish.js +58 -0
  50. package/dist/commands/publish.js.map +1 -0
  51. package/dist/commands/readme.d.ts +5 -0
  52. package/dist/commands/readme.d.ts.map +1 -0
  53. package/dist/commands/readme.js +32 -0
  54. package/dist/commands/readme.js.map +1 -0
  55. package/dist/commands/release.d.ts +5 -0
  56. package/dist/commands/release.d.ts.map +1 -0
  57. package/dist/commands/release.js +56 -0
  58. package/dist/commands/release.js.map +1 -0
  59. package/dist/commands/resume.d.ts +8 -0
  60. package/dist/commands/resume.d.ts.map +1 -0
  61. package/dist/commands/resume.js +228 -0
  62. package/dist/commands/resume.js.map +1 -0
  63. package/dist/config/manager.d.ts +67 -0
  64. package/dist/config/manager.d.ts.map +1 -0
  65. package/dist/config/manager.js +78 -0
  66. package/dist/config/manager.js.map +1 -0
  67. package/dist/index.d.ts +6 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +6 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/pipeline/main-pipeline.d.ts +15 -0
  72. package/dist/pipeline/main-pipeline.d.ts.map +1 -0
  73. package/dist/pipeline/main-pipeline.js +279 -0
  74. package/dist/pipeline/main-pipeline.js.map +1 -0
  75. package/dist/scanner/file-scanner.d.ts +21 -0
  76. package/dist/scanner/file-scanner.d.ts.map +1 -0
  77. package/dist/scanner/file-scanner.js +90 -0
  78. package/dist/scanner/file-scanner.js.map +1 -0
  79. package/dist/scanner/project-analyzer.d.ts +26 -0
  80. package/dist/scanner/project-analyzer.d.ts.map +1 -0
  81. package/dist/scanner/project-analyzer.js +454 -0
  82. package/dist/scanner/project-analyzer.js.map +1 -0
  83. package/dist/services/docs-generator.d.ts +11 -0
  84. package/dist/services/docs-generator.d.ts.map +1 -0
  85. package/dist/services/docs-generator.js +172 -0
  86. package/dist/services/docs-generator.js.map +1 -0
  87. package/dist/services/git-service.d.ts +22 -0
  88. package/dist/services/git-service.d.ts.map +1 -0
  89. package/dist/services/git-service.js +162 -0
  90. package/dist/services/git-service.js.map +1 -0
  91. package/dist/services/github-service.d.ts +44 -0
  92. package/dist/services/github-service.d.ts.map +1 -0
  93. package/dist/services/github-service.js +131 -0
  94. package/dist/services/github-service.js.map +1 -0
  95. package/dist/services/insights.d.ts +24 -0
  96. package/dist/services/insights.d.ts.map +1 -0
  97. package/dist/services/insights.js +140 -0
  98. package/dist/services/insights.js.map +1 -0
  99. package/dist/services/readme-manager.d.ts +11 -0
  100. package/dist/services/readme-manager.d.ts.map +1 -0
  101. package/dist/services/readme-manager.js +180 -0
  102. package/dist/services/readme-manager.js.map +1 -0
  103. package/dist/services/resume-manager.d.ts +29 -0
  104. package/dist/services/resume-manager.d.ts.map +1 -0
  105. package/dist/services/resume-manager.js +186 -0
  106. package/dist/services/resume-manager.js.map +1 -0
  107. package/dist/services/social-generator.d.ts +14 -0
  108. package/dist/services/social-generator.d.ts.map +1 -0
  109. package/dist/services/social-generator.js +93 -0
  110. package/dist/services/social-generator.js.map +1 -0
  111. package/dist/utils/logger.d.ts +19 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +81 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/platform.d.ts +8 -0
  116. package/dist/utils/platform.d.ts.map +1 -0
  117. package/dist/utils/platform.js +27 -0
  118. package/dist/utils/platform.js.map +1 -0
  119. package/package.json +74 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vardh Chhajer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # autogit-cli
2
+ Automate project documentation, GitHub publishing, and social media content generation
3
+
4
+ ## Overview
5
+ The autogit-cli project is designed to streamline the process of managing project documentation, publishing to GitHub, and generating social media content. This tool aims to simplify the workflow, reducing the time and effort required to maintain a project's online presence.
6
+
7
+ ## Tech Stack
8
+ - TypeScript
9
+ - Package Manager: npm
10
+ - Build System: npm scripts
11
+
12
+ ## Features
13
+ - Automate project documentation
14
+ - GitHub publishing
15
+ - Social media content generation
16
+
17
+ ## Installation
18
+ To get started with autogit-cli, follow these steps:
19
+ 1. **Clone the repository**:
20
+ ```bash
21
+ git clone https://github.com/USERNAME/autogit-cli.git
22
+ ```
23
+ 2. **Navigate to the project directory**:
24
+ ```bash
25
+ cd autogit-cli
26
+ ```
27
+ 3. **Install dependencies**:
28
+ ```bash
29
+ npm install
30
+ ```
31
+
32
+ ## Configuration
33
+ No environment variables are required for this project.
34
+
35
+ ## Usage
36
+ To run the autogit-cli, use the following command:
37
+ ```bash
38
+ npm start
39
+ ```
40
+
41
+ ## Contributing
42
+ Contributions are welcome! Please feel free to submit a Pull Request. Your input is valuable in helping to improve and expand the capabilities of autogit-cli.
@@ -0,0 +1,10 @@
1
+ import type { ProjectAnalysis } from '../scanner/project-analyzer.js';
2
+ export declare function buildProjectContext(analysis: ProjectAnalysis): string;
3
+ export declare function readmeGenerationPrompt(analysis: ProjectAnalysis, existingReadme?: string): string;
4
+ export declare function commitMessagePrompt(changes: string): string;
5
+ export declare function linkedinPostPrompt(analysis: ProjectAnalysis, style: 'short' | 'medium' | 'long'): string;
6
+ export declare function twitterPostPrompt(analysis: ProjectAnalysis): string;
7
+ export declare function projectSummaryPrompt(analysis: ProjectAnalysis): string;
8
+ export declare function architectureDocPrompt(analysis: ProjectAnalysis, folderStructure: string): string;
9
+ export declare function insightsPrompt(analysis: ProjectAnalysis): string;
10
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAoBrE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAsCjG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW3D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CA0BxG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAenE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAmBhG;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAsBhE"}
@@ -0,0 +1,169 @@
1
+ export function buildProjectContext(analysis) {
2
+ return `
3
+ Project: ${analysis.name}
4
+ ${analysis.description ? `Description: ${analysis.description}` : ''}
5
+ ${analysis.version ? `Version: ${analysis.version}` : ''}
6
+
7
+ Languages: ${analysis.languages.join(', ') || 'None detected'}
8
+ Frameworks: ${analysis.frameworks.join(', ') || 'None detected'}
9
+ Libraries: ${analysis.libraries.join(', ') || 'None detected'}
10
+ Package Manager: ${analysis.packageManager || 'Unknown'}
11
+ Build System: ${analysis.buildSystem || 'Unknown'}
12
+ Architecture: ${analysis.architecture}
13
+ Database: ${analysis.database.join(', ') || 'None detected'}
14
+ Test Framework: ${analysis.testFramework || 'None detected'}
15
+ Deployment: ${analysis.deployment.join(', ') || 'None detected'}
16
+ CI/CD: ${analysis.cicd.join(', ') || 'None'}
17
+ License: ${analysis.license || 'None'}
18
+ APIs: ${analysis.apis.length > 0 ? analysis.apis.join(', ') : 'None detected'}
19
+ Environment Variables: ${analysis.envVars.length > 0 ? analysis.envVars.join(', ') : 'None detected'}
20
+ `.trim();
21
+ }
22
+ export function readmeGenerationPrompt(analysis, existingReadme) {
23
+ const context = buildProjectContext(analysis);
24
+ if (existingReadme) {
25
+ return `You are a technical documentation expert. Improve the following README for the project described below.
26
+
27
+ PROJECT CONTEXT:
28
+ ${context}
29
+
30
+ EXISTING README:
31
+ ${existingReadme}
32
+
33
+ INSTRUCTIONS:
34
+ - Preserve all existing custom content, badges, images, and links.
35
+ - Improve formatting and structure.
36
+ - Fill in missing sections: Features, Installation (with clear clone/install/run steps), Configuration (if env vars), Usage, Contributing.
37
+ - Update outdated information based on the project context.
38
+ - Do NOT invent features not supported by the project context.
39
+ - Do NOT overwrite custom sections the user has written.
40
+ - Use professional Markdown formatting.
41
+ - Return ONLY the improved README content, no explanations.`;
42
+ }
43
+ return `You are a technical documentation expert. Generate a professional README.md for the following project.
44
+
45
+ PROJECT CONTEXT:
46
+ ${context}
47
+
48
+ INSTRUCTIONS:
49
+ - Include these sections in order: Title, Description, Features, Tech Stack, Installation, Configuration (if env vars exist), Usage, API Documentation (if APIs detected), Contributing, License.
50
+ - Installation: Show clear step-by-step commands (clone → cd → install dependencies → run).
51
+ - Usage: Include the main command to run the project (npm start, cargo run, python main.py, etc.).
52
+ - Configuration: If environment variables exist, show a .env example.
53
+ - Only include sections relevant to this project based on the context above.
54
+ - Do NOT invent features, APIs, or capabilities not mentioned in the project context.
55
+ - Use professional Markdown formatting with proper headings, code blocks, and lists.
56
+ - Make the README informative, concise, and developer-friendly.
57
+ - Return ONLY the README content, no explanations or preamble.`;
58
+ }
59
+ export function commitMessagePrompt(changes) {
60
+ return `Generate a concise git commit message following Conventional Commits format for these changes:
61
+
62
+ ${changes}
63
+
64
+ Rules:
65
+ - Use format: type(scope): description
66
+ - Types: feat, fix, docs, refactor, chore, style, test, build, ci, perf
67
+ - Keep the first line under 72 characters.
68
+ - Be specific about what changed.
69
+ - Return ONLY the commit message, nothing else.`;
70
+ }
71
+ export function linkedinPostPrompt(analysis, style) {
72
+ const context = buildProjectContext(analysis);
73
+ const lengthGuide = {
74
+ short: '3-5 sentences, punchy and direct',
75
+ medium: '1-2 paragraphs, balanced detail',
76
+ long: '3-4 paragraphs, detailed narrative',
77
+ };
78
+ return `Generate a professional LinkedIn post announcing the project described below.
79
+
80
+ PROJECT CONTEXT:
81
+ ${context}
82
+
83
+ STYLE: ${style} (${lengthGuide[style]})
84
+
85
+ INCLUDE:
86
+ - Attention-grabbing opening hook
87
+ - What problem the project solves
88
+ - Key features/technologies
89
+ - A development highlight or lesson learned
90
+ - [GITHUB_LINK] placeholder for the repo URL
91
+ - Call to action
92
+ - 3-5 relevant hashtags at the end
93
+
94
+ Return ONLY the LinkedIn post text, no explanations.`;
95
+ }
96
+ export function twitterPostPrompt(analysis) {
97
+ const context = buildProjectContext(analysis);
98
+ return `Generate a concise X (Twitter) post (max 280 characters) announcing this project:
99
+
100
+ PROJECT CONTEXT:
101
+ ${context}
102
+
103
+ Include:
104
+ - What it does in one line
105
+ - 1-2 key technologies
106
+ - [GITHUB_LINK] placeholder
107
+ - 2-3 hashtags
108
+
109
+ Return ONLY the tweet text, no explanations.`;
110
+ }
111
+ export function projectSummaryPrompt(analysis) {
112
+ const context = buildProjectContext(analysis);
113
+ return `Generate a PROJECT_SUMMARY.md for the following project. This should be a concise technical overview for developers.
114
+
115
+ PROJECT CONTEXT:
116
+ ${context}
117
+
118
+ Include:
119
+ - Overview (2-3 sentences)
120
+ - Key Technologies
121
+ - Architecture overview
122
+ - Main features
123
+ - Development setup (brief)
124
+ - Key design decisions (inferred from tech stack)
125
+
126
+ Return ONLY the Markdown content.`;
127
+ }
128
+ export function architectureDocPrompt(analysis, folderStructure) {
129
+ const context = buildProjectContext(analysis);
130
+ return `Generate an ARCHITECTURE.md for the following project.
131
+
132
+ PROJECT CONTEXT:
133
+ ${context}
134
+
135
+ FOLDER STRUCTURE:
136
+ ${folderStructure}
137
+
138
+ Include:
139
+ - High-level architecture diagram (text-based)
140
+ - Component descriptions
141
+ - Data flow
142
+ - Key patterns used
143
+ - Technology choices and rationale
144
+
145
+ Return ONLY the Markdown content.`;
146
+ }
147
+ export function insightsPrompt(analysis) {
148
+ const context = buildProjectContext(analysis);
149
+ return `Analyze the following project and provide insights. Score each area from 1-10 and provide brief explanations.
150
+
151
+ PROJECT CONTEXT:
152
+ ${context}
153
+
154
+ Provide JSON output with this structure:
155
+ {
156
+ "documentation_score": { "score": 0, "reason": "" },
157
+ "code_quality_score": { "score": 0, "reason": "" },
158
+ "maintainability_score": { "score": 0, "reason": "" },
159
+ "suggestions": [""],
160
+ "performance_recommendations": [""],
161
+ "security_observations": [""],
162
+ "missing_tests": [""],
163
+ "missing_documentation": [""],
164
+ "todo_summary": [""]
165
+ }
166
+
167
+ Be honest and constructive. Return ONLY valid JSON.`;
168
+ }
169
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,QAAyB;IAC3D,OAAO;WACE,QAAQ,CAAC,IAAI;EACtB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;EAClE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;;aAE3C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;cAC/C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;aAClD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;mBAC1C,QAAQ,CAAC,cAAc,IAAI,SAAS;gBACvC,QAAQ,CAAC,WAAW,IAAI,SAAS;gBACjC,QAAQ,CAAC,YAAY;YACzB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;kBACzC,QAAQ,CAAC,aAAa,IAAI,eAAe;cAC7C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;SACtD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;WAChC,QAAQ,CAAC,OAAO,IAAI,MAAM;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe;yBACpD,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe;CACnG,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAyB,EAAE,cAAuB;IACvF,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;;;EAGT,OAAO;;;EAGP,cAAc;;;;;;;;;;4DAU4C,CAAC;IAC3D,CAAC;IAED,OAAO;;;EAGP,OAAO;;;;;;;;;;;+DAWsD,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO;;EAEP,OAAO;;;;;;;gDAOuC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAyB,EAAE,KAAkC;IAC9F,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,kCAAkC;QACzC,MAAM,EAAE,iCAAiC;QACzC,IAAI,EAAE,oCAAoC;KAC3C,CAAC;IAEF,OAAO;;;EAGP,OAAO;;SAEA,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;qDAWgB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAyB;IACzD,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO;;;EAGP,OAAO;;;;;;;;6CAQoC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAyB;IAC5D,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO;;;EAGP,OAAO;;;;;;;;;;kCAUyB,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAyB,EAAE,eAAuB;IACtF,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO;;;EAGP,OAAO;;;EAGP,eAAe;;;;;;;;;kCASiB,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAyB;IACtD,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO;;;EAGP,OAAO;;;;;;;;;;;;;;;oDAe2C,CAAC;AACrD,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface AIMessage {
2
+ role: 'system' | 'user' | 'assistant';
3
+ content: string;
4
+ }
5
+ export interface AIResponse {
6
+ content: string;
7
+ provider: string;
8
+ model: string;
9
+ }
10
+ export interface AIProvider {
11
+ name: string;
12
+ generate(messages: AIMessage[], options?: {
13
+ temperature?: number;
14
+ maxTokens?: number;
15
+ }): Promise<AIResponse>;
16
+ isConfigured(): boolean;
17
+ }
18
+ export declare function getProvider(name?: string): AIProvider;
19
+ export declare function listProviders(): {
20
+ name: string;
21
+ configured: boolean;
22
+ defaultModel: string;
23
+ }[];
24
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7G,YAAY,IAAI,OAAO,CAAC;CACzB;AAmXD,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAiBrD;AAED,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,CAsB7F"}
@@ -0,0 +1,305 @@
1
+ import { getAIConfig } from '../config/manager.js';
2
+ // ─── Helpers ────────────────────────────────────────────────────────────────
3
+ /** OpenAI-compatible chat completions — used by OpenAI, Groq, DeepSeek,
4
+ * Perplexity, Together AI, xAI and OpenRouter (they all share the same shape). */
5
+ async function openAICompatPost(url, apiKey, model, messages, options, extraHeaders = {}) {
6
+ const response = await fetch(url, {
7
+ method: 'POST',
8
+ headers: {
9
+ 'Content-Type': 'application/json',
10
+ Authorization: `Bearer ${apiKey}`,
11
+ ...extraHeaders,
12
+ },
13
+ body: JSON.stringify({
14
+ model,
15
+ messages,
16
+ temperature: options?.temperature ?? 0.7,
17
+ max_tokens: options?.maxTokens ?? 4096,
18
+ }),
19
+ });
20
+ if (!response.ok) {
21
+ const err = await response.text();
22
+ throw new Error(`HTTP ${response.status}: ${err}`);
23
+ }
24
+ const data = (await response.json());
25
+ return data.choices[0].message.content;
26
+ }
27
+ // ─── Original providers ──────────────────────────────────────────────────────
28
+ class OpenAIProvider {
29
+ name = 'openai';
30
+ isConfigured() { return !!getAIConfig().openaiKey; }
31
+ async generate(messages, options) {
32
+ const cfg = getAIConfig();
33
+ const model = cfg.model || 'gpt-4o-mini';
34
+ const content = await openAICompatPost('https://api.openai.com/v1/chat/completions', cfg.openaiKey, model, messages, options);
35
+ return { content, provider: 'openai', model };
36
+ }
37
+ }
38
+ class AnthropicProvider {
39
+ name = 'anthropic';
40
+ isConfigured() { return !!getAIConfig().anthropicKey; }
41
+ async generate(messages, options) {
42
+ const cfg = getAIConfig();
43
+ const model = cfg.model || 'claude-sonnet-4-20250514';
44
+ const systemMsg = messages.find(m => m.role === 'system');
45
+ const userMessages = messages.filter(m => m.role !== 'system');
46
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
47
+ method: 'POST',
48
+ headers: {
49
+ 'Content-Type': 'application/json',
50
+ 'x-api-key': cfg.anthropicKey,
51
+ 'anthropic-version': '2023-06-01',
52
+ },
53
+ body: JSON.stringify({
54
+ model,
55
+ max_tokens: options?.maxTokens ?? 4096,
56
+ system: systemMsg?.content,
57
+ messages: userMessages.map(m => ({ role: m.role, content: m.content })),
58
+ temperature: options?.temperature ?? 0.7,
59
+ }),
60
+ });
61
+ if (!response.ok)
62
+ throw new Error(`Anthropic ${response.status}: ${await response.text()}`);
63
+ const data = (await response.json());
64
+ return { content: data.content[0].text, provider: 'anthropic', model };
65
+ }
66
+ }
67
+ class GeminiProvider {
68
+ name = 'gemini';
69
+ isConfigured() { return !!getAIConfig().geminiKey; }
70
+ async generate(messages, options) {
71
+ const cfg = getAIConfig();
72
+ const model = cfg.model || 'gemini-1.5-flash';
73
+ const contents = messages
74
+ .filter(m => m.role !== 'system')
75
+ .map(m => ({ role: m.role === 'assistant' ? 'model' : 'user', parts: [{ text: m.content }] }));
76
+ const systemInstruction = messages.find(m => m.role === 'system');
77
+ const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${cfg.geminiKey}`, {
78
+ method: 'POST',
79
+ headers: { 'Content-Type': 'application/json' },
80
+ body: JSON.stringify({
81
+ contents,
82
+ systemInstruction: systemInstruction ? { parts: [{ text: systemInstruction.content }] } : undefined,
83
+ generationConfig: {
84
+ temperature: options?.temperature ?? 0.7,
85
+ maxOutputTokens: options?.maxTokens ?? 4096,
86
+ },
87
+ }),
88
+ });
89
+ if (!response.ok)
90
+ throw new Error(`Gemini ${response.status}: ${await response.text()}`);
91
+ const data = (await response.json());
92
+ return { content: data.candidates[0].content.parts[0].text, provider: 'gemini', model };
93
+ }
94
+ }
95
+ class OllamaProvider {
96
+ name = 'ollama';
97
+ isConfigured() { return true; } // local — always available
98
+ async generate(messages, options) {
99
+ const cfg = getAIConfig();
100
+ const model = cfg.model || 'llama3.1';
101
+ const response = await fetch(`${cfg.ollamaEndpoint}/api/chat`, {
102
+ method: 'POST',
103
+ headers: { 'Content-Type': 'application/json' },
104
+ body: JSON.stringify({
105
+ model,
106
+ messages,
107
+ stream: false,
108
+ options: { temperature: options?.temperature ?? 0.7, num_predict: options?.maxTokens ?? 4096 },
109
+ }),
110
+ });
111
+ if (!response.ok)
112
+ throw new Error(`Ollama ${response.status}: ${await response.text()}`);
113
+ const data = (await response.json());
114
+ return { content: data.message.content, provider: 'ollama', model };
115
+ }
116
+ }
117
+ class OpenRouterProvider {
118
+ name = 'openrouter';
119
+ isConfigured() { return !!getAIConfig().openrouterKey; }
120
+ async generate(messages, options) {
121
+ const cfg = getAIConfig();
122
+ const model = cfg.model || 'anthropic/claude-sonnet-4-20250514';
123
+ const content = await openAICompatPost('https://openrouter.ai/api/v1/chat/completions', cfg.openrouterKey, model, messages, options);
124
+ return { content, provider: 'openrouter', model };
125
+ }
126
+ }
127
+ // ─── New providers ───────────────────────────────────────────────────────────
128
+ class MistralProvider {
129
+ name = 'mistral';
130
+ isConfigured() { return !!getAIConfig().mistralKey; }
131
+ async generate(messages, options) {
132
+ const cfg = getAIConfig();
133
+ const model = cfg.model || 'mistral-large-latest';
134
+ const content = await openAICompatPost('https://api.mistral.ai/v1/chat/completions', cfg.mistralKey, model, messages, options);
135
+ return { content, provider: 'mistral', model };
136
+ }
137
+ }
138
+ class GroqProvider {
139
+ name = 'groq';
140
+ isConfigured() { return !!getAIConfig().groqKey; }
141
+ async generate(messages, options) {
142
+ const cfg = getAIConfig();
143
+ // Groq's fastest capable model as default
144
+ const model = cfg.model || 'llama-3.3-70b-versatile';
145
+ const content = await openAICompatPost('https://api.groq.com/openai/v1/chat/completions', cfg.groqKey, model, messages, options);
146
+ return { content, provider: 'groq', model };
147
+ }
148
+ }
149
+ class DeepSeekProvider {
150
+ name = 'deepseek';
151
+ isConfigured() { return !!getAIConfig().deepseekKey; }
152
+ async generate(messages, options) {
153
+ const cfg = getAIConfig();
154
+ const model = cfg.model || 'deepseek-chat';
155
+ const content = await openAICompatPost('https://api.deepseek.com/v1/chat/completions', cfg.deepseekKey, model, messages, options);
156
+ return { content, provider: 'deepseek', model };
157
+ }
158
+ }
159
+ class PerplexityProvider {
160
+ name = 'perplexity';
161
+ isConfigured() { return !!getAIConfig().perplexityKey; }
162
+ async generate(messages, options) {
163
+ const cfg = getAIConfig();
164
+ const model = cfg.model || 'llama-3.1-sonar-large-128k-online';
165
+ const content = await openAICompatPost('https://api.perplexity.ai/chat/completions', cfg.perplexityKey, model, messages, options);
166
+ return { content, provider: 'perplexity', model };
167
+ }
168
+ }
169
+ class TogetherProvider {
170
+ name = 'together';
171
+ isConfigured() { return !!getAIConfig().togetherKey; }
172
+ async generate(messages, options) {
173
+ const cfg = getAIConfig();
174
+ const model = cfg.model || 'meta-llama/Llama-3.3-70B-Instruct-Turbo';
175
+ const content = await openAICompatPost('https://api.together.xyz/v1/chat/completions', cfg.togetherKey, model, messages, options);
176
+ return { content, provider: 'together', model };
177
+ }
178
+ }
179
+ class CohereProvider {
180
+ name = 'cohere';
181
+ isConfigured() { return !!getAIConfig().cohereKey; }
182
+ async generate(messages, options) {
183
+ const cfg = getAIConfig();
184
+ const model = cfg.model || 'command-r-plus-08-2024';
185
+ // Cohere uses a different request shape: system + chat_history + message
186
+ const systemMsg = messages.find(m => m.role === 'system');
187
+ const history = messages
188
+ .filter(m => m.role !== 'system')
189
+ .slice(0, -1) // all but the last
190
+ .map(m => ({ role: m.role === 'assistant' ? 'CHATBOT' : 'USER', message: m.content }));
191
+ const lastMsg = messages.filter(m => m.role !== 'system').at(-1);
192
+ const response = await fetch('https://api.cohere.com/v1/chat', {
193
+ method: 'POST',
194
+ headers: {
195
+ 'Content-Type': 'application/json',
196
+ Authorization: `Bearer ${cfg.cohereKey}`,
197
+ },
198
+ body: JSON.stringify({
199
+ model,
200
+ message: lastMsg?.content ?? '',
201
+ preamble: systemMsg?.content,
202
+ chat_history: history,
203
+ temperature: options?.temperature ?? 0.7,
204
+ max_tokens: options?.maxTokens ?? 4096,
205
+ }),
206
+ });
207
+ if (!response.ok)
208
+ throw new Error(`Cohere ${response.status}: ${await response.text()}`);
209
+ const data = (await response.json());
210
+ return { content: data.text, provider: 'cohere', model };
211
+ }
212
+ }
213
+ class XAIProvider {
214
+ name = 'xai';
215
+ isConfigured() { return !!getAIConfig().xaiKey; }
216
+ async generate(messages, options) {
217
+ const cfg = getAIConfig();
218
+ const model = cfg.model || 'grok-3-fast-beta';
219
+ // xAI's API is OpenAI-compatible
220
+ const content = await openAICompatPost('https://api.x.ai/v1/chat/completions', cfg.xaiKey, model, messages, options);
221
+ return { content, provider: 'xai', model };
222
+ }
223
+ }
224
+ class AzureOpenAIProvider {
225
+ name = 'azure-openai';
226
+ isConfigured() {
227
+ const cfg = getAIConfig();
228
+ return !!(cfg.azureOpenAIKey && cfg.azureOpenAIEndpoint && cfg.azureOpenAIDeployment);
229
+ }
230
+ async generate(messages, options) {
231
+ const cfg = getAIConfig();
232
+ const deployment = cfg.azureOpenAIDeployment;
233
+ const apiVersion = cfg.azureOpenAIApiVersion;
234
+ const endpoint = cfg.azureOpenAIEndpoint.replace(/\/$/, '');
235
+ const url = `${endpoint}/openai/deployments/${deployment}/chat/completions?api-version=${apiVersion}`;
236
+ const response = await fetch(url, {
237
+ method: 'POST',
238
+ headers: {
239
+ 'Content-Type': 'application/json',
240
+ 'api-key': cfg.azureOpenAIKey,
241
+ },
242
+ body: JSON.stringify({
243
+ messages,
244
+ temperature: options?.temperature ?? 0.7,
245
+ max_tokens: options?.maxTokens ?? 4096,
246
+ }),
247
+ });
248
+ if (!response.ok)
249
+ throw new Error(`Azure OpenAI ${response.status}: ${await response.text()}`);
250
+ const data = (await response.json());
251
+ return { content: data.choices[0].message.content, provider: 'azure-openai', model: deployment };
252
+ }
253
+ }
254
+ // ─── Registry ────────────────────────────────────────────────────────────────
255
+ const providers = {
256
+ openai: new OpenAIProvider(),
257
+ anthropic: new AnthropicProvider(),
258
+ gemini: new GeminiProvider(),
259
+ ollama: new OllamaProvider(),
260
+ openrouter: new OpenRouterProvider(),
261
+ mistral: new MistralProvider(),
262
+ groq: new GroqProvider(),
263
+ deepseek: new DeepSeekProvider(),
264
+ perplexity: new PerplexityProvider(),
265
+ together: new TogetherProvider(),
266
+ cohere: new CohereProvider(),
267
+ xai: new XAIProvider(),
268
+ 'azure-openai': new AzureOpenAIProvider(),
269
+ };
270
+ export function getProvider(name) {
271
+ const cfg = getAIConfig();
272
+ const providerName = name || cfg.provider;
273
+ const provider = providers[providerName];
274
+ if (!provider) {
275
+ throw new Error(`Unknown provider: "${providerName}". Available: ${Object.keys(providers).join(', ')}`);
276
+ }
277
+ if (!provider.isConfigured()) {
278
+ throw new Error(`Provider "${providerName}" is not configured. ` +
279
+ `Run "autogit config" or set the matching environment variable.`);
280
+ }
281
+ return provider;
282
+ }
283
+ export function listProviders() {
284
+ const defaults = {
285
+ openai: 'gpt-4o-mini',
286
+ anthropic: 'claude-sonnet-4-20250514',
287
+ gemini: 'gemini-1.5-flash',
288
+ ollama: 'llama3.1',
289
+ openrouter: 'anthropic/claude-sonnet-4-20250514',
290
+ mistral: 'mistral-large-latest',
291
+ groq: 'llama-3.3-70b-versatile',
292
+ deepseek: 'deepseek-chat',
293
+ perplexity: 'llama-3.1-sonar-large-128k-online',
294
+ together: 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
295
+ cohere: 'command-r-plus-08-2024',
296
+ xai: 'grok-3-fast-beta',
297
+ 'azure-openai': '(your deployment name)',
298
+ };
299
+ return Object.entries(providers).map(([name, p]) => ({
300
+ name,
301
+ configured: p.isConfigured(),
302
+ defaultModel: defaults[name] ?? '',
303
+ }));
304
+ }
305
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}