@335g/pi-git 0.0.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/LICENSE +21 -0
- package/README.ja.md +121 -0
- package/README.md +121 -0
- package/dist/commands/agg-commit.d.ts +9 -0
- package/dist/commands/agg-commit.d.ts.map +1 -0
- package/dist/commands/agg-commit.js +144 -0
- package/dist/commands/agg-commit.js.map +1 -0
- package/dist/commands/auto-agg-commit.d.ts +9 -0
- package/dist/commands/auto-agg-commit.d.ts.map +1 -0
- package/dist/commands/auto-agg-commit.js +113 -0
- package/dist/commands/auto-agg-commit.js.map +1 -0
- package/dist/commands/branch.d.ts +8 -0
- package/dist/commands/branch.d.ts.map +1 -0
- package/dist/commands/branch.js +197 -0
- package/dist/commands/branch.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +234 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/git-diff.d.ts +10 -0
- package/dist/commands/git-diff.d.ts.map +1 -0
- package/dist/commands/git-diff.js +228 -0
- package/dist/commands/git-diff.js.map +1 -0
- package/dist/commands/git-log.d.ts +8 -0
- package/dist/commands/git-log.d.ts.map +1 -0
- package/dist/commands/git-log.js +100 -0
- package/dist/commands/git-log.js.map +1 -0
- package/dist/core/auto-commit-message.d.ts +15 -0
- package/dist/core/auto-commit-message.d.ts.map +1 -0
- package/dist/core/auto-commit-message.js +121 -0
- package/dist/core/auto-commit-message.js.map +1 -0
- package/dist/core/auto-commit.d.ts +12 -0
- package/dist/core/auto-commit.d.ts.map +1 -0
- package/dist/core/auto-commit.js +67 -0
- package/dist/core/auto-commit.js.map +1 -0
- package/dist/core/commit-message.d.ts +25 -0
- package/dist/core/commit-message.d.ts.map +1 -0
- package/dist/core/commit-message.js +127 -0
- package/dist/core/commit-message.js.map +1 -0
- package/dist/core/diff-analyzer.d.ts +23 -0
- package/dist/core/diff-analyzer.d.ts.map +1 -0
- package/dist/core/diff-analyzer.js +245 -0
- package/dist/core/diff-analyzer.js.map +1 -0
- package/dist/core/git.d.ts +50 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +152 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/resolve-model.d.ts +18 -0
- package/dist/core/resolve-model.d.ts.map +1 -0
- package/dist/core/resolve-model.js +33 -0
- package/dist/core/resolve-model.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/tui/hunk-review.d.ts +49 -0
- package/dist/tui/hunk-review.d.ts.map +1 -0
- package/dist/tui/hunk-review.js +300 -0
- package/dist/tui/hunk-review.js.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/footer-manager.d.ts +68 -0
- package/dist/utils/footer-manager.d.ts.map +1 -0
- package/dist/utils/footer-manager.js +138 -0
- package/dist/utils/footer-manager.js.map +1 -0
- package/dist/utils/lang.d.ts +12 -0
- package/dist/utils/lang.d.ts.map +1 -0
- package/dist/utils/lang.js +16 -0
- package/dist/utils/lang.js.map +1 -0
- package/dist/utils/settings.d.ts +47 -0
- package/dist/utils/settings.d.ts.map +1 -0
- package/dist/utils/settings.js +151 -0
- package/dist/utils/settings.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Footer status manager for pi-git extension
|
|
3
|
+
*
|
|
4
|
+
* Manages footer display in a unified way:
|
|
5
|
+
* - Base display: auto-commit on/off + clean/changed state
|
|
6
|
+
* - Running display: command execution phase
|
|
7
|
+
*
|
|
8
|
+
* Singleton instance is exported as `footerManager`.
|
|
9
|
+
*/
|
|
10
|
+
import { isJapanese } from "./lang.js";
|
|
11
|
+
import { getAutoAggCommit, getLanguage } from "./settings.js";
|
|
12
|
+
const STATUS_KEY = "pi-git-agg-commit";
|
|
13
|
+
/**
|
|
14
|
+
* Singleton class that manages footer status display.
|
|
15
|
+
*
|
|
16
|
+
* When `ui` is null (hasUI = false), all methods become no-op.
|
|
17
|
+
*/
|
|
18
|
+
class FooterManager {
|
|
19
|
+
pi = null;
|
|
20
|
+
ui = null;
|
|
21
|
+
cwd;
|
|
22
|
+
running = null;
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the manager with pi API, UI context, and working directory.
|
|
25
|
+
* Call this once at session_start.
|
|
26
|
+
*
|
|
27
|
+
* @param pi - Extension API for executing git commands
|
|
28
|
+
* @param ui - UI context (null if hasUI is false)
|
|
29
|
+
* @param cwd - Working directory
|
|
30
|
+
*/
|
|
31
|
+
initialize(pi, ui, cwd) {
|
|
32
|
+
this.pi = pi;
|
|
33
|
+
this.ui = ui;
|
|
34
|
+
this.cwd = cwd;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if a command is currently running.
|
|
38
|
+
*/
|
|
39
|
+
isRunning() {
|
|
40
|
+
return this.running !== null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Refresh the base display (auto-commit on/off + clean/changed).
|
|
44
|
+
* Does nothing if a command is running or if UI is not available.
|
|
45
|
+
*/
|
|
46
|
+
async refresh() {
|
|
47
|
+
if (!this.pi || !this.ui)
|
|
48
|
+
return;
|
|
49
|
+
if (this.running)
|
|
50
|
+
return;
|
|
51
|
+
const enabled = getAutoAggCommit(this.cwd);
|
|
52
|
+
const onOff = enabled ? "on" : "off";
|
|
53
|
+
// Check if inside a git repository
|
|
54
|
+
const { code } = await this.pi.exec("git", ["rev-parse", "--git-dir"], {
|
|
55
|
+
cwd: this.cwd,
|
|
56
|
+
});
|
|
57
|
+
if (code !== 0) {
|
|
58
|
+
this.ui.setStatus(STATUS_KEY, `auto-commit: ${onOff}`);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Evaluate clean/changed state
|
|
62
|
+
const { stdout } = await this.pi.exec("git", ["status", "--porcelain"], {
|
|
63
|
+
cwd: this.cwd,
|
|
64
|
+
});
|
|
65
|
+
const state = stdout.trim().length > 0 ? "changed" : "clean";
|
|
66
|
+
this.ui.setStatus(STATUS_KEY, `auto-commit: ${onOff} (${state})`);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Start running display. Sets the running flag and shows phase text.
|
|
70
|
+
*
|
|
71
|
+
* @param command - Command name ("agg-commit" or "auto-commit")
|
|
72
|
+
* @param phase - Initial phase
|
|
73
|
+
* @param lang - Optional language override (for --lang flag)
|
|
74
|
+
*/
|
|
75
|
+
async setRunning(command, phase, lang) {
|
|
76
|
+
if (!this.ui)
|
|
77
|
+
return;
|
|
78
|
+
this.running = { command, phase, lang };
|
|
79
|
+
this.renderPhase();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Update the phase of the currently running command.
|
|
83
|
+
* Does nothing if no command is running.
|
|
84
|
+
*
|
|
85
|
+
* @param phase - New phase
|
|
86
|
+
* @param lang - Optional language override (for --lang flag)
|
|
87
|
+
*/
|
|
88
|
+
async setPhase(phase, lang) {
|
|
89
|
+
if (!this.ui || !this.running)
|
|
90
|
+
return;
|
|
91
|
+
this.running.phase = phase;
|
|
92
|
+
if (lang !== undefined) {
|
|
93
|
+
this.running.lang = lang;
|
|
94
|
+
}
|
|
95
|
+
this.renderPhase();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* End the running display. Clears the running flag and refreshes base display.
|
|
99
|
+
*/
|
|
100
|
+
async clearRunning() {
|
|
101
|
+
this.running = null;
|
|
102
|
+
await this.refresh();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Render the current phase text to the footer.
|
|
106
|
+
*/
|
|
107
|
+
renderPhase() {
|
|
108
|
+
if (!this.ui || !this.running)
|
|
109
|
+
return;
|
|
110
|
+
const lang = this.running.lang ?? getLanguage(this.cwd);
|
|
111
|
+
const autoCommit = this.running.command === "auto-commit";
|
|
112
|
+
this.ui.setStatus(STATUS_KEY, phaseStatusText(lang, this.running.phase, autoCommit));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Generate localized status text for each phase of the commit workflow.
|
|
117
|
+
*/
|
|
118
|
+
function phaseStatusText(lang, key, autoCommit) {
|
|
119
|
+
const ja = isJapanese(lang);
|
|
120
|
+
const prefix = autoCommit ? "[pi-git: auto-commit]" : "[pi-git]";
|
|
121
|
+
switch (key) {
|
|
122
|
+
case "prepare":
|
|
123
|
+
return ja ? `${prefix} 準備中...` : `${prefix} Preparing...`;
|
|
124
|
+
case "collectDiff":
|
|
125
|
+
return ja ? `${prefix} diff収集中...` : `${prefix} Collecting diff...`;
|
|
126
|
+
case "analyze":
|
|
127
|
+
return ja ? `${prefix} hunk解析中...` : `${prefix} Analyzing hunks...`;
|
|
128
|
+
case "generateMessage":
|
|
129
|
+
return ja
|
|
130
|
+
? `${prefix} コミットメッセージ生成中...`
|
|
131
|
+
: `${prefix} Generating messages...`;
|
|
132
|
+
case "commit":
|
|
133
|
+
return ja ? `${prefix} コミット実行中...` : `${prefix} Committing...`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Singleton instance */
|
|
137
|
+
export const footerManager = new FooterManager();
|
|
138
|
+
//# sourceMappingURL=footer-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-manager.js","sourceRoot":"","sources":["../../src/utils/footer-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language utilities for i18n support
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if the language is Japanese
|
|
6
|
+
*/
|
|
7
|
+
export declare function isJapanese(lang: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Get localized message based on language
|
|
10
|
+
*/
|
|
11
|
+
export declare function localize<T>(lang: string, ja: T, en: T): T;
|
|
12
|
+
//# sourceMappingURL=lang.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lang.d.ts","sourceRoot":"","sources":["../../src/utils/lang.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAEzD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language utilities for i18n support
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if the language is Japanese
|
|
6
|
+
*/
|
|
7
|
+
export function isJapanese(lang) {
|
|
8
|
+
return lang === "ja" || lang === "ja-JP" || lang === "japanese";
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get localized message based on language
|
|
12
|
+
*/
|
|
13
|
+
export function localize(lang, ja, en) {
|
|
14
|
+
return isJapanese(lang) ? ja : en;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/utils/lang.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAI,IAAY,EAAE,EAAK,EAAE,EAAK;IACpD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent settings storage for pi-git extension.
|
|
3
|
+
*
|
|
4
|
+
* Settings are stored in:
|
|
5
|
+
* - Global: ~/.config/pi-git/settings.json
|
|
6
|
+
* - Local: <git-root>/.pi-git/settings.json (takes precedence)
|
|
7
|
+
*/
|
|
8
|
+
export interface PiGitSettings {
|
|
9
|
+
/** Display and commit message language (e.g., "en", "ja") */
|
|
10
|
+
lang?: string;
|
|
11
|
+
/** Whether to automatically run git-agg-commit after assistant response */
|
|
12
|
+
auto_agg_commit?: boolean;
|
|
13
|
+
/** Model to use for diff analysis (format: "provider/model-id") */
|
|
14
|
+
analysis_model?: string;
|
|
15
|
+
}
|
|
16
|
+
export type SettingOrigin = "default" | "global" | "local";
|
|
17
|
+
/** Metadata for each valid configuration key */
|
|
18
|
+
export interface KeyMeta {
|
|
19
|
+
key: string;
|
|
20
|
+
/** Display type (e.g., "string", "boolean") */
|
|
21
|
+
type: string;
|
|
22
|
+
/** Japanese description */
|
|
23
|
+
description_ja: string;
|
|
24
|
+
/** English description */
|
|
25
|
+
description_en: string;
|
|
26
|
+
/** Valid values hint (optional) */
|
|
27
|
+
valid_values?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Metadata for all valid configuration keys */
|
|
30
|
+
export declare const VALID_KEYS_META: KeyMeta[];
|
|
31
|
+
export declare const DEFAULT_SETTINGS: PiGitSettings;
|
|
32
|
+
export declare const GLOBAL_CONFIG_DIR: string;
|
|
33
|
+
export declare const GLOBAL_SETTINGS_FILE: string;
|
|
34
|
+
export declare function getLocalSettingsPath(cwd?: string): string | null;
|
|
35
|
+
export declare function getSettings(cwd?: string): PiGitSettings;
|
|
36
|
+
export declare function clearSettingsCache(): void;
|
|
37
|
+
export declare function getSettingOrigin(key: keyof PiGitSettings, cwd?: string): SettingOrigin;
|
|
38
|
+
export declare function getSettingWithOrigin<K extends keyof PiGitSettings>(key: K, cwd?: string): {
|
|
39
|
+
value: PiGitSettings[K] | undefined;
|
|
40
|
+
origin: SettingOrigin;
|
|
41
|
+
};
|
|
42
|
+
export declare function getLanguage(cwd?: string): string;
|
|
43
|
+
export declare function getAutoAggCommit(cwd?: string): boolean;
|
|
44
|
+
export declare function getAnalysisModel(cwd?: string): string | undefined;
|
|
45
|
+
export declare function saveGlobalSettings(settings: Partial<PiGitSettings>): void;
|
|
46
|
+
export declare function saveLocalSettings(settings: Partial<PiGitSettings>, cwd?: string): void;
|
|
47
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,gDAAgD;AAChD,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,gDAAgD;AAChD,eAAO,MAAM,eAAe,EAAE,OAAO,EAwBpC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAI9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAuC,CAAC;AACtE,eAAO,MAAM,oBAAoB,QAA2C,CAAC;AAoB7E,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYhE;AAyBD,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAQvD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAMD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,aAAa,EACxB,GAAG,CAAC,EAAE,MAAM,GACX,aAAa,CAKf;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,aAAa,EAChE,GAAG,EAAE,CAAC,EACN,GAAG,CAAC,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAGhE;AAMD,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGjE;AAMD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAUzE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAUN"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent settings storage for pi-git extension.
|
|
3
|
+
*
|
|
4
|
+
* Settings are stored in:
|
|
5
|
+
* - Global: ~/.config/pi-git/settings.json
|
|
6
|
+
* - Local: <git-root>/.pi-git/settings.json (takes precedence)
|
|
7
|
+
*/
|
|
8
|
+
import { execSync } from "node:child_process";
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
import { dirname, join } from "node:path";
|
|
12
|
+
/** Metadata for all valid configuration keys */
|
|
13
|
+
export const VALID_KEYS_META = [
|
|
14
|
+
{
|
|
15
|
+
key: "lang",
|
|
16
|
+
type: "string",
|
|
17
|
+
description_ja: "表示・コミットメッセージの言語設定",
|
|
18
|
+
description_en: "Display and commit message language",
|
|
19
|
+
valid_values: '"en" or "ja"',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
key: "auto_agg_commit",
|
|
23
|
+
type: "boolean",
|
|
24
|
+
description_ja: "アシスタント応答後の自動コミット有無",
|
|
25
|
+
description_en: "Whether to automatically run git-agg-commit after assistant response",
|
|
26
|
+
valid_values: "true or false",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
key: "analysis_model",
|
|
30
|
+
type: "string",
|
|
31
|
+
description_ja: "diff分析に使用するAIモデル(形式: provider/model-id)",
|
|
32
|
+
description_en: "AI model to use for diff analysis (format: provider/model-id)",
|
|
33
|
+
valid_values: "e.g., anthropic/claude-3-5-sonnet-20241022",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
export const DEFAULT_SETTINGS = {
|
|
37
|
+
lang: "en",
|
|
38
|
+
auto_agg_commit: false,
|
|
39
|
+
analysis_model: "",
|
|
40
|
+
};
|
|
41
|
+
export const GLOBAL_CONFIG_DIR = join(homedir(), ".config", "pi-git");
|
|
42
|
+
export const GLOBAL_SETTINGS_FILE = join(GLOBAL_CONFIG_DIR, "settings.json");
|
|
43
|
+
const LOCAL_SETTINGS_DIR = ".pi-git";
|
|
44
|
+
const LOCAL_SETTINGS_FILE = "settings.json";
|
|
45
|
+
// ───────────────────────────────────────────────
|
|
46
|
+
// File I/O helpers
|
|
47
|
+
// ───────────────────────────────────────────────
|
|
48
|
+
function loadJson(path) {
|
|
49
|
+
if (!existsSync(path))
|
|
50
|
+
return null;
|
|
51
|
+
try {
|
|
52
|
+
const raw = readFileSync(path, "utf-8");
|
|
53
|
+
const parsed = JSON.parse(raw);
|
|
54
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
55
|
+
return null;
|
|
56
|
+
return parsed;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function getLocalSettingsPath(cwd) {
|
|
63
|
+
try {
|
|
64
|
+
const repoRoot = execSync("git rev-parse --show-toplevel", {
|
|
65
|
+
cwd,
|
|
66
|
+
encoding: "utf-8",
|
|
67
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
68
|
+
}).trim();
|
|
69
|
+
if (!repoRoot)
|
|
70
|
+
return null;
|
|
71
|
+
return join(repoRoot, LOCAL_SETTINGS_DIR, LOCAL_SETTINGS_FILE);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function loadRaw(cwd) {
|
|
78
|
+
const global = loadJson(GLOBAL_SETTINGS_FILE) ?? {};
|
|
79
|
+
const localPath = getLocalSettingsPath(cwd);
|
|
80
|
+
const local = localPath ? loadJson(localPath) : null;
|
|
81
|
+
return { global, local };
|
|
82
|
+
}
|
|
83
|
+
function merge(global, local) {
|
|
84
|
+
return { ...DEFAULT_SETTINGS, ...global, ...(local ?? {}) };
|
|
85
|
+
}
|
|
86
|
+
// ───────────────────────────────────────────────
|
|
87
|
+
// In-memory cache
|
|
88
|
+
// ───────────────────────────────────────────────
|
|
89
|
+
const cache = new Map();
|
|
90
|
+
export function getSettings(cwd) {
|
|
91
|
+
const key = cwd ?? process.cwd();
|
|
92
|
+
if (!cache.has(key)) {
|
|
93
|
+
const { global, local } = loadRaw(cwd);
|
|
94
|
+
cache.set(key, merge(global, local));
|
|
95
|
+
}
|
|
96
|
+
const cached = cache.get(key);
|
|
97
|
+
return cached ? { ...cached } : { ...DEFAULT_SETTINGS };
|
|
98
|
+
}
|
|
99
|
+
export function clearSettingsCache() {
|
|
100
|
+
cache.clear();
|
|
101
|
+
}
|
|
102
|
+
// ───────────────────────────────────────────────
|
|
103
|
+
// Origin helpers (for --show-origin)
|
|
104
|
+
// ───────────────────────────────────────────────
|
|
105
|
+
export function getSettingOrigin(key, cwd) {
|
|
106
|
+
const { global, local } = loadRaw(cwd);
|
|
107
|
+
if (local && key in local)
|
|
108
|
+
return "local";
|
|
109
|
+
if (global && key in global)
|
|
110
|
+
return "global";
|
|
111
|
+
return "default";
|
|
112
|
+
}
|
|
113
|
+
export function getSettingWithOrigin(key, cwd) {
|
|
114
|
+
const settings = getSettings(cwd);
|
|
115
|
+
return { value: settings[key], origin: getSettingOrigin(key, cwd) };
|
|
116
|
+
}
|
|
117
|
+
// ───────────────────────────────────────────────
|
|
118
|
+
// Convenience getters
|
|
119
|
+
// ───────────────────────────────────────────────
|
|
120
|
+
export function getLanguage(cwd) {
|
|
121
|
+
return getSettings(cwd).lang || "en";
|
|
122
|
+
}
|
|
123
|
+
export function getAutoAggCommit(cwd) {
|
|
124
|
+
return getSettings(cwd).auto_agg_commit ?? false;
|
|
125
|
+
}
|
|
126
|
+
export function getAnalysisModel(cwd) {
|
|
127
|
+
const model = getSettings(cwd).analysis_model;
|
|
128
|
+
return model?.trim() ? model.trim() : undefined;
|
|
129
|
+
}
|
|
130
|
+
// ───────────────────────────────────────────────
|
|
131
|
+
// Save helpers
|
|
132
|
+
// ───────────────────────────────────────────────
|
|
133
|
+
export function saveGlobalSettings(settings) {
|
|
134
|
+
mkdirSync(GLOBAL_CONFIG_DIR, { recursive: true });
|
|
135
|
+
const current = loadJson(GLOBAL_SETTINGS_FILE) ?? {};
|
|
136
|
+
const updated = { ...current, ...settings };
|
|
137
|
+
writeFileSync(GLOBAL_SETTINGS_FILE, `${JSON.stringify(updated, null, 2)}\n`, "utf-8");
|
|
138
|
+
cache.clear();
|
|
139
|
+
}
|
|
140
|
+
export function saveLocalSettings(settings, cwd) {
|
|
141
|
+
const localPath = getLocalSettingsPath(cwd);
|
|
142
|
+
if (!localPath) {
|
|
143
|
+
throw new Error("Not inside a git repository");
|
|
144
|
+
}
|
|
145
|
+
mkdirSync(dirname(localPath), { recursive: true });
|
|
146
|
+
const current = loadJson(localPath) ?? {};
|
|
147
|
+
const updated = { ...current, ...settings };
|
|
148
|
+
writeFileSync(localPath, `${JSON.stringify(updated, null, 2)}\n`, "utf-8");
|
|
149
|
+
cache.clear();
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@335g/pi-git",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Git utilities extension for pi-coding-agent",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md",
|
|
16
|
+
"README.ja.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"prepublishOnly": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"pi-package",
|
|
25
|
+
"pi-extension",
|
|
26
|
+
"git",
|
|
27
|
+
"conventional-commits",
|
|
28
|
+
"automation"
|
|
29
|
+
],
|
|
30
|
+
"author": "Yoshiki Kudo",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/335g/pi-git.git"
|
|
35
|
+
},
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/335g/pi-git/issues"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://github.com/335g/pi-git#readme",
|
|
40
|
+
"pi": {
|
|
41
|
+
"extensions": [
|
|
42
|
+
"./dist/index.js"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@earendil-works/pi-tui": "^0.78.0",
|
|
47
|
+
"@types/node": "^25.9.1",
|
|
48
|
+
"typescript": "^5.9.0"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"@earendil-works/pi-ai": "*",
|
|
52
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
53
|
+
"@earendil-works/pi-tui": "*"
|
|
54
|
+
},
|
|
55
|
+
"peerDependenciesMeta": {
|
|
56
|
+
"@earendil-works/pi-tui": {
|
|
57
|
+
"optional": true
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|