@ksw8954/git-ai-commit 1.1.7 → 1.2.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/.github/workflows/publish.yml +36 -0
- package/CHANGELOG.md +21 -0
- package/README.md +25 -4
- package/dist/commands/ai.d.ts +7 -1
- package/dist/commands/ai.d.ts.map +1 -1
- package/dist/commands/ai.js +144 -22
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/commit.d.ts +1 -0
- package/dist/commands/commit.d.ts.map +1 -1
- package/dist/commands/commit.js +37 -34
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +15 -5
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/config.d.ts +7 -2
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +37 -15
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/configCommand.d.ts +5 -1
- package/dist/commands/configCommand.d.ts.map +1 -1
- package/dist/commands/configCommand.js +30 -3
- package/dist/commands/configCommand.js.map +1 -1
- package/dist/commands/git.js +3 -3
- package/dist/commands/hookCommand.d.ts +14 -0
- package/dist/commands/hookCommand.d.ts.map +1 -0
- package/dist/commands/hookCommand.js +180 -0
- package/dist/commands/hookCommand.js.map +1 -0
- package/dist/commands/prCommand.d.ts.map +1 -1
- package/dist/commands/prCommand.js +3 -1
- package/dist/commands/prCommand.js.map +1 -1
- package/dist/commands/tag.d.ts.map +1 -1
- package/dist/commands/tag.js +12 -2
- package/dist/commands/tag.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/__tests__/ai.test.ts +486 -7
- package/src/__tests__/commitCommand.test.ts +111 -0
- package/src/__tests__/config.test.ts +24 -6
- package/src/__tests__/git.test.ts +421 -98
- package/src/__tests__/preCommit.test.ts +19 -0
- package/src/__tests__/tagCommand.test.ts +510 -17
- package/src/commands/ai.ts +175 -24
- package/src/commands/commit.ts +40 -34
- package/src/commands/completion.ts +15 -5
- package/src/commands/config.ts +46 -23
- package/src/commands/configCommand.ts +41 -8
- package/src/commands/git.ts +3 -3
- package/src/commands/hookCommand.ts +193 -0
- package/src/commands/prCommand.ts +3 -1
- package/src/commands/tag.ts +13 -2
- package/src/index.ts +3 -0
- package/src/schema/config.schema.json +72 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Publish to npm
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
publish:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Use Node.js
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: 20
|
|
22
|
+
registry-url: https://registry.npmjs.org/
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: npm ci
|
|
26
|
+
|
|
27
|
+
- name: Build
|
|
28
|
+
run: npm run build
|
|
29
|
+
|
|
30
|
+
- name: Test
|
|
31
|
+
run: npm test
|
|
32
|
+
|
|
33
|
+
- name: Publish
|
|
34
|
+
run: npm publish
|
|
35
|
+
env:
|
|
36
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
## 1.2.0 - 2026-02-24
|
|
5
|
+
|
|
6
|
+
### New Features
|
|
7
|
+
Add `--max-tokens` config option to set max completion tokens for AI responses
|
|
8
|
+
Per-command defaults when not configured: commit=1000, tag=3000, PR=4000
|
|
9
|
+
|
|
10
|
+
### Improvements
|
|
11
|
+
Reduce `MAX_DIFF_TOKENS` from 50000 to 25000 for faster Gemini native mode processing
|
|
12
|
+
Reduce `MAX_FILE_LINES` from 400 to 200 and `MAX_NEW_FILE_LINES` from 200 to 100
|
|
13
|
+
Reduce default commit `max_completion_tokens` from 3000 to 1000
|
|
14
|
+
|
|
15
|
+
### Testing
|
|
16
|
+
Increase ai.ts test coverage to 89% (43 tests)
|
|
17
|
+
Increase commit.ts test coverage to 93% (13 tests)
|
|
18
|
+
|
|
19
|
+
## 1.1.8 - 2026-01-30
|
|
20
|
+
|
|
21
|
+
### Improvements
|
|
22
|
+
- Auto force push when normal tag push fails (no user confirmation required)
|
|
23
|
+
|
|
3
24
|
## 1.1.7 - 2026-01-26
|
|
4
25
|
|
|
5
26
|
### New Features
|
package/README.md
CHANGED
|
@@ -95,6 +95,22 @@ When AI generation is used, the CLI previews the tag message and asks for confir
|
|
|
95
95
|
|
|
96
96
|
Providing `--message` uses your text verbatim but still asks for tag creation confirmation.
|
|
97
97
|
|
|
98
|
+
## Git Hook
|
|
99
|
+
|
|
100
|
+
Install a `prepare-commit-msg` hook so that `git commit` automatically generates an AI message:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
git-ai-commit hook install # install the hook in the current repo
|
|
104
|
+
git-ai-commit hook uninstall # remove the hook
|
|
105
|
+
git-ai-commit hook status # check installation status
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Once installed, running `git commit` (without `-m`) will:
|
|
109
|
+
1. Generate an AI commit message from your staged changes
|
|
110
|
+
2. Pre-fill it in your editor for review and editing
|
|
111
|
+
3. Proceed with the commit when you save and close the editor
|
|
112
|
+
|
|
113
|
+
The hook is skipped when using `git commit -m "..."`, merge commits, or `--amend`.
|
|
98
114
|
## Configuration
|
|
99
115
|
|
|
100
116
|
Persist defaults without exporting environment variables through the interactive config command:
|
|
@@ -108,6 +124,9 @@ git-ai-commit config -k sk-... # store API key securely on disk
|
|
|
108
124
|
git-ai-commit config -b https://api.test # set a custom API base URL
|
|
109
125
|
git-ai-commit config --model gpt-4o-mini # set preferred model
|
|
110
126
|
git-ai-commit config --mode openai # prefer OPENAI_* environment variables
|
|
127
|
+
git-ai-commit config --mode gemini # use Google Gemini native SDK
|
|
128
|
+
git-ai-commit config --co-author "Name <email>" # add Co-authored-by trailer to commits
|
|
129
|
+
git-ai-commit config --no-co-author # remove Co-authored-by trailer
|
|
111
130
|
```
|
|
112
131
|
|
|
113
132
|
The stored configuration works alongside environment variables—CLI flags override config values, which in turn override `.env` settings.
|
|
@@ -115,12 +134,14 @@ The stored configuration works alongside environment variables—CLI flags overr
|
|
|
115
134
|
Configuration is written to `~/.git-ai-commit/config.json` by default. Set `GIT_AI_COMMIT_CONFIG_PATH=/custom/path.json` to use a different location.
|
|
116
135
|
|
|
117
136
|
## Environment Variables
|
|
118
|
-
|
|
119
137
|
Set the following variables (e.g., in a local `.env` file) before using the CLI:
|
|
120
138
|
|
|
121
|
-
- `AI_MODE` controls which provider
|
|
122
|
-
-
|
|
123
|
-
-
|
|
139
|
+
- `AI_MODE` controls which provider to use:
|
|
140
|
+
- `custom` (default): uses `AI_*` vars first, falls back to `OPENAI_*`. Requests go through the OpenAI-compatible API.
|
|
141
|
+
- `openai`: prioritises `OPENAI_*` vars. Requests go through the OpenAI-compatible API.
|
|
142
|
+
- `gemini`: uses the Google Gemini native SDK (`@google/genai`) directly. Reads `GEMINI_API_KEY` (or `AI_API_KEY`). Default model: `gemini-2.0-flash`.
|
|
143
|
+
- Credentials: `AI_API_KEY`, `OPENAI_API_KEY`, or `GEMINI_API_KEY` (priority depends on the selected mode).
|
|
144
|
+
- Base URLs: `AI_BASE_URL` or `OPENAI_BASE_URL` (not used in `gemini` mode).
|
|
124
145
|
- Models: `AI_MODEL` or `OPENAI_MODEL` (priority matches the selected mode).
|
|
125
146
|
|
|
126
147
|
## Development Commands
|
package/dist/commands/ai.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SupportedLanguage } from './config';
|
|
1
|
+
import { SupportedLanguage, AIMode } from './config';
|
|
2
2
|
export type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high';
|
|
3
3
|
export interface AIServiceConfig {
|
|
4
4
|
apiKey: string;
|
|
@@ -8,6 +8,8 @@ export interface AIServiceConfig {
|
|
|
8
8
|
reasoningEffort?: ReasoningEffort;
|
|
9
9
|
language?: SupportedLanguage;
|
|
10
10
|
verbose?: boolean;
|
|
11
|
+
mode?: AIMode;
|
|
12
|
+
maxCompletionTokens?: number;
|
|
11
13
|
}
|
|
12
14
|
export interface CommitGenerationResult {
|
|
13
15
|
success: boolean;
|
|
@@ -26,11 +28,14 @@ export interface PullRequestGenerationResult {
|
|
|
26
28
|
}
|
|
27
29
|
export declare class AIService {
|
|
28
30
|
private openai;
|
|
31
|
+
private gemini;
|
|
32
|
+
private mode;
|
|
29
33
|
private model;
|
|
30
34
|
private fallbackModel?;
|
|
31
35
|
private reasoningEffort?;
|
|
32
36
|
private language;
|
|
33
37
|
private verbose;
|
|
38
|
+
private maxCompletionTokens?;
|
|
34
39
|
constructor(config: AIServiceConfig);
|
|
35
40
|
private debugLog;
|
|
36
41
|
private isRateLimitError;
|
|
@@ -40,6 +45,7 @@ export declare class AIService {
|
|
|
40
45
|
private removeTemperature;
|
|
41
46
|
private readonly spinnerFrames;
|
|
42
47
|
private formatElapsed;
|
|
48
|
+
private createGeminiStreamingCompletion;
|
|
43
49
|
private createStreamingCompletion;
|
|
44
50
|
/**
|
|
45
51
|
* Remove think/thinking tags and other XML-style tags from AI response
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,mBAAmB,CAAC,CAAS;gBAEzB,MAAM,EAAE,eAAe;IAqBnC,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,4BAA4B;IA8BpC,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsD;IAEpF,OAAO,CAAC,aAAa;YAMP,+BAA+B;YA8F/B,yBAAyB;IAsKvC;;OAEG;IACH,OAAO,CAAC,YAAY;IA6Bd,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoIhG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,EAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IA0DzB,0BAA0B,CAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,2BAA2B,CAAC;CA+CxC"}
|
package/dist/commands/ai.js
CHANGED
|
@@ -5,21 +5,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.AIService = void 0;
|
|
7
7
|
const openai_1 = __importDefault(require("openai"));
|
|
8
|
+
const genai_1 = require("@google/genai");
|
|
8
9
|
const commit_1 = require("../prompts/commit");
|
|
9
10
|
const tag_1 = require("../prompts/tag");
|
|
10
11
|
const pr_1 = require("../prompts/pr");
|
|
11
12
|
class AIService {
|
|
12
13
|
constructor(config) {
|
|
14
|
+
this.openai = null;
|
|
15
|
+
this.gemini = null;
|
|
13
16
|
this.spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
this.mode = config.mode || 'custom';
|
|
18
|
+
if (this.mode === 'gemini') {
|
|
19
|
+
this.gemini = new genai_1.GoogleGenAI({ apiKey: config.apiKey });
|
|
20
|
+
this.model = config.model || 'gemini-2.0-flash';
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.openai = new openai_1.default({
|
|
24
|
+
apiKey: config.apiKey,
|
|
25
|
+
baseURL: config.baseURL
|
|
26
|
+
});
|
|
27
|
+
this.model = config.model || 'zai-org/GLM-4.5-FP8';
|
|
28
|
+
}
|
|
19
29
|
this.fallbackModel = config.fallbackModel;
|
|
20
30
|
this.reasoningEffort = config.reasoningEffort;
|
|
21
31
|
this.language = config.language || 'ko';
|
|
22
32
|
this.verbose = config.verbose ?? true;
|
|
33
|
+
this.maxCompletionTokens = config.maxCompletionTokens;
|
|
23
34
|
}
|
|
24
35
|
debugLog(...args) {
|
|
25
36
|
if (this.verbose) {
|
|
@@ -85,7 +96,93 @@ class AIService {
|
|
|
85
96
|
return '0s';
|
|
86
97
|
return `${seconds}s`;
|
|
87
98
|
}
|
|
99
|
+
async createGeminiStreamingCompletion(request) {
|
|
100
|
+
if (!this.gemini)
|
|
101
|
+
throw new Error('Gemini client not initialized');
|
|
102
|
+
let waitingTimer = null;
|
|
103
|
+
const startTime = Date.now();
|
|
104
|
+
let frameIndex = 0;
|
|
105
|
+
try {
|
|
106
|
+
if (this.verbose) {
|
|
107
|
+
waitingTimer = setInterval(() => {
|
|
108
|
+
const frame = this.spinnerFrames[frameIndex++ % this.spinnerFrames.length];
|
|
109
|
+
const elapsed = this.formatElapsed(Date.now() - startTime);
|
|
110
|
+
process.stdout.write(`\r${frame} Waiting for response... (${elapsed})`);
|
|
111
|
+
}, 100);
|
|
112
|
+
}
|
|
113
|
+
const systemMessage = request.messages.find(m => m.role === 'system');
|
|
114
|
+
const userMessages = request.messages.filter(m => m.role !== 'system');
|
|
115
|
+
const contents = userMessages.map(m => ({
|
|
116
|
+
role: m.role === 'assistant' ? 'model' : 'user',
|
|
117
|
+
parts: [{ text: typeof m.content === 'string' ? m.content : '' }]
|
|
118
|
+
}));
|
|
119
|
+
const maxTokens = request.max_completion_tokens
|
|
120
|
+
?? request.max_tokens
|
|
121
|
+
?? 3000;
|
|
122
|
+
const stream = await this.gemini.models.generateContentStream({
|
|
123
|
+
model: this.model,
|
|
124
|
+
contents,
|
|
125
|
+
config: {
|
|
126
|
+
...(systemMessage ? { systemInstruction: typeof systemMessage.content === 'string' ? systemMessage.content : '' } : {}),
|
|
127
|
+
maxOutputTokens: maxTokens,
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
const contentChunks = [];
|
|
131
|
+
let chunkCount = 0;
|
|
132
|
+
let lastChunkUsage;
|
|
133
|
+
for await (const chunk of stream) {
|
|
134
|
+
if (chunk.usageMetadata) {
|
|
135
|
+
lastChunkUsage = chunk.usageMetadata;
|
|
136
|
+
}
|
|
137
|
+
const text = chunk.text;
|
|
138
|
+
if (text) {
|
|
139
|
+
contentChunks.push(text);
|
|
140
|
+
chunkCount++;
|
|
141
|
+
if (waitingTimer) {
|
|
142
|
+
clearInterval(waitingTimer);
|
|
143
|
+
waitingTimer = null;
|
|
144
|
+
}
|
|
145
|
+
if (this.verbose) {
|
|
146
|
+
const frame = this.spinnerFrames[frameIndex++ % this.spinnerFrames.length];
|
|
147
|
+
const elapsed = this.formatElapsed(Date.now() - startTime);
|
|
148
|
+
process.stdout.write(`\r${frame} Streaming... (${chunkCount} chunks, ${elapsed})`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (waitingTimer) {
|
|
153
|
+
clearInterval(waitingTimer);
|
|
154
|
+
waitingTimer = null;
|
|
155
|
+
}
|
|
156
|
+
if (this.verbose) {
|
|
157
|
+
const elapsed = this.formatElapsed(Date.now() - startTime);
|
|
158
|
+
if (lastChunkUsage) {
|
|
159
|
+
const prompt = lastChunkUsage.promptTokenCount ?? 0;
|
|
160
|
+
const response = lastChunkUsage.candidatesTokenCount ?? 0;
|
|
161
|
+
process.stdout.write(`\r✅ Complete (response: ${response}, prompt: ${prompt} tokens, ${elapsed})\n`);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
process.stdout.write(`\r✅ Complete (~${chunkCount} chunks, ${elapsed})\n`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return contentChunks.join('');
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (waitingTimer) {
|
|
171
|
+
clearInterval(waitingTimer);
|
|
172
|
+
waitingTimer = null;
|
|
173
|
+
}
|
|
174
|
+
if (this.verbose) {
|
|
175
|
+
process.stdout.write('\n');
|
|
176
|
+
}
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
88
180
|
async createStreamingCompletion(request, attempt = 0) {
|
|
181
|
+
if (this.mode === 'gemini') {
|
|
182
|
+
return this.createGeminiStreamingCompletion(request);
|
|
183
|
+
}
|
|
184
|
+
if (!this.openai)
|
|
185
|
+
throw new Error('OpenAI client not initialized');
|
|
89
186
|
let waitingTimer = null;
|
|
90
187
|
try {
|
|
91
188
|
const startTime = Date.now();
|
|
@@ -100,19 +197,27 @@ class AIService {
|
|
|
100
197
|
const streamParams = {
|
|
101
198
|
...request,
|
|
102
199
|
stream: true,
|
|
200
|
+
stream_options: { include_usage: true },
|
|
103
201
|
...(this.reasoningEffort ? { reasoning_effort: this.reasoningEffort } : {})
|
|
104
202
|
};
|
|
105
203
|
const stream = await this.openai.chat.completions.create(streamParams);
|
|
106
204
|
const contentChunks = [];
|
|
107
|
-
let
|
|
108
|
-
let
|
|
205
|
+
let reasoningChunks = 0;
|
|
206
|
+
let contentChunksCount = 0;
|
|
109
207
|
let phase = 'waiting';
|
|
208
|
+
let finalUsage = null;
|
|
110
209
|
for await (const chunk of stream) {
|
|
210
|
+
const chunkUsage = chunk.usage;
|
|
211
|
+
if (chunkUsage) {
|
|
212
|
+
finalUsage = chunkUsage;
|
|
213
|
+
}
|
|
111
214
|
const delta = chunk.choices[0]?.delta;
|
|
215
|
+
if (!delta)
|
|
216
|
+
continue;
|
|
112
217
|
const content = delta?.content;
|
|
113
218
|
const reasoning = delta?.reasoning_content;
|
|
114
219
|
if (reasoning) {
|
|
115
|
-
|
|
220
|
+
reasoningChunks++;
|
|
116
221
|
if (phase === 'waiting' && waitingTimer) {
|
|
117
222
|
clearInterval(waitingTimer);
|
|
118
223
|
waitingTimer = null;
|
|
@@ -121,12 +226,12 @@ class AIService {
|
|
|
121
226
|
if (this.verbose && phase === 'thinking') {
|
|
122
227
|
const frame = this.spinnerFrames[frameIndex++ % this.spinnerFrames.length];
|
|
123
228
|
const elapsed = this.formatElapsed(Date.now() - startTime);
|
|
124
|
-
process.stdout.write(`\r${frame} Thinking... (${
|
|
229
|
+
process.stdout.write(`\r${frame} Thinking... (${reasoningChunks} chunks, ${elapsed})`);
|
|
125
230
|
}
|
|
126
231
|
}
|
|
127
232
|
if (content) {
|
|
128
233
|
contentChunks.push(content);
|
|
129
|
-
|
|
234
|
+
contentChunksCount++;
|
|
130
235
|
if (phase !== 'content') {
|
|
131
236
|
if (waitingTimer) {
|
|
132
237
|
clearInterval(waitingTimer);
|
|
@@ -137,7 +242,7 @@ class AIService {
|
|
|
137
242
|
if (this.verbose) {
|
|
138
243
|
const frame = this.spinnerFrames[frameIndex++ % this.spinnerFrames.length];
|
|
139
244
|
const elapsed = this.formatElapsed(Date.now() - startTime);
|
|
140
|
-
process.stdout.write(`\r${frame} Streaming
|
|
245
|
+
process.stdout.write(`\r${frame} Streaming... (${contentChunksCount} chunks, ${elapsed})`);
|
|
141
246
|
}
|
|
142
247
|
}
|
|
143
248
|
}
|
|
@@ -146,12 +251,29 @@ class AIService {
|
|
|
146
251
|
waitingTimer = null;
|
|
147
252
|
}
|
|
148
253
|
if (this.verbose) {
|
|
149
|
-
const totalTokens = reasoningTokens + contentTokens;
|
|
150
254
|
const elapsed = this.formatElapsed(Date.now() - startTime);
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
255
|
+
if (finalUsage) {
|
|
256
|
+
const reasoningTokens = finalUsage.completion_tokens_details?.reasoning_tokens ?? 0;
|
|
257
|
+
const completionTokens = finalUsage.completion_tokens ?? 0;
|
|
258
|
+
const promptTokens = finalUsage.prompt_tokens ?? 0;
|
|
259
|
+
// Gemini: completion_tokens is response-only (separate from reasoning)
|
|
260
|
+
// OpenAI: completion_tokens includes reasoning
|
|
261
|
+
const responseTokens = reasoningTokens > 0 && completionTokens > reasoningTokens
|
|
262
|
+
? completionTokens - reasoningTokens
|
|
263
|
+
: completionTokens;
|
|
264
|
+
if (reasoningTokens > 0) {
|
|
265
|
+
process.stdout.write(`\r✅ Complete (thinking: ${reasoningTokens}, response: ${responseTokens}, prompt: ${promptTokens} tokens, ${elapsed})\n`);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
process.stdout.write(`\r✅ Complete (response: ${completionTokens}, prompt: ${promptTokens} tokens, ${elapsed})\n`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
const detail = reasoningChunks > 0
|
|
273
|
+
? `~${reasoningChunks + contentChunksCount} chunks (thinking: ~${reasoningChunks}, response: ~${contentChunksCount}), ${elapsed}`
|
|
274
|
+
: `~${contentChunksCount} chunks, ${elapsed}`;
|
|
275
|
+
process.stdout.write(`\r✅ Complete (${detail})\n`);
|
|
276
|
+
}
|
|
155
277
|
}
|
|
156
278
|
return contentChunks.join('');
|
|
157
279
|
}
|
|
@@ -215,7 +337,7 @@ class AIService {
|
|
|
215
337
|
try {
|
|
216
338
|
this.debugLog('Sending request to AI API...');
|
|
217
339
|
this.debugLog('Model:', this.model);
|
|
218
|
-
this.debugLog('Base URL:', this.openai
|
|
340
|
+
this.debugLog('Base URL:', this.openai?.baseURL ?? 'Gemini native');
|
|
219
341
|
const customInstructions = extraInstructions && extraInstructions.trim().length > 0
|
|
220
342
|
? `Git diff will be provided separately in the user message.\n\n## Additional User Instructions\n${extraInstructions.trim()}`
|
|
221
343
|
: 'Git diff will be provided separately in the user message.';
|
|
@@ -231,7 +353,7 @@ class AIService {
|
|
|
231
353
|
content: `Git diff:\n${diff}`
|
|
232
354
|
}
|
|
233
355
|
],
|
|
234
|
-
max_completion_tokens:
|
|
356
|
+
max_completion_tokens: this.maxCompletionTokens ?? 1000
|
|
235
357
|
});
|
|
236
358
|
let finalMessage = content.trim() || null;
|
|
237
359
|
if (!finalMessage) {
|
|
@@ -331,7 +453,7 @@ class AIService {
|
|
|
331
453
|
try {
|
|
332
454
|
this.debugLog('Sending request to AI API for tag notes...');
|
|
333
455
|
this.debugLog('Model:', this.model);
|
|
334
|
-
this.debugLog('Base URL:', this.openai
|
|
456
|
+
this.debugLog('Base URL:', this.openai?.baseURL ?? 'Gemini native');
|
|
335
457
|
const customInstructions = extraInstructions && extraInstructions.trim().length > 0
|
|
336
458
|
? `${extraInstructions.trim()}`
|
|
337
459
|
: '';
|
|
@@ -354,7 +476,7 @@ class AIService {
|
|
|
354
476
|
content: userContent
|
|
355
477
|
}
|
|
356
478
|
],
|
|
357
|
-
max_completion_tokens: 3000
|
|
479
|
+
max_completion_tokens: this.maxCompletionTokens ?? 3000
|
|
358
480
|
});
|
|
359
481
|
const finalNotes = content.trim() || null;
|
|
360
482
|
if (!finalNotes) {
|
|
@@ -381,7 +503,7 @@ class AIService {
|
|
|
381
503
|
try {
|
|
382
504
|
this.debugLog('Sending request to AI API for pull request message...');
|
|
383
505
|
this.debugLog('Model:', this.model);
|
|
384
|
-
this.debugLog('Base URL:', this.openai
|
|
506
|
+
this.debugLog('Base URL:', this.openai?.baseURL ?? 'Gemini native');
|
|
385
507
|
const content = await this.createStreamingCompletion({
|
|
386
508
|
model: this.model,
|
|
387
509
|
messages: [
|
|
@@ -394,7 +516,7 @@ class AIService {
|
|
|
394
516
|
content: `Git diff between ${baseBranch} and ${compareBranch}:\n${diff}`
|
|
395
517
|
}
|
|
396
518
|
],
|
|
397
|
-
max_completion_tokens: 4000
|
|
519
|
+
max_completion_tokens: this.maxCompletionTokens ?? 4000
|
|
398
520
|
});
|
|
399
521
|
const finalMessage = content.trim() || null;
|
|
400
522
|
if (!finalMessage) {
|
package/dist/commands/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/commands/ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;;
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;;IA2BzB,OAAO,CAAC,kBAAkB;YAUZ,gBAAgB;YAwEhB,YAAY;YA2LZ,aAAa;IAgB3B,UAAU,IAAI,OAAO;CAGtB"}
|
package/dist/commands/commit.js
CHANGED
|
@@ -26,6 +26,16 @@ class CommitCommand {
|
|
|
26
26
|
.option("--no-verify", "Skip pre-commit hooks")
|
|
27
27
|
.action(this.handleCommit.bind(this));
|
|
28
28
|
}
|
|
29
|
+
isCommandAvailable(command) {
|
|
30
|
+
const checker = process.platform === "win32" ? "where" : "which";
|
|
31
|
+
try {
|
|
32
|
+
(0, child_process_1.execFileSync)(checker, [command], { stdio: "ignore" });
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
29
39
|
async runPreCommitHook() {
|
|
30
40
|
// 1. Check for npm pre-commit script
|
|
31
41
|
const packageJsonPath = path_1.default.resolve(process.cwd(), "package.json");
|
|
@@ -65,42 +75,30 @@ class CommitCommand {
|
|
|
65
75
|
// 2. Check for .pre-commit-config.yaml (Python/General pre-commit)
|
|
66
76
|
const preCommitConfigPath = path_1.default.resolve(process.cwd(), ".pre-commit-config.yaml");
|
|
67
77
|
if (fs_1.default.existsSync(preCommitConfigPath)) {
|
|
78
|
+
if (!this.isCommandAvailable("pre-commit")) {
|
|
79
|
+
console.warn("⚠️ .pre-commit-config.yaml found but 'pre-commit' is not installed. Skipping hooks.");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
68
82
|
console.log("Found .pre-commit-config.yaml, running pre-commit hooks...");
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
shell: true,
|
|
74
|
-
});
|
|
75
|
-
child.on("close", (code) => {
|
|
76
|
-
if (code === 0) {
|
|
77
|
-
console.log("✅ pre-commit hooks passed");
|
|
78
|
-
resolve();
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.error(`❌ pre-commit hooks failed with code ${code}`);
|
|
82
|
-
reject(new Error(`pre-commit hooks failed with code ${code}`));
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
child.on("error", (err) => {
|
|
86
|
-
// If pre-commit is not installed/found, we might want to warn instead of fail?
|
|
87
|
-
// But usually 'error' event on spawn (with shell:true) is rare for command not found (it usually exits with 127).
|
|
88
|
-
// However, if it fails to spawn, we reject.
|
|
89
|
-
reject(err);
|
|
90
|
-
});
|
|
83
|
+
await new Promise((resolve, reject) => {
|
|
84
|
+
const child = (0, child_process_1.spawn)("pre-commit", ["run"], {
|
|
85
|
+
stdio: "inherit",
|
|
86
|
+
shell: true,
|
|
91
87
|
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
88
|
+
child.on("close", (code) => {
|
|
89
|
+
if (code === 0) {
|
|
90
|
+
console.log("✅ pre-commit hooks passed");
|
|
91
|
+
resolve();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.error(`❌ pre-commit hooks failed with code ${code}`);
|
|
95
|
+
reject(new Error(`pre-commit hooks failed with code ${code}`));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
child.on("error", (err) => {
|
|
99
|
+
reject(err);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
async handleCommit(options) {
|
|
@@ -135,6 +133,8 @@ class CommitCommand {
|
|
|
135
133
|
reasoningEffort: existingConfig.reasoningEffort,
|
|
136
134
|
language: existingConfig.language,
|
|
137
135
|
verbose: !messageOnly,
|
|
136
|
+
mode: existingConfig.mode,
|
|
137
|
+
maxCompletionTokens: existingConfig.maxCompletionTokens,
|
|
138
138
|
};
|
|
139
139
|
log("Getting staged changes...");
|
|
140
140
|
const diffResult = await git_1.GitService.getStagedDiff();
|
|
@@ -169,6 +169,9 @@ class CommitCommand {
|
|
|
169
169
|
console.error("Error: Failed to generate commit message");
|
|
170
170
|
process.exit(1);
|
|
171
171
|
}
|
|
172
|
+
if (existingConfig.coAuthor) {
|
|
173
|
+
aiResult.message = `${aiResult.message}\n\nCo-authored-by: ${existingConfig.coAuthor}`;
|
|
174
|
+
}
|
|
172
175
|
if (messageOnly) {
|
|
173
176
|
console.log(aiResult.message);
|
|
174
177
|
await log_1.LogService.append({
|