@ksw8954/git-ai-commit 1.1.8 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +31 -5
- package/CHANGELOG.md +16 -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 +108 -11
- 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 +9 -3
- 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 +128 -13
- 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 +10 -4
- package/src/index.ts +3 -0
- package/src/schema/config.schema.json +72 -0
|
@@ -32,14 +32,14 @@ _git_ai_commit() {
|
|
|
32
32
|
local cur prev words cword
|
|
33
33
|
_init_completion || return
|
|
34
34
|
|
|
35
|
-
local commands="commit config pr tag history completion"
|
|
35
|
+
local commands="commit config pr tag history completion hook"
|
|
36
36
|
|
|
37
37
|
# Global options
|
|
38
38
|
local global_opts="-v --version -h --help"
|
|
39
39
|
|
|
40
40
|
# Command-specific options
|
|
41
41
|
local commit_opts="-k --api-key -b --base-url --model -m --message-only -p --push --prompt --no-verify"
|
|
42
|
-
local config_opts="-s --show -l --language --auto-push --no-auto-push -k --api-key -b --base-url -m --model --fallback-model --reasoning-effort --mode"
|
|
42
|
+
local config_opts="-s --show -l --language --auto-push --no-auto-push -k --api-key -b --base-url -m --model --fallback-model --reasoning-effort --mode --co-author --no-co-author"
|
|
43
43
|
local pr_opts="--base --compare -k --api-key -b --base-url --model"
|
|
44
44
|
local tag_opts="-k --api-key --base-url -m --model --message -t --base-tag --prompt"
|
|
45
45
|
local history_opts="-l --limit --json --clear"
|
|
@@ -70,10 +70,10 @@ _git_ai_commit() {
|
|
|
70
70
|
return
|
|
71
71
|
;;
|
|
72
72
|
--mode)
|
|
73
|
-
COMPREPLY=( \$(compgen -W "custom openai" -- "\${cur}") )
|
|
73
|
+
COMPREPLY=( \$(compgen -W "custom openai gemini" -- "\${cur}") )
|
|
74
74
|
return
|
|
75
75
|
;;
|
|
76
|
-
-k|--api-key|-b|--base-url|-m|--model)
|
|
76
|
+
-k|--api-key|-b|--base-url|-m|--model|--co-author)
|
|
77
77
|
return
|
|
78
78
|
;;
|
|
79
79
|
esac
|
|
@@ -118,6 +118,9 @@ _git_ai_commit() {
|
|
|
118
118
|
completion)
|
|
119
119
|
COMPREPLY=( \$(compgen -W "bash zsh" -- "\${cur}") )
|
|
120
120
|
;;
|
|
121
|
+
hook)
|
|
122
|
+
COMPREPLY=( \$(compgen -W "install uninstall status" -- "\${cur}") )
|
|
123
|
+
;;
|
|
121
124
|
esac
|
|
122
125
|
}
|
|
123
126
|
|
|
@@ -155,6 +158,7 @@ _git-ai-commit() {
|
|
|
155
158
|
'tag:Create an annotated git tag with AI-generated notes'
|
|
156
159
|
'history:Manage git-ai-commit command history'
|
|
157
160
|
'completion:Generate shell completion scripts'
|
|
161
|
+
'hook:Manage prepare-commit-msg git hook'
|
|
158
162
|
)
|
|
159
163
|
_describe -t commands 'git-ai-commit commands' commands
|
|
160
164
|
;;
|
|
@@ -188,7 +192,9 @@ _git-ai-commit() {
|
|
|
188
192
|
'--base-url[Persist API base URL]:url:' \\
|
|
189
193
|
'-m[Persist default AI model]:model:' \\
|
|
190
194
|
'--model[Persist default AI model]:model:' \\
|
|
191
|
-
'--mode[Persist AI mode]:mode:(custom openai)'
|
|
195
|
+
'--mode[Persist AI mode]:mode:(custom openai gemini)' \\
|
|
196
|
+
'--co-author[Set Co-authored-by trailer for commits]:author:' \\
|
|
197
|
+
'--no-co-author[Remove Co-authored-by trailer]'
|
|
192
198
|
;;
|
|
193
199
|
pr)
|
|
194
200
|
_arguments \\
|
|
@@ -234,6 +240,10 @@ _git-ai-commit() {
|
|
|
234
240
|
_arguments \\
|
|
235
241
|
'1:shell:(bash zsh)'
|
|
236
242
|
;;
|
|
243
|
+
hook)
|
|
244
|
+
_arguments \\
|
|
245
|
+
'1:action:(install uninstall status)'
|
|
246
|
+
;;
|
|
237
247
|
esac
|
|
238
248
|
;;
|
|
239
249
|
esac
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,MAAa,iBAAiB;IAG5B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAO,CAAC,YAAY,CAAC;aACrC,WAAW,CAAC,mCAAmC,CAAC;aAChD,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;aAC/C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9C,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,OAAO
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,MAAa,iBAAiB;IAG5B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAO,CAAC,YAAY,CAAC;aACrC,WAAW,CAAC,mCAAmC,CAAC;aAChD,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;aAC/C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAE9C,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGV,CAAC;IACA,CAAC;IAEO,qBAAqB;QAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwHV,CAAC;IACA,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAhQD,8CAgQC"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
export type SupportedLanguage = 'ko' | 'en';
|
|
2
2
|
export type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high';
|
|
3
|
+
export type AIMode = 'custom' | 'openai' | 'gemini';
|
|
3
4
|
export interface EnvironmentConfig {
|
|
4
5
|
apiKey?: string;
|
|
5
6
|
baseURL?: string;
|
|
6
7
|
model?: string;
|
|
7
8
|
fallbackModel?: string;
|
|
8
9
|
reasoningEffort?: ReasoningEffort;
|
|
9
|
-
mode:
|
|
10
|
+
mode: AIMode;
|
|
10
11
|
language: SupportedLanguage;
|
|
11
12
|
autoPush: boolean;
|
|
13
|
+
coAuthor?: string | false;
|
|
14
|
+
maxCompletionTokens?: number;
|
|
12
15
|
}
|
|
13
16
|
interface StoredConfig {
|
|
14
17
|
apiKey?: string;
|
|
@@ -16,9 +19,11 @@ interface StoredConfig {
|
|
|
16
19
|
model?: string;
|
|
17
20
|
fallbackModel?: string;
|
|
18
21
|
reasoningEffort?: ReasoningEffort | string;
|
|
19
|
-
mode?:
|
|
22
|
+
mode?: AIMode;
|
|
20
23
|
language?: SupportedLanguage | string;
|
|
21
24
|
autoPush?: boolean;
|
|
25
|
+
coAuthor?: string | false;
|
|
26
|
+
maxCompletionTokens?: number;
|
|
22
27
|
}
|
|
23
28
|
export declare class ConfigService {
|
|
24
29
|
private static getConfigFilePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AASD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC,OAAO,CAAC,MAAM,CAAC,cAAc;IAsB7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IASvC,OAAO,CAAC,MAAM,CAAC,aAAa;IAW5B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA+B/B,MAAM,CAAC,SAAS,IAAI,iBAAiB;IA8BrC,MAAM,CAAC,YAAY,IAAI,iBAAiB;WAI3B,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C/D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAS5E"}
|
package/dist/commands/config.js
CHANGED
|
@@ -12,6 +12,8 @@ const DEFAULT_MODEL = 'zai-org/GLM-4.5-FP8';
|
|
|
12
12
|
const DEFAULT_MODE = 'custom';
|
|
13
13
|
const DEFAULT_LANGUAGE = 'ko';
|
|
14
14
|
const DEFAULT_AUTO_PUSH = false;
|
|
15
|
+
const DEFAULT_CO_AUTHOR = 'git-ai-commit <git-ai-commit@users.noreply.github.com>';
|
|
16
|
+
const CONFIG_SCHEMA_URL = 'https://raw.githubusercontent.com/onaries/git-ai-commit/main/src/schema/config.schema.json';
|
|
15
17
|
class ConfigService {
|
|
16
18
|
static getConfigFilePath() {
|
|
17
19
|
const overridePath = process.env.GIT_AI_COMMIT_CONFIG_PATH;
|
|
@@ -31,7 +33,8 @@ class ConfigService {
|
|
|
31
33
|
return {};
|
|
32
34
|
}
|
|
33
35
|
const parsed = JSON.parse(raw);
|
|
34
|
-
|
|
36
|
+
const { $schema, ...config } = typeof parsed === 'object' && parsed !== null ? parsed : {};
|
|
37
|
+
return config;
|
|
35
38
|
}
|
|
36
39
|
catch (error) {
|
|
37
40
|
console.warn('Warning: Failed to read configuration file. Falling back to environment variables.');
|
|
@@ -59,24 +62,36 @@ class ConfigService {
|
|
|
59
62
|
return DEFAULT_MODE;
|
|
60
63
|
}
|
|
61
64
|
const normalized = mode.toLowerCase();
|
|
62
|
-
|
|
65
|
+
if (normalized === 'openai')
|
|
66
|
+
return 'openai';
|
|
67
|
+
if (normalized === 'gemini')
|
|
68
|
+
return 'gemini';
|
|
69
|
+
return 'custom';
|
|
63
70
|
}
|
|
64
71
|
static resolveEnvConfig(modeOverride) {
|
|
65
72
|
const resolvedMode = this.normalizeMode(modeOverride || process.env.AI_MODE);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
let apiKey;
|
|
74
|
+
let baseURL;
|
|
75
|
+
let model;
|
|
76
|
+
if (resolvedMode === 'gemini') {
|
|
77
|
+
apiKey = process.env.GEMINI_API_KEY || process.env.AI_API_KEY;
|
|
78
|
+
baseURL = undefined;
|
|
79
|
+
model = process.env.AI_MODEL || 'gemini-2.0-flash';
|
|
80
|
+
}
|
|
81
|
+
else if (resolvedMode === 'openai') {
|
|
82
|
+
apiKey = process.env.OPENAI_API_KEY || process.env.AI_API_KEY;
|
|
83
|
+
baseURL = process.env.OPENAI_BASE_URL || process.env.AI_BASE_URL;
|
|
84
|
+
model = process.env.OPENAI_MODEL || process.env.AI_MODEL || DEFAULT_MODEL;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
apiKey = process.env.AI_API_KEY || process.env.OPENAI_API_KEY;
|
|
88
|
+
baseURL = process.env.AI_BASE_URL || process.env.OPENAI_BASE_URL;
|
|
89
|
+
model = process.env.AI_MODEL || process.env.OPENAI_MODEL || DEFAULT_MODEL;
|
|
90
|
+
}
|
|
76
91
|
return {
|
|
77
92
|
apiKey: apiKey || undefined,
|
|
78
93
|
baseURL: baseURL || undefined,
|
|
79
|
-
model
|
|
94
|
+
model,
|
|
80
95
|
mode: resolvedMode,
|
|
81
96
|
language: DEFAULT_LANGUAGE,
|
|
82
97
|
autoPush: DEFAULT_AUTO_PUSH
|
|
@@ -93,6 +108,10 @@ class ConfigService {
|
|
|
93
108
|
const reasoningEffort = this.normalizeReasoningEffort(fileConfig.reasoningEffort);
|
|
94
109
|
const language = this.normalizeLanguage(fileConfig.language ?? envConfig.language);
|
|
95
110
|
const autoPush = typeof fileConfig.autoPush === 'boolean' ? fileConfig.autoPush : envConfig.autoPush;
|
|
111
|
+
const coAuthor = fileConfig.coAuthor === false ? false : (fileConfig.coAuthor || DEFAULT_CO_AUTHOR);
|
|
112
|
+
const maxCompletionTokens = typeof fileConfig.maxCompletionTokens === 'number' && fileConfig.maxCompletionTokens > 0
|
|
113
|
+
? fileConfig.maxCompletionTokens
|
|
114
|
+
: undefined;
|
|
96
115
|
return {
|
|
97
116
|
apiKey,
|
|
98
117
|
baseURL,
|
|
@@ -101,7 +120,9 @@ class ConfigService {
|
|
|
101
120
|
reasoningEffort,
|
|
102
121
|
mode,
|
|
103
122
|
language,
|
|
104
|
-
autoPush
|
|
123
|
+
autoPush,
|
|
124
|
+
coAuthor,
|
|
125
|
+
maxCompletionTokens,
|
|
105
126
|
};
|
|
106
127
|
}
|
|
107
128
|
static getEnvConfig() {
|
|
@@ -129,6 +150,7 @@ class ConfigService {
|
|
|
129
150
|
if (next.mode === DEFAULT_MODE) {
|
|
130
151
|
delete next.mode;
|
|
131
152
|
}
|
|
153
|
+
// coAuthor: false means explicitly disabled — persist it so getConfig() sees it
|
|
132
154
|
const sanitized = Object.entries(next).reduce((acc, [key, value]) => {
|
|
133
155
|
if (value !== undefined) {
|
|
134
156
|
acc[key] = value;
|
|
@@ -139,7 +161,7 @@ class ConfigService {
|
|
|
139
161
|
return acc;
|
|
140
162
|
}, {});
|
|
141
163
|
await fs_2.promises.mkdir(path_1.default.dirname(filePath), { recursive: true });
|
|
142
|
-
await fs_2.promises.writeFile(filePath, JSON.stringify(sanitized, null, 2), 'utf-8');
|
|
164
|
+
await fs_2.promises.writeFile(filePath, JSON.stringify({ $schema: CONFIG_SCHEMA_URL, ...sanitized }, null, 2), 'utf-8');
|
|
143
165
|
}
|
|
144
166
|
static validateConfig(config) {
|
|
145
167
|
if (!config.apiKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,2BAA4C;AAC5C,4CAAoB;AACpB,gDAAwB;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { AIMode } from './config';
|
|
2
3
|
export interface ConfigOptions {
|
|
3
4
|
show?: boolean;
|
|
4
5
|
language?: string;
|
|
@@ -8,7 +9,10 @@ export interface ConfigOptions {
|
|
|
8
9
|
model?: string;
|
|
9
10
|
fallbackModel?: string;
|
|
10
11
|
reasoningEffort?: string;
|
|
11
|
-
mode?:
|
|
12
|
+
mode?: AIMode;
|
|
13
|
+
coAuthor?: string;
|
|
14
|
+
noCoAuthor?: boolean;
|
|
15
|
+
maxTokens?: string;
|
|
12
16
|
}
|
|
13
17
|
export declare class ConfigCommand {
|
|
14
18
|
private program;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configCommand.d.ts","sourceRoot":"","sources":["../../src/commands/configCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"configCommand.d.ts","sourceRoot":"","sources":["../../src/commands/configCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAoC,MAAM,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;;IAqBzB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,mBAAmB;YASb,YAAY;IAyH1B,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -16,7 +16,10 @@ class ConfigCommand {
|
|
|
16
16
|
.option('-m, --model <model>', 'Persist default AI model')
|
|
17
17
|
.option('--fallback-model <model>', 'Persist fallback model for rate limit (429) retry')
|
|
18
18
|
.option('--reasoning-effort <level>', 'Thinking effort for reasoning models (minimal | low | medium | high)')
|
|
19
|
-
.option('--mode <mode>', 'Persist AI mode (custom | openai)')
|
|
19
|
+
.option('--mode <mode>', 'Persist AI mode (custom | openai | gemini)')
|
|
20
|
+
.option('--co-author <value>', 'Set co-author for commits (e.g. "Name <email>")')
|
|
21
|
+
.option('--no-co-author', 'Disable co-author')
|
|
22
|
+
.option('--max-tokens <number>', 'Persist max completion tokens for AI responses')
|
|
20
23
|
.action(this.handleConfig.bind(this));
|
|
21
24
|
}
|
|
22
25
|
validateLanguage(language) {
|
|
@@ -29,8 +32,8 @@ class ConfigCommand {
|
|
|
29
32
|
}
|
|
30
33
|
validateMode(mode) {
|
|
31
34
|
const normalized = mode?.toLowerCase();
|
|
32
|
-
if (normalized !== 'custom' && normalized !== 'openai') {
|
|
33
|
-
console.error('Mode must be
|
|
35
|
+
if (normalized !== 'custom' && normalized !== 'openai' && normalized !== 'gemini') {
|
|
36
|
+
console.error('Mode must be one of: "custom", "openai", "gemini".');
|
|
34
37
|
process.exit(1);
|
|
35
38
|
}
|
|
36
39
|
return normalized;
|
|
@@ -73,6 +76,25 @@ class ConfigCommand {
|
|
|
73
76
|
if (options.mode) {
|
|
74
77
|
updates.mode = this.validateMode(options.mode);
|
|
75
78
|
}
|
|
79
|
+
if (options.noCoAuthor) {
|
|
80
|
+
updates.coAuthor = false;
|
|
81
|
+
}
|
|
82
|
+
else if (options.coAuthor !== undefined) {
|
|
83
|
+
const coAuthor = this.sanitizeStringValue(options.coAuthor);
|
|
84
|
+
if (coAuthor && !/.+<.+@.+>/.test(coAuthor)) {
|
|
85
|
+
console.error('Co-author must be in "Name <email>" format.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
updates.coAuthor = coAuthor;
|
|
89
|
+
}
|
|
90
|
+
if (options.maxTokens !== undefined) {
|
|
91
|
+
const parsed = parseInt(options.maxTokens, 10);
|
|
92
|
+
if (isNaN(parsed) || parsed <= 0) {
|
|
93
|
+
console.error('Max tokens must be a positive number.');
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
updates.maxCompletionTokens = parsed;
|
|
97
|
+
}
|
|
76
98
|
const hasUpdates = Object.keys(updates).length > 0;
|
|
77
99
|
if (!options.show && !hasUpdates) {
|
|
78
100
|
console.log('Usage examples:');
|
|
@@ -82,8 +104,11 @@ class ConfigCommand {
|
|
|
82
104
|
console.log(' git-ai-commit config -k sk-xxx # Persist API key securely on disk');
|
|
83
105
|
console.log(' git-ai-commit config -b https://api.test # Persist custom API base URL');
|
|
84
106
|
console.log(' git-ai-commit config --mode openai # Use OpenAI-compatible environment defaults');
|
|
107
|
+
console.log(' git-ai-commit config --mode gemini # Use Gemini native SDK (GEMINI_API_KEY)');
|
|
85
108
|
console.log(' git-ai-commit config --model gpt-4o-mini # Persist preferred AI model');
|
|
86
109
|
console.log(' git-ai-commit config --fallback-model glm-4-flash # Fallback model for 429 retry');
|
|
110
|
+
console.log(' git-ai-commit config --co-author "Name <email>" # Set co-author for commits');
|
|
111
|
+
console.log(' git-ai-commit config --max-tokens 2000 # Set max completion tokens for AI');
|
|
87
112
|
return;
|
|
88
113
|
}
|
|
89
114
|
if (hasUpdates) {
|
|
@@ -109,6 +134,8 @@ class ConfigCommand {
|
|
|
109
134
|
console.log(`Fallback Model: ${config.fallbackModel || 'Not set'}`);
|
|
110
135
|
console.log(`Reasoning Effort: ${config.reasoningEffort || 'Not set (model default)'}`);
|
|
111
136
|
console.log(`Mode: ${config.mode || 'custom (default)'}`);
|
|
137
|
+
console.log(`Co-author: ${config.coAuthor === false ? 'disabled' : config.coAuthor}`);
|
|
138
|
+
console.log(`Max Completion Tokens: ${config.maxCompletionTokens || 'Not set (using per-command defaults)'}`);
|
|
112
139
|
}
|
|
113
140
|
catch (error) {
|
|
114
141
|
console.error('Error reading configuration:', error instanceof Error ? error.message : error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configCommand.js","sourceRoot":"","sources":["../../src/commands/configCommand.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"configCommand.js","sourceRoot":"","sources":["../../src/commands/configCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/git.js
CHANGED
|
@@ -6,11 +6,11 @@ const util_1 = require("util");
|
|
|
6
6
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
7
7
|
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
8
8
|
const GIT_DIFF_MAX_BUFFER = 50 * 1024 * 1024;
|
|
9
|
-
const MAX_DIFF_TOKENS =
|
|
9
|
+
const MAX_DIFF_TOKENS = 25000;
|
|
10
10
|
const APPROX_CHARS_PER_TOKEN = 4;
|
|
11
11
|
const MAX_DIFF_CHARS = MAX_DIFF_TOKENS * APPROX_CHARS_PER_TOKEN;
|
|
12
|
-
const MAX_FILE_LINES =
|
|
13
|
-
const MAX_NEW_FILE_LINES =
|
|
12
|
+
const MAX_FILE_LINES = 200;
|
|
13
|
+
const MAX_NEW_FILE_LINES = 100;
|
|
14
14
|
const splitDiffSections = (diff) => {
|
|
15
15
|
const lines = diff.split('\n');
|
|
16
16
|
const sections = [];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export declare class HookCommand {
|
|
3
|
+
private program;
|
|
4
|
+
constructor();
|
|
5
|
+
private getGitRoot;
|
|
6
|
+
private getHooksDir;
|
|
7
|
+
private getHookPath;
|
|
8
|
+
private isOurHook;
|
|
9
|
+
private handleInstall;
|
|
10
|
+
private handleUninstall;
|
|
11
|
+
private handleStatus;
|
|
12
|
+
getCommand(): Command;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=hookCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookCommand.d.ts","sourceRoot":"","sources":["../../src/commands/hookCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAU;;IAsBzB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,YAAY;IA4BpB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HookCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const HOOK_NAME = 'prepare-commit-msg';
|
|
12
|
+
const HOOK_SIGNATURE = '# installed by git-ai-commit';
|
|
13
|
+
const HOOK_SCRIPT = `#!/bin/sh
|
|
14
|
+
${HOOK_SIGNATURE}
|
|
15
|
+
|
|
16
|
+
COMMIT_MSG_FILE="$1"
|
|
17
|
+
COMMIT_SOURCE="$2"
|
|
18
|
+
|
|
19
|
+
# Skip if message was provided via -m, merge, squash, or amend
|
|
20
|
+
if [ -n "$COMMIT_SOURCE" ]; then
|
|
21
|
+
exit 0
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Skip if no staged changes
|
|
25
|
+
if ! git diff --cached --quiet --exit-code 2>/dev/null; then
|
|
26
|
+
# Generate AI commit message
|
|
27
|
+
AI_MSG=$(git-ai-commit commit --message-only 2>/dev/null)
|
|
28
|
+
if [ $? -eq 0 ] && [ -n "$AI_MSG" ]; then
|
|
29
|
+
# Prepend AI message, keep original commented lines below
|
|
30
|
+
ORIGINAL=$(cat "$COMMIT_MSG_FILE")
|
|
31
|
+
printf '%s\n\n%s' "$AI_MSG" "$ORIGINAL" > "$COMMIT_MSG_FILE"
|
|
32
|
+
fi
|
|
33
|
+
fi
|
|
34
|
+
`;
|
|
35
|
+
class HookCommand {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.program = new commander_1.Command('hook')
|
|
38
|
+
.description('Manage git-ai-commit prepare-commit-msg hook');
|
|
39
|
+
this.program
|
|
40
|
+
.command('install')
|
|
41
|
+
.description('Install prepare-commit-msg hook in the current repository')
|
|
42
|
+
.action(this.handleInstall.bind(this));
|
|
43
|
+
this.program
|
|
44
|
+
.command('uninstall')
|
|
45
|
+
.description('Remove prepare-commit-msg hook from the current repository')
|
|
46
|
+
.action(this.handleUninstall.bind(this));
|
|
47
|
+
this.program
|
|
48
|
+
.command('status')
|
|
49
|
+
.description('Show hook installation status')
|
|
50
|
+
.action(this.handleStatus.bind(this));
|
|
51
|
+
}
|
|
52
|
+
getGitRoot() {
|
|
53
|
+
try {
|
|
54
|
+
return (0, child_process_1.execFileSync)('git', ['rev-parse', '--show-toplevel'], {
|
|
55
|
+
encoding: 'utf-8',
|
|
56
|
+
}).trim();
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
getHooksDir() {
|
|
63
|
+
try {
|
|
64
|
+
const hooksPath = (0, child_process_1.execFileSync)('git', ['rev-parse', '--git-path', 'hooks'], {
|
|
65
|
+
encoding: 'utf-8',
|
|
66
|
+
}).trim();
|
|
67
|
+
// git rev-parse --git-path returns relative path; resolve it
|
|
68
|
+
const gitRoot = this.getGitRoot();
|
|
69
|
+
if (!gitRoot)
|
|
70
|
+
return null;
|
|
71
|
+
return path_1.default.resolve(gitRoot, hooksPath);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
getHookPath() {
|
|
78
|
+
const hooksDir = this.getHooksDir();
|
|
79
|
+
if (!hooksDir)
|
|
80
|
+
return null;
|
|
81
|
+
return path_1.default.join(hooksDir, HOOK_NAME);
|
|
82
|
+
}
|
|
83
|
+
isOurHook(hookPath) {
|
|
84
|
+
try {
|
|
85
|
+
const content = fs_1.default.readFileSync(hookPath, 'utf-8');
|
|
86
|
+
return content.includes(HOOK_SIGNATURE);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
handleInstall() {
|
|
93
|
+
const gitRoot = this.getGitRoot();
|
|
94
|
+
if (!gitRoot) {
|
|
95
|
+
console.error('Error: Not a git repository.');
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
const hookPath = this.getHookPath();
|
|
99
|
+
if (!hookPath) {
|
|
100
|
+
console.error('Error: Could not determine git hooks directory.');
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
// Check if hook already exists
|
|
104
|
+
if (fs_1.default.existsSync(hookPath)) {
|
|
105
|
+
if (this.isOurHook(hookPath)) {
|
|
106
|
+
console.log('Hook is already installed. Use "git-ai-commit hook uninstall" to remove it.');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
console.error(`Error: ${HOOK_NAME} hook already exists and was not installed by git-ai-commit.`);
|
|
110
|
+
console.error(`Path: ${hookPath}`);
|
|
111
|
+
console.error('Remove or rename the existing hook first, then try again.');
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
// Create hooks directory if it doesn't exist
|
|
115
|
+
const hooksDir = path_1.default.dirname(hookPath);
|
|
116
|
+
if (!fs_1.default.existsSync(hooksDir)) {
|
|
117
|
+
fs_1.default.mkdirSync(hooksDir, { recursive: true });
|
|
118
|
+
}
|
|
119
|
+
fs_1.default.writeFileSync(hookPath, HOOK_SCRIPT, { mode: 0o755 });
|
|
120
|
+
console.log(`Installed ${HOOK_NAME} hook.`);
|
|
121
|
+
console.log(`Path: ${hookPath}`);
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log('Now "git commit" will auto-generate an AI commit message.');
|
|
124
|
+
console.log('The message will be pre-filled in your editor for review.');
|
|
125
|
+
console.log('Use "git commit -m ..." to skip AI generation.');
|
|
126
|
+
}
|
|
127
|
+
handleUninstall() {
|
|
128
|
+
const gitRoot = this.getGitRoot();
|
|
129
|
+
if (!gitRoot) {
|
|
130
|
+
console.error('Error: Not a git repository.');
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
const hookPath = this.getHookPath();
|
|
134
|
+
if (!hookPath) {
|
|
135
|
+
console.error('Error: Could not determine git hooks directory.');
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
if (!fs_1.default.existsSync(hookPath)) {
|
|
139
|
+
console.log('No hook installed.');
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (!this.isOurHook(hookPath)) {
|
|
143
|
+
console.error(`Error: ${HOOK_NAME} hook exists but was not installed by git-ai-commit.`);
|
|
144
|
+
console.error('Will not remove hooks installed by other tools.');
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
fs_1.default.unlinkSync(hookPath);
|
|
148
|
+
console.log(`Removed ${HOOK_NAME} hook.`);
|
|
149
|
+
}
|
|
150
|
+
handleStatus() {
|
|
151
|
+
const gitRoot = this.getGitRoot();
|
|
152
|
+
if (!gitRoot) {
|
|
153
|
+
console.error('Error: Not a git repository.');
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
const hookPath = this.getHookPath();
|
|
157
|
+
if (!hookPath) {
|
|
158
|
+
console.error('Error: Could not determine git hooks directory.');
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
if (!fs_1.default.existsSync(hookPath)) {
|
|
162
|
+
console.log('Not installed.');
|
|
163
|
+
console.log('Run "git-ai-commit hook install" to set up the prepare-commit-msg hook.');
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (this.isOurHook(hookPath)) {
|
|
167
|
+
console.log('Installed.');
|
|
168
|
+
console.log(`Path: ${hookPath}`);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
console.log(`A ${HOOK_NAME} hook exists but was not installed by git-ai-commit.`);
|
|
172
|
+
console.log(`Path: ${hookPath}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
getCommand() {
|
|
176
|
+
return this.program;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.HookCommand = HookCommand;
|
|
180
|
+
//# sourceMappingURL=hookCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookCommand.js","sourceRoot":"","sources":["../../src/commands/hookCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prCommand.d.ts","sourceRoot":"","sources":["../../src/commands/prCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;;YAaX,iBAAiB;
|
|
1
|
+
{"version":3,"file":"prCommand.d.ts","sourceRoot":"","sources":["../../src/commands/prCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;;YAaX,iBAAiB;IAmF/B,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -49,7 +49,9 @@ class PullRequestCommand {
|
|
|
49
49
|
fallbackModel: existingConfig.fallbackModel,
|
|
50
50
|
reasoningEffort: existingConfig.reasoningEffort,
|
|
51
51
|
language: existingConfig.language,
|
|
52
|
-
verbose: false
|
|
52
|
+
verbose: false,
|
|
53
|
+
mode: existingConfig.mode,
|
|
54
|
+
maxCompletionTokens: existingConfig.maxCompletionTokens,
|
|
53
55
|
});
|
|
54
56
|
const aiResult = await aiService.generatePullRequestMessage(options.base, options.compare, diffResult.diff);
|
|
55
57
|
if (!aiResult.success || !aiResult.message) {
|