@335g/pi-git 0.0.2 → 0.0.4

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 (75) hide show
  1. package/README.ja.md +3 -30
  2. package/README.md +3 -30
  3. package/dist/commands/agg-commit.d.ts.map +1 -1
  4. package/dist/commands/agg-commit.js +27 -38
  5. package/dist/commands/agg-commit.js.map +1 -1
  6. package/dist/commands/auto-agg-commit.d.ts.map +1 -1
  7. package/dist/commands/auto-agg-commit.js +11 -68
  8. package/dist/commands/auto-agg-commit.js.map +1 -1
  9. package/dist/commands/config.d.ts +1 -1
  10. package/dist/commands/config.d.ts.map +1 -1
  11. package/dist/commands/config.js +55 -70
  12. package/dist/commands/config.js.map +1 -1
  13. package/dist/commands/diagnostics.d.ts +12 -0
  14. package/dist/commands/diagnostics.d.ts.map +1 -0
  15. package/dist/commands/diagnostics.js +59 -0
  16. package/dist/commands/diagnostics.js.map +1 -0
  17. package/dist/core/auto-commit-message.d.ts +2 -2
  18. package/dist/core/auto-commit-message.d.ts.map +1 -1
  19. package/dist/core/auto-commit-message.js +239 -58
  20. package/dist/core/auto-commit-message.js.map +1 -1
  21. package/dist/core/auto-commit.d.ts.map +1 -1
  22. package/dist/core/auto-commit.js +4 -8
  23. package/dist/core/auto-commit.js.map +1 -1
  24. package/dist/core/commit-message.d.ts.map +1 -1
  25. package/dist/core/commit-message.js +3 -0
  26. package/dist/core/commit-message.js.map +1 -1
  27. package/dist/core/diff-analyzer.d.ts +1 -9
  28. package/dist/core/diff-analyzer.d.ts.map +1 -1
  29. package/dist/core/diff-analyzer.js +75 -75
  30. package/dist/core/diff-analyzer.js.map +1 -1
  31. package/dist/core/git.d.ts +5 -28
  32. package/dist/core/git.d.ts.map +1 -1
  33. package/dist/core/git.js +19 -68
  34. package/dist/core/git.js.map +1 -1
  35. package/dist/i18n/messages.d.ts +107 -0
  36. package/dist/i18n/messages.d.ts.map +1 -0
  37. package/dist/i18n/messages.js +135 -0
  38. package/dist/i18n/messages.js.map +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +18 -22
  41. package/dist/index.js.map +1 -1
  42. package/dist/types.d.ts +0 -2
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/utils/diagnostics.d.ts +33 -0
  45. package/dist/utils/diagnostics.d.ts.map +1 -0
  46. package/dist/utils/diagnostics.js +32 -0
  47. package/dist/utils/diagnostics.js.map +1 -0
  48. package/dist/utils/footer-manager.d.ts.map +1 -1
  49. package/dist/utils/footer-manager.js +6 -9
  50. package/dist/utils/footer-manager.js.map +1 -1
  51. package/dist/utils/lang.d.ts +13 -7
  52. package/dist/utils/lang.d.ts.map +1 -1
  53. package/dist/utils/lang.js +21 -10
  54. package/dist/utils/lang.js.map +1 -1
  55. package/dist/utils/settings.d.ts +13 -5
  56. package/dist/utils/settings.d.ts.map +1 -1
  57. package/dist/utils/settings.js +65 -13
  58. package/dist/utils/settings.js.map +1 -1
  59. package/package.json +6 -2
  60. package/dist/commands/branch.d.ts +0 -8
  61. package/dist/commands/branch.d.ts.map +0 -1
  62. package/dist/commands/branch.js +0 -197
  63. package/dist/commands/branch.js.map +0 -1
  64. package/dist/commands/git-diff.d.ts +0 -10
  65. package/dist/commands/git-diff.d.ts.map +0 -1
  66. package/dist/commands/git-diff.js +0 -228
  67. package/dist/commands/git-diff.js.map +0 -1
  68. package/dist/commands/git-log.d.ts +0 -8
  69. package/dist/commands/git-log.d.ts.map +0 -1
  70. package/dist/commands/git-log.js +0 -100
  71. package/dist/commands/git-log.js.map +0 -1
  72. package/dist/tui/hunk-review.d.ts +0 -51
  73. package/dist/tui/hunk-review.d.ts.map +0 -1
  74. package/dist/tui/hunk-review.js +0 -296
  75. package/dist/tui/hunk-review.js.map +0 -1
@@ -5,98 +5,102 @@
5
5
  * logical hunks with Conventional Commits messages.
6
6
  */
7
7
  import { completeSimple } from "@earendil-works/pi-ai";
8
+ import { diagIncr } from "../utils/diagnostics.js";
8
9
  import { footerManager } from "../utils/footer-manager.js";
9
- import { isJapanese } from "../utils/lang.js";
10
+ import { t } from "../utils/lang.js";
10
11
  import { getLanguage } from "../utils/settings.js";
11
12
  import { sanitizeHunk } from "./commit-message.js";
12
13
  import { resolveModel } from "./resolve-model.js";
13
14
  /** Maximum diff bytes to send to the AI (truncated if larger) */
