@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.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +121 -0
  3. package/README.md +121 -0
  4. package/dist/commands/agg-commit.d.ts +9 -0
  5. package/dist/commands/agg-commit.d.ts.map +1 -0
  6. package/dist/commands/agg-commit.js +144 -0
  7. package/dist/commands/agg-commit.js.map +1 -0
  8. package/dist/commands/auto-agg-commit.d.ts +9 -0
  9. package/dist/commands/auto-agg-commit.d.ts.map +1 -0
  10. package/dist/commands/auto-agg-commit.js +113 -0
  11. package/dist/commands/auto-agg-commit.js.map +1 -0
  12. package/dist/commands/branch.d.ts +8 -0
  13. package/dist/commands/branch.d.ts.map +1 -0
  14. package/dist/commands/branch.js +197 -0
  15. package/dist/commands/branch.js.map +1 -0
  16. package/dist/commands/config.d.ts +10 -0
  17. package/dist/commands/config.d.ts.map +1 -0
  18. package/dist/commands/config.js +234 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/git-diff.d.ts +10 -0
  21. package/dist/commands/git-diff.d.ts.map +1 -0
  22. package/dist/commands/git-diff.js +228 -0
  23. package/dist/commands/git-diff.js.map +1 -0
  24. package/dist/commands/git-log.d.ts +8 -0
  25. package/dist/commands/git-log.d.ts.map +1 -0
  26. package/dist/commands/git-log.js +100 -0
  27. package/dist/commands/git-log.js.map +1 -0
  28. package/dist/core/auto-commit-message.d.ts +15 -0
  29. package/dist/core/auto-commit-message.d.ts.map +1 -0
  30. package/dist/core/auto-commit-message.js +121 -0
  31. package/dist/core/auto-commit-message.js.map +1 -0
  32. package/dist/core/auto-commit.d.ts +12 -0
  33. package/dist/core/auto-commit.d.ts.map +1 -0
  34. package/dist/core/auto-commit.js +67 -0
  35. package/dist/core/auto-commit.js.map +1 -0
  36. package/dist/core/commit-message.d.ts +25 -0
  37. package/dist/core/commit-message.d.ts.map +1 -0
  38. package/dist/core/commit-message.js +127 -0
  39. package/dist/core/commit-message.js.map +1 -0
  40. package/dist/core/diff-analyzer.d.ts +23 -0
  41. package/dist/core/diff-analyzer.d.ts.map +1 -0
  42. package/dist/core/diff-analyzer.js +245 -0
  43. package/dist/core/diff-analyzer.js.map +1 -0
  44. package/dist/core/git.d.ts +50 -0
  45. package/dist/core/git.d.ts.map +1 -0
  46. package/dist/core/git.js +152 -0
  47. package/dist/core/git.js.map +1 -0
  48. package/dist/core/resolve-model.d.ts +18 -0
  49. package/dist/core/resolve-model.d.ts.map +1 -0
  50. package/dist/core/resolve-model.js +33 -0
  51. package/dist/core/resolve-model.js.map +1 -0
  52. package/dist/index.d.ts +8 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +61 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/tui/hunk-review.d.ts +49 -0
  57. package/dist/tui/hunk-review.d.ts.map +1 -0
  58. package/dist/tui/hunk-review.js +300 -0
  59. package/dist/tui/hunk-review.js.map +1 -0
  60. package/dist/types.d.ts +23 -0
  61. package/dist/types.d.ts.map +1 -0
  62. package/dist/types.js +5 -0
  63. package/dist/types.js.map +1 -0
  64. package/dist/utils/footer-manager.d.ts +68 -0
  65. package/dist/utils/footer-manager.d.ts.map +1 -0
  66. package/dist/utils/footer-manager.js +138 -0
  67. package/dist/utils/footer-manager.js.map +1 -0
  68. package/dist/utils/lang.d.ts +12 -0
  69. package/dist/utils/lang.d.ts.map +1 -0
  70. package/dist/utils/lang.js +16 -0
  71. package/dist/utils/lang.js.map +1 -0
  72. package/dist/utils/settings.d.ts +47 -0
  73. package/dist/utils/settings.d.ts.map +1 -0
  74. package/dist/utils/settings.js +151 -0
  75. package/dist/utils/settings.js.map +1 -0
  76. package/package.json +60 -0
