di-sukharev / di-sukharev/opencommit
Feature: use TypeSafe Jev for commit-type/scope/gitmoji classification (typed output, ~$0.04/M in, free out)
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 7.5k
- Forks
- 445
- Avg merge
- 18m
- Merged PRs (30d)
- 2
Description
What
Add optional support for Jev, TypeSafe's "System One" decision model, for opencommit's classification steps.
Jev doesn't generate text. It returns typed, calibrated decisions via three primitives (choice, score, noul), all evaluated in parallel in a single request. Available now on OpenRouter as typesafe/jev-1.13 (no waitlist, no separate account) or direct via POST https://api.typesafe.ai/v1/systemone.
- Input: $0.042/M. Output: free.
- Context: 32K. Latency: 70-500ms (vendor-reported).
- OpenRouter uptime 99.95% / availability 99.81% over 3 days.
Why it fits opencommit
Jev can't write the commit message. But opencommit has several decision points that currently ride along on a full LLM call or on brittle heuristics:
- Conventional-commit type (
feat/fix/chore/docs/refactor/test) ->choice - Scope selection when
OCO_OMIT_SCOPEis off ->choice - Gitmoji selection ->
choice - "Is this a breaking change?" ->
noul - "Does this need a body or is a one-liner enough?" ->
noul - Diff complexity gating, i.e. is this worth a frontier call ->
score
All of those fit in one sub-second call, and the main provider then only has to write the summary prose with type/scope/emoji pinned. That should cut tokens on the expensive provider and make the structured fields deterministic instead of parsed out of a string.
Proposed shape
OCO_AI_PROVIDER=typesafe is the wrong fit since Jev can't produce the message. Instead a complementary opt-in:
OCO_CLASSIFIER=jev
OCO_CLASSIFIER_MODEL=typesafe/jev-1.13 # via existing OpenRouter path
Unset -> current behavior, unchanged. Since opencommit already has an OpenRouter provider, this reuses the existing key and HTTP client; the only new code is the questions payload and mapping decisions onto the prompt.
Caveats
Vendor-reported perf/cost numbers, no third-party reproduction yet. Typed output guarantees structure, not correctness, so the classification can still be wrong. Worth keeping behind the opt-in flag.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating opencommit's existing OpenRouter provider and the classification steps that currently produce commit type, scope, gitmoji, breaking-change, body, and diff-complexity decisions. Add the opt-in OCO_CLASSIFIER=jev path using the existing key and HTTP client, while leaving unset behavior unchanged; done means typed decisions are mapped into the prompt and the main provider still writes the message.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, javascript
- Domain
- ai, cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100