14
15
  const MAX_DIFF_BYTES = 30_000;
15
- /** Files threshold: skip AI analysis when ≤ this many files changed */
16
- const FAST_PATH_FILE_LIMIT = 5;
17
16
  /** Max files per AI analysis batch (split large diffs for progress visibility) */
18
17
  const FILES_PER_BATCH = 8;
19
18
  /** Maximum output tokens for the AI completion (hunk JSON is small) */
20
19
  const MAX_OUTPUT_TOKENS = 1024;
21
20
  function getSystemPrompt(lang) {
22
- if (isJapanese(lang)) {
23
- return `git diffを論理的なhunkに分割してください。
24
-
25
- ルール:
26
- - 各hunk = 単一の論理的な変更(例:「機能Xを追加」「バグYを修正」)
27
- - 関連するファイル変更はグループ化する
28
- - 1ファイルに独立した複数の変更がある場合は分割する
29
-
30
- 以下のJSON配列のみを返してください:
31
- [
32
- {"files": ["path/to/file1.ts", "path/to/file2.ts"], "message": "feat: 機能を追加"},
33
- {"files": ["path/to/file3.ts"], "message": "fix: バグを修正"}
34
- ]
35
-
36
- メッセージ形式: Conventional Commits (feat, fix, docs, style, refactor, test, chore)。
37
- サブジェクトは50文字以内。日本語で記述。`;
38
- }
39
- return `Split git diff into logical hunks.
40
-
41
- Rules:
42
- - Each hunk = single logical change (e.g., "add feature X", "fix bug Y")
43
- - Group related file changes together
44
- - Split independent changes within one file into separate hunks
45
-
46
- Return ONLY a JSON array:
47
- [
48
- {"files": ["path/to/file1.ts", "path/to/file2.ts"], "message": "feat(scope): add feature"},
49
- {"files": ["path/to/file3.ts"], "message": "fix: resolve null check"}
50
- ]
51
-
52
- Message format: Conventional Commits (feat, fix, docs, style, refactor, test, chore).
53
- Keep subject under 50 chars. Use imperative mood.`;
21
+ return t(lang, "diffAnalyzer.systemPrompt");
54
22
  }
