@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
@@ -0,0 +1,135 @@
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 const messages = {
10
+ en: {
11
+ // ── footer-manager.ts: execution phase status ──────────────
12
+ "footer.prepare": "{prefix} Preparing...",
13
+ "footer.collectDiff": "{prefix} Collecting diff...",
14
+ "footer.analyze": "{prefix} Analyzing hunks...",
15
+ "footer.generateMessage": "{prefix} Generating messages...",
16
+ "footer.commit": "{prefix} Committing...",
17
+ // ── agg-commit.ts ──────────────────────────────────────────
18
+ "aggCommit.help": "/git-agg-commit [--lang=<lang>] [--help]\n\nOptions:\n --lang=<lang> Temporarily override language (not saved)\n --help Show this help message",
19
+ "aggCommit.alreadyRunning": "git-agg-commit is already running. Please wait for it to complete.",
20
+ // ── auto-agg-commit.ts ─────────────────────────────────────
21
+ "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.",
22
+ "autoAggCommit.status": "[pi-git] Auto git-agg-commit is {status}",
23
+ "autoAggCommit.enabled": "enabled",
24
+ "autoAggCommit.disabled": "disabled",
25
+ "autoAggCommit.invalidArg": '[pi-git] Invalid argument. Use "on", "off", or "toggle"',
26
+ "autoAggCommit.enabledLocal": "[pi-git] Auto git-agg-commit {status} (local config)",
27
+ "autoAggCommit.enabledGlobal": "[pi-git] Auto git-agg-commit {status} (global config — outside git repo)",
28
+ // ── config.ts ──────────────────────────────────────────────
29
+ "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",
30
+ "config.noModels": "No available models found",
31
+ "config.modelsHeader": "Available models for analysis_model:",
32
+ "config.noSettings": "No settings configured",
33
+ "config.usageHint": "Usage: /git-config <key> [value] [--global] [--list] [--show-origin] [--keys]",
34
+ "config.unknownKey": "[pi-git] Unknown config key: {key}",
35
+ "config.notSet": "[pi-git] {key} is not set",
36
+ "config.savedToGlobal": "[pi-git] Saved {key}={value} to global config",
37
+ "config.savedToLocal": "[pi-git] Saved {key}={value} to local config",
38
+ "config.savedToLocalInit": "[pi-git] Saved {key}={value} to local config (initialized with defaults)",
39
+ "config.savedToGlobalFallback": "[pi-git] Saved {key}={value} to global config (outside git repo)",
40
+ "config.saveFailed": "[pi-git] Failed to save: {error}",
41
+ "config.initCreated": "[pi-git] Created default pi-git.toml in the repository root.",
42
+ "config.initAlreadyExists": "[pi-git] pi-git.toml already exists. Use --init --force to overwrite.",
43
+ "config.initOverwritten": "[pi-git] Overwritten pi-git.toml with default settings.",
44
+ "config.initNotInRepo": "[pi-git] Not inside a git repository. Cannot create pi-git.toml.",
45
+ // ── config.ts: VALID_KEYS_META descriptions ─────────────────
46
+ "config.keyDesc.lang": "Display and commit message language",
47
+ "config.keyDesc.auto_agg_commit": "Whether to automatically run git-agg-commit after assistant response",
48
+ "config.keyDesc.analysis_model": "AI model to use for diff analysis (format: provider/model-id)",
49
+ // ── auto-commit.ts ─────────────────────────────────────────
50
+ "autoCommit.commitFailed": "Commit failed: {error}",
51
+ "autoCommit.commitCreated": "Created commit: {message}",
52
+ // ── diff-analyzer.ts: system prompt ────────────────────────
53
+ "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.',
54
+ // ── diff-analyzer.ts: few-shot examples ────────────────────
55
+ "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"}]',
56
+ // ── diff-analyzer.ts: user prompt ──────────────────────────
57
+ "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.",
58
+ // ── auto-commit-message.ts: system prompt ──────────────────
59
+ "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.",
60
+ // ── auto-commit-message.ts: few-shot examples ──────────────
61
+ "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',
62
+ // ── auto-commit-message.ts: user prompt ────────────────────
63
+ "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.",
64
+ // ── auto-commit-message.ts: message comparison ─────────────
65
+ "autoCommitMsg.compareSystemPrompt": "Choose the most specific commit message candidate. Return only the chosen message string.",
66
+ "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.',
67
+ // ── auto-commit-message.ts: fallback text for empty sections
68
+ "autoCommitMsg.noData": "(none)",
69
+ // ── core fallback commit message ───────────────────────────
70
+ "core.applyChanges": "chore: apply changes",
71
+ },
72
+ ja: {
73
+ // ── footer-manager.ts: execution phase status ──────────────
74
+ "footer.prepare": "{prefix} 準備中...",
75
+ "footer.collectDiff": "{prefix} diff収集中...",
76
+ "footer.analyze": "{prefix} hunk解析中...",
77
+ "footer.generateMessage": "{prefix} コミットメッセージ生成中...",
78
+ "footer.commit": "{prefix} コミット実行中...",
79
+ // ── agg-commit.ts ──────────────────────────────────────────
80
+ "aggCommit.help": "/git-agg-commit [--lang=<lang>] [--help]\n\nオプション:\n --lang=<lang> 一時的に言語を上書き(保存されません)\n --help このヘルプを表示",
81
+ "aggCommit.alreadyRunning": "git-agg-commit 実行中です。完了してから再度実行してください。",
82
+ // ── auto-agg-commit.ts ─────────────────────────────────────
83
+ "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引数を省略すると、現在の状態を表示します。",
84
+ "autoAggCommit.status": "[pi-git] 自動 git-agg-commit は{status}です",
85
+ "autoAggCommit.enabled": "有効",
86
+ "autoAggCommit.disabled": "無効",
87
+ "autoAggCommit.invalidArg": "[pi-git] 引数が不正です。on, off, toggle のいずれかを指定してください",
88
+ "autoAggCommit.enabledLocal": "[pi-git] 自動 git-agg-commit を{status}にしました(ローカル設定)",
89
+ "autoAggCommit.enabledGlobal": "[pi-git] 自動 git-agg-commit を{status}にしました(グローバル設定 — Gitリポジトリ外のため)",
90
+ // ── config.ts ──────────────────────────────────────────────
91
+ "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 このヘルプを表示",
92
+ "config.noModels": "利用可能なモデルが見つかりません",
93
+ "config.modelsHeader": "analysis_model に設定可能なモデル一覧:",
94
+ "config.noSettings": "設定はありません",
95
+ "config.usageHint": "使用方法: /git-config <key> [value] [--global] [--list] [--show-origin] [--keys]",
96
+ "config.unknownKey": "[pi-git] 不明な設定キー: {key}",
97
+ "config.notSet": "[pi-git] {key} は設定されていません",
98
+ "config.savedToGlobal": "[pi-git] {key}={value} をグローバル設定に保存しました",
99
+ "config.savedToLocal": "[pi-git] {key}={value} をローカル設定に保存しました",
100
+ "config.savedToLocalInit": "[pi-git] {key}={value} をローカル設定に保存しました(デフォルト値で初期化)",
101
+ "config.savedToGlobalFallback": "[pi-git] {key}={value} をグローバル設定に保存しました(Gitリポジトリ外のため)",
102
+ "config.saveFailed": "[pi-git] 保存に失敗しました: {error}",
103
+ "config.initCreated": "[pi-git] リポジトリルートにデフォルトの pi-git.toml を作成しました。",
104
+ "config.initAlreadyExists": "[pi-git] pi-git.toml はすでに存在します。上書きするには --init --force を使用してください。",
105
+ "config.initOverwritten": "[pi-git] pi-git.toml をデフォルト設定で上書きしました。",
106
+ "config.initNotInRepo": "[pi-git] Git リポジトリ内ではありません。pi-git.toml を作成できません。",
107
+ // ── config.ts: VALID_KEYS_META descriptions ─────────────────
108
+ "config.keyDesc.lang": "表示・コミットメッセージの言語設定",
109
+ "config.keyDesc.auto_agg_commit": "アシスタント応答後の自動コミット有無",
110
+ "config.keyDesc.analysis_model": "diff分析に使用するAIモデル(形式: provider/model-id)",
111
+ // ── auto-commit.ts ─────────────────────────────────────────
112
+ "autoCommit.commitFailed": "コミットに失敗しました: {error}",
113
+ "autoCommit.commitCreated": "コミットを作成しました: {message}",
114
+ // ── diff-analyzer.ts: system prompt ────────────────────────
115
+ "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文字以内。',
116
+ // ── diff-analyzer.ts: few-shot examples ────────────────────
117
+ "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に更新"}]',
118
+ // ── diff-analyzer.ts: user prompt ──────────────────────────
119
+ "diffAnalyzer.buildPrompt": "{examples}\n\n以下のgit diffを分析し、論理的なhunkに分割してください:\n\n```diff\n{diff}\n```\n\nコミットメッセージのサブジェクトは必ず日本語で記述してください。\n指定された形式のJSON配列のみを返してください。",
120
+ // ── auto-commit-message.ts: system prompt ──────────────────
121
+ "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返答はメッセージ文字列のみ。説明やコードフェンスは不要。",
122
+ // ── auto-commit-message.ts: few-shot examples ──────────────
123
+ "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チェックを追加",
124
+ // ── auto-commit-message.ts: user prompt ────────────────────
125
+ "autoCommitMsg.buildPrompt": "{examples}\n\n=== ユーザーのリクエスト(最重要) ===\n{userSection}\n\n=== アシスタントの応答(参考) ===\n{assistantSection}\n\n=== 変更されたファイル ===\n{filesSection}\n\n上記の「ユーザーのリクエスト」を主軸に、変更の意図を最もよく表す Conventional Commit メッセージを1つ、**必ず日本語で**生成してください。",
126
+ // ── auto-commit-message.ts: message comparison ─────────────
127
+ "autoCommitMsg.compareSystemPrompt": "コミットメッセージ候補から最も具体的なものを選び、その文字列のみを返してください。",
128
+ "autoCommitMsg.comparePrompt": 'あなたはコミットメッセージの品質評価ツールです。\n同じ変更セットに対する2つの候補メッセージがあります。\n\n候補A(会話分析から生成): "{candidateA}"\n候補B(ユーザーの依頼から抽出): "{candidateB}"\n\n変更ファイル: {files}\n\nより**具体的で**、変更内容を正確に表している方を選び、\nそのメッセージ文字列だけを返してください。\n説明や補足は一切不要です。',
129
+ // ── auto-commit-message.ts: fallback text for empty sections
130
+ "autoCommitMsg.noData": "(なし)",
131
+ // ── core fallback commit message ───────────────────────────
132
+ "core.applyChanges": "chore: 変更を適用",
133
+ },
134
+ };
135
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAWpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAuDxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AASpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAgDxC"}
package/dist/index.js CHANGED
@@ -5,17 +5,20 @@
5
5
  */
