@humanbased/crosscheck 1.2.0-beta.35 โ†’ 1.2.0-beta.53

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 (68) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +126 -393
  3. package/README.zh.md +1 -1
  4. package/assets/icon-256.png +0 -0
  5. package/assets/linear-comment.svg +18 -0
  6. package/assets/linear-onboard.svg +30 -0
  7. package/assets/linear-status.svg +23 -0
  8. package/assets/linear-test.svg +34 -0
  9. package/crosscheck.config.example.yml +12 -4
  10. package/dist/__tests__/linear-branding.test.d.ts +2 -0
  11. package/dist/__tests__/linear-branding.test.d.ts.map +1 -0
  12. package/dist/__tests__/linear-branding.test.js +156 -0
  13. package/dist/__tests__/linear-branding.test.js.map +1 -0
  14. package/dist/__tests__/linear-identity.test.js +6 -6
  15. package/dist/__tests__/linear-identity.test.js.map +1 -1
  16. package/dist/__tests__/linear-notify.test.js +1 -1
  17. package/dist/__tests__/linear-notify.test.js.map +1 -1
  18. package/dist/__tests__/linear-test-ref.test.d.ts +2 -0
  19. package/dist/__tests__/linear-test-ref.test.d.ts.map +1 -0
  20. package/dist/__tests__/linear-test-ref.test.js +81 -0
  21. package/dist/__tests__/linear-test-ref.test.js.map +1 -0
  22. package/dist/__tests__/linear-verify.test.js +21 -2
  23. package/dist/__tests__/linear-verify.test.js.map +1 -1
  24. package/dist/__tests__/linear-worker.test.js +2 -2
  25. package/dist/__tests__/linear-worker.test.js.map +1 -1
  26. package/dist/__tests__/optimize.test.js +1 -1
  27. package/dist/__tests__/optimize.test.js.map +1 -1
  28. package/dist/__tests__/review-models.test.js +14 -1
  29. package/dist/__tests__/review-models.test.js.map +1 -1
  30. package/dist/cli.js +22 -0
  31. package/dist/cli.js.map +1 -1
  32. package/dist/commands/linear-test.d.ts +18 -0
  33. package/dist/commands/linear-test.d.ts.map +1 -0
  34. package/dist/commands/linear-test.js +130 -0
  35. package/dist/commands/linear-test.js.map +1 -0
  36. package/dist/commands/onboard.d.ts +10 -0
  37. package/dist/commands/onboard.d.ts.map +1 -1
  38. package/dist/commands/onboard.js +83 -2
  39. package/dist/commands/onboard.js.map +1 -1
  40. package/dist/commands/status.d.ts.map +1 -1
  41. package/dist/commands/status.js +6 -3
  42. package/dist/commands/status.js.map +1 -1
  43. package/dist/config/schema.d.ts +15 -0
  44. package/dist/config/schema.d.ts.map +1 -1
  45. package/dist/config/schema.js +18 -5
  46. package/dist/config/schema.js.map +1 -1
  47. package/dist/lib/review-models.d.ts.map +1 -1
  48. package/dist/lib/review-models.js +10 -3
  49. package/dist/lib/review-models.js.map +1 -1
  50. package/dist/linear/comment.d.ts.map +1 -1
  51. package/dist/linear/comment.js +5 -1
  52. package/dist/linear/comment.js.map +1 -1
  53. package/dist/linear/identity.d.ts +13 -1
  54. package/dist/linear/identity.d.ts.map +1 -1
  55. package/dist/linear/identity.js +40 -4
  56. package/dist/linear/identity.js.map +1 -1
  57. package/dist/linear/notify.d.ts +1 -1
  58. package/dist/linear/notify.d.ts.map +1 -1
  59. package/dist/linear/notify.js +13 -2
  60. package/dist/linear/notify.js.map +1 -1
  61. package/dist/linear/verify.d.ts +6 -1
  62. package/dist/linear/verify.d.ts.map +1 -1
  63. package/dist/linear/verify.js +2 -0
  64. package/dist/linear/verify.js.map +1 -1
  65. package/docs/linear-identity-contract.md +6 -0
  66. package/docs/linear-identity.md +80 -11
  67. package/get-started.md +34 -9
  68. package/package.json +1 -1
package/get-started.md CHANGED
@@ -161,10 +161,16 @@ reviews the diff as usual โ€” it never errors.
161
161
  Separate from enrichment above, which only *reads*. When `linear.enabled: true`,
162
162
  crosscheck mirrors each review verdict onto the PR's Linear issue.
163
163
 
