@dongowu/git-ai-cli 1.0.6 → 1.0.7
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 +129 -179
- package/dist/commands/hook.d.ts.map +1 -1
- package/dist/commands/hook.js +20 -33
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/msg.d.ts.map +1 -1
- package/dist/commands/msg.js +8 -11
- package/dist/commands/msg.js.map +1 -1
- package/dist/utils/ai.d.ts.map +1 -1
- package/dist/utils/ai.js +2 -0
- package/dist/utils/ai.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,50 +17,83 @@
|
|
|
17
17
|
|
|
18
18
|
<p align="center">
|
|
19
19
|
<a href="#-快速开始">快速开始</a> •
|
|
20
|
-
<a href="
|
|
20
|
+
<a href="#-使用方式">使用方式</a> •
|
|
21
21
|
<a href="#-支持的模型">支持的模型</a> •
|
|
22
22
|
<a href="#english">English</a>
|
|
23
23
|
</p>
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## 🚀 快速开始
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
📁 Staged files:
|
|
34
|
-
src/utils/ai.ts
|
|
35
|
-
src/commands/commit.ts
|
|
36
|
-
|
|
37
|
-
✨ Generated commit message:
|
|
30
|
+
# 1. 安装
|
|
31
|
+
npm install -g @dongowu/git-ai-cli
|
|
38
32
|
|
|
39
|
-
|
|
33
|
+
# 2. 配置 (选择 AI 服务商,输入 API Key)
|
|
34
|
+
git-ai config
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
🔄 Regenerate
|
|
45
|
-
❌ Cancel
|
|
36
|
+
# 3. 使用
|
|
37
|
+
git add .
|
|
38
|
+
git-ai
|
|
46
39
|
```
|
|
47
40
|
|
|
48
41
|
---
|
|
49
42
|
|
|
50
|
-
##
|
|
43
|
+
## 📖 使用方式
|
|
44
|
+
|
|
45
|
+
### 方式一:手动调用(推荐新手)
|
|
51
46
|
|
|
52
47
|
```bash
|
|
53
|
-
#
|
|
54
|
-
|
|
48
|
+
git add . # 暂存更改
|
|
49
|
+
git-ai # 生成消息 → 选择操作 → 提交
|
|
50
|
+
```
|
|
55
51
|
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
**交互选项:**
|
|
53
|
+
- 🚀 Commit - 使用生成的消息提交
|
|
54
|
+
- 📝 Edit - 编辑后提交
|
|
55
|
+
- 🔄 Regenerate - 重新生成
|
|
56
|
+
- ❌ Cancel - 取消
|
|
57
|
+
|
|
58
|
+
### 方式二:Git Hook 集成(推荐老手)
|
|
59
|
+
|
|
60
|
+
安装后,`git commit` 会自动生成消息,无需手动运行 `git-ai`:
|
|
58
61
|
|
|
59
|
-
|
|
62
|
+
```bash
|
|
63
|
+
# 一次性安装
|
|
64
|
+
git-ai hook install
|
|
65
|
+
|
|
66
|
+
# 之后正常使用 git
|
|
60
67
|
git add .
|
|
61
|
-
git
|
|
68
|
+
git commit # 自动生成消息,打开编辑器确认
|
|
62
69
|
```
|
|
63
70
|
|
|
71
|
+
**跳过 Hook:**
|
|
72
|
+
```bash
|
|
73
|
+
git commit -m "手动消息" # 已有消息时自动跳过
|
|
74
|
+
GIT_AI_DISABLED=1 git commit # 临时禁用
|
|
75
|
+
git-ai hook remove # 永久移除
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🛠 命令速查
|
|
81
|
+
|
|
82
|
+
| 命令 | 说明 | 使用场景 |
|
|
83
|
+
|------|------|----------|
|
|
84
|
+
| `git-ai` | 交互式生成并提交 | 日常使用 |
|
|
85
|
+
| `git-ai -y` | 跳过确认直接提交 | CI/CD、快速提交 |
|
|
86
|
+
| `git-ai -n 3` | 生成 3 条候选消息 | 选择最佳消息 |
|
|
87
|
+
| `git-ai msg` | 仅输出消息到 stdout | 脚本集成 |
|
|
88
|
+
| `git-ai msg --json` | JSON 格式输出 | 程序化处理 |
|
|
89
|
+
| `git-ai msg --quiet` | 静默模式(无 spinner) | Hook 调用 |
|
|
90
|
+
| `git-ai config` | 配置 AI 服务商 | 初始化/切换模型 |
|
|
91
|
+
| `git-ai hook install` | 安装 Git Hook | 集成到 git commit |
|
|
92
|
+
| `git-ai hook status` | 查看 Hook 状态 | 检查是否已安装 |
|
|
93
|
+
| `git-ai hook remove` | 移除 Hook | 禁用自动生成 |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
64
97
|
## ✨ 特性
|
|
65
98
|
|
|
66
99
|
| 特性 | 描述 |
|
|
@@ -68,12 +101,13 @@ git-ai
|
|
|
68
101
|
| 🤖 **多模型支持** | DeepSeek、通义千问、智谱GLM、Moonshot、OpenAI 等 10+ 模型 |
|
|
69
102
|
| 🏠 **本地部署** | 支持 Ollama、LM Studio,数据不出本机 |
|
|
70
103
|
| 🔍 **智能 Diff** | 自动过滤 lock 文件,Token 优化截断 |
|
|
71
|
-
|
|
|
104
|
+
| 🪝 **Git Hook** | 无缝集成到 git commit 流程 |
|
|
72
105
|
| ⚡ **一键提交** | `-y` 参数跳过确认,CI/CD 友好 |
|
|
73
106
|
| 🎯 **多条候选** | `-n 3` 生成多条消息供选择 |
|
|
74
|
-
| 🪝 **Git Hook** | 自动集成到 git commit 流程 |
|
|
75
107
|
| 📝 **规范化** | 遵循 Conventional Commits 标准 |
|
|
76
|
-
|
|
|
108
|
+
| 🔄 **自动重试** | 30 秒超时 + 2 次自动重试 |
|
|
109
|
+
|
|
110
|
+
---
|
|
77
111
|
|
|
78
112
|
## 🤖 支持的模型
|
|
79
113
|
|
|
@@ -81,13 +115,13 @@ git-ai
|
|
|
81
115
|
|
|
82
116
|
| 服务商 | 默认模型 | 获取 API Key |
|
|
83
117
|
|--------|----------|--------------|
|
|
84
|
-
| **DeepSeek**
|
|
118
|
+
| **DeepSeek** | `deepseek-chat` | [platform.deepseek.com](https://platform.deepseek.com/) |
|
|
85
119
|
| **Qwen** (通义千问) | `qwen-turbo` | [dashscope.console.aliyun.com](https://dashscope.console.aliyun.com/) |
|
|
86
120
|
| **Zhipu** (智谱 GLM) | `glm-4-flash` | [open.bigmodel.cn](https://open.bigmodel.cn/) |
|
|
87
121
|
| **Moonshot** (月之暗面) | `moonshot-v1-8k` | [platform.moonshot.cn](https://platform.moonshot.cn/) |
|
|
88
122
|
| **Baichuan** (百川) | `Baichuan4` | [platform.baichuan-ai.com](https://platform.baichuan-ai.com/) |
|
|
89
123
|
| **Yi** (零一万物) | `yi-lightning` | [platform.lingyiwanwu.com](https://platform.lingyiwanwu.com/) |
|
|
90
|
-
| **SiliconFlow**
|
|
124
|
+
| **SiliconFlow** | `Qwen2.5-7B` | [cloud.siliconflow.cn](https://cloud.siliconflow.cn/) |
|
|
91
125
|
|
|
92
126
|
### 国际大模型
|
|
93
127
|
|
|
@@ -102,9 +136,9 @@ git-ai
|
|
|
102
136
|
| **Ollama** | `qwen2.5:7b` | [ollama.ai](https://ollama.ai/) |
|
|
103
137
|
| **LM Studio** | `local-model` | [lmstudio.ai](https://lmstudio.ai/) |
|
|
104
138
|
|
|
105
|
-
|
|
139
|
+
---
|
|
106
140
|
|
|
107
|
-
|
|
141
|
+
## ⚙️ 配置
|
|
108
142
|
|
|
109
143
|
```bash
|
|
110
144
|
git-ai config
|
|
@@ -117,7 +151,7 @@ git-ai config
|
|
|
117
151
|
4. 选择输出语言(中文/英文)
|
|
118
152
|
5. 可选:自定义 System Prompt
|
|
119
153
|
|
|
120
|
-
|
|
154
|
+
**配置文件位置:**
|
|
121
155
|
|
|
122
156
|
| 系统 | 路径 |
|
|
123
157
|
|------|------|
|
|
@@ -125,108 +159,59 @@ git-ai config
|
|
|
125
159
|
| Linux | `~/.config/git-ai-cli-nodejs/config.json` |
|
|
126
160
|
| Windows | `%APPDATA%/git-ai-cli-nodejs/Config/config.json` |
|
|
127
161
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### 命令结构
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
git-ai # 交互式生成并提交(默认)
|
|
134
|
-
git-ai commit # 同上,显式提交命令
|
|
135
|
-
git-ai msg # 仅生成消息,输出到 stdout(供脚本/Hook 使用)
|
|
136
|
-
git-ai config # 配置 AI 服务商
|
|
137
|
-
git-ai hook # 管理 Git Hook
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### 命令行选项
|
|
162
|
+
---
|
|
141
163
|
|
|
142
|
-
|
|
143
|
-
# 一键提交(跳过确认,CI/CD 友好)
|
|
144
|
-
git-ai -y
|
|
145
|
-
git-ai --yes
|
|
164
|
+
## 🪝 Git Hook 详解
|
|
146
165
|
|
|
147
|
-
|
|
148
|
-
git-ai -n 3
|
|
149
|
-
git-ai --num 3
|
|
166
|
+
### 工作原理
|
|
150
167
|
|
|
151
|
-
# 组合使用
|
|
152
|
-
git-ai -y -n 3 # 生成 3 条,自动选择第一条提交
|
|
153
168
|
```
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
# JSON 格式输出(含元数据)
|
|
164
|
-
git-ai msg --json
|
|
165
|
-
|
|
166
|
-
# 静默模式(无 spinner)
|
|
167
|
-
git-ai msg --quiet
|
|
168
|
-
|
|
169
|
-
# 生成多条
|
|
170
|
-
git-ai msg -n 3
|
|
169
|
+
git commit (无 -m)
|
|
170
|
+
↓
|
|
171
|
+
prepare-commit-msg hook 触发
|
|
172
|
+
↓
|
|
173
|
+
git-ai msg --quiet 生成消息
|
|
174
|
+
↓
|
|
175
|
+
写入 COMMIT_MSG 文件
|
|
176
|
+
↓
|
|
177
|
+
打开编辑器确认
|
|
171
178
|
```
|
|
172
179
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
"ignoredFiles": ["package-lock.json"]
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
```
|
|
180
|
+
### Hook 特性
|
|
181
|
+
|
|
182
|
+
| 特性 | 说明 |
|
|
183
|
+
|------|------|
|
|
184
|
+
| **链式执行** | 已有 hook 会被保留并在 git-ai 之后执行 |
|
|
185
|
+
| **递归保护** | `GIT_AI_RUNNING` 环境变量防止无限循环 |
|
|
186
|
+
| **智能跳过** | 使用 `-m`、merge、amend 时自动跳过 |
|
|
187
|
+
| **手动禁用** | `GIT_AI_DISABLED=1 git commit` |
|
|
185
188
|
|
|
186
|
-
|
|
189
|
+
> ⚠️ **注意**: `git commit --no-verify` 不会跳过 prepare-commit-msg hook
|
|
187
190
|
|
|
188
|
-
|
|
191
|
+
### 脚本集成
|
|
189
192
|
|
|
190
193
|
```bash
|
|
191
|
-
#
|
|
192
|
-
git-ai
|
|
194
|
+
# 获取消息用于脚本
|
|
195
|
+
MSG=$(git-ai msg --quiet)
|
|
196
|
+
git commit -m "$MSG"
|
|
193
197
|
|
|
194
|
-
#
|
|
195
|
-
git-ai
|
|
198
|
+
# JSON 格式(含元数据)
|
|
199
|
+
git-ai msg --json | jq '.message'
|
|
196
200
|
|
|
197
|
-
#
|
|
198
|
-
git-ai
|
|
201
|
+
# 多条消息(用 ---END--- 分隔)
|
|
202
|
+
git-ai msg -n 3 --quiet
|
|
199
203
|
```
|
|
200
204
|
|
|
201
|
-
|
|
202
|
-
- **链式执行**:如果已有 `prepare-commit-msg` hook,git-ai 会作为 wrapper 执行,原 hook 仍会运行
|
|
203
|
-
- **递归保护**:通过环境变量防止 hook 递归调用
|
|
204
|
-
- **智能跳过**:使用 `-m` 参数或 merge/amend 时自动跳过
|
|
205
|
-
|
|
206
|
-
安装后,直接运行 `git commit`(不带 `-m`)会自动生成 commit message:
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
git add .
|
|
210
|
-
git commit # 自动调用 git-ai msg 生成消息
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
> 💡 跳过 hook: `git commit --no-verify`
|
|
205
|
+
---
|
|
214
206
|
|
|
215
|
-
|
|
207
|
+
## 🔧 自动忽略的文件
|
|
216
208
|
|
|
217
|
-
以下文件会自动从 Diff
|
|
209
|
+
以下文件会自动从 Diff 分析中排除,节省 Token:
|
|
218
210
|
|
|
219
211
|
- **Lock 文件**: `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`, `bun.lockb`
|
|
220
212
|
- **压缩文件**: `*.min.js`, `*.min.css`, `*.map`
|
|
221
213
|
- **构建产物**: `dist/`, `build/`, `.next/`
|
|
222
214
|
|
|
223
|
-
### 自定义 Prompt
|
|
224
|
-
|
|
225
|
-
在配置时选择「自定义 System Prompt」,可以:
|
|
226
|
-
- 强制添加 Emoji 前缀
|
|
227
|
-
- 使用特定语言
|
|
228
|
-
- 遵循团队规范
|
|
229
|
-
|
|
230
215
|
---
|
|
231
216
|
|
|
232
217
|
## English
|
|
@@ -240,88 +225,53 @@ npm install -g @dongowu/git-ai-cli
|
|
|
240
225
|
### Quick Start
|
|
241
226
|
|
|
242
227
|
```bash
|
|
243
|
-
# Configure AI provider
|
|
244
|
-
git-ai config
|
|
245
|
-
|
|
246
|
-
# Generate commit message
|
|
228
|
+
git-ai config # Configure AI provider
|
|
247
229
|
git add .
|
|
248
|
-
git-ai
|
|
230
|
+
git-ai # Generate and commit
|
|
249
231
|
```
|
|
250
232
|
|
|
251
|
-
###
|
|
252
|
-
|
|
253
|
-
- **Multi-model**: DeepSeek, Qwen, Zhipu GLM, Moonshot, OpenAI, and 10+ more
|
|
254
|
-
- **Local deployment**: Ollama, LM Studio - keep your data private
|
|
255
|
-
- **Smart diff**: Auto-filter lock files, token optimization
|
|
256
|
-
- **Interactive**: Commit / Edit / Regenerate / Cancel
|
|
257
|
-
- **One-click commit**: `-y` flag for CI/CD pipelines
|
|
258
|
-
- **Multiple choices**: `-n 3` to generate multiple options
|
|
259
|
-
- **Git Hook**: Auto-integrate with `git commit`
|
|
260
|
-
- **Conventional Commits**: Standard commit message format
|
|
261
|
-
|
|
262
|
-
### Commands
|
|
233
|
+
### Two Ways to Use
|
|
263
234
|
|
|
235
|
+
**Manual Mode:**
|
|
264
236
|
```bash
|
|
265
|
-
git
|
|
266
|
-
git-ai
|
|
267
|
-
git-ai
|
|
268
|
-
git-ai
|
|
269
|
-
git-ai hook # Manage Git hooks
|
|
237
|
+
git add .
|
|
238
|
+
git-ai # Interactive: generate → choose action → commit
|
|
239
|
+
git-ai -y # Auto commit (skip confirmation)
|
|
240
|
+
git-ai -n 3 # Generate 3 options to choose from
|
|
270
241
|
```
|
|
271
242
|
|
|
272
|
-
|
|
273
|
-
|
|
243
|
+
**Git Hook Mode:**
|
|
274
244
|
```bash
|
|
275
|
-
|
|
276
|
-
git-ai -y
|
|
277
|
-
|
|
278
|
-
# Generate multiple choices
|
|
279
|
-
git-ai -n 3
|
|
280
|
-
|
|
281
|
-
# Script-friendly message generation
|
|
282
|
-
git-ai msg # Plain text output
|
|
283
|
-
git-ai msg --json # JSON output with metadata
|
|
284
|
-
git-ai msg --quiet # No spinner
|
|
245
|
+
git-ai hook install # One-time setup
|
|
285
246
|
|
|
286
|
-
#
|
|
287
|
-
git
|
|
288
|
-
git-
|
|
289
|
-
git-ai hook status # Check status
|
|
247
|
+
# Then just use git normally
|
|
248
|
+
git add .
|
|
249
|
+
git commit # Auto-generates message, opens editor
|
|
290
250
|
```
|
|
291
251
|
|
|
292
|
-
###
|
|
252
|
+
### Command Reference
|
|
293
253
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
-
|
|
254
|
+
| Command | Description |
|
|
255
|
+
|---------|-------------|
|
|
256
|
+
| `git-ai` | Interactive commit |
|
|
257
|
+
| `git-ai -y` | Skip confirmation |
|
|
258
|
+
| `git-ai -n 3` | Generate 3 options |
|
|
259
|
+
| `git-ai msg` | Output message only (stdout) |
|
|
260
|
+
| `git-ai msg --json` | JSON output with metadata |
|
|
261
|
+
| `git-ai msg --quiet` | Silent mode (no spinner) |
|
|
262
|
+
| `git-ai config` | Configure AI provider |
|
|
263
|
+
| `git-ai hook install` | Install Git hook |
|
|
264
|
+
| `git-ai hook remove` | Remove Git hook |
|
|
297
265
|
|
|
298
|
-
###
|
|
266
|
+
### Skip Hook
|
|
299
267
|
|
|
268
|
+
```bash
|
|
269
|
+
git commit -m "message" # Auto-skipped when message provided
|
|
270
|
+
GIT_AI_DISABLED=1 git commit # Temporarily disable
|
|
271
|
+
git-ai hook remove # Permanently remove
|
|
300
272
|
```
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
└────────┬────────┘
|
|
304
|
-
▼
|
|
305
|
-
┌─────────────────┐
|
|
306
|
-
│ git-ai │
|
|
307
|
-
└────────┬────────┘
|
|
308
|
-
▼
|
|
309
|
-
┌─────────────────┐
|
|
310
|
-
│ Analyze Diff │
|
|
311
|
-
└────────┬────────┘
|
|
312
|
-
▼
|
|
313
|
-
┌─────────────────┐
|
|
314
|
-
│ AI Generate │
|
|
315
|
-
└────────┬────────┘
|
|
316
|
-
▼
|
|
317
|
-
┌─────────────────────────────┐
|
|
318
|
-
│ Choose Action: │
|
|
319
|
-
│ • Commit │
|
|
320
|
-
│ • Edit │
|
|
321
|
-
│ • Regenerate │
|
|
322
|
-
│ • Cancel │
|
|
323
|
-
└─────────────────────────────┘
|
|
324
|
-
```
|
|
273
|
+
|
|
274
|
+
> ⚠️ Note: `--no-verify` does NOT skip prepare-commit-msg hooks
|
|
325
275
|
|
|
326
276
|
---
|
|
327
277
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AA6JA,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3D"}
|
package/dist/commands/hook.js
CHANGED
|
@@ -9,16 +9,21 @@ const HOOK_END_MARKER = '# git-ai-hook-end';
|
|
|
9
9
|
const HOOK_SCRIPT = `#!/bin/sh
|
|
10
10
|
${HOOK_MARKER}
|
|
11
11
|
# git-ai hook - auto-generate commit message
|
|
12
|
-
# To disable: git commit
|
|
12
|
+
# To disable: GIT_AI_DISABLED=1 git commit
|
|
13
13
|
|
|
14
14
|
COMMIT_MSG_FILE="$1"
|
|
15
15
|
COMMIT_SOURCE="$2"
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# Skip if disabled
|
|
18
|
+
if [ "$GIT_AI_DISABLED" = "1" ]; then
|
|
19
|
+
exit 0
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Recursion guard - skip if git-ai is already running
|
|
23
|
+
# (e.g., when git-ai commit calls git commit internally)
|
|
18
24
|
if [ "$GIT_AI_RUNNING" = "1" ]; then
|
|
19
25
|
exit 0
|
|
20
26
|
fi
|
|
21
|
-
export GIT_AI_RUNNING=1
|
|
22
27
|
|
|
23
28
|
# Only run for regular commits (not merge, squash, amend, etc.)
|
|
24
29
|
if [ -n "$COMMIT_SOURCE" ]; then
|
|
@@ -55,25 +60,30 @@ ${HOOK_END_MARKER}
|
|
|
55
60
|
const WRAPPER_TEMPLATE = `#!/bin/sh
|
|
56
61
|
${HOOK_MARKER}
|
|
57
62
|
# git-ai hook wrapper - chains with existing hook
|
|
58
|
-
# To disable: git commit
|
|
63
|
+
# To disable: GIT_AI_DISABLED=1 git commit
|
|
59
64
|
|
|
60
65
|
COMMIT_MSG_FILE="$1"
|
|
61
66
|
COMMIT_SOURCE="$2"
|
|
62
67
|
SHA1="$3"
|
|
63
68
|
|
|
64
|
-
#
|
|
69
|
+
# Skip if disabled
|
|
70
|
+
if [ "$GIT_AI_DISABLED" = "1" ]; then
|
|
71
|
+
if [ -x "__ORIGINAL_HOOK__" ]; then
|
|
72
|
+
"__ORIGINAL_HOOK__" "$COMMIT_MSG_FILE" "$COMMIT_SOURCE" "$SHA1"
|
|
73
|
+
fi
|
|
74
|
+
exit $?
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# Recursion guard - skip if git-ai is already running
|
|
65
78
|
if [ "$GIT_AI_RUNNING" = "1" ]; then
|
|
66
|
-
# Still call original hook if exists
|
|
67
79
|
if [ -x "__ORIGINAL_HOOK__" ]; then
|
|
68
80
|
"__ORIGINAL_HOOK__" "$COMMIT_MSG_FILE" "$COMMIT_SOURCE" "$SHA1"
|
|
69
81
|
fi
|
|
70
82
|
exit $?
|
|
71
83
|
fi
|
|
72
|
-
export GIT_AI_RUNNING=1
|
|
73
84
|
|
|
74
85
|
# Only run for regular commits
|
|
75
86
|
if [ -n "$COMMIT_SOURCE" ]; then
|
|
76
|
-
# Still call original hook
|
|
77
87
|
if [ -x "__ORIGINAL_HOOK__" ]; then
|
|
78
88
|
"__ORIGINAL_HOOK__" "$COMMIT_MSG_FILE" "$COMMIT_SOURCE" "$SHA1"
|
|
79
89
|
fi
|
|
@@ -84,7 +94,6 @@ fi
|
|
|
84
94
|
if [ -s "$COMMIT_MSG_FILE" ]; then
|
|
85
95
|
EXISTING_MSG=$(grep -v "^#" "$COMMIT_MSG_FILE" | grep -v "^$" | head -1)
|
|
86
96
|
if [ -n "$EXISTING_MSG" ]; then
|
|
87
|
-
# Still call original hook
|
|
88
97
|
if [ -x "__ORIGINAL_HOOK__" ]; then
|
|
89
98
|
"__ORIGINAL_HOOK__" "$COMMIT_MSG_FILE" "$COMMIT_SOURCE" "$SHA1"
|
|
90
99
|
fi
|
|
@@ -138,30 +147,8 @@ async function isInGitRepo() {
|
|
|
138
147
|
}
|
|
139
148
|
}
|
|
140
149
|
function isGitAiHook(content) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
function hasOtherHookContent(content) {
|
|
144
|
-
// Remove git-ai hook section and check if there's other content
|
|
145
|
-
const lines = content.split('\n');
|
|
146
|
-
let inGitAiSection = false;
|
|
147
|
-
const otherLines = [];
|
|
148
|
-
for (const line of lines) {
|
|
149
|
-
if (line.includes(HOOK_MARKER)) {
|
|
150
|
-
inGitAiSection = true;
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
if (line.includes(HOOK_END_MARKER)) {
|
|
154
|
-
inGitAiSection = false;
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
if (!inGitAiSection) {
|
|
158
|
-
// Skip shebang and empty lines
|
|
159
|
-
if (!line.startsWith('#!') && line.trim() !== '') {
|
|
160
|
-
otherLines.push(line);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
return otherLines.some(line => !line.startsWith('#') && line.trim() !== '');
|
|
150
|
+
// Only match our specific marker to avoid false positives
|
|
151
|
+
return content.includes(HOOK_MARKER);
|
|
165
152
|
}
|
|
166
153
|
export async function runHook(action) {
|
|
167
154
|
if (!['install', 'remove', 'status'].includes(action)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,SAAS,GAAG,oBAAoB,CAAC;AACvC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAC1C,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,mCAAmC;AACnC,MAAM,WAAW,GAAG;EAClB,WAAW
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg.d.ts","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH;AAYD,wBAAsB,MAAM,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"msg.d.ts","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH;AAYD,wBAAsB,MAAM,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FpE"}
|
package/dist/commands/msg.js
CHANGED
|
@@ -15,15 +15,6 @@ function exitWithError(message, options) {
|
|
|
15
15
|
}
|
|
16
16
|
export async function runMsg(options = {}) {
|
|
17
17
|
const { json = false, quiet = false, num = 1 } = options;
|
|
18
|
-
// Check for recursion guard
|
|
19
|
-
if (process.env.GIT_AI_RUNNING === '1') {
|
|
20
|
-
if (json) {
|
|
21
|
-
console.log(JSON.stringify({ success: false, error: 'Recursion detected' }));
|
|
22
|
-
}
|
|
23
|
-
process.exit(0);
|
|
24
|
-
}
|
|
25
|
-
// Set recursion guard
|
|
26
|
-
process.env.GIT_AI_RUNNING = '1';
|
|
27
18
|
// Environment checks
|
|
28
19
|
if (!(await isGitInstalled())) {
|
|
29
20
|
exitWithError('Git is not installed.', options);
|
|
@@ -71,8 +62,14 @@ export async function runMsg(options = {}) {
|
|
|
71
62
|
console.log(JSON.stringify(result, null, 2));
|
|
72
63
|
}
|
|
73
64
|
else {
|
|
74
|
-
// Plain output:
|
|
75
|
-
|
|
65
|
+
// Plain output: use delimiter for multi-line message safety
|
|
66
|
+
// Each message separated by ---END---
|
|
67
|
+
unique.forEach((msg, i) => {
|
|
68
|
+
console.log(msg);
|
|
69
|
+
if (i < unique.length - 1) {
|
|
70
|
+
console.log('---END---');
|
|
71
|
+
}
|
|
72
|
+
});
|
|
76
73
|
}
|
|
77
74
|
}
|
|
78
75
|
else {
|
package/dist/commands/msg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg.js","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AAoBxB,SAAS,aAAa,CAAC,OAAe,EAAE,OAAmB;IACzD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,MAAM,GAAc,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAsB,EAAE;IACnD,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEzD,
|
|
1
|
+
{"version":3,"file":"msg.js","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/utils/ai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8B5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/utils/ai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8B5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAOvD;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,4BAA4B,EACnC,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
|
package/dist/utils/ai.js
CHANGED
|
@@ -29,6 +29,8 @@ export function createAIClient(config) {
|
|
|
29
29
|
return new OpenAI({
|
|
30
30
|
apiKey: config.apiKey || 'ollama',
|
|
31
31
|
baseURL: config.baseUrl,
|
|
32
|
+
timeout: 30000, // 30 second timeout
|
|
33
|
+
maxRetries: 2, // Built-in retry support
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
export async function generateCommitMessage(client, input, config) {
|
package/dist/utils/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/utils/ai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,wBAAwB,GAAG;;;;;;;;;;;;8CAYa,CAAC;AAE/C,MAAM,wBAAwB,GAAG;;;;;;;;;;;;6BAYJ,CAAC;AAE9B,MAAM,UAAU,cAAc,CAAC,MAAgB;IAC7C,OAAO,IAAI,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/utils/ai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,wBAAwB,GAAG;;;;;;;;;;;;8CAYa,CAAC;AAE/C,MAAM,wBAAwB,GAAG;;;;;;;;;;;;6BAYJ,CAAC;AAE9B,MAAM,UAAU,cAAc,CAAC,MAAgB;IAC7C,OAAO,IAAI,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,KAAK,EAAE,oBAAoB;QACpC,UAAU,EAAE,CAAC,EAAG,yBAAyB;KAC1C,CAAC,CAAC;AACL,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,KAAmC,EACnC,MAAgB;IAEhB,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY;QACnB,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IAEjF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI;YACjB,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,sDAAsD,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CACR,IAAI;YACF,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,kDAAkD,CACvD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,OAAO,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;SAC9C;QACD,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,GAAG;KAChB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|