6
6
  import { handleAggCommit } from "./commands/agg-commit.js";
7
7
  import { handleAutoAggCommit } from "./commands/auto-agg-commit.js";
8
- import { handleBranch } from "./commands/branch.js";
9
8
  import { handleConfig } from "./commands/config.js";
10
- import { handleGitDiff } from "./commands/git-diff.js";
11
- import { handleGitLog } from "./commands/git-log.js";
9
+ import { handleDiagnostics } from "./commands/diagnostics.js";
12
10
  import { handleAutoCommit } from "./core/auto-commit.js";
13
11
  import { footerManager } from "./utils/footer-manager.js";
14
12
  export default function (pi) {
15
13
  pi.on("session_start", async (_event, ctx) => {
16
- if (ctx.hasUI) {
17
- footerManager.initialize(pi, ctx.ui, ctx.cwd);
18
- await footerManager.refresh();
14
+ try {
15
+ if (ctx.hasUI) {
16
+ footerManager.initialize(pi, ctx.ui, ctx.cwd);
17
+ await footerManager.refresh();
18
+ }
19
+ }
20
+ catch {
21
+ // Silently ignore initialization errors to prevent unhandled rejections
19
22
  }
20
23
  });
21
24
  pi.registerCommand("git-agg-commit", {
@@ -36,26 +39,19 @@ export default function (pi) {
36
39
  await handleAutoAggCommit(pi, ctx, args);
37
40
  },
38
41
  });
39
- pi.registerCommand("git-branch", {
40
- description: "Manage git branches: list, switch, create, and delete",
42
+ pi.registerCommand("git-diagnostics", {
43
+ description: "Show P0 effectiveness measurement counters",
41
44
  handler: async (args, ctx) => {
42
- await handleBranch(pi, ctx, args);
43
- },
44
- });
45
- pi.registerCommand("git-diff", {
46
- description: "Interactively review AI-generated hunks and commit approved ones",
47
- handler: async (args, ctx) => {
48
- await handleGitDiff(pi, ctx, args);
49
- },
50
- });
51
- pi.registerCommand("git-log", {
52
- description: "Display git log in oneline format",
53
- handler: async (args, ctx) => {
54
- await handleGitLog(pi, ctx, args);
45
+ await handleDiagnostics(pi, ctx, args);
55
46
  },
56
47
  });
57
48
  pi.on("agent_end", async (event, ctx) => {
58
- await handleAutoCommit(pi, ctx, event);
49
+ try {
50
+ await handleAutoCommit(pi, ctx, event);
51
+ }
52
+ catch {
53
+ // Silently ignore auto-commit errors to prevent unhandled rejections
54
+ }
59
55
  });
60
56
  }
61
57
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,aAAa,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE;QACnC,WAAW,EACT,+EAA+E;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;QAC/B,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE;QACxC,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;QAC/B,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;QAC7B,WAAW,EACT,kEAAkE;QACpE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE;QAC5B,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAsB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,aAAa,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9C,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE;QACnC,WAAW,EACT,+EAA+E;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;QAC/B,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE;QACxC,WAAW,EAAE,2DAA2D;QACxE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,iBAAiB,EAAE;QACpC,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAsB,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,8 +6,6 @@ export interface Hunk {
6
6
  files: string[];
7
7
  /** Conventional Commit message for this hunk */
8
8
  message: string;
9
- /** Optional description of changes for message generation context */
10
- description?: string;
11
9
  }
12
10
  export interface FileStats {
13
11
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,IAAI;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,IAAI;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Lightweight diagnostic counters for pi-git P0 effectiveness measurement.
3
+ *
4
+ * Counters are incremented at key decision points and can be dumped
5
+ * via /git-diagnostics command. Zero runtime overhead when not queried.
6
+ */
7
+ export interface DiagSnapshot {
8
+ /** Layer 2: direct JSON.parse succeeded */
9
+ parseLayer2_directJSON: number;
10
+ /** Layer 3: trailing text stripped, then parse succeeded */
11
+ parseLayer3_trailingStrip: number;
12
+ /** Layer 4: regex pair extraction succeeded */
13
+ parseLayer4_regexExtract: number;
14
+ /** All layers failed, fell back to file-based hunks */
15
+ parseFallback_fileBased: number;
16
+ /** isGenericMessage() returned true */
17
+ msgIsGeneric: number;
18
+ /** refineMessageIfGeneric() was called */
19
+ msgRefineTriggered: number;
20
+ /** refine used AI comparison (not just heuristic) */
21
+ msgRefineUsedAI: number;
22
+ /** sanitizeCommitMessage() was called */
23
+ msgSanitized: number;
24
+ /** sanitize actually changed the message (was invalid format) */
25
+ msgSanitizeChanged: number;
26
+ }
27
+ /** Increment a counter by 1. Safe to call from any context. */
28
+ export declare function diagIncr<K extends keyof DiagSnapshot>(key: K): void;
29
+ /** Take an atomic snapshot of all counters. */
30
+ export declare function diagSnapshot(): DiagSnapshot;
31
+ /** Reset all counters to zero. */
32
+ export declare function diagReset(): void;
33
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/utils/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAE3B,2CAA2C;IAC3C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4DAA4D;IAC5D,yBAAyB,EAAE,MAAM,CAAC;IAClC,+CAA+C;IAC/C,wBAAwB,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,uBAAuB,EAAE,MAAM,CAAC;IAGhC,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IAGxB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAgBD,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAEnE;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,IAAI,YAAY,CAE3C;AAED,kCAAkC;AAClC,wBAAgB,SAAS,IAAI,IAAI,CAIhC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Lightweight diagnostic counters for pi-git P0 effectiveness measurement.
3
+ *
4
+ * Counters are incremented at key decision points and can be dumped
5
+ * via /git-diagnostics command. Zero runtime overhead when not queried.
6
+ */
7
+ const counters = {
8
+ parseLayer2_directJSON: 0,
9
+ parseLayer3_trailingStrip: 0,
10
+ parseLayer4_regexExtract: 0,
11
+ parseFallback_fileBased: 0,
12
+ msgIsGeneric: 0,
13
+ msgRefineTriggered: 0,
14
+ msgRefineUsedAI: 0,
15
+ msgSanitized: 0,
16
+ msgSanitizeChanged: 0,
17
+ };
18
+ /** Increment a counter by 1. Safe to call from any context. */
19
+ export function diagIncr(key) {
20
+ counters[key]++;
21
+ }
22
+ /** Take an atomic snapshot of all counters. */
23
+ export function diagSnapshot() {
24
+ return { ...counters };
25
+ }
26
+ /** Reset all counters to zero. */
27
+ export function diagReset() {
28
+ for (const key of Object.keys(counters)) {
29
+ counters[key] = 0;
30
+ }
31
+ }
32
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/utils/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4BH,MAAM,QAAQ,GAAiB;IAC7B,sBAAsB,EAAE,CAAC;IACzB,yBAAyB,EAAE,CAAC;IAC5B,wBAAwB,EAAE,CAAC;IAC3B,uBAAuB,EAAE,CAAC;IAE1B,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC;IAElB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,UAAU,QAAQ,CAA+B,GAAM;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,SAAS;IACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA2B,EAAE,CAAC;QAClE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"footer-manager.d.ts","sourceRoot":"","sources":["../../src/utils/footer-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAMzC,KAAK,KAAK,GACN,SAAS,GACT,aAAa,GACb,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAEb;;;;GAIG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,OAAO,CASC;IAChB,OAAO,CAAC,YAAY,CAA+C;IAEnE;;;;;;;OAOG;IACH,UAAU,CACR,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAC7B,GAAG,CAAC,EAAE,MAAM,GACX,IAAI;IAMP;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;OAMG;IACG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB,iEAAiE;IACjE,OAAO,CAAC,iBAAiB;IAOzB,0CAA0C;IAC1C,OAAO,CAAC,gBAAgB;CAMzB;AA4BD,yBAAyB;AACzB,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"footer-manager.d.ts","sourceRoot":"","sources":["../../src/utils/footer-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAMzC,KAAK,KAAK,GACN,SAAS,GACT,aAAa,GACb,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAEb;;;;GAIG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,OAAO,CASC;IAChB,OAAO,CAAC,YAAY,CAA+C;IAEnE;;;;;;;OAOG;IACH,UAAU,CACR,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAC7B,GAAG,CAAC,EAAE,MAAM,GACX,IAAI;IAMP;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B;;;;;;OAMG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;OAMG;IACG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB,iEAAiE;IACjE,OAAO,CAAC,iBAAiB;IAOzB,0CAA0C;IAC1C,OAAO,CAAC,gBAAgB;CAMzB;AAyBD,yBAAyB;AACzB,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Singleton instance is exported as `footerManager`.
9
9
  */
10
- import { isJapanese } from "./lang.js";
10
+ import { t } from "./lang.js";
11
11
  import { getAutoAggCommit, getLanguage } from "./settings.js";
12
12
  const STATUS_KEY = "pi-git-agg-commit";
13
13
  /**
@@ -160,21 +160,18 @@ class FooterManager {
160
160
  * Generate localized status text for each phase of the commit workflow.
161
161
  */
162
162
  function phaseStatusText(lang, key, autoCommit) {
163
- const ja = isJapanese(lang);
164
163
  const prefix = autoCommit ? "[pi-git: auto-commit]" : "[pi-git]";
165
164
  switch (key) {
166
165
  case "prepare":
167
- return ja ? `${prefix} 準備中...` : `${prefix} Preparing...`;
166
+ return t(lang, "footer.prepare", { prefix });
168
167
  case "collectDiff":
169
- return ja ? `${prefix} diff収集中...` : `${prefix} Collecting diff...`;
168
+ return t(lang, "footer.collectDiff", { prefix });
170
169
  case "analyze":
171
- return ja ? `${prefix} hunk解析中...` : `${prefix} Analyzing hunks...`;
170
+ return t(lang, "footer.analyze", { prefix });
172
171
  case "generateMessage":
173
- return ja
174
- ? `${prefix} コミットメッセージ生成中...`
175
- : `${prefix} Generating messages...`;
172
+ return t(lang, "footer.generateMessage", { prefix });
176
173
  case "commit":
177
- return ja ? `${prefix} コミット実行中...` : `${prefix} Committing...`;
174
+ return t(lang, "footer.commit", { prefix });
178
175
  }
179
176
  }
180
177
  /** Singleton instance */
@@ -1 +1 @@
1
- {"version":3,"file":"footer-manager.js","sourceRoot":"","sources":["../../src/utils/footer-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"footer-manager.js","sourceRoot":"","sources":["../../src/utils/footer-manager.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  /**
2
- * Language utilities for i18n support
2
+ * Language utilities for i18n support.
3
+ *
4
+ * The `t()` function resolves a message key against the catalog in
5
+ * src/i18n/messages.ts and replaces `{placeholder}` params.
3
6
  */
7
+ import { type MessageKey } from "../i18n/messages.js";
4
8
  /**
5
- * Check if the language is Japanese
9
+ * Get a localized message by key, with optional placeholder interpolation.
10
+ *
11
+ * Placeholders use `{key}` syntax and are replaced in a single pass to
12
+ * prevent cross-contamination when param values themselves contain braces.
13
+ *
14
+ * Unsupported languages fall back to English.
15
+ * Unknown keys return the key itself as a last-resort fallback.
6
16
  */
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;
17
+ export declare function t(lang: string, key: MessageKey, params?: Record<string, string>): string;
12
18
  //# sourceMappingURL=lang.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"lang.d.ts","sourceRoot":"","sources":["../../src/utils/lang.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhE;;;;;;;;GAQG;AACH,wBAAgB,CAAC,CACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,UAAU,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAYR"}
@@ -1,16 +1,27 @@
1
1
  /**
2
- * Language utilities for i18n support
2
+ * Language utilities for i18n support.
3
+ *
4
+ * The `t()` function resolves a message key against the catalog in
5
+ * src/i18n/messages.ts and replaces `{placeholder}` params.
3
6
  */
7
+ import { messages } from "../i18n/messages.js";
4
8
  /**
5
- * Check if the language is Japanese
9
+ * Get a localized message by key, with optional placeholder interpolation.
10
+ *
11
+ * Placeholders use `{key}` syntax and are replaced in a single pass to
12
+ * prevent cross-contamination when param values themselves contain braces.
13
+ *
14
+ * Unsupported languages fall back to English.
15
+ * Unknown keys return the key itself as a last-resort fallback.
6
16
  */
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;
17
+ export function t(lang, key, params) {
18
+ const langKey = lang in messages ? lang : "en";
19
+ let text = messages[langKey]?.[key] ??
20
+ messages["en"]?.[key] ??
21
+ key;
22
+ if (params) {
23
+ text = text.replace(/\{(\w+)\}/g, (_, k) => params[k] ?? `{${k}}`);
24
+ }
25
+ return text;
15
26
  }
16
27
  //# sourceMappingURL=lang.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/utils/lang.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,UAAU,CAAC,CACf,IAAY,EACZ,GAAe,EACf,MAA+B;IAE/B,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,IAAI,IAAI,GACL,QAAmD,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;QACnE,QAAmD,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACjE,GAAG,CAAC;IAEN,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Settings are stored in:
5
5
  * - Global: ~/.config/pi-git/settings.json
6
- * - Local: <git-root>/.pi-git/settings.json (takes precedence)
6
+ * - Local: <git-root>/pi-git.toml (takes precedence)
7
7
  */
8
+ import type { MessageKey } from "../i18n/messages.js";
8
9
  export interface PiGitSettings {
9
10
  /** Display and commit message language (e.g., "en", "ja") */
10
11
  lang?: string;
@@ -19,10 +20,8 @@ export interface KeyMeta {
19
20
  key: string;
20
21
  /** Display type (e.g., "string", "boolean") */
21
22
  type: string;
22
- /** Japanese description */
23
- description_ja: string;
24
- /** English description */
25
- description_en: string;
23
+ /** Message key for localized description */
24
+ messageKey: MessageKey;
26
25
  /** Valid values hint (optional) */
27
26
  valid_values?: string;
28
27
  }
@@ -43,5 +42,14 @@ export declare function getLanguage(cwd?: string): string;
43
42
  export declare function getAutoAggCommit(cwd?: string): boolean;
44
43
  export declare function getAnalysisModel(cwd?: string): string | undefined;
45
44
  export declare function saveGlobalSettings(settings: Partial<PiGitSettings>): void;
45
+ /**
46
+ * Create (or overwrite) pi-git.toml with DEFAULT_SETTINGS at the repo root.
47
+ *
48
+ * @param cwdOrPath - Working directory (to resolve git root) or an already-resolved
49
+ * local settings path. If a path ending in "pi-git.toml" is passed, it is used directly
50
+ * without re-running git rev-parse.
51
+ * @returns The written path, or null if not inside a git repo.
52
+ */
53
+ export declare function initLocalSettings(cwdOrPath?: string): string | null;
46
54
  export declare function saveLocalSettings(settings: Partial<PiGitSettings>, cwd?: string): void;
47
55
  //# sourceMappingURL=settings.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,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,4CAA4C;IAC5C,UAAU,EAAE,UAAU,CAAC;IACvB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,gDAAgD;AAChD,eAAO,MAAM,eAAe,EAAE,OAAO,EAmBpC,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;AA6DD,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;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASnE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,EAChC,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAUN"}