55
23
  function buildPrompt(diff, lang) {
56
- if (isJapanese(lang)) {
57
- return `以下のgit diffを分析し、論理的なhunkに分割してください:
58
-
59
- \`\`\`diff
60
- ${diff}
61
- \`\`\`
62
-
63
- 指定された形式のJSON配列のみを返してください。`;
24
+ const examples = t(lang, "diffAnalyzer.examples");
25
+ return t(lang, "diffAnalyzer.buildPrompt", { diff, examples });
26
+ }
27
+ /** Pattern to extract {files, message} pairs from broken JSON */
28
+ const HUNK_PAIR_PATTERN = /\{\s*"files"\s*:\s*\[([^\]]*)\]\s*,?\s*"message"\s*:\s*"((?:[^"\\]|\\.)*)"\s*\}/gs;
29
+ /** Try JSON.parse and return typed Hunks, or null on any failure */
30
+ function tryParseHunkJSON(text) {
31
+ try {
32
+ const parsed = JSON.parse(text);
33
+ if (!Array.isArray(parsed))
34
+ return null;
35
+ return parsed
36
+ .map((item) => {
37
+ if (typeof item !== "object" || item === null)
38
+ return null;
39
+ const hunk = item;
40
+ const files = Array.isArray(hunk.files)
41
+ ? hunk.files.filter((f) => typeof f === "string")
42
+ : [];
43
+ const message = typeof hunk.message === "string"
44
+ ? hunk.message
45
+ : "chore: update files";
46
+ return { files, message };
47
+ })
48
+ .filter((h) => h !== null);
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ /** Regex-based extraction of hunk pairs from broken JSON */
55
+ function tryRegexExtractHunks(text) {
56
+ const hunks = [];
57
+ const pattern = new RegExp(HUNK_PAIR_PATTERN.source, "gs");
58
+ let match;
59
+ while ((match = pattern.exec(text)) !== null) {
60
+ const filesStr = match[1];
61
+ const message = match[2].replace(/\\"/g, '"');
62
+ // Parse file paths from the captured array segment
63
+ const fileMatches = filesStr.match(/"((?:[^"\\]|\\.)*)"/g);
64
+ const files = fileMatches
65
+ ? fileMatches.map((f) => f.slice(1, -1).replace(/\\"/g, '"'))
66
+ : [];
67
+ if (files.length > 0 && message.length > 0) {
68
+ hunks.push({ files, message });
69
+ }
64
70
  }
65
- return `Here is the git diff to analyze. Split it into logical hunks:
66
-
67
- \`\`\`diff
68
- ${diff}
69
- \`\`\`
70
-
71
- Respond with ONLY a JSON array of hunks as specified.`;
71
+ return hunks;
72
72
  }
73
73
  function parseHunks(text) {
74
- // Extract JSON from the response (handle code fences)
75
74
  let jsonText = text.trim();
75
+ // Layer 1: Extract JSON from code fences
76
76
  const codeFenceMatch = jsonText.match(/```(?:json)?\s*([\s\S]*?)```/);
77
77
  if (codeFenceMatch) {
78
78
  jsonText = codeFenceMatch[1].trim();
79
79
  }
80
- try {
81
- const parsed = JSON.parse(jsonText);
82
- if (!Array.isArray(parsed)) {
83
- throw new Error("Response is not an array");
80
+ // Layer 2: Direct JSON.parse
81
+ const direct = tryParseHunkJSON(jsonText);
82
+ if (direct) {
83
+ diagIncr("parseLayer2_directJSON");
84
+ return direct;
85
+ }
86
+ // Layer 3: Strip trailing non-JSON text and retry
87
+ const lastBracket = jsonText.lastIndexOf("]");
88
+ if (lastBracket > 0) {
89
+ const trimmed = jsonText.substring(0, lastBracket + 1).trim();
90
+ const trimmedResult = tryParseHunkJSON(trimmed);
91
+ if (trimmedResult) {
92
+ diagIncr("parseLayer3_trailingStrip");
93
+ return trimmedResult;
84
94
  }
85
- return parsed.map((item) => {
86
- if (typeof item !== "object" || item === null) {
87
- throw new Error("Invalid hunk item");
88
- }
89
- const hunk = item;
90
- const files = Array.isArray(hunk.files)
91
- ? hunk.files.filter((f) => typeof f === "string")
92
- : [];
93
- const message = typeof hunk.message === "string" ? hunk.message : "chore: update files";
94
- return { files, message };
95
- });
96
95
  }
97
- catch {
98
- return [];
96
+ // Layer 4: Regex pair extraction from malformed JSON
97
+ const regexResult = tryRegexExtractHunks(jsonText);
98
+ if (regexResult.length > 0) {
99
+ diagIncr("parseLayer4_regexExtract");
100
+ return regexResult;
99
101
  }
102
+ diagIncr("parseFallback_fileBased");
103
+ return [];
100
104
  }
101
105
  function fallbackFileBasedHunks(diff) {
102
106
  // Parse diff to extract file paths
@@ -244,10 +248,6 @@ async function callAIForDiff(model, auth, ctx, diff, langOverride) {
244
248
  export async function analyzeDiff(_pi, ctx, diff, langOverride) {
245
249
  const fileCount = countFilesInDiff(diff);
246
250
  const lang = langOverride ?? getLanguage(ctx.cwd);
247
- // Fast path: few files → instant fallback, skip AI call entirely
248
- if (fileCount <= FAST_PATH_FILE_LIMIT) {
249
- return fallbackFileBasedHunks(diff);
250
- }
251
251
  const model = resolveModel(ctx);
252
252
  if (!model) {
253
253
  return fallbackFileBasedHunks(diff);
@@ -261,7 +261,7 @@ export async function analyzeDiff(_pi, ctx, diff, langOverride) {
261
261
  const batches = splitDiffIntoBatches(diff, FILES_PER_BATCH);
262
262
  const allHunks = [];
263
263
  for (let i = 0; i < batches.length; i++) {
264
- void footerManager.setCommitProgress(i + 1, batches.length);
264
+ await footerManager.setCommitProgress(i + 1, batches.length);
265
265
  try {
266
266
  const hunks = await callAIForDiff(model, auth, ctx, batches[i], lang);
267
267
  if (hunks.length > 0) {
@@ -315,7 +315,7 @@ export function processHunks(hunks) {
315
315
  /**
316
316
  * Split a full diff into per-file diff line arrays, keyed by file path.
317
317
  */
318
- export function splitDiffByFile(fullDiff) {
318
+ function splitDiffByFile(fullDiff) {
319
319
  const result = new Map();
320
320
  const lines = fullDiff.split("\n");
321
321
  let currentFile = null;
@@ -343,7 +343,7 @@ export function splitDiffByFile(fullDiff) {
343
343
  /**
344
344
  * Parse addition/deletion counts for each file from a full diff.
345
345
  */
346
- export function parseDiffStats(fullDiff) {
346
+ function parseDiffStats(fullDiff) {
347
347
  const result = new Map();
348
348
  const lines = fullDiff.split("\n");
349
349
  let currentFile = null;
@@ -1 +1 @@
1
- {"version":3,"file":"diff-analyzer.js","sourceRoot":"","sources":["../../src/core/diff-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-analyzer.js","sourceRoot":"","sources":["../../src/core/diff-analyzer.ts"],"names":[],"mappings":"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"}
@@ -4,47 +4,24 @@
4
4
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
5
5
  export declare function isGitRepository(pi: ExtensionAPI, cwd?: string): Promise<boolean>;
6
6
  export declare function getStatus(pi: ExtensionAPI, cwd?: string): Promise<string>;
7
+ /** Check for unmerged paths (merge conflicts) */
8
+ export declare function hasUnmergedPaths(pi: ExtensionAPI, cwd?: string): Promise<boolean>;
7
9
  export declare function hasChanges(pi: ExtensionAPI, cwd?: string): Promise<boolean>;
8
10
  export declare function stageFiles(pi: ExtensionAPI, files: string[], cwd?: string): Promise<void>;
9
11
  export declare function resetStaging(pi: ExtensionAPI, cwd?: string): Promise<void>;
10
- export declare function getCurrentBranch(pi: ExtensionAPI, cwd?: string): Promise<string>;
11
- export declare function getBranches(pi: ExtensionAPI, cwd?: string): Promise<{
12
- name: string;
13
- isRemote: boolean;
14
- }[]>;
15
- export declare function switchBranch(pi: ExtensionAPI, branch: string, cwd?: string): Promise<{
16
- success: boolean;
17
- message: string;
18
- }>;
19
- export declare function createAndSwitchBranch(pi: ExtensionAPI, branch: string, cwd?: string): Promise<{
20
- success: boolean;
21
- message: string;
22
- }>;
23
- export declare function deleteBranch(pi: ExtensionAPI, branch: string, cwd?: string): Promise<{
24
- success: boolean;
25
- message: string;
26
- }>;
27
12
  /**
28
13
  * Check that the working directory is a git repository with pending changes.
29
14
  * Returns null if ready, or a failure reason string.
30
15
  */
31
- export declare function ensureReadyToCommit(pi: ExtensionAPI, cwd?: string): Promise<"not_git_repo" | "no_changes" | null>;
32
- /**
33
- * Get git log with specified options
34
- */
35
- export declare function getLog(pi: ExtensionAPI, options: {
36
- maxCount?: number | "all";
37
- all?: boolean;
38
- graph?: boolean;
39
- }, cwd?: string): Promise<string>;
16
+ export declare function ensureReadyToCommit(pi: ExtensionAPI, cwd?: string): Promise<"not_git_repo" | "merge_conflict" | "no_changes" | null>;
40
17
  /**
41
18
  * Collect the full working tree diff by stashing changes (including untracked
42
19
  * files), capturing the stash diff, and popping the stash to restore the
43
20
  * working tree. This "freezes" the diff so concurrent edits do not affect
44
21
  * analysis.
45
22
  *
46
- * @returns The diff string, or `null` if the stash operation failed.
47
- * An empty string means there are no effective changes.
23
+ * @returns The diff string, or `null` if the stash operation failed
24
+ * (push or show). An empty string means there are no effective changes.
48
25
  */
49
26
  export declare function collectDiff(pi: ExtensionAPI, cwd?: string): Promise<string | null>;
50
27
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAapE,wBAAsB,eAAe,CACnC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAgBhD;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhD;AAED,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAUhD;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAUhD;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,GAAG,YAAY,GAAG,IAAI,CAAC,CAQ/C;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAapE,wBAAsB,eAAe,CACnC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAYjB;AAKD,iDAAiD;AACjD,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,GAAG,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAAC,CAWlE;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB"}
package/dist/core/git.js CHANGED
@@ -24,6 +24,16 @@ export async function getStatus(pi, cwd) {
24
24
  }
25
25
  return stdout;
26
26
  }
27
+ /** Unmerged path status codes in git status --porcelain XY format */
28
+ const UNMERGED_CODES = ["DD", "AU", "UD", "UA", "DU", "AA", "UU"];
29
+ /** Check for unmerged paths (merge conflicts) */
30
+ export async function hasUnmergedPaths(pi, cwd) {
31
+ const status = await getStatus(pi, cwd);
32
+ return status.split("\n").some((line) => {
33
+ const xy = line.substring(0, 2);
34
+ return UNMERGED_CODES.includes(xy);
35
+ });
36
+ }
27
37
  export async function hasChanges(pi, cwd) {
28
38
  const status = await getStatus(pi, cwd);
29
39
  return status.trim().length > 0;
@@ -42,51 +52,6 @@ export async function resetStaging(pi, cwd) {
42
52
  throw new GitError("Failed to reset staging area", "git reset", code);
43
53
  }
44
54
  }
45
- export async function getCurrentBranch(pi, cwd) {
46
- const { stdout, code } = await pi.exec("git", ["branch", "--show-current"], {
47
- cwd,
48
- });
49
- if (code !== 0) {
50
- throw new GitError("Failed to get current branch", "git branch --show-current", code);
51
- }
52
- return stdout.trim();
53
- }
54
- export async function getBranches(pi, cwd) {
55
- const { stdout, code } = await pi.exec("git", ["branch", "-a", "--format=%(refname:short)"], { cwd });
56
- if (code !== 0) {
57
- throw new GitError("Failed to get branches", "git branch -a", code);
58
- }
59
- return stdout
60
- .split("\n")
61
- .filter((line) => line.trim())
62
- .map((name) => ({
63
- name: name.trim(),
64
- isRemote: name.startsWith("origin/"),
65
- }));
66
- }
67
- export async function switchBranch(pi, branch, cwd) {
68
- const { stdout, stderr, code } = await pi.exec("git", ["switch", branch], {
69
- cwd,
70
- });
71
- if (code !== 0) {
72
- return { success: false, message: stderr || stdout };
73
- }
74
- return { success: true, message: stdout };
75
- }
76
- export async function createAndSwitchBranch(pi, branch, cwd) {
77
- const { stdout, stderr, code } = await pi.exec("git", ["switch", "-c", branch], { cwd });
78
- if (code !== 0) {
79
- return { success: false, message: stderr || stdout };
80
- }
81
- return { success: true, message: stdout };
82
- }
83
- export async function deleteBranch(pi, branch, cwd) {
84
- const { stdout, stderr, code } = await pi.exec("git", ["branch", "-d", branch], { cwd });
85
- if (code !== 0) {
86
- return { success: false, message: stderr || stdout };
87
- }
88
- return { success: true, message: stdout };
89
- }
90
55
  /**
91
56
  * Check that the working directory is a git repository with pending changes.
92
57
  * Returns null if ready, or a failure reason string.
@@ -95,39 +60,22 @@ export async function ensureReadyToCommit(pi, cwd) {
95
60
  if (!(await isGitRepository(pi, cwd))) {
96
61
  return "not_git_repo";
97
62
  }
63
+ if (await hasUnmergedPaths(pi, cwd)) {
64
+ return "merge_conflict";
65
+ }
98
66
  if (!(await hasChanges(pi, cwd))) {
99
67
  return "no_changes";
100
68
  }
101
69
  return null;
102
70
  }
103
- /**
104
- * Get git log with specified options
105
- */
106
- export async function getLog(pi, options, cwd) {
107
- const args = ["log", "--oneline", "--decorate", "--color=always"];
108
- if (options.maxCount !== "all" && options.maxCount !== undefined) {
109
- args.push(`-n`, String(options.maxCount));
110
- }
111
- if (options.all) {
112
- args.push("--all");
113
- }
114
- if (options.graph) {
115
- args.push("--graph");
116
- }
117
- const { stdout, code } = await pi.exec("git", args, { cwd });
118
- if (code !== 0) {
119
- throw new GitError("Failed to get git log", `git ${args.join(" ")}`, code);
120
- }
121
- return stdout;
122
- }
123
71
  /**
124
72
  * Collect the full working tree diff by stashing changes (including untracked
125
73
  * files), capturing the stash diff, and popping the stash to restore the
126
74
  * working tree. This "freezes" the diff so concurrent edits do not affect
127
75
  * analysis.
128
76
  *
129
- * @returns The diff string, or `null` if the stash operation failed.
130
- * An empty string means there are no effective changes.
77
+ * @returns The diff string, or `null` if the stash operation failed
78
+ * (push or show). An empty string means there are no effective changes.
131
79
  */
132
80
  export async function collectDiff(pi, cwd) {
133
81
  const { code: stashCode } = await pi.exec("git", ["stash", "push", "-u", "-m", "pi-git"], { cwd });
@@ -136,7 +84,10 @@ export async function collectDiff(pi, cwd) {
136
84
  }
137
85
  let diff = "";
138
86
  try {
139
- const { stdout: stashDiff } = await pi.exec("git", ["stash", "show", "-p", "stash@{0}"], { cwd });
87
+ const { stdout: stashDiff, code: showCode } = await pi.exec("git", ["stash", "show", "-p", "stash@{0}"], { cwd });
88
+ if (showCode !== 0) {
89
+ return null;
90
+ }
140
91
  diff = stashDiff;
141
92
  // stash@{0}^3 contains untracked files when -u was used
142
93
  const { stdout: untrackedDiff, code: untrackedCode } = await pi.exec("git", ["diff", "HEAD", "stash@{0}^3"], { cwd });
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * i18n message catalog for pi-git.
3
+ *
4
+ * All user-facing strings live here, keyed by domain.
5
+ * The `t()` function in lang.ts resolves keys against this catalog.
6
+ *
7
+ * To add a language: add a new top-level key with the same MessageKey set.
8
+ */
9
+ export declare const messages: {
10
+ readonly en: {
11
+ readonly "footer.prepare": "{prefix} Preparing...";
12
+ readonly "footer.collectDiff": "{prefix} Collecting diff...";
13
+ readonly "footer.analyze": "{prefix} Analyzing hunks...";
14
+ readonly "footer.generateMessage": "{prefix} Generating messages...";
15
+ readonly "footer.commit": "{prefix} Committing...";
16
+ readonly "aggCommit.help": "/git-agg-commit [--lang=<lang>] [--help]\n\nOptions:\n --lang=<lang> Temporarily override language (not saved)\n --help Show this help message";
17
+ readonly "aggCommit.alreadyRunning": "git-agg-commit is already running. Please wait for it to complete.";
18
+ readonly "autoAggCommit.help": "/git-auto-agg-commit [on|off|toggle] [--help]\n\nSubcommands:\n on Enable auto git-agg-commit\n off Disable auto git-agg-commit\n toggle Toggle auto git-agg-commit\n\nFlags:\n --help Show this help message\n\nWhen called without arguments, shows the current status.";
19
+ readonly "autoAggCommit.status": "[pi-git] Auto git-agg-commit is {status}";
20
+ readonly "autoAggCommit.enabled": "enabled";
21
+ readonly "autoAggCommit.disabled": "disabled";
22
+ readonly "autoAggCommit.invalidArg": "[pi-git] Invalid argument. Use \"on\", \"off\", or \"toggle\"";
23
+ readonly "autoAggCommit.enabledLocal": "[pi-git] Auto git-agg-commit {status} (local config)";
24
+ readonly "autoAggCommit.enabledGlobal": "[pi-git] Auto git-agg-commit {status} (global config — outside git repo)";
25
+ readonly "config.help": "/git-config <key> [value] [--global] [--list] [--show-origin] [--keys] [--models] [--init] [--force] [--help]\n\nSubcommands:\n <key> Get the value of a setting\n <key> <value> Set the value of a setting\n\nFlags:\n --global Operate on global settings\n --list List all configured values\n --show-origin Show value origin (default/global/local)\n --keys Show valid keys with descriptions\n --models Show available models for analysis_model\n --init Create default pi-git.toml in the repository root\n --force Force overwrite when used with --init\n --help Show this help message";
26
+ readonly "config.noModels": "No available models found";
27
+ readonly "config.modelsHeader": "Available models for analysis_model:";
28
+ readonly "config.noSettings": "No settings configured";
29
+ readonly "config.usageHint": "Usage: /git-config <key> [value] [--global] [--list] [--show-origin] [--keys]";
30
+ readonly "config.unknownKey": "[pi-git] Unknown config key: {key}";
31
+ readonly "config.notSet": "[pi-git] {key} is not set";
32
+ readonly "config.savedToGlobal": "[pi-git] Saved {key}={value} to global config";
33
+ readonly "config.savedToLocal": "[pi-git] Saved {key}={value} to local config";
34
+ readonly "config.savedToLocalInit": "[pi-git] Saved {key}={value} to local config (initialized with defaults)";
35
+ readonly "config.savedToGlobalFallback": "[pi-git] Saved {key}={value} to global config (outside git repo)";
36
+ readonly "config.saveFailed": "[pi-git] Failed to save: {error}";
37
+ readonly "config.initCreated": "[pi-git] Created default pi-git.toml in the repository root.";
38
+ readonly "config.initAlreadyExists": "[pi-git] pi-git.toml already exists. Use --init --force to overwrite.";
39
+ readonly "config.initOverwritten": "[pi-git] Overwritten pi-git.toml with default settings.";
40
+ readonly "config.initNotInRepo": "[pi-git] Not inside a git repository. Cannot create pi-git.toml.";
41
+ readonly "config.keyDesc.lang": "Display and commit message language";
42
+ readonly "config.keyDesc.auto_agg_commit": "Whether to automatically run git-agg-commit after assistant response";
43
+ readonly "config.keyDesc.analysis_model": "AI model to use for diff analysis (format: provider/model-id)";
44
+ readonly "autoCommit.commitFailed": "Commit failed: {error}";
45
+ readonly "autoCommit.commitCreated": "Created commit: {message}";
46
+ readonly "diffAnalyzer.systemPrompt": "Split git diff into logical hunks.\n\nRules:\n- Each hunk = single logical change (e.g., \"add feature X\", \"fix bug Y\")\n- Group related file changes together\n- Split independent changes within one file into separate hunks\n- Write commit message subjects in English\n\nReturn ONLY a JSON array:\n[\n {\"files\": [\"path/to/file1.ts\", \"path/to/file2.ts\"], \"message\": \"feat(scope): add feature\"},\n {\"files\": [\"path/to/file3.ts\"], \"message\": \"fix: resolve null check\"}\n]\n\nMessage format: Conventional Commits (feat, fix, docs, style, refactor, test, chore).\nKeep subject under 50 chars. Use imperative mood. Write in English.";
47
+ readonly "diffAnalyzer.examples": "Examples of correct output:\n\nInput: diff with src/auth/login.ts (added login function), src/auth/types.ts (added User type)\nOutput: [{\"files\": [\"src/auth/login.ts\", \"src/auth/types.ts\"], \"message\": \"feat(auth): add login functionality\"}]\n\nInput: diff with README.md (fixed typo in installation section), package.json (version bump)\nOutput: [{\"files\": [\"README.md\"], \"message\": \"docs: fix typo in README\"}, {\"files\": [\"package.json\"], \"message\": \"chore: bump version to 1.2.0\"}]";
48
+ readonly "diffAnalyzer.buildPrompt": "{examples}\n\nHere is the git diff to analyze. Split it into logical hunks:\n\n```diff\n{diff}\n```\n\nWrite commit message subjects in English.\nRespond with ONLY a JSON array of hunks as specified.";
49
+ readonly "autoCommitMsg.systemPrompt": "You are a commit message generator. From the following information, understand what the user requested and what changes were made as a result, then generate a single Conventional Commit message.\n\nThe most important input is the \"user's request\". Use it as the primary driver for the commit message. The assistant's response and changed files list are supplementary - they describe how the request was fulfilled.\n\nRules:\n- Choose type from: feat, fix, docs, style, refactor, test, chore\n- Write the subject in English\n- Keep subject under 50 characters\n- Use imperative mood\n- Include scope only if clearly inferable\n\nReturn ONLY the commit message string. No explanations or code fences.";
50
+ readonly "autoCommitMsg.examples": "Examples:\n\nUser request: \"Add a login form to the auth page\"\nAssistant response: \"I've added login.tsx with form validation and connected it to the auth API.\"\nChanged files: src/auth/login.tsx, src/auth/api.ts\n→ feat(auth): add login form\n\nUser request: \"Fix the null pointer error in the payment flow\"\nAssistant response: \"Added null check in PaymentProcessor.handle(). The error should be resolved now.\"\nChanged files: src/payment/processor.ts\n→ fix(payment): add null check in processor";
51
+ readonly "autoCommitMsg.buildPrompt": "{examples}\n\n=== USER REQUEST (primary) ===\n{userSection}\n\n=== ASSISTANT RESPONSE (reference) ===\n{assistantSection}\n\n=== CHANGED FILES ===\n{filesSection}\n\nBased primarily on the USER REQUEST above, generate a single Conventional Commit message in English that best captures the intent of the changes.";
52
+ readonly "autoCommitMsg.compareSystemPrompt": "Choose the most specific commit message candidate. Return only the chosen message string.";
53
+ readonly "autoCommitMsg.comparePrompt": "You are a commit message quality evaluator.\nTwo candidate messages exist for the same set of changes.\n\nCandidate A (generated from analysis): \"{candidateA}\"\nCandidate B (derived from user request): \"{candidateB}\"\n\nChanged files: {files}\n\nChoose the one that is MORE SPECIFIC and accurately describes the changes.\nReturn ONLY the chosen message string. No explanations.";
54
+ readonly "autoCommitMsg.noData": "(none)";
55
+ readonly "core.applyChanges": "chore: apply changes";
56
+ };
57
+ readonly ja: {
58
+ readonly "footer.prepare": "{prefix} 準備中...";
59
+ readonly "footer.collectDiff": "{prefix} diff収集中...";
60
+ readonly "footer.analyze": "{prefix} hunk解析中...";
61
+ readonly "footer.generateMessage": "{prefix} コミットメッセージ生成中...";
62
+ readonly "footer.commit": "{prefix} コミット実行中...";
63
+ readonly "aggCommit.help": "/git-agg-commit [--lang=<lang>] [--help]\n\nオプション:\n --lang=<lang> 一時的に言語を上書き(保存されません)\n --help このヘルプを表示";
64
+ readonly "aggCommit.alreadyRunning": "git-agg-commit 実行中です。完了してから再度実行してください。";
65
+ readonly "autoAggCommit.help": "/git-auto-agg-commit [on|off|toggle] [--help]\n\nサブコマンド:\n on 自動 git-agg-commit を有効にする\n off 自動 git-agg-commit を無効にする\n toggle 自動 git-agg-commit の有効/無効を切り替える\n\nフラグ:\n --help このヘルプを表示\n\n引数を省略すると、現在の状態を表示します。";
66
+ readonly "autoAggCommit.status": "[pi-git] 自動 git-agg-commit は{status}です";
67
+ readonly "autoAggCommit.enabled": "有効";
68
+ readonly "autoAggCommit.disabled": "無効";
69
+ readonly "autoAggCommit.invalidArg": "[pi-git] 引数が不正です。on, off, toggle のいずれかを指定してください";
70
+ readonly "autoAggCommit.enabledLocal": "[pi-git] 自動 git-agg-commit を{status}にしました(ローカル設定)";
71
+ readonly "autoAggCommit.enabledGlobal": "[pi-git] 自動 git-agg-commit を{status}にしました(グローバル設定 — Gitリポジトリ外のため)";
72
+ readonly "config.help": "/git-config <key> [value] [--global] [--list] [--show-origin] [--keys] [--models] [--init] [--force] [--help]\n\nサブコマンド:\n <key> 設定値を取得\n <key> <value> 設定値を変更\n\nフラグ:\n --global グローバル設定に対して操作\n --list すべての設定値を一覧表示\n --show-origin 値の取得元(default/global/local)を表示\n --keys 有効なキー一覧と説明を表示\n --models analysis_model に設定可能なモデル一覧を表示\n --init リポジトリルートにデフォルトの pi-git.toml を作成\n --force --init と併用して強制的に上書き\n --help このヘルプを表示";
73
+ readonly "config.noModels": "利用可能なモデルが見つかりません";
74
+ readonly "config.modelsHeader": "analysis_model に設定可能なモデル一覧:";
75
+ readonly "config.noSettings": "設定はありません";
76
+ readonly "config.usageHint": "使用方法: /git-config <key> [value] [--global] [--list] [--show-origin] [--keys]";
77
+ readonly "config.unknownKey": "[pi-git] 不明な設定キー: {key}";
78
+ readonly "config.notSet": "[pi-git] {key} は設定されていません";
79
+ readonly "config.savedToGlobal": "[pi-git] {key}={value} をグローバル設定に保存しました";
80
+ readonly "config.savedToLocal": "[pi-git] {key}={value} をローカル設定に保存しました";
81
+ readonly "config.savedToLocalInit": "[pi-git] {key}={value} をローカル設定に保存しました(デフォルト値で初期化)";
82
+ readonly "config.savedToGlobalFallback": "[pi-git] {key}={value} をグローバル設定に保存しました(Gitリポジトリ外のため)";
83
+ readonly "config.saveFailed": "[pi-git] 保存に失敗しました: {error}";
84
+ readonly "config.initCreated": "[pi-git] リポジトリルートにデフォルトの pi-git.toml を作成しました。";
85
+ readonly "config.initAlreadyExists": "[pi-git] pi-git.toml はすでに存在します。上書きするには --init --force を使用してください。";
86
+ readonly "config.initOverwritten": "[pi-git] pi-git.toml をデフォルト設定で上書きしました。";
87
+ readonly "config.initNotInRepo": "[pi-git] Git リポジトリ内ではありません。pi-git.toml を作成できません。";
88
+ readonly "config.keyDesc.lang": "表示・コミットメッセージの言語設定";
89
+ readonly "config.keyDesc.auto_agg_commit": "アシスタント応答後の自動コミット有無";
90
+ readonly "config.keyDesc.analysis_model": "diff分析に使用するAIモデル(形式: provider/model-id)";
91
+ readonly "autoCommit.commitFailed": "コミットに失敗しました: {error}";
92
+ readonly "autoCommit.commitCreated": "コミットを作成しました: {message}";
93
+ readonly "diffAnalyzer.systemPrompt": "git diffを論理的なhunkに分割してください。\n\nルール:\n- 各hunk = 単一の論理的な変更(例:「機能Xを追加」「バグYを修正」)\n- 関連するファイル変更はグループ化する\n- 1ファイルに独立した複数の変更がある場合は分割する\n- コミットメッセージのサブジェクトは必ず日本語で記述する\n\n以下のJSON配列のみを返してください:\n[\n {\"files\": [\"path/to/file1.ts\", \"path/to/file2.ts\"], \"message\": \"feat: 機能を追加\"},\n {\"files\": [\"path/to/file3.ts\"], \"message\": \"fix: バグを修正\"}\n]\n\nメッセージ形式: Conventional Commits (feat, fix, docs, style, refactor, test, chore)。\nサブジェクトは50文字以内。";
94
+ readonly "diffAnalyzer.examples": "正しい出力の例:\n\n入力: src/auth/login.ts(ログイン機能を追加), src/auth/types.ts(User型を追加)のdiff\n出力: [{\"files\": [\"src/auth/login.ts\", \"src/auth/types.ts\"], \"message\": \"feat(auth): ログイン機能を追加\"}]\n\n入力: README.md(インストール手順の誤字を修正), package.json(バージョン更新)のdiff\n出力: [{\"files\": [\"README.md\"], \"message\": \"docs: READMEの誤字を修正\"}, {\"files\": [\"package.json\"], \"message\": \"chore: バージョンを1.2.0に更新\"}]";
95
+ readonly "diffAnalyzer.buildPrompt": "{examples}\n\n以下のgit diffを分析し、論理的なhunkに分割してください:\n\n```diff\n{diff}\n```\n\nコミットメッセージのサブジェクトは必ず日本語で記述してください。\n指定された形式のJSON配列のみを返してください。";
96
+ readonly "autoCommitMsg.systemPrompt": "あなたはコミットメッセージ生成ツールです。以下の情報から、ユーザーが**何を依頼し、その結果どのような変更が行われたか**を読み取り、Conventional Commit メッセージを1つ生成してください。\n\n最も重要なのは「ユーザーのリクエスト」です。ユーザーが何を求めていたのかを主軸に、コミットメッセージを決定してください。アシスタントの応答と変更ファイル一覧は、そのリクエストがどのように実現されたかを補完する情報です。\n\nルール:\n- type は feat, fix, docs, style, refactor, test, chore から選択\n- サブジェクトは必ず日本語で記述する\n- サブジェクトは50文字以内\n- 命令形を使用する\n- スコープは推測できる場合のみ含める\n\n返答はメッセージ文字列のみ。説明やコードフェンスは不要。";
97
+ readonly "autoCommitMsg.examples": "例:\n\nユーザーの依頼: 「認証ページにログインフォームを追加して」\nアシスタントの応答: 「login.tsx にバリデーション付きのフォームを追加し、認証APIに接続しました」\n変更ファイル: src/auth/login.tsx, src/auth/api.ts\n→ feat(auth): ログインフォームを追加\n\nユーザーの依頼: 「支払いフローのnullポインタエラーを修正して」\nアシスタントの応答: 「PaymentProcessor.handle() にnullチェックを追加しました」\n変更ファイル: src/payment/processor.ts\n→ fix(payment): nullチェックを追加";
98
+ readonly "autoCommitMsg.buildPrompt": "{examples}\n\n=== ユーザーのリクエスト(最重要) ===\n{userSection}\n\n=== アシスタントの応答(参考) ===\n{assistantSection}\n\n=== 変更されたファイル ===\n{filesSection}\n\n上記の「ユーザーのリクエスト」を主軸に、変更の意図を最もよく表す Conventional Commit メッセージを1つ、**必ず日本語で**生成してください。";
99
+ readonly "autoCommitMsg.compareSystemPrompt": "コミットメッセージ候補から最も具体的なものを選び、その文字列のみを返してください。";
100
+ readonly "autoCommitMsg.comparePrompt": "あなたはコミットメッセージの品質評価ツールです。\n同じ変更セットに対する2つの候補メッセージがあります。\n\n候補A(会話分析から生成): \"{candidateA}\"\n候補B(ユーザーの依頼から抽出): \"{candidateB}\"\n\n変更ファイル: {files}\n\nより**具体的で**、変更内容を正確に表している方を選び、\nそのメッセージ文字列だけを返してください。\n説明や補足は一切不要です。";
101
+ readonly "autoCommitMsg.noData": "(なし)";
102
+ readonly "core.applyChanges": "chore: 変更を適用";
103
+ };
104
+ };
105
+ /** Union of all valid message keys (derived from English catalog). */
106
+ export type MessageKey = keyof typeof messages.en;
107
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2MX,CAAC;AAEX,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,QAAQ,CAAC,EAAE,CAAC"}