@diffpal/diffpal-win32-x64 0.1.37 → 0.1.38

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
@@ -5,275 +5,101 @@
5
5
  [![npm](https://img.shields.io/npm/v/@diffpal/diffpal?label=npm)](https://www.npmjs.com/package/@diffpal/diffpal)
6
6
  [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
7
 
8
- **Open-source, provider-agnostic AI review for pull requests.**
8
+ **Open-source AI PR review you control.**
9
+ Bring your own agent. Keep one PR review workflow.
9
10
 
10
- DiffPal is an open-source PR review system that turns changed code into
11
- structured findings, clear summaries, file-level feedback, artifacts, and merge
12
- gates. Teams bring their own AI provider or ACP-compatible CLI, so there is no
13
- mandatory hosted DiffPal review service and no required per-seat review
14
- platform.
11
+ DiffPal turns pull request diffs into structured findings, summaries, inline
12
+ comments, and merge gates across GitHub, GitLab, and Azure DevOps without
13
+ locking your team into a hosted review platform.
15
14
 
16
- DiffPal exists to make AI code review something teams control, not another
17
- review platform they rent. It runs in your CI, uses the AI provider you choose,
18
- and turns every pull request into clear summaries, actionable file-level feedback,
19
- review artifacts, and merge gates.
15
+ [Get started in 5 minutes](docs/quickstart.md) ·
16
+ [Bring your own agent](docs/ci-examples.md#using-another-acp-cli) ·
17
+ [See examples](examples/README.md) ·
18
+ [Read the docs](docs/README.md)
20
19
 
21
- Use the provider path that already works for your team and keep the review
22
- workflow in your repository. DiffPal's goal is to make AI PR review portable,
23
- affordable, and enforceable across GitHub, GitLab, and Azure DevOps.
20
+ ## What DiffPal Publishes
24
21
 
25
- | Works with | Publishes | Gates on |
26
- | --- | --- | --- |
27
- | GitHub Actions, GitLab CI, Azure Pipelines | summaries, file-level comments, checks/statuses, SARIF, Code Quality | policy thresholds through native CI checks and PR statuses |
22
+ DiffPal runs in CI and keeps the review output consistent even when teams use
23
+ different AI agents, accounts, or hosts.
24
+
25
+ | Output | Where it shows up |
26
+ | --- | --- |
27
+ | PR/MR summary | GitHub reviews, GitLab summaries, Azure PR threads |
28
+ | Actionable findings | Inline comments, discussions, or PR threads on changed lines |
29
+ | Review artifacts | `.artifacts/diffpal/findings.json`, summary Markdown, SARIF, Code Quality |
30
+ | Merge gates | CI exit status, checks, commit statuses, or PR statuses |
28
31
 
29
- [Quickstart](docs/quickstart.md) · [CI examples](docs/ci-examples.md) · [Config reference](docs/config-reference.md) · [Provider recipes](examples/README.md)
32
+ ## Choose Your Path
33
+
34
+ | Goal | Start here |
35
+ | --- | --- |
36
+ | Fastest GitHub setup | [Quickstart](docs/quickstart.md) with the default GitHub Actions recipe |
37
+ | Keep an existing agent | [Generic ACP setup](docs/ci-examples.md#using-another-acp-cli) |
38
+ | Use GitLab or Azure DevOps | [CI setup guide](docs/ci-examples.md) |
39
+ | Tune policy and auditing | [Config reference](docs/config-reference.md), [findings schema](docs/findings-schema.md) |
40
+
41
+ ## Why DiffPal
42
+
43
+ Most AI review products ask you to adopt their platform. DiffPal takes the
44
+ opposite approach: keep the agent your team already trusts, keep the CI system
45
+ you already operate, and standardize how review feedback is generated,
46
+ published, and gated.
47
+
48
+ - **Provider choice:** use Codex, Copilot, OpenCode, Gemini, Claude Code, a
49
+ hosted provider, an ordered provider pool, or any ACP-compatible CLI.
50
+ - **Repository control:** review config, instructions, artifacts, and gates live
51
+ with the codebase instead of behind a required hosted DiffPal service.
52
+ - **Structured outcomes:** DiffPal owns diff collection, findings validation,
53
+ publishing, artifacts, and merge policy while your provider owns model
54
+ reasoning and credentials.
30
55
 
31
56
  ## How DiffPal Works
32
57
 
33
- ```text
34
- pull request diff
35
- -> DiffPal config and policy
36
- -> selected ACP or hosted provider
37
- -> structured findings bundle
38
- -> platform publisher and CI artifacts
58
+ ```mermaid
59
+ flowchart LR
60
+ A[Pull request diff] --> B[DiffPal config and policy]
61
+ B --> C[Selected provider or ACP CLI]
62
+ C --> D[Structured findings bundle]
63
+ D --> E[PR summary and inline feedback]
64
+ D --> F[SARIF and Code Quality artifacts]
65
+ D --> G[Merge gates and statuses]
39
66
  ```
40
67
 
41
- DiffPal coordinates the review workflow around the model call. Your provider
42
- supplies the review intelligence; DiffPal keeps PR feedback, artifacts, and
43
- merge policy consistent across hosts.
44
-
45
68
  Review instructions are produced by DiffPal's versioned Prompt Pack. Findings
46
69
  artifacts include the prompt id, prompt version, purpose, and findings schema
47
- version, so a review can be traced back to the exact prompt contract that
48
- generated it. See the [config reference](docs/config-reference.md#prompt-pack)
49
- and [findings schema](docs/findings-schema.md) for the current metadata.
70
+ version, so a review can be traced back to the prompt contract that generated
71
+ it. See the [config reference](docs/config-reference.md#prompt-pack) and
72
+ [findings schema](docs/findings-schema.md) for the current metadata.
50
73
 
51
- ## Bring Your Own Provider
74
+ ## GitHub In 5 Minutes
52
75
 
53
- DiffPal decouples AI review from any one vendor or hosted service. Choose
54
- Codex, Copilot, OpenCode, Gemini, Claude Code, a hosted API provider, an ordered
55
- provider pool, or any ACP-compatible CLI without rebuilding your PR review
56
- workflow.
57
-
58
- That model keeps cost control with your team. DiffPal does not require a hosted
59
- review service or per-seat platform subscription to collect diffs, publish PR
60
- feedback, write artifacts, or enforce merge gates.
61
-
62
- ## Quick Start: GitHub Actions
63
-
64
- This is the fastest production-shaped setup using the default Codex API-key
65
- recipe: DiffPal installs itself through the GitHub Action, Codex is selected as
66
- the review provider, and `OPENAI_API_KEY` stays in GitHub Secrets. You can swap
67
- the provider recipe while keeping the same DiffPal review workflow.
68
-
69
- 1. Generate the config:
76
+ The fastest path uses the Codex API-key recipe because it is a concrete
77
+ copy-paste GitHub Actions setup. Codex is not the product boundary; you can swap
78
+ the provider recipe and keep the same DiffPal workflow.
70
79
 
71
80
  ```bash
72
81
  npx -y @diffpal/diffpal@latest init --wizard --setup codex-api-key --platform github
73
82
  ```
74
83
 
75
- This writes `.config/diffpal/config.yaml` with a visible `ci` profile. Existing
76
- files are kept unless you pass `--force`.
77
-
78
- 2. Add a repository secret:
79
-
80
- | Secret | Purpose |
81
- | --- | --- |
82
- | `OPENAI_API_KEY` | Authenticates Codex for the review provider. |
83
-
84
- For public open-source repositories, keep provider credentials away from fork PR
85
- code. GitHub's fork workflow approval settings control whether outside
86
- contributors' fork workflows run automatically; they do not make it safe to
87
- release provider secrets to fork code. Keep DiffPal's secret-backed review job
88
- limited to same-repository pull requests. Fork PRs should run no-secret CI only.
89
-
90
- 3. Add the workflow:
84
+ Then add `OPENAI_API_KEY` as a repository secret, copy the GitHub Actions
85
+ example, and open a trusted same-repository pull request:
91
86
 
92
87
  ```bash
93
88
  mkdir -p .github/workflows
94
89
  cp examples/ci/github-actions/codex-api-key.yml .github/workflows/diffpal.yml
95
90
  ```
96
91
 
97
- 4. Open a same-repository pull request.
98
-
99
- Expected result:
100
-
101
- - a `DiffPal Review Summary` PR review with an overview of the change
102
- - file-level review comments for actionable findings
103
- - `.artifacts/diffpal/findings.json` in the job workspace
104
- - a failed job only when `gate: true` and blocking findings exist, or when setup
105
- or publishing fails
106
-
107
- The GitHub Action installs the latest DiffPal CLI by default. After your first
108
- successful run, pin `diffpal-version`, provider CLIs, and bridge packages when
109
- you need fully reproducible credentialed CI.
110
-
111
- ## Supported CI Systems
112
-
113
- Use the same `.config/diffpal/config.yaml` shape in every CI system. GitHub,
114
- GitLab, and Azure are publishing targets; the core workflow only changes how CI
115
- checks out code, installs the provider, passes the platform token, and runs
116
- DiffPal.
117
-
118
- | CI system | Examples | Output surfaces |
119
- | --- | --- | --- |
120
- | GitHub Actions | [`examples/ci/github-actions`](examples/ci/github-actions) | PR review summary, file-level review comments, SARIF |
121
- | GitLab CI | [`examples/ci/gitlab`](examples/ci/gitlab) | MR summary, discussions, Code Quality, SARIF |
122
- | Azure Pipelines | [`examples/ci/azure-pipelines`](examples/ci/azure-pipelines) | PR summary thread, PR threads, PR status |
123
-
124
- ## GitHub Action
125
-
126
- GitHub Actions users can install the
127
- [DiffPal Review action](https://github.com/marketplace/actions/diffpal-review)
128
- with `uses: diffpal/action@v1`. The action source and release automation live in
129
- the separate [diffpal/action](https://github.com/diffpal/action) repository.
130
-
131
- The action installs `@diffpal/diffpal` by default, then runs
132
- `diffpal review github`. You still own provider setup and authentication in the
133
- workflow, so switching provider recipes does not require switching PR review
134
- platforms.
135
-
136
- ## Azure DevOps Marketplace Extension
137
-
138
- Azure Pipelines users can install the public
139
- [DiffPal Review extension](https://marketplace.visualstudio.com/items?itemName=diffpal.diffpal)
140
- from the Azure DevOps Marketplace and add the `DiffPalReview@1` task to PR
141
- validation pipelines. Extension source and release automation live in the
142
- separate [diffpal/azure-devops](https://github.com/diffpal/azure-devops)
143
- repository.
144
-
145
- The task installs `@diffpal/diffpal` by default, then runs `diffpal review ado`.
146
- You still need a committed DiffPal config, a provider credential such as
147
- `OPENAI_API_KEY`, `SYSTEM_ACCESSTOKEN` for PR feedback publishing, and a full git
148
- checkout. See the [Azure Pipelines setup guide](docs/ci-examples.md#azure-pipelines)
149
- for copy-paste examples.
150
-
151
- Example GitHub Actions workflow:
152
-
153
- ```yaml
154
- name: diffpal
155
-
156
- on:
157
- pull_request:
158
- types: [opened, synchronize, reopened, ready_for_review]
159
-
160
- jobs:
161
- review:
162
- name: review
163
- # Provider credentials are only exposed to same-repository PRs.
164
- # Fork PRs should run no-secret CI only.
165
- if: ${{ !github.event.pull_request.draft && github.event.pull_request.head.repo.full_name == github.repository }}
166
- runs-on: ubuntu-latest
167
- permissions:
168
- contents: read
169
- pull-requests: write
170
- steps:
171
- - uses: actions/checkout@v6
172
- with:
173
- fetch-depth: 0
174
-
175
- - uses: actions/setup-node@v6
176
- with:
177
- node-version: 22
178
-
179
- - name: Install Codex provider
180
- run: npm install --global @openai/codex@0.139.0 @normahq/codex-acp-bridge@1.6.3
181
-
182
- - name: Authenticate Codex
183
- run: printf '%s' "$OPENAI_API_KEY" | codex login --with-api-key
184
- env:
185
- OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
186
-
187
- - uses: diffpal/action@v1
188
- with:
189
- base: ${{ github.event.pull_request.base.sha }}
190
- head: ${{ github.event.pull_request.head.sha }}
191
- profile: ci
192
- gate: true
193
- feedback: review
194
- env:
195
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
196
- ```
197
-
198
- `pull_request_target` runs from the default branch of the base repository and is
199
- useful for trusted automation such as labeling or commenting. Do not combine it
200
- with checking out the PR head or running package installs, tests, build scripts,
201
- hooks, provider CLIs, or other fork code. That pattern can expose privileged
202
- tokens or secrets to untrusted code.
203
-
204
- If you prefer copying files manually, use
205
- [`examples/configs/codex-api-key/config.yaml`](examples/configs/codex-api-key/config.yaml).
206
- For full copy-paste files and host-specific notes, read
207
- [`docs/ci-examples.md`](docs/ci-examples.md).
208
-
209
- ## Config You Commit
210
-
211
- DiffPal uses the current profile-based config shape. There is no legacy
212
- `defaults` block.
213
-
214
- ```yaml
215
- version: v1
216
-
217
- runtime:
218
- providers:
219
- codex-acp:
220
- type: codex_acp
221
- codex_acp:
222
- reasoning_effort: low
223
-
224
- diffpal:
225
- provider: codex-acp
226
- gate:
227
- block_on: high
228
- review:
229
- language: en
230
- instructions: |
231
- Prefer actionable findings that are directly supported by the diff.
232
- platforms:
233
- github: {}
234
- gitlab: {}
235
- azure: {}
236
-
237
- profiles:
238
- ci:
239
- diffpal:
240
- gate:
241
- block_on: high
242
- ```
243
-
244
- DiffPal uses a fixed finding taxonomy: security, correctness, reliability,
245
- performance, maintainability, testing, and style. Use review instructions to
246
- change or extend the review scope, for example `Review for OWASP best practices
247
- and authz/authn regressions.`
248
-
249
- Severity is impact-based across all categories. The full critical/high/medium/low
250
- matrix is in the [config reference](docs/config-reference.md#severity-matrix).
251
-
252
- Use `diffpal.review.instructions`, the `instructions` action input, or
253
- `--instructions-file` for repository-specific review guidance.
254
- For large pull requests or slower providers, set `diffpal.review.timeout`
255
- in the selected profile, for example `profiles.ci.diffpal.review.timeout: 10m`.
256
-
257
- ## Provider Recipes and Runtime Types
258
-
259
- DiffPal delegates review to `diffpal.provider`, which points at a provider
260
- under `runtime.providers`.
261
-
262
- Ready-made config recipes. These are the same names accepted by
263
- `diffpal init --wizard --setup ...`:
264
-
265
- | Setup | Config | Secret |
266
- | --- | --- | --- |
267
- | Generic ACP CLI | [`examples/configs/generic-acp/config.yaml`](examples/configs/generic-acp/config.yaml) | provider-specific |
268
- | Codex API key | [`examples/configs/codex-api-key/config.yaml`](examples/configs/codex-api-key/config.yaml) | `OPENAI_API_KEY` |
269
- | Codex subscription auth | [`examples/configs/codex-subscription/config.yaml`](examples/configs/codex-subscription/config.yaml) | `CODEX_AUTH_JSON_B64` |
270
- | Copilot fine-grained PAT | [`examples/configs/copilot-github-token/config.yaml`](examples/configs/copilot-github-token/config.yaml) | `COPILOT_GITHUB_TOKEN` |
271
- | OpenCode ACP | [`examples/configs/opencode-acp/config.yaml`](examples/configs/opencode-acp/config.yaml) | OpenCode-specific |
92
+ After the first successful run you should see a `DiffPal Review Summary`,
93
+ inline findings when actionable issues exist, and
94
+ `.artifacts/diffpal/findings.json` in the job workspace. Read the
95
+ [quickstart](docs/quickstart.md) for the complete setup and fork-PR secret
96
+ guidance.
272
97
 
273
- For Codex subscription auth, generate a fresh `CODEX_AUTH_JSON_B64` value with
274
- the command recipe in [`examples/README.md`](examples/README.md#generate-codex_auth_json_b64).
98
+ ## Bring Your Own Agent
275
99
 
276
- Use `generic_acp` for any CLI that can start an ACP stdio server:
100
+ DiffPal delegates review to `diffpal.provider`, which points at an entry under
101
+ `runtime.providers`. Use `generic_acp` for any CLI that can start an ACP stdio
102
+ server:
277
103
 
278
104
  ```yaml
279
105
  runtime:
@@ -287,112 +113,39 @@ diffpal:
287
113
  provider: my-review-agent
288
114
  ```
289
115
 
290
- Common provider aliases are available when the CLI is already installed and
291
- authenticated:
116
+ Install and authenticate that CLI in CI before running DiffPal. The rest of the
117
+ workflow stays the same: full git checkout, DiffPal config, provider secret,
118
+ platform token, review command, and optional gate.
292
119
 
293
- | Type | Runtime command |
294
- | --- | --- |
295
- | `codex_acp` | Codex ACP via the configured Codex bridge |
296
- | `copilot_acp` | Copilot ACP |
297
- | `opencode_acp` | `opencode acp` |
298
- | `gemini_acp` | Gemini ACP |
299
- | `claude_code_acp` | Claude Code ACP |
300
- | `generic_acp` | Your explicit command |
301
- | `openai`, `aistudio` | Hosted API providers |
302
- | `pool` | Ordered provider failover |
303
-
304
- DiffPal passes the review task snapshot with base and head revisions. Providers
305
- inspect the repository diff and supporting code through their available Git and
306
- filesystem tools, then DiffPal validates the structured findings against the
307
- changed ranges it collected internally.
308
-
309
- ## MCP Servers
310
-
311
- DiffPal can pass MCP servers through the Norma runtime to providers that support
312
- them. Declare servers once, then attach them to the provider:
313
-
314
- ```yaml
315
- runtime:
316
- mcp_servers:
317
- repo-docs:
318
- type: stdio
319
- cmd: ["your-docs-mcp-server"]
320
- args: ["--root", "."]
321
- env:
322
- DOCS_TOKEN: "${DOCS_TOKEN}"
323
- policy-api:
324
- type: http
325
- url: "https://policy.example.com/mcp"
326
- headers:
327
- Authorization: "Bearer ${POLICY_MCP_TOKEN}"
328
- providers:
329
- opencode-acp:
330
- type: opencode_acp
331
- mcp_servers:
332
- - repo-docs
333
- - policy-api
334
- opencode_acp:
335
- model: opencode/big-pickle
336
-
337
- diffpal:
338
- provider: opencode-acp
339
- ```
120
+ ## Platform Support
340
121
 
341
- Keep MCP credentials in CI secrets. Use envsubst placeholders only for values
342
- that are guaranteed to exist in that job.
122
+ Use the same `.config/diffpal/config.yaml` shape across hosts. The CI file only
123
+ changes how the provider is installed, how credentials are passed, and which
124
+ publisher DiffPal runs.
343
125
 
344
- ## Feedback
345
-
346
- Use `feedback` for the normal user-facing shape:
347
-
348
- | Feedback | Behavior |
349
- | --- | --- |
350
- | `summary` | Summary plus non-file artifacts such as SARIF, Code Quality, or status. No file-level findings are published. |
351
- | `review` | Summary plus file-level findings for the platform; non-blocking findings stay visible but do not become merge blockers. The summary does not duplicate file-level finding details. |
352
-
353
- Use `summary-overview: false` or `--summary-overview=false` if you do not want
354
- the semantic change overview in the summary.
355
-
356
- If two DiffPal workflows run on the same PR, give them separate channels:
357
-
358
- ```yaml
359
- with:
360
- review-channel: diffpal-dev
361
- review-id: github-pr-${{ github.event.pull_request.number }}-diffpal-dev
362
- ```
363
-
364
- That produces a separate `diffpal-dev` PR review with its own summary and file-level
365
- comments.
366
-
367
- ## Local Debugging
368
-
369
- CI is the main path, but local checks help when wiring a provider:
370
-
371
- ```bash
372
- npm install --global @diffpal/diffpal@latest @openai/codex@0.139.0 @normahq/codex-acp-bridge@1.6.3
373
- printf '%s' "$OPENAI_API_KEY" | codex login --with-api-key
374
- diffpal doctor --mode github
375
- diffpal review local --base origin/main --head HEAD --profile ci
376
- ```
377
-
378
- To inspect the prompt contract without calling any provider:
379
-
380
- ```bash
381
- diffpal debug prompt --base origin/main --head HEAD --profile ci --format text
382
- ```
126
+ | Host | Native outputs | Examples |
127
+ | --- | --- | --- |
128
+ | GitHub Actions | PR review summary, file-level review comments, SARIF | [`examples/ci/github-actions`](examples/ci/github-actions) |
129
+ | GitLab CI | MR summary, discussions, Code Quality, SARIF, status | [`examples/ci/gitlab`](examples/ci/gitlab) |
130
+ | Azure Pipelines | PR summary thread, PR threads, PR status | [`examples/ci/azure-pipelines`](examples/ci/azure-pipelines) |
383
131
 
384
- The debug command renders the system prompt, the review task snapshot, and a
385
- schema-valid mock findings bundle through the normal review validation path.
386
- It does not require API keys.
132
+ GitHub users can also install the
133
+ [DiffPal Review action](https://github.com/marketplace/actions/diffpal-review)
134
+ with `uses: diffpal/action@v1`. Azure users can install the
135
+ [DiffPal Review extension](https://marketplace.visualstudio.com/items?itemName=diffpal.diffpal)
136
+ and use the `DiffPalReview@1` task.
387
137
 
388
138
  ## Documentation
389
139
 
140
+ - [Start here](docs/README.md)
390
141
  - [Quickstart](docs/quickstart.md)
142
+ - [What success looks like](docs/what-success-looks-like.md)
391
143
  - [CI setup guide](docs/ci-examples.md)
392
- - [Examples](examples/README.md)
144
+ - [Examples gallery](examples/README.md)
145
+ - [Comparison guide](docs/comparison.md)
146
+ - [Troubleshooting](docs/troubleshooting.md)
393
147
  - [Config reference](docs/config-reference.md)
394
148
  - [Findings schema](docs/findings-schema.md)
395
149
  - [GitLab adapter reference](docs/platform-gitlab.md)
396
150
  - [Azure adapter reference](docs/platform-azure.md)
397
- - [Release process](docs/release.md)
398
151
  - [Contributing](CONTRIBUTING.md)
package/bin/diffpal.exe CHANGED
Binary file
package/package.json CHANGED
@@ -13,5 +13,5 @@
13
13
  "os": [
14
14
  "win32"
15
15
  ],
16
- "version": "0.1.37"
16
+ "version": "0.1.38"
17
17
  }