TypeSafe and Jev now in Buddy

Buddy now integrates with TypeSafe, and with it comes a new pipeline action: Jev. Connect your API key once and your pipeline can ask a question about the run and get back one typed answer with a confidence value. Is this test failure flaky? How risky is this update? Does a human need to see this release? The answer is stored in a variable, so the next action branches on it with ordinary trigger conditions.

Jev is not another coding agent. Claude Code, Codex CLI and Cursor can inspect repositories, run commands, and change files. Jev evaluates the context provided to it and returns one of the predefined answers.

Step 1: connect TypeSafe

Open the Integrations tab, click New integration, and pick TypeSafe. All it needs is an API key: click Get API key under the field, create a key in TypeSafe, paste it in, give the integration a name and ID, and save.

Image loading...The TypeSafe integration configuration in Buddy with the API key filled in

TypeSafe keys belong to the organization, not to the person who created them. If that person leaves, the key keeps working and so do the pipelines.

Step 2: ask one question

A Jev action has three parts: the state it should look at, the question, and the type of the answer. The state is a list of inline text with variables expanded at runtime, or files from the pipeline filesystem: a policy file from the repository, a diff, a log saved by a previous action. The question type determines the output: SCORE returns a position on a defined scale. CHOICE returns one of up to 255 options. BOOLEAN returns yes or no.

Image loading...The Jev action in Buddy: typesafe integration, a question, the Boolean type with true when and false when, and the state built from the commit message and a policy file from the repository

Jev writes the answer to BUDDY_ACTION_JEV_RESULT and its confidence to BUDDY_ACTION_JEV_CONFIDENCE. Score questions also get BUDDY_ACTION_JEV_SCORE, and every criterion gets its own BUDDY_ACTION_JEV_PROBABILITY_<KEY>. Later actions use them like any other variable.

Example: a release gate

Every push to main deploys unless Jev returns a result that requires manual review. Then the pipeline pings Slack and waits for approval:

yaml
- pipeline: release-gate refs: - refs/heads/main events: - type: PUSH actions: - action: Does a human need to see this release type: JEV integration: typesafe question: Should a human approve this release before it goes out? question_type: BOOLEAN state: - "Commit: $BUDDY_RUN_COMMIT_MESSAGE" - file: .buddy/release-policy.md true_when: "The change touches payments, authentication, database migrations, pricing or anything the policy marks as needing a review before release." false_when: "The change is a copy fix, a style change, a dependency bump, a test or a docs update, or anything the policy marks as safe to ship on its own." - action: Ping releases type: SLACK integration: slack channel: releases content: "Jev wants a human on this one (confidence $BUDDY_ACTION_JEV_CONFIDENCE): $BUDDY_RUN_COMMIT_MESSAGE. Approve in Buddy: $BUDDY_RUN_URL" trigger_conditions: - trigger_condition: VAR_IS trigger_variable_key: BUDDY_ACTION_JEV_RESULT trigger_variable_value: "true" - action: Approve the release type: WAIT_FOR_APPLY description: "Jev flagged this release for review: $BUDDY_RUN_COMMIT_MESSAGE" trigger_conditions: - trigger_condition: VAR_IS trigger_variable_key: BUDDY_ACTION_JEV_RESULT trigger_variable_value: "true" - action: Deploy type: BUILD docker_image_name: buddy/localshell docker_image_tag: ubuntu_24.04 commands: |- ./deploy.sh

Image loading...A release gate run in Buddy: Jev answered true with a 69% probability, the Slack message went out, the release was approved by hand and the deploy ran

A copy fix ships on its own. A change in checkout stops at Approve the release with a message in Slack.

Image loading...The same pipeline on a README typo fix: Jev answered false, Slack and the approval were skipped and the deploy ran straight away

The policy consists of one file in the repository plus the true_when and false_when conditions. If the classification needs adjustment, you can update those conditions or the policy file.

Four pipelines that use it

We built four pipelines around Jev, each one on a small real project, with the runs and the mistakes we made along the way:

Learn more

Jarek Dylewski

Jarek Dylewski

Customer Support

A journalist and an SEO specialist trying to find himself in the unforgiving world of coders. Gamer, a non-fiction literature fan and obsessive carnivore. Jarek uses his talents to convert the programming lingo into a cohesive and approachable narration.

Oct 7, 2026
Share