diffowl 0.4.0 → 0.5.0

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 (4) hide show
  1. package/README.md +35 -20
  2. package/dist/cli.js +11149 -5278
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +14 -5
package/README.md CHANGED
@@ -9,9 +9,9 @@
9
9
 
10
10
  Review agent-written code with a second model before it ships.
11
11
 
12
- DiffOwl is a local code review CLI. It builds focused context from a Git diff, sends that context to a model through [OpenCode](https://opencode.ai/docs/server/), and records actionable findings in your repository.
12
+ DiffOwl is a local code review CLI. It builds focused context from a Git diff, runs a model through OpenCode or Codex, and records actionable findings in your repository.
13
13
 
14
- It works with changes from any coding agent or human. You choose the model and provider through OpenCode. DiffOwl does not require an account, another API key, or a hosted DiffOwl service.
14
+ It works with changes from any coding agent or human. You choose the backend and model on your machine. DiffOwl does not require a hosted DiffOwl account.
15
15
 
16
16
  ## Why DiffOwl
17
17
 
@@ -20,27 +20,27 @@ The agent that wrote a change should not be its only reviewer. Asking it to revi
20
20
  DiffOwl adds an independent pass between writing code and shipping it:
21
21
 
22
22
  - Review the last commit, staged changes, a specific commit, or a whole branch.
23
- - Use any model already connected to OpenCode, including local models.
23
+ - Review through OpenCode or a local Codex CLI authenticated with ChatGPT.
24
24
  - Give the reviewer bounded local context instead of dumping the entire repository into a prompt.
25
25
  - Keep findings after the review ends, with stable IDs and lifecycle states.
26
- - Reopen the review session when a finding needs more investigation.
26
+ - Inspect and disposition durable findings after the review ends.
27
27
  - Run reviews automatically after commits without blocking them.
28
28
 
29
- TypeScript reviews include changed AST symbols, related tests, file excerpts, and bounded call-flow context. Other languages still get diff-centered review with targeted repository exploration.
29
+ TypeScript reviews can include changed AST symbols, related tests, file excerpts, and bounded import references. The structured import-reference section is TypeScript-only; non-TypeScript changes still get diff-centered review with targeted repository exploration.
30
30
 
31
31
  ## How it works
32
32
 
33
33
  1. DiffOwl reads the Git change you selected.
34
34
  2. It filters files and assembles relevant local context.
35
- 3. A separate model reviews the change through a headless OpenCode session.
35
+ 3. A separate model reviews the change through your selected local backend.
36
36
  4. DiffOwl writes a Markdown report and persists findings in SQLite.
37
- 5. You inspect the findings, continue the review chat, or hand them to a coding agent for resolution.
37
+ 5. You inspect the findings, record their disposition, or hand them to a coding agent for resolution.
38
38
 
39
- The orchestration and state stay in your repository. Review context is sent to the provider you selected in OpenCode.
39
+ The orchestration and state stay in your repository. Review context goes only to the backend and model you selected.
40
40
 
41
41
  ## Quick start
42
42
 
43
- You need Node.js 22.14.0 or newer and an authenticated [OpenCode](https://opencode.ai/) provider.
43
+ You need Node.js 22.14.0 or newer. OpenCode is the default backend for existing installations.
44
44
 
45
45
  ```bash
46
46
  npm install --global opencode-ai
@@ -55,7 +55,15 @@ cd your-repository
55
55
  diffowl init
56
56
  ```
57
57
 
58
- `diffowl init` finds your available OpenCode models, lets you choose one, and writes `.diffowl.yml`.
58
+ `diffowl init` reports the selected runtime and the gitignored preference path. With OpenCode selected, it lists the models from your connected providers. Use `diffowl backend codex` before initialization if you want Codex, then choose a bare Codex model ID. The committed `.diffowl.yml` contains review policy, never your backend or model choice.
59
+
60
+ Codex reviews use an existing ChatGPT login from the local Codex CLI:
61
+
62
+ ```bash
63
+ codex
64
+ diffowl backend codex
65
+ diffowl model gpt-5-codex
66
+ ```
59
67
 
60
68
  Review the last commit:
61
69
 
@@ -91,6 +99,9 @@ diffowl review --staged --depth shallow
91
99
  # Use a different model once
92
100
  diffowl review --staged --model openai/gpt-5.6-luna
93
101
 
102
+ # Use Codex once without changing saved preferences
103
+ diffowl review --staged --backend codex --model gpt-5-codex
104
+
94
105
  # Emit a versioned JSON document for scripts
95
106
  diffowl review --base --format json
96
107
 
@@ -120,12 +131,7 @@ diffowl findings reopen fnd_abc --reason "The bug returned in a new path."
120
131
 
121
132
  Use `--format json` with `findings list`, `show`, or `summary` when another tool needs the backlog.
122
133
 
123
- To continue the conversation behind a review:
124
-
125
- ```bash
126
- diffowl chat
127
- diffowl chat .diffowl/reviews/review-<timestamp>.md
128
- ```
134
+ Inspect a finding with `diffowl findings show`, then record its disposition with `fix`, `dismiss`, `defer`, or `reopen`. Run a new review when you need new model analysis.
129
135
 
130
136
  ## Resolve findings with a coding agent
131
137
 
@@ -166,7 +172,7 @@ diffowl agent-hook install --client claude
166
172
 
167
173
  ## Configuration
168
174
 
169
- Project review policy lives in `.diffowl.yml`. Model selection is personal and stays in the shared, gitignored `.diffowl/preferences.yml`.
175
+ Project review policy lives in `.diffowl.yml`. Backend and model selection stay in the shared, gitignored `.diffowl/preferences.yml`. Linked worktrees use the same preference file.
170
176
 
171
177
  ```yaml
172
178
  context:
@@ -195,21 +201,28 @@ rules:
195
201
  - "Check authorization at every write boundary."
196
202
  ```
197
203
 
198
- Choose or change your model without editing project policy:
204
+ Inspect or change the local backend and its model without editing project policy:
199
205
 
200
206
  ```bash
207
+ diffowl backend
208
+ diffowl backend opencode
209
+ diffowl backend codex
210
+ diffowl backend --reset
211
+
201
212
  diffowl model
202
213
  diffowl model provider/model
203
214
  diffowl model --reset
204
215
  ```
205
216
 
217
+ Each backend keeps its own model choice. Switching backends does not erase the other model. A legacy preference containing only `model: provider/model` still selects OpenCode.
218
+
206
219
  Configuration is deep-merged with defaults, so the file only needs the settings your repository changes.
207
220
 
208
221
  ## Files DiffOwl creates
209
222
 
210
223
  ```text
211
224
  .diffowl.yml # Committed project policy
212
- .diffowl/preferences.yml # Gitignored personal model choice
225
+ .diffowl/preferences.yml # Gitignored backend and model choices
213
226
  .diffowl/state.db # Authoritative findings backlog
214
227
  .diffowl/reviews/review-<timestamp>.md # Immutable review snapshot
215
228
  .diffowl/reviews/latest.md # Copy of the newest report
@@ -224,9 +237,9 @@ Linked Git worktrees share the durable backlog and review reports from the prima
224
237
  | -------------------- | ------------------------------------------- |
225
238
  | `diffowl init` | Configure DiffOwl in the current repository |
226
239
  | `diffowl review` | Run a review |
240
+ | `diffowl backend` | Inspect or change the local review backend |
227
241
  | `diffowl model` | View or change the selected model |
228
242
  | `diffowl findings` | Inspect and update durable findings |
229
- | `diffowl chat` | Reopen an OpenCode review session |
230
243
  | `diffowl hook` | Manage the post-commit hook |
231
244
  | `diffowl agent-hook` | Manage supported agent client hooks |
232
245
  | `diffowl server` | Manage the local OpenCode server |
@@ -236,6 +249,8 @@ Run `diffowl <command> --help` for every option.
236
249
  ## Troubleshooting
237
250
 
238
251
  - No models found: run `opencode`, connect or re-authenticate a provider, then rerun `diffowl init`.
252
+ - Codex runtime missing: install the Codex CLI and make sure `codex` is on `PATH`.
253
+ - Codex authentication missing: run `codex` and sign in with ChatGPT.
239
254
  - Review timed out: retry with `diffowl review --depth shallow`.
240
255
  - Hook review failed: run the retry command shown by the next foreground DiffOwl command, or inspect `.diffowl/hook.log`.
241
256
  - Agent did not load `diffowl-resolve`: verify it with `npx skills list`, then restart or reload the agent.