@humanbased/crosscheck 1.2.0 → 1.3.0-beta.81
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/LICENSE +1 -1
- package/README.md +182 -375
- package/README.zh.md +1 -1
- package/assets/icon-256.png +0 -0
- package/assets/linear-comment.svg +18 -0
- package/assets/linear-onboard.svg +30 -0
- package/assets/linear-status.svg +23 -0
- package/assets/linear-test.svg +34 -0
- package/assets/skills/code-review/.crosscheck-skill.json +9 -0
- package/assets/skills/code-review/LICENSE +21 -0
- package/assets/skills/code-review/SKILL.md +89 -0
- package/assets/skills/code-review/agents/openai.yaml +3 -0
- package/assets/skills/code-review-skill/.crosscheck-skill.json +9 -0
- package/assets/skills/code-review-skill/LICENSE +21 -0
- package/assets/skills/code-review-skill/SKILL.md +231 -0
- package/assets/skills/code-review-skill/assets/pr-review-template.md +137 -0
- package/assets/skills/code-review-skill/assets/review-checklist.md +123 -0
- package/assets/skills/code-review-skill/reference/angular.md +768 -0
- package/assets/skills/code-review-skill/reference/architecture-review-guide.md +472 -0
- package/assets/skills/code-review-skill/reference/c.md +890 -0
- package/assets/skills/code-review-skill/reference/code-quality-universal.md +488 -0
- package/assets/skills/code-review-skill/reference/code-review-best-practices.md +136 -0
- package/assets/skills/code-review-skill/reference/common-bugs-checklist.md +286 -0
- package/assets/skills/code-review-skill/reference/cpp.md +893 -0
- package/assets/skills/code-review-skill/reference/cross-cutting/async-concurrency-patterns.md +515 -0
- package/assets/skills/code-review-skill/reference/cross-cutting/error-handling-principles.md +492 -0
- package/assets/skills/code-review-skill/reference/cross-cutting/n-plus-one-queries.md +309 -0
- package/assets/skills/code-review-skill/reference/cross-cutting/sql-injection-prevention.md +308 -0
- package/assets/skills/code-review-skill/reference/cross-cutting/xss-prevention.md +264 -0
- package/assets/skills/code-review-skill/reference/csharp.md +525 -0
- package/assets/skills/code-review-skill/reference/css-less-sass.md +661 -0
- package/assets/skills/code-review-skill/reference/django.md +985 -0
- package/assets/skills/code-review-skill/reference/fastapi.md +580 -0
- package/assets/skills/code-review-skill/reference/go.md +993 -0
- package/assets/skills/code-review-skill/reference/java.md +409 -0
- package/assets/skills/code-review-skill/reference/java8.md +586 -0
- package/assets/skills/code-review-skill/reference/kotlin.md +1018 -0
- package/assets/skills/code-review-skill/reference/nestjs.md +593 -0
- package/assets/skills/code-review-skill/reference/performance-review-guide.md +816 -0
- package/assets/skills/code-review-skill/reference/php.md +684 -0
- package/assets/skills/code-review-skill/reference/python.md +1073 -0
- package/assets/skills/code-review-skill/reference/qt.md +757 -0
- package/assets/skills/code-review-skill/reference/react.md +871 -0
- package/assets/skills/code-review-skill/reference/ruby.md +964 -0
- package/assets/skills/code-review-skill/reference/rust.md +846 -0
- package/assets/skills/code-review-skill/reference/security-review-guide.md +494 -0
- package/assets/skills/code-review-skill/reference/svelte.md +1064 -0
- package/assets/skills/code-review-skill/reference/swift.md +936 -0
- package/assets/skills/code-review-skill/reference/typescript.md +1016 -0
- package/assets/skills/code-review-skill/reference/vue.md +924 -0
- package/assets/skills/code-review-skill/reference/zig.md +440 -0
- package/assets/skills/code-review-skill/scripts/pr-analyzer.py +435 -0
- package/assets/skills/code-review-skill/scripts/test_pr_analyzer.py +380 -0
- package/assets/skills/codebase-design/.crosscheck-skill.json +9 -0
- package/assets/skills/codebase-design/DEEPENING.md +37 -0
- package/assets/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/assets/skills/codebase-design/LICENSE +21 -0
- package/assets/skills/codebase-design/SKILL.md +114 -0
- package/assets/skills/codebase-design/agents/openai.yaml +3 -0
- package/assets/skills/diagnosing-bugs/.crosscheck-skill.json +9 -0
- package/assets/skills/diagnosing-bugs/LICENSE +21 -0
- package/assets/skills/diagnosing-bugs/SKILL.md +134 -0
- package/assets/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/assets/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/crosscheck.config.example.yml +101 -9
- package/dist/__tests__/board.test.js +11 -0
- package/dist/__tests__/board.test.js.map +1 -1
- package/dist/__tests__/can-write-verdict.test.d.ts +2 -0
- package/dist/__tests__/can-write-verdict.test.d.ts.map +1 -0
- package/dist/__tests__/can-write-verdict.test.js +31 -0
- package/dist/__tests__/can-write-verdict.test.js.map +1 -0
- package/dist/__tests__/codex.test.js +14 -27
- package/dist/__tests__/codex.test.js.map +1 -1
- package/dist/__tests__/comment-bodies.test.js +49 -1
- package/dist/__tests__/comment-bodies.test.js.map +1 -1
- package/dist/__tests__/conflict-resolve.test.js +44 -1
- package/dist/__tests__/conflict-resolve.test.js.map +1 -1
- package/dist/__tests__/fix.test.js +33 -0
- package/dist/__tests__/fix.test.js.map +1 -1
- package/dist/__tests__/linear-branding.test.d.ts +2 -0
- package/dist/__tests__/linear-branding.test.d.ts.map +1 -0
- package/dist/__tests__/linear-branding.test.js +156 -0
- package/dist/__tests__/linear-branding.test.js.map +1 -0
- package/dist/__tests__/linear-client.test.d.ts +2 -0
- package/dist/__tests__/linear-client.test.d.ts.map +1 -0
- package/dist/__tests__/linear-client.test.js +120 -0
- package/dist/__tests__/linear-client.test.js.map +1 -0
- package/dist/__tests__/linear-comment.test.d.ts +2 -0
- package/dist/__tests__/linear-comment.test.d.ts.map +1 -0
- package/dist/__tests__/linear-comment.test.js +151 -0
- package/dist/__tests__/linear-comment.test.js.map +1 -0
- package/dist/__tests__/linear-identity.test.d.ts +2 -0
- package/dist/__tests__/linear-identity.test.d.ts.map +1 -0
- package/dist/__tests__/linear-identity.test.js +253 -0
- package/dist/__tests__/linear-identity.test.js.map +1 -0
- package/dist/__tests__/linear-notify.test.d.ts +2 -0
- package/dist/__tests__/linear-notify.test.d.ts.map +1 -0
- package/dist/__tests__/linear-notify.test.js +144 -0
- package/dist/__tests__/linear-notify.test.js.map +1 -0
- package/dist/__tests__/linear-ref.test.d.ts +2 -0
- package/dist/__tests__/linear-ref.test.d.ts.map +1 -0
- package/dist/__tests__/linear-ref.test.js +261 -0
- package/dist/__tests__/linear-ref.test.js.map +1 -0
- package/dist/__tests__/linear-test-ref.test.d.ts +2 -0
- package/dist/__tests__/linear-test-ref.test.d.ts.map +1 -0
- package/dist/__tests__/linear-test-ref.test.js +81 -0
- package/dist/__tests__/linear-test-ref.test.js.map +1 -0
- package/dist/__tests__/linear-verify.test.d.ts +2 -0
- package/dist/__tests__/linear-verify.test.d.ts.map +1 -0
- package/dist/__tests__/linear-verify.test.js +132 -0
- package/dist/__tests__/linear-verify.test.js.map +1 -0
- package/dist/__tests__/linear-worker.test.d.ts +2 -0
- package/dist/__tests__/linear-worker.test.d.ts.map +1 -0
- package/dist/__tests__/linear-worker.test.js +83 -0
- package/dist/__tests__/linear-worker.test.js.map +1 -0
- package/dist/__tests__/linear-write-possible.test.d.ts +2 -0
- package/dist/__tests__/linear-write-possible.test.d.ts.map +1 -0
- package/dist/__tests__/linear-write-possible.test.js +30 -0
- package/dist/__tests__/linear-write-possible.test.js.map +1 -0
- package/dist/__tests__/onboard-preservation.test.js +59 -3
- package/dist/__tests__/onboard-preservation.test.js.map +1 -1
- package/dist/__tests__/optimize.test.js +2 -0
- package/dist/__tests__/optimize.test.js.map +1 -1
- package/dist/__tests__/repo-picker.test.js +7 -1
- package/dist/__tests__/repo-picker.test.js.map +1 -1
- package/dist/__tests__/repository-guidance.test.d.ts +2 -0
- package/dist/__tests__/repository-guidance.test.d.ts.map +1 -0
- package/dist/__tests__/repository-guidance.test.js +107 -0
- package/dist/__tests__/repository-guidance.test.js.map +1 -0
- package/dist/__tests__/review-comment-body.test.js +35 -0
- package/dist/__tests__/review-comment-body.test.js.map +1 -1
- package/dist/__tests__/review-models.test.js +19 -3
- package/dist/__tests__/review-models.test.js.map +1 -1
- package/dist/__tests__/review-strategy.test.d.ts +2 -0
- package/dist/__tests__/review-strategy.test.d.ts.map +1 -0
- package/dist/__tests__/review-strategy.test.js +397 -0
- package/dist/__tests__/review-strategy.test.js.map +1 -0
- package/dist/__tests__/runner.test.js +29 -1
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/__tests__/skill-attribution.test.d.ts +2 -0
- package/dist/__tests__/skill-attribution.test.d.ts.map +1 -0
- package/dist/__tests__/skill-attribution.test.js +53 -0
- package/dist/__tests__/skill-attribution.test.js.map +1 -0
- package/dist/__tests__/skill-broker.test.d.ts +2 -0
- package/dist/__tests__/skill-broker.test.d.ts.map +1 -0
- package/dist/__tests__/skill-broker.test.js +144 -0
- package/dist/__tests__/skill-broker.test.js.map +1 -0
- package/dist/__tests__/skill-catalog.test.d.ts +2 -0
- package/dist/__tests__/skill-catalog.test.d.ts.map +1 -0
- package/dist/__tests__/skill-catalog.test.js +40 -0
- package/dist/__tests__/skill-catalog.test.js.map +1 -0
- package/dist/__tests__/skill-installer.test.d.ts +2 -0
- package/dist/__tests__/skill-installer.test.d.ts.map +1 -0
- package/dist/__tests__/skill-installer.test.js +96 -0
- package/dist/__tests__/skill-installer.test.js.map +1 -0
- package/dist/__tests__/skills-config.test.d.ts +2 -0
- package/dist/__tests__/skills-config.test.d.ts.map +1 -0
- package/dist/__tests__/skills-config.test.js +12 -0
- package/dist/__tests__/skills-config.test.js.map +1 -0
- package/dist/cli.js +29 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/linear-test.d.ts +18 -0
- package/dist/commands/linear-test.d.ts.map +1 -0
- package/dist/commands/linear-test.js +130 -0
- package/dist/commands/linear-test.js.map +1 -0
- package/dist/commands/onboard.d.ts +36 -3
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +233 -42
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +65 -6
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +45 -7
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skill.d.ts +2 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +16 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +53 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +90 -12
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/loader.d.ts +3 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +13 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/review-model-tiers.json +3 -3
- package/dist/config/review-strategy.json +204 -0
- package/dist/config/schema.d.ts +261 -15
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +90 -8
- package/dist/config/schema.js.map +1 -1
- package/dist/github/client.d.ts +21 -1
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +46 -7
- package/dist/github/client.js.map +1 -1
- package/dist/github/webhook.d.ts +4 -0
- package/dist/github/webhook.d.ts.map +1 -1
- package/dist/github/webhook.js.map +1 -1
- package/dist/issues/ticket-ref.d.ts.map +1 -1
- package/dist/issues/ticket-ref.js +6 -5
- package/dist/issues/ticket-ref.js.map +1 -1
- package/dist/lib/annotation.d.ts +7 -0
- package/dist/lib/annotation.d.ts.map +1 -1
- package/dist/lib/annotation.js +11 -1
- package/dist/lib/annotation.js.map +1 -1
- package/dist/lib/board.d.ts +3 -0
- package/dist/lib/board.d.ts.map +1 -1
- package/dist/lib/board.js +4 -2
- package/dist/lib/board.js.map +1 -1
- package/dist/lib/clone.d.ts +1 -0
- package/dist/lib/clone.d.ts.map +1 -1
- package/dist/lib/clone.js +32 -10
- package/dist/lib/clone.js.map +1 -1
- package/dist/lib/comment-bodies.d.ts +37 -0
- package/dist/lib/comment-bodies.d.ts.map +1 -1
- package/dist/lib/comment-bodies.js +47 -9
- package/dist/lib/comment-bodies.js.map +1 -1
- package/dist/lib/repo-picker.d.ts +3 -0
- package/dist/lib/repo-picker.d.ts.map +1 -1
- package/dist/lib/repo-picker.js +45 -9
- package/dist/lib/repo-picker.js.map +1 -1
- package/dist/lib/repository-guidance.d.ts +2 -0
- package/dist/lib/repository-guidance.d.ts.map +1 -0
- package/dist/lib/repository-guidance.js +55 -0
- package/dist/lib/repository-guidance.js.map +1 -0
- package/dist/lib/review-models.d.ts +15 -2
- package/dist/lib/review-models.d.ts.map +1 -1
- package/dist/lib/review-models.js +26 -6
- package/dist/lib/review-models.js.map +1 -1
- package/dist/lib/review-strategy.d.ts +92 -0
- package/dist/lib/review-strategy.d.ts.map +1 -0
- package/dist/lib/review-strategy.js +282 -0
- package/dist/lib/review-strategy.js.map +1 -0
- package/dist/lib/runner.d.ts +92 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +470 -54
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/workflow.d.ts +9 -0
- package/dist/lib/workflow.d.ts.map +1 -1
- package/dist/lib/workflow.js +20 -0
- package/dist/lib/workflow.js.map +1 -1
- package/dist/linear/client.d.ts +18 -0
- package/dist/linear/client.d.ts.map +1 -0
- package/dist/linear/client.js +67 -0
- package/dist/linear/client.js.map +1 -0
- package/dist/linear/comment.d.ts +20 -0
- package/dist/linear/comment.d.ts.map +1 -0
- package/dist/linear/comment.js +57 -0
- package/dist/linear/comment.js.map +1 -0
- package/dist/linear/identity.d.ts +59 -0
- package/dist/linear/identity.d.ts.map +1 -0
- package/dist/linear/identity.js +187 -0
- package/dist/linear/identity.js.map +1 -0
- package/dist/linear/notify.d.ts +35 -0
- package/dist/linear/notify.d.ts.map +1 -0
- package/dist/linear/notify.js +76 -0
- package/dist/linear/notify.js.map +1 -0
- package/dist/linear/ref.d.ts +13 -0
- package/dist/linear/ref.d.ts.map +1 -0
- package/dist/linear/ref.js +90 -0
- package/dist/linear/ref.js.map +1 -0
- package/dist/linear/verify.d.ts +26 -0
- package/dist/linear/verify.d.ts.map +1 -0
- package/dist/linear/verify.js +67 -0
- package/dist/linear/verify.js.map +1 -0
- package/dist/reviewers/claude.d.ts +4 -1
- package/dist/reviewers/claude.d.ts.map +1 -1
- package/dist/reviewers/claude.js +39 -7
- package/dist/reviewers/claude.js.map +1 -1
- package/dist/reviewers/codex.d.ts +3 -1
- package/dist/reviewers/codex.d.ts.map +1 -1
- package/dist/reviewers/codex.js +76 -70
- package/dist/reviewers/codex.js.map +1 -1
- package/dist/reviewers/conflict-resolve.d.ts +3 -1
- package/dist/reviewers/conflict-resolve.d.ts.map +1 -1
- package/dist/reviewers/conflict-resolve.js +21 -6
- package/dist/reviewers/conflict-resolve.js.map +1 -1
- package/dist/reviewers/fix.d.ts +5 -2
- package/dist/reviewers/fix.d.ts.map +1 -1
- package/dist/reviewers/fix.js +26 -10
- package/dist/reviewers/fix.js.map +1 -1
- package/dist/skills/attribution.d.ts +4 -0
- package/dist/skills/attribution.d.ts.map +1 -0
- package/dist/skills/attribution.js +14 -0
- package/dist/skills/attribution.js.map +1 -0
- package/dist/skills/broker-server.d.ts +2 -0
- package/dist/skills/broker-server.d.ts.map +1 -0
- package/dist/skills/broker-server.js +17 -0
- package/dist/skills/broker-server.js.map +1 -0
- package/dist/skills/broker.d.ts +42 -0
- package/dist/skills/broker.d.ts.map +1 -0
- package/dist/skills/broker.js +285 -0
- package/dist/skills/broker.js.map +1 -0
- package/dist/skills/catalog.d.ts +28 -0
- package/dist/skills/catalog.d.ts.map +1 -0
- package/dist/skills/catalog.js +104 -0
- package/dist/skills/catalog.js.map +1 -0
- package/dist/skills/installer.d.ts +10 -0
- package/dist/skills/installer.d.ts.map +1 -0
- package/dist/skills/installer.js +138 -0
- package/dist/skills/installer.js.map +1 -0
- package/dist/skills/integrity.d.ts +4 -0
- package/dist/skills/integrity.d.ts.map +1 -0
- package/dist/skills/integrity.js +36 -0
- package/dist/skills/integrity.js.map +1 -0
- package/docs/dynamic-thoroughness.md +738 -0
- package/docs/linear-identity-contract.md +139 -0
- package/docs/linear-identity.md +293 -0
- package/get-started.md +207 -11
- package/package.json +4 -3
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"_version_note": "1.1.0 — deletion_only gained a floor on deletions; `additions_max` alone also matched a small edit, so a +2/-2 typo fix was routed to a review-only class. Routing changed, so the version changes with it: a comment citing 1.0.0 has to stay explicable by 1.0.0.",
|
|
5
|
+
"updated": "2026-08-07",
|
|
6
|
+
"generated_at": "2026-08-07T05:00:00Z",
|
|
7
|
+
"review_interval_days": 60,
|
|
8
|
+
"report": "docs/dynamic-thoroughness.md",
|
|
9
|
+
"runtime_status": "active",
|
|
10
|
+
"_tier_map_note": "resolveClaudeModel/resolveCodexModel read tier->model from review-model-tiers.json, not from `vendors` below. The two agree today and CI verifies both against the same provider docs; `vendors` here is the documented policy and the tier map is the runtime lookup.",
|
|
11
|
+
"_runtime_status_note": "Read at runtime by src/lib/review-strategy.ts. The runner classifies each PR from the cloned working copy and folds the result into the quality config the reviewers receive; the version, class, and tier are stamped into every annotation.",
|
|
12
|
+
"_comment": "Single source of truth for how crosscheck picks a model, effort, and step set. Every review comment cites `version` so a past review can be explained by the policy in force when it ran. Supersedes review-model-tiers.json, which is retained for backwards compat. Re-verify every review_interval_days with `npm run verify:strategy`.",
|
|
13
|
+
|
|
14
|
+
"sources": [
|
|
15
|
+
{
|
|
16
|
+
"name": "Anthropic model catalog",
|
|
17
|
+
"url": "https://platform.claude.com/docs/en/about-claude/models/overview",
|
|
18
|
+
"checks": ["claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5-20251001"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "Anthropic effort parameter",
|
|
22
|
+
"url": "https://platform.claude.com/docs/en/build-with-claude/effort",
|
|
23
|
+
"checks": ["xhigh", "effort"]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "OpenAI model catalog",
|
|
27
|
+
"url": "https://developers.openai.com/api/docs/models",
|
|
28
|
+
"checks": ["gpt-5.6-luna", "gpt-5.6-terra", "gpt-5.6-sol"]
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
|
|
32
|
+
"benchmarks": {
|
|
33
|
+
"swe_bench_verified": {
|
|
34
|
+
"measures": "Resolving real GitHub issues in Python repositories. Backend/general proxy only.",
|
|
35
|
+
"source": "https://benchlm.ai/benchmarks/sweVerified",
|
|
36
|
+
"as_of": "2026-08-06",
|
|
37
|
+
"caveat": "Comparable within one leaderboard run. Cross-leaderboard positions are indicative only."
|
|
38
|
+
},
|
|
39
|
+
"frontend_code_arena": {
|
|
40
|
+
"measures": "Blind pairwise human preference on generated frontend output: visual fidelity, interaction design, function.",
|
|
41
|
+
"source": "https://thenewstack.io/kimi-k3-open-weight-coding/",
|
|
42
|
+
"as_of": "2026-07-18",
|
|
43
|
+
"caveat": "Measures generation, not defect detection. Claude Opus 5 is absent from the retrieved leaderboard - a missing measurement, not a low score."
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
"models": {
|
|
48
|
+
"claude-opus-5": { "vendor": "claude", "license": "closed", "in_usd_mtok": 5, "out_usd_mtok": 25, "context": 1000000, "swe_bench_verified": 0.960, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
|
|
49
|
+
"claude-sonnet-5": { "vendor": "claude", "license": "closed", "in_usd_mtok": 3, "out_usd_mtok": 15, "context": 1000000, "swe_bench_verified": 0.852, "frontend_elo": null, "effort_levels": ["low","medium","high","xhigh","max"] },
|
|
50
|
+
"claude-haiku-4-5-20251001": { "vendor": "claude", "license": "closed", "in_usd_mtok": 1, "out_usd_mtok": 5, "context": 200000, "swe_bench_verified": 0.733, "frontend_elo": null, "effort_levels": [] },
|
|
51
|
+
"gpt-5.6-sol": { "vendor": "codex", "license": "closed", "in_usd_mtok": 5, "out_usd_mtok": 30, "context": 1050000, "swe_bench_verified": null, "frontend_elo": 1618, "effort_levels": ["none","low","medium","high","xhigh","max"] },
|
|
52
|
+
"gpt-5.6-terra": { "vendor": "codex", "license": "closed", "in_usd_mtok": 2, "out_usd_mtok": 12, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["none","low","medium","high","xhigh","max"] },
|
|
53
|
+
"gpt-5.6-luna": { "vendor": "codex", "license": "closed", "in_usd_mtok": 0.2, "out_usd_mtok": 1.2, "context": 1050000, "swe_bench_verified": null, "frontend_elo": null, "effort_levels": ["none","low","medium","high","xhigh","max"] },
|
|
54
|
+
|
|
55
|
+
"kimi-k3": { "vendor": "opencode", "license": "Modified MIT", "in_usd_mtok": 3, "out_usd_mtok": 15, "context": 1000000, "swe_bench_verified": null, "frontend_elo": 1679, "effort_levels": [], "status": "planned" },
|
|
56
|
+
"glm-5.2": { "vendor": "opencode", "license": "MIT", "in_usd_mtok": 1.4, "out_usd_mtok": 4.4, "context": 1000000, "swe_bench_verified": null, "frontend_elo": 1587, "effort_levels": [], "status": "planned" },
|
|
57
|
+
"deepseek-v4-pro": { "vendor": "opencode", "license": "MIT", "in_usd_mtok": 0.435, "out_usd_mtok": 0.87, "context": 1000000, "swe_bench_verified": 0.806, "frontend_elo": null, "effort_levels": ["none","high","max"], "status": "planned" },
|
|
58
|
+
"deepseek-v4-flash": { "vendor": "opencode", "license": "MIT", "in_usd_mtok": 0.14, "out_usd_mtok": 0.28, "context": 1000000, "swe_bench_verified": 0.790, "frontend_elo": null, "effort_levels": ["none","high","max"], "status": "planned" }
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
"banned_models": [
|
|
62
|
+
{
|
|
63
|
+
"model": "claude-fable-5",
|
|
64
|
+
"reason": "Banned from code review on cost. $50/MTok output is 2x claude-opus-5 for a LOWER SWE-bench Verified score (95.0 vs 96.0). At the measured 48k output tokens per review that is $2.40 a call with no capability justification.",
|
|
65
|
+
"banned_on": "2026-08-07"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
|
|
69
|
+
"vendors": {
|
|
70
|
+
"claude": {
|
|
71
|
+
"cli": "claude", "honors_model_under_subscription": true, "min_cli_version": null,
|
|
72
|
+
"tiers": { "fast": "claude-haiku-4-5-20251001", "balanced": "claude-sonnet-5", "thorough": "claude-opus-5" }
|
|
73
|
+
},
|
|
74
|
+
"codex": {
|
|
75
|
+
"cli": "codex", "honors_model_under_subscription": true, "min_cli_version": "0.147.0",
|
|
76
|
+
"_min_cli_version_note": "gpt-5.6-* return HTTP 400 'requires a newer version of Codex' below this. The CLI accepts --model under subscription auth; the old auth!=api-key guard in resolveCodexModel was wrong and dropped the configured model.",
|
|
77
|
+
"tiers": { "fast": "gpt-5.6-luna", "balanced": "gpt-5.6-terra", "thorough": "gpt-5.6-sol" }
|
|
78
|
+
},
|
|
79
|
+
"opencode": {
|
|
80
|
+
"cli": "opencode", "honors_model_under_subscription": true, "min_cli_version": null,
|
|
81
|
+
"status": "planned",
|
|
82
|
+
"tiers": { "fast": "deepseek-v4-flash", "balanced": "glm-5.2", "thorough": "kimi-k3" }
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
"domains": {
|
|
87
|
+
"_comment": "Capability is domain-shaped, not scalar. claude-opus-5 leads backend defect resolution; kimi-k3 leads frontend. A single tier ladder cannot express that. Detected from changed-file extensions; `mixed` and `unknown` both fall back to `backend`, the conservative default.",
|
|
88
|
+
"frontend": {
|
|
89
|
+
"match_extensions": ["tsx", "jsx", "vue", "svelte", "css", "scss", "less", "html"],
|
|
90
|
+
"threshold": "more frontend files than backend files",
|
|
91
|
+
"preferred": { "thorough": ["kimi-k3", "gpt-5.6-sol", "claude-opus-5"], "balanced": ["glm-5.2", "claude-sonnet-5"], "fast": ["gpt-5.6-luna", "deepseek-v4-flash"] },
|
|
92
|
+
"basis": "Frontend Code Arena Elo: kimi-k3 1679 > gpt-5.6-sol 1618 > glm-5.2 1587. Falls back to installed vendors when opencode is unavailable.",
|
|
93
|
+
"confidence": "hypothesis - the benchmark measures generation, not review. Pending local A/B."
|
|
94
|
+
},
|
|
95
|
+
"backend": {
|
|
96
|
+
"match_extensions": ["py", "go", "rs", "java", "rb", "php", "sql", "ts"],
|
|
97
|
+
"preferred": { "thorough": ["claude-opus-5", "gpt-5.6-sol"], "balanced": ["claude-sonnet-5", "gpt-5.6-terra"], "fast": ["deepseek-v4-flash", "gpt-5.6-luna", "claude-haiku-4-5-20251001"] },
|
|
98
|
+
"basis": "SWE-bench Verified: claude-opus-5 0.960 > claude-sonnet-5 0.852 > deepseek-v4-pro 0.806 > claude-haiku-4-5 0.733.",
|
|
99
|
+
"confidence": "measured"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
"_pr_classes_note": "ORDER IS THE ROUTING LOGIC - first match wins. `risky` sits second, immediately after `generated`, so consequence-based promotion dominates every cheapening rule below it: a deletion-only PR that removes auth code, or a 2-file change to a migration, must not fall through to `fast`.",
|
|
104
|
+
"pr_classes": [
|
|
105
|
+
{
|
|
106
|
+
"id": "generated", "label": "Generated / vendored only",
|
|
107
|
+
"match": { "all_files_match": ["(^|/)(dist|build|node_modules)/", "\\.(lock|sum)$", "(package-lock|pnpm-lock|yarn\\.lock)", "\\.(pb|_pb2)\\.[a-z]+$", "(^|/)generated/"] },
|
|
108
|
+
"tier": null, "effort": null, "steps": [],
|
|
109
|
+
"reason": "every changed file is generated or vendored - nothing here is human-authored"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "risky", "label": "Security / data-critical",
|
|
113
|
+
"_any_path_matches_note": "Anchored on path segments and extensions. Unanchored, `auth` matched author/authors/oauth and `migration` matched MIGRATION_AND_GROWTH.md, promoting a pure-docs PR to thorough with a full fix/recheck loop.",
|
|
114
|
+
"match": {
|
|
115
|
+
"any_path_matches": ["(^|/)auth([/.]|$)", "(^|/)tokens?([/.]|$)", "(^|/)secrets?([/.]|$)", "(^|/)credentials?([/.]|$)", "(^|/)passwords?([/.]|$)", "(^|/)crypto([/.]|$)", "(^|/)payments?([/.]|$)", "(^|/)billing([/.]|$)", "(^|/)migrations?([/.]|$)", "\\.sql$", "(^|/)permissions?([/.]|$)", "(^|/)rbac([/.]|$)", "(^|/)sessions?([/.]|$)", "(^|/)cors([/.]|$)"],
|
|
116
|
+
"or_labels": ["risk:T3"],
|
|
117
|
+
"or_hotfix_to_default_branch": true
|
|
118
|
+
},
|
|
119
|
+
"tier": "thorough", "effort": "high", "steps": ["review", "fix", "recheck"],
|
|
120
|
+
"reason": "touches a security or data-critical path, where a missed defect is expensive - promoted on consequence, not on predicted difficulty"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "deletion_only", "label": "Deletion-only",
|
|
124
|
+
"match": { "additions_max": 5, "deletions_min": 20 },
|
|
125
|
+
"tier": "fast", "effort": "medium", "steps": ["review"],
|
|
126
|
+
"focus": "dangling references only: imports, call sites, config keys, route registrations, docs pointing at removed symbols",
|
|
127
|
+
"reason": "removal-only, so the risk is reference breakage rather than defect density; a wrong deletion is reverted, not patched"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "docs", "label": "Documentation / specification",
|
|
131
|
+
"match": { "doc_fraction_min": 0.5 },
|
|
132
|
+
"tier": "balanced", "effort": "high", "steps": ["review"],
|
|
133
|
+
"focus": "internal contradiction, claims contradicted by the code the doc describes, stale cross-references",
|
|
134
|
+
"reason": "specification review is open-ended design negotiation, which no automated fix loop terminates - review only"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "test_only", "label": "Test-only",
|
|
138
|
+
"match": { "all_files_match": ["((^|/)(__tests__|tests?|e2e|fixtures?)(/|$)|\\.(test|spec)\\.)"] },
|
|
139
|
+
"tier": "fast", "effort": "medium", "steps": ["review", "fix"],
|
|
140
|
+
"focus": "assertions that cannot fail, over-mocking that voids the test, coverage claimed but not exercised",
|
|
141
|
+
"reason": "tests only - no production code path changes"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "config_infra", "label": "Config / infrastructure",
|
|
145
|
+
"match": { "config_fraction_min": 0.5, "source_files_max": 0 },
|
|
146
|
+
"tier": "balanced", "effort": "high", "steps": ["review", "fix", "recheck"],
|
|
147
|
+
"focus": "secrets in plaintext, permission widening, resource limits, deploy-order breakage",
|
|
148
|
+
"reason": "low defect density but high blast radius - cheap to review, expensive to get wrong"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "trivial", "label": "Trivial",
|
|
152
|
+
"match": { "files_max": 3, "src_churn_max": 150 },
|
|
153
|
+
"tier": "fast", "effort": "medium", "steps": ["review", "fix"],
|
|
154
|
+
"reason": "small and low-risk, and PRs this size merge in minutes - latency matters more than depth"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"id": "standard", "label": "Standard code",
|
|
158
|
+
"match": {},
|
|
159
|
+
"tier": "balanced", "effort": "medium", "steps": ["review", "fix", "recheck"],
|
|
160
|
+
"reason": "default class - no narrower rule matched"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
|
|
164
|
+
"ladder": {
|
|
165
|
+
"_comment": "Escalate on measured non-convergence, never on predicted complexity. Scope narrows each round; the model never weakens. Where a model exposes no effort levels, the effort step degrades to a model step (see effort_fallback).",
|
|
166
|
+
"max_blocking_findings": 5,
|
|
167
|
+
"max_rounds": 3,
|
|
168
|
+
"max_wall_clock_min": 60,
|
|
169
|
+
"effort_fallback": "promote_tier",
|
|
170
|
+
"rounds": [
|
|
171
|
+
{ "round": 1, "step": "review", "scope": "full_pr", "tier": "class", "effort": "class" },
|
|
172
|
+
{ "round": 1, "step": "fix", "scope": "blocking_only", "tier": "same_as_review", "effort": "one_below_review" },
|
|
173
|
+
{ "round": 2, "step": "recheck", "scope": "delta_plus_open", "tier": "same_as_review", "effort": "high" },
|
|
174
|
+
{ "round": 3, "step": "recheck", "scope": "delta_plus_open", "tier": "same_as_review", "effort": "xhigh", "cross_vendor_switch": true },
|
|
175
|
+
{ "round": 4, "step": "handoff", "scope": "digest", "tier": null, "effort": null }
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
"modes": {
|
|
180
|
+
"cross_vendor": {
|
|
181
|
+
"strength": "An independent second perspective. A vendor switch broke a stalled loop twice in the census (PR #2057, #2060) after same-vendor escalation had failed for 3-6 rounds.",
|
|
182
|
+
"round_3_lever": "switch vendor AND raise effort",
|
|
183
|
+
"max_rounds": 3
|
|
184
|
+
},
|
|
185
|
+
"single_vendor": {
|
|
186
|
+
"strength": "One CLI to authenticate, version, and monitor. No routing logic.",
|
|
187
|
+
"round_3_lever": "raise effort, then promote one tier - no fresh-eyes option exists",
|
|
188
|
+
"max_rounds": 2
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
|
|
192
|
+
"conflict_resolve": {
|
|
193
|
+
"tier": "fast", "effort": "low",
|
|
194
|
+
"reason": "mechanical text surgery bounded by conflict markers - measured at 37s against ~643s for a review"
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
"citation": {
|
|
198
|
+
"_comment": "Every crosscheck comment states the strategy it ran under, so a past review can be explained by the policy in force at the time.",
|
|
199
|
+
"annotation_fields": ["strategy", "class", "tier"],
|
|
200
|
+
"annotation_example": "<!-- crosscheck: origin=claude reviewer=claude model=claude-opus-5 type=review round=1 verdict=BLOCK service=crosscheck sha=abc123 strategy=1.1.0 class=risky tier=thorough -->",
|
|
201
|
+
"body_template": "{tier} tier · {reason} · strategy v{version}",
|
|
202
|
+
"body_example": "_Reviewed with [Claude Code](https://claude.ai/code) via [Crosscheck](https://github.com/humanbased-ai/crosscheck) with Opus 5 (high) — thorough tier · touches a security or data-critical path, where a missed defect is expensive · strategy v1.1.0_"
|
|
203
|
+
}
|
|
204
|
+
}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export declare const CLAUDE_EFFORT_LEVELS: readonly ["low", "medium", "high", "max"];
|
|
3
|
+
export declare const CODEX_EFFORT_LEVELS: readonly ["low", "medium", "high", "xhigh", "max", "ultra"];
|
|
2
4
|
export declare const VendorConfigSchema: z.ZodObject<{
|
|
3
5
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
4
6
|
model: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
@@ -22,10 +24,10 @@ export declare const CodexVendorConfigSchema: z.ZodObject<{
|
|
|
22
24
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
23
25
|
model: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
24
26
|
auth: z.ZodDefault<z.ZodEnum<["subscription", "api-key"]>>;
|
|
25
|
-
effort: z.ZodDefault<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
26
27
|
timeout_sec: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
27
28
|
} & {
|
|
28
29
|
quality: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
|
|
30
|
+
effort: z.ZodDefault<z.ZodEnum<["low", "medium", "high", "xhigh", "max", "ultra"]>>;
|
|
29
31
|
model_tiers: z.ZodOptional<z.ZodObject<{
|
|
30
32
|
fast: z.ZodOptional<z.ZodString>;
|
|
31
33
|
balanced: z.ZodOptional<z.ZodString>;
|
|
@@ -43,7 +45,7 @@ export declare const CodexVendorConfigSchema: z.ZodObject<{
|
|
|
43
45
|
enabled: boolean;
|
|
44
46
|
model: string | null;
|
|
45
47
|
auth: "subscription" | "api-key";
|
|
46
|
-
effort: "low" | "medium" | "high" | "max";
|
|
48
|
+
effort: "low" | "medium" | "high" | "max" | "xhigh" | "ultra";
|
|
47
49
|
timeout_sec: number | null;
|
|
48
50
|
quality: "low" | "medium" | "high";
|
|
49
51
|
model_tiers?: {
|
|
@@ -55,7 +57,7 @@ export declare const CodexVendorConfigSchema: z.ZodObject<{
|
|
|
55
57
|
enabled?: boolean | undefined;
|
|
56
58
|
model?: string | null | undefined;
|
|
57
59
|
auth?: "subscription" | "api-key" | undefined;
|
|
58
|
-
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
60
|
+
effort?: "low" | "medium" | "high" | "max" | "xhigh" | "ultra" | undefined;
|
|
59
61
|
timeout_sec?: number | null | undefined;
|
|
60
62
|
quality?: "low" | "medium" | "high" | undefined;
|
|
61
63
|
model_tiers?: {
|
|
@@ -66,13 +68,13 @@ export declare const CodexVendorConfigSchema: z.ZodObject<{
|
|
|
66
68
|
}>;
|
|
67
69
|
export declare const QualityConfigSchema: z.ZodObject<{
|
|
68
70
|
tier: z.ZodDefault<z.ZodEnum<["fast", "balanced", "thorough"]>>;
|
|
69
|
-
mode: z.
|
|
71
|
+
mode: z.ZodDefault<z.ZodEnum<["fixed", "smart"]>>;
|
|
70
72
|
focus: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
71
73
|
custom_prompt: z.ZodOptional<z.ZodString>;
|
|
72
74
|
}, "strip", z.ZodTypeAny, {
|
|
73
75
|
tier: "fast" | "balanced" | "thorough";
|
|
76
|
+
mode: "fixed" | "smart";
|
|
74
77
|
focus: string[];
|
|
75
|
-
mode?: "fixed" | "smart" | undefined;
|
|
76
78
|
custom_prompt?: string | undefined;
|
|
77
79
|
}, {
|
|
78
80
|
tier?: "fast" | "balanced" | "thorough" | undefined;
|
|
@@ -80,6 +82,13 @@ export declare const QualityConfigSchema: z.ZodObject<{
|
|
|
80
82
|
focus?: string[] | undefined;
|
|
81
83
|
custom_prompt?: string | undefined;
|
|
82
84
|
}>;
|
|
85
|
+
export declare const SkillsConfigSchema: z.ZodObject<{
|
|
86
|
+
enabled: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
87
|
+
}, "strip", z.ZodTypeAny, {
|
|
88
|
+
enabled: string[];
|
|
89
|
+
}, {
|
|
90
|
+
enabled?: string[] | undefined;
|
|
91
|
+
}>;
|
|
83
92
|
export declare const BudgetConfigSchema: z.ZodObject<{
|
|
84
93
|
codex_monthly_usd: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
85
94
|
per_review_usd: z.ZodDefault<z.ZodNumber>;
|
|
@@ -421,6 +430,117 @@ export declare const BrandConfigSchema: z.ZodObject<{
|
|
|
421
430
|
comment_footer?: string | undefined;
|
|
422
431
|
reviewer_attribution?: string | undefined;
|
|
423
432
|
}>;
|
|
433
|
+
export declare const LinearAuthConfigSchema: z.ZodObject<{
|
|
434
|
+
mode: z.ZodDefault<z.ZodEnum<["api_key", "client_credentials"]>>;
|
|
435
|
+
api_key_env: z.ZodDefault<z.ZodString>;
|
|
436
|
+
client_id_env: z.ZodDefault<z.ZodString>;
|
|
437
|
+
client_secret_env: z.ZodDefault<z.ZodString>;
|
|
438
|
+
scopes: z.ZodDefault<z.ZodString>;
|
|
439
|
+
}, "strip", z.ZodTypeAny, {
|
|
440
|
+
mode: "api_key" | "client_credentials";
|
|
441
|
+
api_key_env: string;
|
|
442
|
+
client_id_env: string;
|
|
443
|
+
client_secret_env: string;
|
|
444
|
+
scopes: string;
|
|
445
|
+
}, {
|
|
446
|
+
mode?: "api_key" | "client_credentials" | undefined;
|
|
447
|
+
api_key_env?: string | undefined;
|
|
448
|
+
client_id_env?: string | undefined;
|
|
449
|
+
client_secret_env?: string | undefined;
|
|
450
|
+
scopes?: string | undefined;
|
|
451
|
+
}>;
|
|
452
|
+
export declare const LinearIdentityConfigSchema: z.ZodObject<{
|
|
453
|
+
actor: z.ZodDefault<z.ZodString>;
|
|
454
|
+
signature: z.ZodDefault<z.ZodString>;
|
|
455
|
+
icon_url: z.ZodDefault<z.ZodString>;
|
|
456
|
+
per_step_actor: z.ZodDefault<z.ZodBoolean>;
|
|
457
|
+
}, "strip", z.ZodTypeAny, {
|
|
458
|
+
actor: string;
|
|
459
|
+
signature: string;
|
|
460
|
+
icon_url: string;
|
|
461
|
+
per_step_actor: boolean;
|
|
462
|
+
}, {
|
|
463
|
+
actor?: string | undefined;
|
|
464
|
+
signature?: string | undefined;
|
|
465
|
+
icon_url?: string | undefined;
|
|
466
|
+
per_step_actor?: boolean | undefined;
|
|
467
|
+
}>;
|
|
468
|
+
export declare const LinearVerdictFilterSchema: z.ZodEnum<["APPROVE", "NEEDS_WORK", "BLOCK", "UNKNOWN"]>;
|
|
469
|
+
export type LinearVerdictFilter = z.infer<typeof LinearVerdictFilterSchema>;
|
|
470
|
+
export declare const LinearConfigSchema: z.ZodObject<{
|
|
471
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
472
|
+
auth: z.ZodDefault<z.ZodObject<{
|
|
473
|
+
mode: z.ZodDefault<z.ZodEnum<["api_key", "client_credentials"]>>;
|
|
474
|
+
api_key_env: z.ZodDefault<z.ZodString>;
|
|
475
|
+
client_id_env: z.ZodDefault<z.ZodString>;
|
|
476
|
+
client_secret_env: z.ZodDefault<z.ZodString>;
|
|
477
|
+
scopes: z.ZodDefault<z.ZodString>;
|
|
478
|
+
}, "strip", z.ZodTypeAny, {
|
|
479
|
+
mode: "api_key" | "client_credentials";
|
|
480
|
+
api_key_env: string;
|
|
481
|
+
client_id_env: string;
|
|
482
|
+
client_secret_env: string;
|
|
483
|
+
scopes: string;
|
|
484
|
+
}, {
|
|
485
|
+
mode?: "api_key" | "client_credentials" | undefined;
|
|
486
|
+
api_key_env?: string | undefined;
|
|
487
|
+
client_id_env?: string | undefined;
|
|
488
|
+
client_secret_env?: string | undefined;
|
|
489
|
+
scopes?: string | undefined;
|
|
490
|
+
}>>;
|
|
491
|
+
identity: z.ZodDefault<z.ZodObject<{
|
|
492
|
+
actor: z.ZodDefault<z.ZodString>;
|
|
493
|
+
signature: z.ZodDefault<z.ZodString>;
|
|
494
|
+
icon_url: z.ZodDefault<z.ZodString>;
|
|
495
|
+
per_step_actor: z.ZodDefault<z.ZodBoolean>;
|
|
496
|
+
}, "strip", z.ZodTypeAny, {
|
|
497
|
+
actor: string;
|
|
498
|
+
signature: string;
|
|
499
|
+
icon_url: string;
|
|
500
|
+
per_step_actor: boolean;
|
|
501
|
+
}, {
|
|
502
|
+
actor?: string | undefined;
|
|
503
|
+
signature?: string | undefined;
|
|
504
|
+
icon_url?: string | undefined;
|
|
505
|
+
per_step_actor?: boolean | undefined;
|
|
506
|
+
}>>;
|
|
507
|
+
comment_on: z.ZodDefault<z.ZodArray<z.ZodEnum<["APPROVE", "NEEDS_WORK", "BLOCK", "UNKNOWN"]>, "many">>;
|
|
508
|
+
team_keys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
509
|
+
}, "strip", z.ZodTypeAny, {
|
|
510
|
+
enabled: boolean;
|
|
511
|
+
auth: {
|
|
512
|
+
mode: "api_key" | "client_credentials";
|
|
513
|
+
api_key_env: string;
|
|
514
|
+
client_id_env: string;
|
|
515
|
+
client_secret_env: string;
|
|
516
|
+
scopes: string;
|
|
517
|
+
};
|
|
518
|
+
team_keys: string[];
|
|
519
|
+
identity: {
|
|
520
|
+
actor: string;
|
|
521
|
+
signature: string;
|
|
522
|
+
icon_url: string;
|
|
523
|
+
per_step_actor: boolean;
|
|
524
|
+
};
|
|
525
|
+
comment_on: ("APPROVE" | "NEEDS_WORK" | "BLOCK" | "UNKNOWN")[];
|
|
526
|
+
}, {
|
|
527
|
+
enabled?: boolean | undefined;
|
|
528
|
+
auth?: {
|
|
529
|
+
mode?: "api_key" | "client_credentials" | undefined;
|
|
530
|
+
api_key_env?: string | undefined;
|
|
531
|
+
client_id_env?: string | undefined;
|
|
532
|
+
client_secret_env?: string | undefined;
|
|
533
|
+
scopes?: string | undefined;
|
|
534
|
+
} | undefined;
|
|
535
|
+
team_keys?: string[] | undefined;
|
|
536
|
+
identity?: {
|
|
537
|
+
actor?: string | undefined;
|
|
538
|
+
signature?: string | undefined;
|
|
539
|
+
icon_url?: string | undefined;
|
|
540
|
+
per_step_actor?: boolean | undefined;
|
|
541
|
+
} | undefined;
|
|
542
|
+
comment_on?: ("APPROVE" | "NEEDS_WORK" | "BLOCK" | "UNKNOWN")[] | undefined;
|
|
543
|
+
}>;
|
|
424
544
|
export declare const ConfigSchema: z.ZodObject<{
|
|
425
545
|
deployment: z.ZodOptional<z.ZodEnum<["personal", "team"]>>;
|
|
426
546
|
mode: z.ZodDefault<z.ZodEnum<["single-vendor", "cross-vendor"]>>;
|
|
@@ -430,10 +550,10 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
430
550
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
431
551
|
model: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
432
552
|
auth: z.ZodDefault<z.ZodEnum<["subscription", "api-key"]>>;
|
|
433
|
-
effort: z.ZodDefault<z.ZodEnum<["low", "medium", "high", "max"]>>;
|
|
434
553
|
timeout_sec: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
435
554
|
} & {
|
|
436
555
|
quality: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
|
|
556
|
+
effort: z.ZodDefault<z.ZodEnum<["low", "medium", "high", "xhigh", "max", "ultra"]>>;
|
|
437
557
|
model_tiers: z.ZodOptional<z.ZodObject<{
|
|
438
558
|
fast: z.ZodOptional<z.ZodString>;
|
|
439
559
|
balanced: z.ZodOptional<z.ZodString>;
|
|
@@ -451,7 +571,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
451
571
|
enabled: boolean;
|
|
452
572
|
model: string | null;
|
|
453
573
|
auth: "subscription" | "api-key";
|
|
454
|
-
effort: "low" | "medium" | "high" | "max";
|
|
574
|
+
effort: "low" | "medium" | "high" | "max" | "xhigh" | "ultra";
|
|
455
575
|
timeout_sec: number | null;
|
|
456
576
|
quality: "low" | "medium" | "high";
|
|
457
577
|
model_tiers?: {
|
|
@@ -463,7 +583,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
463
583
|
enabled?: boolean | undefined;
|
|
464
584
|
model?: string | null | undefined;
|
|
465
585
|
auth?: "subscription" | "api-key" | undefined;
|
|
466
|
-
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
586
|
+
effort?: "low" | "medium" | "high" | "max" | "xhigh" | "ultra" | undefined;
|
|
467
587
|
timeout_sec?: number | null | undefined;
|
|
468
588
|
quality?: "low" | "medium" | "high" | undefined;
|
|
469
589
|
model_tiers?: {
|
|
@@ -503,7 +623,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
503
623
|
enabled: boolean;
|
|
504
624
|
model: string | null;
|
|
505
625
|
auth: "subscription" | "api-key";
|
|
506
|
-
effort: "low" | "medium" | "high" | "max";
|
|
626
|
+
effort: "low" | "medium" | "high" | "max" | "xhigh" | "ultra";
|
|
507
627
|
timeout_sec: number | null;
|
|
508
628
|
quality: "low" | "medium" | "high";
|
|
509
629
|
model_tiers?: {
|
|
@@ -524,7 +644,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
524
644
|
enabled?: boolean | undefined;
|
|
525
645
|
model?: string | null | undefined;
|
|
526
646
|
auth?: "subscription" | "api-key" | undefined;
|
|
527
|
-
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
647
|
+
effort?: "low" | "medium" | "high" | "max" | "xhigh" | "ultra" | undefined;
|
|
528
648
|
timeout_sec?: number | null | undefined;
|
|
529
649
|
quality?: "low" | "medium" | "high" | undefined;
|
|
530
650
|
model_tiers?: {
|
|
@@ -536,13 +656,13 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
536
656
|
}>>;
|
|
537
657
|
quality: z.ZodDefault<z.ZodObject<{
|
|
538
658
|
tier: z.ZodDefault<z.ZodEnum<["fast", "balanced", "thorough"]>>;
|
|
539
|
-
mode: z.
|
|
659
|
+
mode: z.ZodDefault<z.ZodEnum<["fixed", "smart"]>>;
|
|
540
660
|
focus: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
541
661
|
custom_prompt: z.ZodOptional<z.ZodString>;
|
|
542
662
|
}, "strip", z.ZodTypeAny, {
|
|
543
663
|
tier: "fast" | "balanced" | "thorough";
|
|
664
|
+
mode: "fixed" | "smart";
|
|
544
665
|
focus: string[];
|
|
545
|
-
mode?: "fixed" | "smart" | undefined;
|
|
546
666
|
custom_prompt?: string | undefined;
|
|
547
667
|
}, {
|
|
548
668
|
tier?: "fast" | "balanced" | "thorough" | undefined;
|
|
@@ -550,6 +670,13 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
550
670
|
focus?: string[] | undefined;
|
|
551
671
|
custom_prompt?: string | undefined;
|
|
552
672
|
}>>;
|
|
673
|
+
skills: z.ZodDefault<z.ZodObject<{
|
|
674
|
+
enabled: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
675
|
+
}, "strip", z.ZodTypeAny, {
|
|
676
|
+
enabled: string[];
|
|
677
|
+
}, {
|
|
678
|
+
enabled?: string[] | undefined;
|
|
679
|
+
}>>;
|
|
553
680
|
budget: z.ZodDefault<z.ZodObject<{
|
|
554
681
|
codex_monthly_usd: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
555
682
|
per_review_usd: z.ZodDefault<z.ZodNumber>;
|
|
@@ -811,14 +938,106 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
811
938
|
comment_footer?: string | undefined;
|
|
812
939
|
reviewer_attribution?: string | undefined;
|
|
813
940
|
}>>;
|
|
941
|
+
linear: z.ZodDefault<z.ZodObject<{
|
|
942
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
943
|
+
auth: z.ZodDefault<z.ZodObject<{
|
|
944
|
+
mode: z.ZodDefault<z.ZodEnum<["api_key", "client_credentials"]>>;
|
|
945
|
+
api_key_env: z.ZodDefault<z.ZodString>;
|
|
946
|
+
client_id_env: z.ZodDefault<z.ZodString>;
|
|
947
|
+
client_secret_env: z.ZodDefault<z.ZodString>;
|
|
948
|
+
scopes: z.ZodDefault<z.ZodString>;
|
|
949
|
+
}, "strip", z.ZodTypeAny, {
|
|
950
|
+
mode: "api_key" | "client_credentials";
|
|
951
|
+
api_key_env: string;
|
|
952
|
+
client_id_env: string;
|
|
953
|
+
client_secret_env: string;
|
|
954
|
+
scopes: string;
|
|
955
|
+
}, {
|
|
956
|
+
mode?: "api_key" | "client_credentials" | undefined;
|
|
957
|
+
api_key_env?: string | undefined;
|
|
958
|
+
client_id_env?: string | undefined;
|
|
959
|
+
client_secret_env?: string | undefined;
|
|
960
|
+
scopes?: string | undefined;
|
|
961
|
+
}>>;
|
|
962
|
+
identity: z.ZodDefault<z.ZodObject<{
|
|
963
|
+
actor: z.ZodDefault<z.ZodString>;
|
|
964
|
+
signature: z.ZodDefault<z.ZodString>;
|
|
965
|
+
icon_url: z.ZodDefault<z.ZodString>;
|
|
966
|
+
per_step_actor: z.ZodDefault<z.ZodBoolean>;
|
|
967
|
+
}, "strip", z.ZodTypeAny, {
|
|
968
|
+
actor: string;
|
|
969
|
+
signature: string;
|
|
970
|
+
icon_url: string;
|
|
971
|
+
per_step_actor: boolean;
|
|
972
|
+
}, {
|
|
973
|
+
actor?: string | undefined;
|
|
974
|
+
signature?: string | undefined;
|
|
975
|
+
icon_url?: string | undefined;
|
|
976
|
+
per_step_actor?: boolean | undefined;
|
|
977
|
+
}>>;
|
|
978
|
+
comment_on: z.ZodDefault<z.ZodArray<z.ZodEnum<["APPROVE", "NEEDS_WORK", "BLOCK", "UNKNOWN"]>, "many">>;
|
|
979
|
+
team_keys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
980
|
+
}, "strip", z.ZodTypeAny, {
|
|
981
|
+
enabled: boolean;
|
|
982
|
+
auth: {
|
|
983
|
+
mode: "api_key" | "client_credentials";
|
|
984
|
+
api_key_env: string;
|
|
985
|
+
client_id_env: string;
|
|
986
|
+
client_secret_env: string;
|
|
987
|
+
scopes: string;
|
|
988
|
+
};
|
|
989
|
+
team_keys: string[];
|
|
990
|
+
identity: {
|
|
991
|
+
actor: string;
|
|
992
|
+
signature: string;
|
|
993
|
+
icon_url: string;
|
|
994
|
+
per_step_actor: boolean;
|
|
995
|
+
};
|
|
996
|
+
comment_on: ("APPROVE" | "NEEDS_WORK" | "BLOCK" | "UNKNOWN")[];
|
|
997
|
+
}, {
|
|
998
|
+
enabled?: boolean | undefined;
|
|
999
|
+
auth?: {
|
|
1000
|
+
mode?: "api_key" | "client_credentials" | undefined;
|
|
1001
|
+
api_key_env?: string | undefined;
|
|
1002
|
+
client_id_env?: string | undefined;
|
|
1003
|
+
client_secret_env?: string | undefined;
|
|
1004
|
+
scopes?: string | undefined;
|
|
1005
|
+
} | undefined;
|
|
1006
|
+
team_keys?: string[] | undefined;
|
|
1007
|
+
identity?: {
|
|
1008
|
+
actor?: string | undefined;
|
|
1009
|
+
signature?: string | undefined;
|
|
1010
|
+
icon_url?: string | undefined;
|
|
1011
|
+
per_step_actor?: boolean | undefined;
|
|
1012
|
+
} | undefined;
|
|
1013
|
+
comment_on?: ("APPROVE" | "NEEDS_WORK" | "BLOCK" | "UNKNOWN")[] | undefined;
|
|
1014
|
+
}>>;
|
|
814
1015
|
}, "strip", z.ZodTypeAny, {
|
|
815
1016
|
quality: {
|
|
816
1017
|
tier: "fast" | "balanced" | "thorough";
|
|
1018
|
+
mode: "fixed" | "smart";
|
|
817
1019
|
focus: string[];
|
|
818
|
-
mode?: "fixed" | "smart" | undefined;
|
|
819
1020
|
custom_prompt?: string | undefined;
|
|
820
1021
|
};
|
|
821
1022
|
mode: "single-vendor" | "cross-vendor";
|
|
1023
|
+
linear: {
|
|
1024
|
+
enabled: boolean;
|
|
1025
|
+
auth: {
|
|
1026
|
+
mode: "api_key" | "client_credentials";
|
|
1027
|
+
api_key_env: string;
|
|
1028
|
+
client_id_env: string;
|
|
1029
|
+
client_secret_env: string;
|
|
1030
|
+
scopes: string;
|
|
1031
|
+
};
|
|
1032
|
+
team_keys: string[];
|
|
1033
|
+
identity: {
|
|
1034
|
+
actor: string;
|
|
1035
|
+
signature: string;
|
|
1036
|
+
icon_url: string;
|
|
1037
|
+
per_step_actor: boolean;
|
|
1038
|
+
};
|
|
1039
|
+
comment_on: ("APPROVE" | "NEEDS_WORK" | "BLOCK" | "UNKNOWN")[];
|
|
1040
|
+
};
|
|
822
1041
|
clone_protocol: "ssh" | "https";
|
|
823
1042
|
vendors: {
|
|
824
1043
|
claude: {
|
|
@@ -832,7 +1051,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
832
1051
|
enabled: boolean;
|
|
833
1052
|
model: string | null;
|
|
834
1053
|
auth: "subscription" | "api-key";
|
|
835
|
-
effort: "low" | "medium" | "high" | "max";
|
|
1054
|
+
effort: "low" | "medium" | "high" | "max" | "xhigh" | "ultra";
|
|
836
1055
|
timeout_sec: number | null;
|
|
837
1056
|
quality: "low" | "medium" | "high";
|
|
838
1057
|
model_tiers?: {
|
|
@@ -842,6 +1061,9 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
842
1061
|
} | undefined;
|
|
843
1062
|
};
|
|
844
1063
|
};
|
|
1064
|
+
skills: {
|
|
1065
|
+
enabled: string[];
|
|
1066
|
+
};
|
|
845
1067
|
budget: {
|
|
846
1068
|
codex_monthly_usd: number | null;
|
|
847
1069
|
per_review_usd: number;
|
|
@@ -932,6 +1154,24 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
932
1154
|
custom_prompt?: string | undefined;
|
|
933
1155
|
} | undefined;
|
|
934
1156
|
mode?: "single-vendor" | "cross-vendor" | undefined;
|
|
1157
|
+
linear?: {
|
|
1158
|
+
enabled?: boolean | undefined;
|
|
1159
|
+
auth?: {
|
|
1160
|
+
mode?: "api_key" | "client_credentials" | undefined;
|
|
1161
|
+
api_key_env?: string | undefined;
|
|
1162
|
+
client_id_env?: string | undefined;
|
|
1163
|
+
client_secret_env?: string | undefined;
|
|
1164
|
+
scopes?: string | undefined;
|
|
1165
|
+
} | undefined;
|
|
1166
|
+
team_keys?: string[] | undefined;
|
|
1167
|
+
identity?: {
|
|
1168
|
+
actor?: string | undefined;
|
|
1169
|
+
signature?: string | undefined;
|
|
1170
|
+
icon_url?: string | undefined;
|
|
1171
|
+
per_step_actor?: boolean | undefined;
|
|
1172
|
+
} | undefined;
|
|
1173
|
+
comment_on?: ("APPROVE" | "NEEDS_WORK" | "BLOCK" | "UNKNOWN")[] | undefined;
|
|
1174
|
+
} | undefined;
|
|
935
1175
|
deployment?: "personal" | "team" | undefined;
|
|
936
1176
|
clone_protocol?: "ssh" | "https" | undefined;
|
|
937
1177
|
vendors?: {
|
|
@@ -946,7 +1186,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
946
1186
|
enabled?: boolean | undefined;
|
|
947
1187
|
model?: string | null | undefined;
|
|
948
1188
|
auth?: "subscription" | "api-key" | undefined;
|
|
949
|
-
effort?: "low" | "medium" | "high" | "max" | undefined;
|
|
1189
|
+
effort?: "low" | "medium" | "high" | "max" | "xhigh" | "ultra" | undefined;
|
|
950
1190
|
timeout_sec?: number | null | undefined;
|
|
951
1191
|
quality?: "low" | "medium" | "high" | undefined;
|
|
952
1192
|
model_tiers?: {
|
|
@@ -956,6 +1196,9 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
956
1196
|
} | undefined;
|
|
957
1197
|
} | undefined;
|
|
958
1198
|
} | undefined;
|
|
1199
|
+
skills?: {
|
|
1200
|
+
enabled?: string[] | undefined;
|
|
1201
|
+
} | undefined;
|
|
959
1202
|
budget?: {
|
|
960
1203
|
codex_monthly_usd?: number | null | undefined;
|
|
961
1204
|
per_review_usd?: number | undefined;
|
|
@@ -1043,6 +1286,7 @@ export type BrandConfig = z.infer<typeof BrandConfigSchema>;
|
|
|
1043
1286
|
export type VendorConfig = z.infer<typeof VendorConfigSchema>;
|
|
1044
1287
|
export type CodexVendorConfig = z.infer<typeof CodexVendorConfigSchema>;
|
|
1045
1288
|
export type QualityConfig = z.infer<typeof QualityConfigSchema>;
|
|
1289
|
+
export type SkillsConfig = z.infer<typeof SkillsConfigSchema>;
|
|
1046
1290
|
export type LogsConfig = z.infer<typeof LogsConfigSchema>;
|
|
1047
1291
|
export type TunnelConfig = z.infer<typeof TunnelConfigSchema>;
|
|
1048
1292
|
export type ImpactConfig = z.infer<typeof ImpactConfigSchema>;
|
|
@@ -1053,4 +1297,6 @@ export type DisplayTheme = z.infer<typeof DisplayThemeSchema>;
|
|
|
1053
1297
|
export type BacktraceConfig = z.infer<typeof BacktraceConfigSchema>;
|
|
1054
1298
|
export type IssueEnrichmentConfig = z.infer<typeof IssueEnrichmentConfigSchema>;
|
|
1055
1299
|
export type WatchConfig = z.infer<typeof WatchConfigSchema>;
|
|
1300
|
+
export type LinearConfig = z.infer<typeof LinearConfigSchema>;
|
|
1301
|
+
export type LinearAuthConfig = z.infer<typeof LinearAuthConfigSchema>;
|
|
1056
1302
|
//# sourceMappingURL=schema.d.ts.map
|