@heyhuynhgiabuu/pi-diff 0.4.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,16 +44,34 @@ pi -e ./src/index.ts
44
44
 
45
45
  ## Git Review in Pi TUI
46
46
 
47
- pi-diff now has two review paths:
47
+ pi-diff provides two review surfaces:
48
48
 
49
- 1. **`/review-diff`** — the primary interactive local-review command
50
- 2. **`review_git_diff`** — the read-only markdown/tooling path for agent context and scripted review
49
+ 1. **`/review-diff`** — the primary interactive local-review command. If [Hunk](https://github.com/modem-dev/hunk) is installed, pi-diff opens Hunk's review-first TUI.
50
+ 2. **`review_git_diff`** — a read-only markdown/tool path for agent context and scripted review.
51
51
 
52
- ### `/review-diff` — interactive local review
52
+ ### Install Hunk for `/review-diff`
53
53
 
54
- Use `/review-diff` inside Pi TUI to open a full-width centered review overlay for your local Git diff.
54
+ `/review-diff` works best with Hunk installed:
55
55
 
56
- <img width="900" alt="pi-diff review-diff interactive Git review overlay" src="media/review-diff.png" />
56
+ ```bash
57
+ # npm
58
+ npm i -g hunkdiff
59
+
60
+ # or Homebrew
61
+ brew install modem-dev/tap/hunk
62
+ ```
63
+
64
+ Verify Hunk is available:
65
+
66
+ ```bash
67
+ hunk --version
68
+ ```
69
+
70
+ If Hunk is not installed, pi-diff falls back to its built-in legacy review overlay and shows a warning.
71
+
72
+ ### `/review-diff` — Hunk-backed interactive review
73
+
74
+ Run inside Pi:
57
75
 
58
76
  ```text
59
77
  /review-diff
@@ -62,50 +80,87 @@ Use `/review-diff` inside Pi TUI to open a full-width centered review overlay fo
62
80
  /review-diff feature/base-branch
63
81
  ```
64
82
 
65
- What the overlay supports now:
66
- - keyboard-driven file navigation
67
- - hunk navigation for the selected file
68
- - a fixed-height focused **hunk diff viewport** instead of a panel that grows/shrinks with diff size
69
- - hunk-level preview scrolling inside the selected hunk, with scroll status and a visible `▶` selection marker
70
- - load the selected file/line into Pi's main editor as review context
71
- - copy the selected file/line/hunk reference to the clipboard
72
- - line-anchored draft/edit/delete review comments
73
- - approve/dismiss comments before submission
74
- - batch-submit approved comments back into Pi as a follow-up prompt
75
- - live auto-refresh while the overlay is open when the local git diff changes
76
- - manual refresh of the current diff without leaving the review flow
77
- - session persistence via Pi custom entries so reopening `/review-diff` restores the latest review state for the current session
78
-
79
- Key bindings in the overlay:
80
- - `Tab` cycles focus between files, hunks, preview, and comments
81
- - `↑↓` / `Ctrl+j` / `Ctrl+k` navigate the focused region; in Preview focus this scrolls the selected hunk while keeping rendered content visible
82
- - `PageUp` / `PageDown` move by a full visible page in the focused region; in Preview focus this scrolls the selected hunk viewport
83
- - `Home` / `End` jump to the start/end of the focused region; in Preview focus this jumps within the selected hunk viewport
84
- - mouse wheel scrolls the selected hunk viewport vertically when Pi forwards terminal wheel events to the overlay
85
- - `[` / `]` jump between files
86
- - `o` loads the selected file/line into Pi's main editor as review context
87
- - `y` copies the selected file/line/hunk reference to the clipboard; if clipboard access fails, it loads the reference into Pi's main editor
88
- - `c` drafts a comment on the current hunk / anchored preview line
89
- - `e` edits the selected comment; if none exists yet, the overlay warns instead of silently doing nothing
90
- - `x` deletes the selected comment
91
- - `a` approves the selected comment
92
- - `d` dismisses the selected comment
93
- - `A` approves all comments
94
- - `r` manually refreshes the diff immediately (the overlay also auto-refreshes while open)
95
- - `s` submits approved comments back to Pi
96
- - `Esc` / `q` closes the overlay
97
-
98
- **Important:** `/review-diff` is a command, not a prompt template. Pi resolves extension commands before prompt templates, so a prompt template with the same name would be shadowed and never run.
99
-
100
- ### `/review-diff-agent` — prompt template companion
101
-
102
- If you want a blunt text review from the agent instead of the interactive overlay, use the bundled prompt template:
83
+ What happens:
84
+
85
+ ```text
86
+ /review-diff
87
+ pi-diff reads the current Git diff
88
+ pipes the patch to `hunk patch -`
89
+ Hunk opens its sidebar + diff review TUI
90
+ when you exit Hunk, pi-diff returns to Pi
91
+ ```
92
+
93
+ You can test the same Hunk view outside Pi:
94
+
95
+ ```bash
96
+ git diff | hunk patch -
97
+ # or
98
+ hunk diff
99
+ ```
100
+
101
+ Hunk is responsible for the review UI: multi-file sidebar, split/stack layouts, keyboard navigation, mouse support, and agent-note/comment workflows. pi-diff intentionally does **not** maintain a second in-memory comment system.
102
+
103
+ ### Hunk configuration
104
+
105
+ Hunk reads config from:
103
106
 
104
107
  ```text
105
- /review-diff-agent
108
+ ~/.config/hunk/config.toml # global defaults
109
+ .hunk/config.toml # repo-local override
110
+ ```
111
+
112
+ Recommended global starter config:
113
+
114
+ ```toml
115
+ # ~/.config/hunk/config.toml
116
+
117
+ theme = "midnight" # graphite, midnight, paper, ember, catppuccin-latte, catppuccin-mocha, custom
118
+ mode = "auto" # auto, split, stack
119
+ vcs = "git"
120
+ watch = false
121
+
122
+ line_numbers = true
123
+ wrap_lines = false
124
+ agent_notes = true
125
+ exclude_untracked = false
126
+ ```
127
+
128
+ Example repo-local override:
129
+
130
+ ```bash
131
+ mkdir -p .hunk
132
+ $EDITOR .hunk/config.toml
106
133
  ```
107
134
 
108
- This prompt asks the agent to use `review_git_diff` as needed and produce a brutal review of the current local diff.
135
+ ```toml
136
+ # .hunk/config.toml
137
+
138
+ theme = "graphite"
139
+ mode = "split"
140
+ line_numbers = true
141
+ wrap_lines = false
142
+ agent_notes = true
143
+ ```
144
+
145
+ Hunk also supports custom themes:
146
+
147
+ ```toml
148
+ theme = "custom"
149
+
150
+ [custom_theme]
151
+ base = "graphite"
152
+ label = "Pi Diff"
153
+ accent = "#7fd1ff"
154
+ panel = "#10161d"
155
+ noteBorder = "#c49bff"
156
+
157
+ [custom_theme.syntax]
158
+ keyword = "#8ed4ff"
159
+ string = "#c7b4ff"
160
+ comment = "#6e85a7"
161
+ ```
162
+
163
+ All custom theme colors must be `#rrggbb` hex values.
109
164
 
110
165
  ### `review_git_diff` — read-only markdown review tool
111
166
 
@@ -124,13 +179,6 @@ review_git_diff({ file: "src/index.ts" })
124
179
  // Focus a hunk ID shown by the panel
125
180
  review_git_diff({ file: "src/index.ts", hunkId: "src/index.ts:10:12" })
126
181
 
127
- // Draft inline comments through the tool API
128
- review_git_comment({ file: "src/index.ts", line: 42, body: "This needs a regression test." })
129
-
130
- // List or clear drafted comments
131
- review_git_comments({})
132
- review_git_comments({ clear: true })
133
-
134
182
  // Return the older full markdown export with raw unified diff included
135
183
  review_git_diff({ base: "main", includeRawDiff: true })
136
184
  ```
package/dist/cli.js CHANGED
@@ -1,12 +1,10 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const export_js_1 = require("./review/export.js");
5
- const git_js_1 = require("./review/git.js");
2
+ import { formatReviewMarkdown } from "./review/export.js";
3
+ import { readGitDiff } from "./review/git.js";
6
4
  function main(argv) {
7
5
  const options = parseArgs(argv);
8
- const diff = (0, git_js_1.readGitDiff)(process.cwd(), options.mode);
9
- process.stdout.write((0, export_js_1.formatReviewMarkdown)(diff, {
6
+ const diff = readGitDiff(process.cwd(), options.mode);
7
+ process.stdout.write(formatReviewMarkdown(diff, {
10
8
  includeRawDiff: options.includeRawDiff,
11
9
  maxLinesPerHunk: options.maxLinesPerHunk,
12
10
  }));
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,kDAA0D;AAC1D,4CAAmE;AAQnE,SAAS,IAAI,CAAC,IAAc;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,IAAA,gCAAoB,EAAC,IAAI,EAAE;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;KACxC,CAAC,CACF,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAChC,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACtF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxC,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YAC9B,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAChH,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;YAChC,SAAS;QACV,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,+YAA+Y,CAC/Y,CAAC;AACH,CAAC;AAED,IAAI,CAAC;IACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,OAAO,IAAI,CAAC,CAAC;IACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAuB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnE,SAAS,IAAI,CAAC,IAAc;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,oBAAoB,CAAC,IAAI,EAAE;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;KACxC,CAAC,CACF,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAChC,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACtF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxC,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YAC9B,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAChH,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;YAChC,SAAS;QACV,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,+YAA+Y,CAC/Y,CAAC;AACH,CAAC;AAED,IAAI,CAAC;IACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,OAAO,IAAI,CAAC,CAAC;IACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC"}
package/dist/core/diff.js CHANGED
@@ -1,41 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.parseDiff = parseDiff;
37
- const Diff = __importStar(require("diff"));
38
- function parseDiff(oldContent, newContent, ctx = 3) {
1
+ import * as Diff from "diff";
2
+ export function parseDiff(oldContent, newContent, ctx = 3) {
39
3
  const patch = Diff.structuredPatch("", "", oldContent, newContent, "", "", { context: ctx });
40
4
  const lines = [];
41
5
  let added = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,8BA+BC;AA/CD,2CAA6B;AAgB7B,SAAgB,SAAS,CAAC,UAAkB,EAAE,UAAkB,EAAE,GAAG,GAAG,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAChD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,GAAG,KAAK,8BAA8B;gBAAE,SAAS;YACrD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,KAAK,EAAE,CAAC;YACT,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,OAAO,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAgB7B,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,UAAkB,EAAE,GAAG,GAAG,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAChD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,GAAG,KAAK,8BAA8B;gBAAE,SAAS;YACrD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,KAAK,EAAE,CAAC;YACT,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,OAAO,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AAChF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -22,6 +22,7 @@
22
22
  */
23
23
  import type { BundledLanguage } from "shiki";
24
24
  import { type ParsedDiff, parseDiff } from "./core/diff.js";
25
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
25
26
  /** Resolved ANSI colors for diff rendering — theme overrides hardcoded defaults. */
26
27
  interface DiffColors {
27
28
  fgAdd: string;
@@ -37,6 +38,6 @@ export declare const __testing: {
37
38
  renderSplit: typeof renderSplit;
38
39
  renderUnified: typeof renderUnified;
39
40
  };
40
- export default function diffRendererExtension(pi: any): Promise<void>;
41
+ export default function diffRendererExtension(pi: ExtensionAPI): Promise<void>;
41
42
  export {};
42
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAiB,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuc3E,oFAAoF;AACpF,UAAU,UAAU;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAuKD,iBAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAuVD,iBAAe,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,eAAe,GAAG,SAAS,EACrC,GAAG,SAAmB,EACtB,EAAE,GAAE,UAAgC,GAClC,OAAO,CAAC,MAAM,CAAC,CA8HjB;AAMD,iBAAe,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,eAAe,GAAG,SAAS,EACrC,GAAG,SAAoB,EACvB,EAAE,GAAE,UAAgC,GAClC,OAAO,CAAC,MAAM,CAAC,CA6JjB;AAMD,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AA8CF,wBAA8B,qBAAqB,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAykB1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAiB,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AA2cpE,oFAAoF;AACpF,UAAU,UAAU;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAuKD,iBAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIpD;AAuVD,iBAAe,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,eAAe,GAAG,SAAS,EACrC,GAAG,SAAmB,EACtB,EAAE,GAAE,UAAgC,GAClC,OAAO,CAAC,MAAM,CAAC,CA8HjB;AAMD,iBAAe,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,eAAe,GAAG,SAAS,EACrC,GAAG,SAAoB,EACvB,EAAE,GAAE,UAAgC,GAClC,OAAO,CAAC,MAAM,CAAC,CA6JjB;AAMD,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAmCF,wBAA8B,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0dnF"}