@humanbased/crosscheck 1.2.0-beta.37 โ†’ 1.2.0-beta.57

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 (69) 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 -3
  10. package/dist/__tests__/codex.test.js +15 -1
  11. package/dist/__tests__/codex.test.js.map +1 -1
  12. package/dist/__tests__/linear-branding.test.d.ts +2 -0
  13. package/dist/__tests__/linear-branding.test.d.ts.map +1 -0
  14. package/dist/__tests__/linear-branding.test.js +156 -0
  15. package/dist/__tests__/linear-branding.test.js.map +1 -0
  16. package/dist/__tests__/linear-identity.test.js +6 -6
  17. package/dist/__tests__/linear-identity.test.js.map +1 -1
  18. package/dist/__tests__/linear-notify.test.js +1 -1
  19. package/dist/__tests__/linear-notify.test.js.map +1 -1
  20. package/dist/__tests__/linear-test-ref.test.d.ts +2 -0
  21. package/dist/__tests__/linear-test-ref.test.d.ts.map +1 -0
  22. package/dist/__tests__/linear-test-ref.test.js +81 -0
  23. package/dist/__tests__/linear-test-ref.test.js.map +1 -0
  24. package/dist/__tests__/linear-verify.test.js +21 -2
  25. package/dist/__tests__/linear-verify.test.js.map +1 -1
  26. package/dist/__tests__/linear-worker.test.js +2 -2
  27. package/dist/__tests__/linear-worker.test.js.map +1 -1
  28. package/dist/__tests__/optimize.test.js +1 -1
  29. package/dist/__tests__/optimize.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 +81 -1
  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 +25 -10
  44. package/dist/config/schema.d.ts.map +1 -1
  45. package/dist/config/schema.js +19 -3
  46. package/dist/config/schema.js.map +1 -1
  47. package/dist/linear/comment.d.ts.map +1 -1
  48. package/dist/linear/comment.js +5 -1
  49. package/dist/linear/comment.js.map +1 -1
  50. package/dist/linear/identity.d.ts +13 -1
  51. package/dist/linear/identity.d.ts.map +1 -1
  52. package/dist/linear/identity.js +40 -4
  53. package/dist/linear/identity.js.map +1 -1
  54. package/dist/linear/notify.d.ts +1 -1
  55. package/dist/linear/notify.d.ts.map +1 -1
  56. package/dist/linear/notify.js +13 -2
  57. package/dist/linear/notify.js.map +1 -1
  58. package/dist/linear/verify.d.ts +6 -1
  59. package/dist/linear/verify.d.ts.map +1 -1
  60. package/dist/linear/verify.js +2 -0
  61. package/dist/linear/verify.js.map +1 -1
  62. package/dist/reviewers/codex.d.ts +1 -0
  63. package/dist/reviewers/codex.d.ts.map +1 -1
  64. package/dist/reviewers/codex.js +19 -2
  65. package/dist/reviewers/codex.js.map +1 -1
  66. package/docs/linear-identity-contract.md +6 -0
  67. package/docs/linear-identity.md +80 -11
  68. package/get-started.md +35 -7
  69. 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
 
@@ -1037,6 +1062,7 @@ vendors:
1037
1062
  enabled: true
1038
1063
  auth: subscription # subscription | api-key
1039
1064
  model: gpt-5.6-terra # pins the review model; unset = tier model (api-key) / CLI default (subscription)
1065
+ effort: medium # low | medium | high | xhigh | max | ultra (ultra: terra/sol only)
1040
1066
  # timeout_sec: 1200 # max seconds per CLI call; unset = tier-based (300/600/1200)
1041
1067
 
1042
1068
  claude:
@@ -1176,10 +1202,10 @@ linear: # write review verdicts back to a Linear issue (op
1176
1202
  scopes: "read,write" # comma-separated; initiative:* are separate scopes
1177
1203
  identity:
1178
1204
  actor: crosscheck
1179
- signature: "๐Ÿค– {actor} ยท {product}"
1205
+ signature: "๐Ÿค– {actor} ยท {model}" # {actor} {product} {model} {reviewer} {icon}
1206
+ icon_url: "" # rendered where {icon} appears; app avatar is preferred
1180
1207
  per_step_actor: true # crosscheck/review vs crosscheck/fix in Linear
1181
- comment_on: # verdicts mirrored to the issue
1182
- - APPROVE
1208
+ comment_on: # verdicts mirrored to the issue (default omits APPROVE)
1183
1209
  - NEEDS_WORK
1184
1210
  - BLOCK
1185
1211
  team_keys: [] # e.g. [IN] โ€” required to match bare refs like IN-42
@@ -1315,6 +1341,8 @@ codex review --base <base-branch> --title "<pr-title>"
1315
1341
 
1316
1342
  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
1343
 
1344
+ Reasoning effort comes from `vendors.codex.effort` and is always passed through as `-c model_reasoning_effort=...`. The values match the codex CLI tiers 1:1 โ€” `low` (Light), `medium`, `high`, `xhigh` (Extra High), `max`, `ultra`. Not every model supports every tier: `ultra` is terra/sol only, and pre-5.6 models stop at `xhigh` โ€” the CLI rejects unsupported combinations. Higher tiers can multiply review wall-clock time; pair them with `timeout_sec`.
1345
+
1318
1346
  ### How Claude reviews run
1319
1347
 
1320
1348
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humanbased/crosscheck",
3
- "version": "1.2.0-beta.37",
3
+ "version": "1.2.0-beta.57",
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",