@@ -0,0 +1,197 @@
1
+ /**
2
+ * /git-branch command
3
+ *
4
+ * Manage git branches: list, switch, create, and delete.
5
+ */
6
+ import { createAndSwitchBranch, deleteBranch, getBranches, getCurrentBranch, isGitRepository, switchBranch, } from "../core/git.js";
7
+ import { isJapanese } from "../utils/lang.js";
8
+ import { getSettings } from "../utils/settings.js";
9
+ export async function handleBranch(pi, ctx, args) {
10
+ if (!ctx.hasUI) {
11
+ return;
12
+ }
13
+ const lang = getSettings(ctx.cwd).lang ?? "en";
14
+ const ja = isJapanese(lang);
15
+ if (!(await isGitRepository(pi, ctx.cwd))) {
16
+ ctx.ui.notify(ja ? "Gitリポジトリではありません" : "Not a git repository", "warning");
17
+ return;
18
+ }
19
+ const tokens = args.trim().split(/\s+/).filter(Boolean);
20
+ // Parse flags
21
+ let createNew = false;
22
+ let deleteFlag = false;
23
+ let listOnly = false;
24
+ let help = false;
25
+ const positional = [];
26
+ for (const token of tokens) {
27
+ if (token === "-c" || token === "--create")
28
+ createNew = true;
29
+ else if (token === "-d" || token === "--delete")
30
+ deleteFlag = true;
31
+ else if (token === "--list" || token === "-l")
32
+ listOnly = true;
33
+ else if (token === "--help" || token === "-h")
34
+ help = true;
35
+ else
36
+ positional.push(token);
37
+ }
38
+ if (help) {
39
+ const lines = ja
40
+ ? [
41
+ "/git-branch [<branch>] [-c|--create] [-d|--delete] [--list] [--help]",
42
+ "",
43
+ "ブランチを管理します。",
44
+ "",
45
+ "引数:",
46
+ " <branch> 切り替えるブランチ名",
47
+ "",
48
+ "フラグ:",
49
+ " -c, --create 新しいブランチを作成して切り替え",
50
+ " -d, --delete ブランチを削除(マージ済みのみ)",
51
+ " --list, -l ブランチ一覧を表示",
52
+ " --help, -h このヘルプを表示",
53
+ "",
54
+ "引数を省略すると、ブランチ一覧を表示します。",
55
+ ]
56
+ : [
57
+ "/git-branch [<branch>] [-c|--create] [-d|--delete] [--list] [--help]",
58
+ "",
59
+ "Manage git branches.",
60
+ "",
61
+ "Arguments:",
62
+ " <branch> Branch name to switch to",
63
+ "",
64
+ "Flags:",
65
+ " -c, --create Create a new branch and switch to it",
66
+ " -d, --delete Delete a branch (merged only)",
67
+ " --list, -l List all branches",
68
+ " --help, -h Show this help message",
69
+ "",
70
+ "Without arguments, lists all branches.",
71
+ ];
72
+ ctx.ui.notify(lines.join("\n"), "info");
73
+ return;
74
+ }
75
+ // List branches if no branch specified or --list flag
76
+ if (listOnly || (positional.length === 0 && !createNew && !deleteFlag)) {
77
+ await listBranches(pi, ctx, ja);
78
+ return;
79
+ }
80
+ const branchName = positional[0];
81
+ if (deleteFlag) {
82
+ // Delete branch
83
+ await handleDeleteBranch(pi, ctx, branchName, ja);
84
+ }
85
+ else if (createNew) {
86
+ // Create and switch to new branch
87
+ const result = await createAndSwitchBranch(pi, branchName, ctx.cwd);
88
+ if (result.success) {
89
+ ctx.ui.notify(ja
90
+ ? `新しいブランチ '${branchName}' を作成して切り替えました`
91
+ : `Created and switched to new branch '${branchName}'`, "info");
92
+ }
93
+ else {
94
+ ctx.ui.notify(ja
95
+ ? `ブランチの作成に失敗しました: ${result.message}`
96
+ : `Failed to create branch: ${result.message}`, "error");
97
+ }
98
+ }
99
+ else {
100
+ // Switch to existing branch
101
+ const result = await switchBranch(pi, branchName, ctx.cwd);
102
+ if (result.success) {
103
+ ctx.ui.notify(ja
104
+ ? `ブランチ '${branchName}' に切り替えました`
105
+ : `Switched to branch '${branchName}'`, "info");
106
+ }
107
+ else {
108
+ ctx.ui.notify(ja
109
+ ? `ブランチの切り替えに失敗しました: ${result.message}`
110
+ : `Failed to switch branch: ${result.message}`, "error");
111
+ }
112
+ }
113
+ }
114
+ async function handleDeleteBranch(pi, ctx, branchName, ja) {
115
+ // Check if trying to delete current branch
116
+ try {
117
+ const currentBranch = await getCurrentBranch(pi, ctx.cwd);
118
+ if (currentBranch === branchName) {
119
+ ctx.ui.notify(ja
120
+ ? `現在のブランチ '${branchName}' は削除できません。まず他のブランチに切り替えてください`
121
+ : `Cannot delete the current branch '${branchName}'. Please switch to another branch first`, "warning");
122
+ return;
123
+ }
124
+ }
125
+ catch (error) {
126
+ ctx.ui.notify(ja
127
+ ? `現在のブランチの取得に失敗しました: ${error instanceof Error ? error.message : String(error)}`
128
+ : `Failed to get current branch: ${error instanceof Error ? error.message : String(error)}`, "error");
129
+ return;
130
+ }
131
+ // Confirm deletion
132
+ const confirmTitle = ja ? "ブランチ削除の確認" : "Confirm Branch Deletion";
133
+ const confirmMessage = ja
134
+ ? `ブランチ '${branchName}' を削除してもよろしいですか?`
135
+ : `Are you sure you want to delete branch '${branchName}'?`;
136
+ const confirmed = await ctx.ui.confirm(confirmTitle, confirmMessage);
137
+ if (!confirmed) {
138
+ ctx.ui.notify(ja ? "削除をキャンセルしました" : "Deletion cancelled", "info");
139
+ return;
140
+ }
141
+ // Delete branch
142
+ const result = await deleteBranch(pi, branchName, ctx.cwd);
143
+ if (result.success) {
144
+ ctx.ui.notify(ja
145
+ ? `ブランチ '${branchName}' を削除しました`
146
+ : `Deleted branch '${branchName}'`, "info");
147
+ }
148
+ else {
149
+ ctx.ui.notify(ja
150
+ ? `ブランチの削除に失敗しました: ${result.message}`
151
+ : `Failed to delete branch: ${result.message}`, "error");
152
+ }
153
+ }
154
+ async function listBranches(pi, ctx, ja) {
155
+ try {
156
+ const currentBranch = await getCurrentBranch(pi, ctx.cwd);
157
+ const branches = await getBranches(pi, ctx.cwd);
158
+ const localBranches = branches.filter((b) => !b.isRemote);
159
+ const remoteBranches = branches.filter((b) => b.isRemote);
160
+ const lines = [];
161
+ if (ja) {
162
+ lines.push("ローカルブランチ:");
163
+ for (const branch of localBranches) {
164
+ const marker = branch.name === currentBranch ? "* " : " ";
165
+ lines.push(`${marker}${branch.name}`);
166
+ }
167
+ if (remoteBranches.length > 0) {
168
+ lines.push("");
169
+ lines.push("リモートブランチ:");
170
+ for (const branch of remoteBranches) {
171
+ lines.push(` ${branch.name}`);
172
+ }
173
+ }
174
+ }
175
+ else {
176
+ lines.push("Local branches:");
177
+ for (const branch of localBranches) {
178
+ const marker = branch.name === currentBranch ? "* " : " ";
179
+ lines.push(`${marker}${branch.name}`);
180
+ }
181
+ if (remoteBranches.length > 0) {
182
+ lines.push("");
183
+ lines.push("Remote branches:");
184
+ for (const branch of remoteBranches) {
185
+ lines.push(` ${branch.name}`);
186
+ }
187
+ }
188
+ }
189
+ ctx.ui.notify(lines.join("\n"), "info");
190
+ }
191
+ catch (error) {
192
+ ctx.ui.notify(ja
193
+ ? `ブランチ一覧の取得に失敗しました: ${error instanceof Error ? error.message : String(error)}`
194
+ : `Failed to list branches: ${error instanceof Error ? error.message : String(error)}`, "error");
195
+ }
196
+ }
197
+ //# sourceMappingURL=branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/commands/branch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * /git-config command
3
+ *
4
+ * Get, set, and list pi-git configuration values.
5
+ * Supports both global (~/.config/pi-git/settings.json)
6
+ * and local (<repo>/.pi-git/settings.json) scopes.
7
+ */
8
+ import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
9
+ export declare function handleConfig(_pi: ExtensionAPI, ctx: ExtensionCommandContext, args: string): Promise<void>;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAyCzC,wBAAsB,YAAY,CAChC,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAyOf"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * /git-config command
3
+ *
4
+ * Get, set, and list pi-git configuration values.
5
+ * Supports both global (~/.config/pi-git/settings.json)
6
+ * and local (<repo>/.pi-git/settings.json) scopes.
7
+ */
8
+ import { existsSync } from "node:fs";
9
+ import { isJapanese } from "../utils/lang.js";
10
+ import { DEFAULT_SETTINGS, GLOBAL_SETTINGS_FILE, getLocalSettingsPath, getSettings, getSettingWithOrigin, saveGlobalSettings, saveLocalSettings, VALID_KEYS_META, } from "../utils/settings.js";
11
+ function isValidKey(key) {
12
+ return VALID_KEYS_META.some((meta) => meta.key === key);
13
+ }
14
+ function validateValue(key, value) {
15
+ switch (key) {
16
+ case "lang":
17
+ if (value !== "en" && value !== "ja") {
18
+ throw new Error(`Invalid lang: ${value}. Must be "en" or "ja".`);
19
+ }
20
+ return value;
21
+ case "auto_agg_commit":
22
+ if (value !== "true" && value !== "false") {
23
+ throw new Error(`Invalid auto_agg_commit: ${value}. Must be "true" or "false".`);
24
+ }
25
+ return value === "true";
26
+ case "analysis_model":
27
+ // Model ID is a free-form string (e.g., "anthropic/claude-3-5-sonnet-20241022")
28
+ return value;
29
+ default:
30
+ throw new Error(`Unknown key: ${key}`);
31
+ }
32
+ }
33
+ export async function handleConfig(_pi, ctx, args) {
34
+ if (!ctx.hasUI) {
35
+ return;
36
+ }
37
+ const lang = getSettings(ctx.cwd).lang ?? "en";
38
+ const ja = isJapanese(lang);
39
+ const tokens = args.trim().split(/\s+/).filter(Boolean);
40
+ // Parse flags
41
+ let showGlobal = false;
42
+ let list = false;
43
+ let showOrigin = false;
44
+ let keys = false;
45
+ let models = false;
46
+ let help = false;
47
+ const positional = [];
48
+ for (const token of tokens) {
49
+ if (token === "--global")
50
+ showGlobal = true;
51
+ else if (token === "--list")
52
+ list = true;
53
+ else if (token === "--show-origin")
54
+ showOrigin = true;
55
+ else if (token === "--keys")
56
+ keys = true;
57
+ else if (token === "--models")
58
+ models = true;
59
+ else if (token === "--help")
60
+ help = true;
61
+ else
62
+ positional.push(token);
63
+ }
64
+ if (help) {
65
+ const lines = ja
66
+ ? [
67
+ "/git-config <key> [value] [--global] [--list] [--show-origin] [--keys] [--models] [--help]",
68
+ "",
69
+ "サブコマンド:",
70
+ " <key> 設定値を取得",
71
+ " <key> <value> 設定値を変更",
72
+ "",
73
+ "フラグ:",
74
+ " --global グローバル設定に対して操作",
75
+ " --list すべての設定値を一覧表示",
76
+ " --show-origin 値の取得元(default/global/local)を表示",
77
+ " --keys 有効なキー一覧と説明を表示",
78
+ " --models analysis_model に設定可能なモデル一覧を表示",
79
+ " --help このヘルプを表示",
80
+ ]
81
+ : [
82
+ "/git-config <key> [value] [--global] [--list] [--show-origin] [--keys] [--models] [--help]",
83
+ "",
84
+ "Subcommands:",
85
+ " <key> Get the value of a setting",
86
+ " <key> <value> Set the value of a setting",
87
+ "",
88
+ "Flags:",
89
+ " --global Operate on global settings",
90
+ " --list List all configured values",
91
+ " --show-origin Show value origin (default/global/local)",
92
+ " --keys Show valid keys with descriptions",
93
+ " --models Show available models for analysis_model",
94
+ " --help Show this help message",
95
+ ];
96
+ ctx.ui.notify(lines.join("\n"), "info");
97
+ return;
98
+ }
99
+ if (keys) {
100
+ const lines = VALID_KEYS_META.map((meta) => {
101
+ const desc = ja ? meta.description_ja : meta.description_en;
102
+ let line = `${meta.key} (${meta.type}) — ${desc}`;
103
+ if (meta.valid_values) {
104
+ line += ` [${meta.valid_values}]`;
105
+ }
106
+ return line;
107
+ });
108
+ ctx.ui.notify(lines.join("\n"), "info");
109
+ return;
110
+ }
111
+ if (models) {
112
+ const availableModels = ctx.modelRegistry.getAvailable();
113
+ if (availableModels.length === 0) {
114
+ ctx.ui.notify(ja ? "利用可能なモデルが見つかりません" : "No available models found", "warning");
115
+ return;
116
+ }
117
+ const currentModel = getSettings(ctx.cwd).analysis_model;
118
+ const lines = availableModels.map((model) => {
119
+ const modelId = `${model.provider}/${model.id}`;
120
+ const isCurrent = modelId === currentModel;
121
+ const marker = isCurrent ? " (current)" : "";
122
+ return `${modelId}${marker}`;
123
+ });
124
+ const header = ja
125
+ ? "analysis_model に設定可能なモデル一覧:"
126
+ : "Available models for analysis_model:";
127
+ ctx.ui.notify(`${header}\n${lines.join("\n")}`, "info");
128
+ return;
129
+ }
130
+ if (list) {
131
+ const settings = getSettings(ctx.cwd);
132
+ const entries = [];
133
+ for (const meta of VALID_KEYS_META) {
134
+ const key = meta.key;
135
+ const value = settings[key];
136
+ if (value === undefined)
137
+ continue;
138
+ if (showOrigin) {
139
+ const { origin } = getSettingWithOrigin(key, ctx.cwd);
140
+ entries.push(`${key}=${value} (${origin})`);
141
+ }
142
+ else {
143
+ entries.push(`${key}=${value}`);
144
+ }
145
+ }
146
+ if (entries.length === 0) {
147
+ ctx.ui.notify(ja ? "設定はありません" : "No settings configured", "info");
148
+ }
149
+ else {
150
+ ctx.ui.notify(entries.join("\n"), "info");
151
+ }
152
+ return;
153
+ }
154
+ if (positional.length === 0) {
155
+ ctx.ui.notify(ja
156
+ ? "使用方法: /git-config <key> [value] [--global] [--list] [--show-origin] [--keys]"
157
+ : "Usage: /git-config <key> [value] [--global] [--list] [--show-origin] [--keys]", "warning");
158
+ return;
159
+ }
160
+ const key = positional[0];
161
+ if (!isValidKey(key)) {
162
+ ctx.ui.notify(ja
163
+ ? `[pi-git] 不明な設定キー: ${key}`
164
+ : `[pi-git] Unknown config key: ${key}`, "warning");
165
+ return;
166
+ }
167
+ if (positional.length === 1) {
168
+ // Get single value
169
+ const { value, origin } = getSettingWithOrigin(key, ctx.cwd);
170
+ if (value === undefined) {
171
+ ctx.ui.notify(ja
172
+ ? `[pi-git] ${key} は設定されていません`
173
+ : `[pi-git] ${key} is not set`, "info");
174
+ }
175
+ else {
176
+ ctx.ui.notify(showOrigin ? `${value} (${origin})` : String(value), "info");
177
+ }
178
+ return;
179
+ }
180
+ // Set value
181
+ const rawValue = positional[1];
182
+ let parsed;
183
+ try {
184
+ parsed = validateValue(key, rawValue);
185
+ }
186
+ catch (err) {
187
+ ctx.ui.notify(ja
188
+ ? `[pi-git] ${err instanceof Error ? err.message : String(err)}`
189
+ : `[pi-git] ${err instanceof Error ? err.message : String(err)}`, "warning");
190
+ return;
191
+ }
192
+ try {
193
+ if (showGlobal) {
194
+ saveGlobalSettings({ [key]: parsed });
195
+ ctx.ui.notify(ja
196
+ ? `[pi-git] ${key}=${parsed} をグローバル設定に保存しました`
197
+ : `[pi-git] Saved ${key}=${parsed} to global config`, "info");
198
+ }
199
+ else {
200
+ // Default to local when inside a git repo
201
+ const localPath = getLocalSettingsPath(ctx.cwd);
202
+ if (localPath) {
203
+ const globalExists = existsSync(GLOBAL_SETTINGS_FILE);
204
+ const localExists = existsSync(localPath);
205
+ if (!globalExists && !localExists) {
206
+ // グローバルもローカルもない場合:デフォルト値で初期化
207
+ saveLocalSettings({ ...DEFAULT_SETTINGS, [key]: parsed }, ctx.cwd);
208
+ ctx.ui.notify(ja
209
+ ? `[pi-git] ${key}=${parsed} をローカル設定に保存しました(デフォルト値で初期化)`
210
+ : `[pi-git] Saved ${key}=${parsed} to local config (initialized with defaults)`, "info");
211
+ }
212
+ else {
213
+ saveLocalSettings({ [key]: parsed }, ctx.cwd);
214
+ ctx.ui.notify(ja
215
+ ? `[pi-git] ${key}=${parsed} をローカル設定に保存しました`
216
+ : `[pi-git] Saved ${key}=${parsed} to local config`, "info");
217
+ }
218
+ }
219
+ else {
220
+ // Fallback to global when not in a repo
221
+ saveGlobalSettings({ [key]: parsed });
222
+ ctx.ui.notify(ja
223
+ ? `[pi-git] ${key}=${parsed} をグローバル設定に保存しました(Gitリポジトリ外のため)`
224
+ : `[pi-git] Saved ${key}=${parsed} to global config (outside git repo)`, "info");
225
+ }
226
+ }
227
+ }
228
+ catch (err) {
229
+ ctx.ui.notify(ja
230
+ ? `[pi-git] 保存に失敗しました: ${err instanceof Error ? err.message : String(err)}`
231
+ : `[pi-git] Failed to save: ${err instanceof Error ? err.message : String(err)}`, "error");
232
+ }
233
+ }
234
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * /git-diff command
3
+ *
4
+ * Interactive diff review with sequential hunk approval.
5
+ * Allows reviewing AI-generated hunks, viewing diffs, editing messages,
6
+ * and committing approved hunks one at a time.
7
+ */
8
+ import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
9
+ export declare function handleGitDiff(pi: ExtensionAPI, ctx: ExtensionCommandContext, args: string): Promise<void>;
10
+ //# sourceMappingURL=git-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../../src/commands/git-diff.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAoDzC,wBAAsB,aAAa,CACjC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CA+Qf"}