164
- Two tiers. `api_key` (T0) reuses `LINEAR_API_KEY` and tags writes with a
165
- `๐Ÿค– crosscheck ยท crosscheck` signature line, but Linear still attributes them to
166
- your account. `client_credentials` (T1) uses an OAuth app in your workspace so
167
- writes render as the app itself:
164
+ `crosscheck onboard` asks which rung of the attribution ladder you want and writes
165
+ the config for you.
166
+
167
+ **Start with `api_key`.** It reuses `LINEAR_API_KEY`, works immediately, and posts
168
+ the comment โ€” the feature is fully functional. Comments attribute to your Linear
169
+ account, led by a `๐Ÿค– crosscheck ยท <model>` signature line.
170
+
171
+ Climb to `client_credentials` when more than one thing writes to your workspace and
172
+ you need them told apart. It uses an OAuth app โ€” one per workspace, not per user โ€”
173
+ so comments post as crosscheck itself with its own icon:
168
174
 
169
175
  ```bash
170
176
  export LINEAR_CLIENT_ID=...
@@ -174,6 +180,25 @@ export LINEAR_CLIENT_SECRET=...
174
180
  A failed T1 token mint aborts the run rather than falling back to `api_key` โ€”
175
181
  a silent downgrade would put agent writes back under a human's name.
176
182
 
183
+ `crosscheck onboard` walks you through the choice:
184
+
185
+ <p align="center">
186
+ <img src="./assets/linear-onboard.svg" alt="crosscheck onboard โ€” choosing a Linear attribution rung" width="700" />
187
+ </p>
188
+
189
+ Before opening a PR, `crosscheck linear-test` exercises the whole path and posts nothing โ€”
190
+ identity, issue lookup, verdict filter, and the exact comment body:
191
+
192
+ <p align="center">
193
+ <img src="./assets/linear-test.svg" alt="crosscheck linear-test โ€” dry-run verification" width="700" />
194
+ </p>
195
+
196
+ `crosscheck status` shows which rung is active whenever `linear.enabled` is true:
197
+
198
+ <p align="center">
199
+ <img src="./assets/linear-status.svg" alt="crosscheck status โ€” the Linear identity section" width="620" />
200
+ </p>
201
+
177
202
  Full walkthrough, including the two Linear UI gotchas that trip people up:
178
203
  [docs/linear-identity.md](docs/linear-identity.md).
179
204
 
@@ -1036,7 +1061,7 @@ vendors:
1036
1061
  codex:
1037
1062
  enabled: true
1038
1063
  auth: subscription # subscription | api-key
1039
- model: gpt-5.6-terra # only used when auth: api-key
1064
+ model: gpt-5.6-terra # pins the review model; unset = tier model (api-key) / CLI default (subscription)
1040
1065
  # timeout_sec: 1200 # max seconds per CLI call; unset = tier-based (300/600/1200)
1041
1066
 
1042
1067
  claude:
@@ -1176,10 +1201,10 @@ linear: # write review verdicts back to a Linear issue (op
1176
1201
  scopes: "read,write" # comma-separated; initiative:* are separate scopes
1177
1202
  identity:
1178
1203
  actor: crosscheck
1179
- signature: "๐Ÿค– {actor} ยท {product}"
1204
+ signature: "๐Ÿค– {actor} ยท {model}" # {actor} {product} {model} {reviewer} {icon}
1205
+ icon_url: "" # rendered where {icon} appears; app avatar is preferred
1180
1206
  per_step_actor: true # crosscheck/review vs crosscheck/fix in Linear
1181
- comment_on: # verdicts mirrored to the issue
1182
- - APPROVE
1207
+ comment_on: # verdicts mirrored to the issue (default omits APPROVE)
1183
1208
  - NEEDS_WORK
1184
1209
  - BLOCK
1185
1210
  team_keys: [] # e.g. [IN] โ€” required to match bare refs like IN-42
@@ -1313,7 +1338,7 @@ If none match, origin is `human` and the PR is skipped in cross-vendor mode.
1313
1338
  codex review --base <base-branch> --title "<pr-title>"
1314
1339
  ```
1315
1340
 
1316
- The `--base` flag diffs current HEAD against the base branch โ€” exactly the PR diff. With `auth: subscription`, no model flag is passed. With `auth: api-key`, the model is selected by quality tier (`fast` โ†’ `gpt-5.6-luna`, `balanced` โ†’ `gpt-5.6-terra`, `thorough` โ†’ `gpt-5.6-sol`).
1341
+ The `--base` flag diffs current HEAD against the base branch โ€” exactly the PR diff. An explicit `vendors.codex.model` (or matching `model_tiers` entry) is passed as `-c model=...` under either auth mode. When unset: `auth: subscription` passes no model flag (the Codex CLI picks its default), while `auth: api-key` selects the model by quality tier (`fast` โ†’ `gpt-5.6-luna`, `balanced` โ†’ `gpt-5.6-terra`, `thorough` โ†’ `gpt-5.6-sol`).
1317
1342
 
1318
1343
  ### How Claude reviews run
1319
1344
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humanbased/crosscheck",
3
- "version": "1.2.0-beta.35",
3
+ "version": "1.2.0-beta.53",
4
4
  "description": "AI code review pipeline that turns agent-written PRs into merge-ready patches",
5
5
  "bin": {
6
6
  "crosscheck": "dist/cli.js",