Sign in

Gabriel Vergnaud

@gabrielvergnaud.com
288 followers 139 following 30 posts

TypeScript nerd • Open Source (TS-Pattern, HOTScript) • Teacher • Staff Eng @datadog Unleash TypeScript's full potential 👉 type-level-typescript.com

PostsRepliesMedia
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
Bise is 5 days old, and it was built with itself. I haven't feel that productive for... ever? I'm addicted so you can expect more features to land soon 😅 Would love to hear about your feature requests! Comment below :*
000
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
Want to try it? It's free and open source 👇 github.com/gvergnaud/bise One line to install: curl -fsSL bise.dev/install.sh | sh macOS for now, bring your own API key. A ⭐ on the repo helps a ton 🙏
github.com
GitHub - gvergnaud/bise: a multi-agent harness, made for humans :* meet your team lead. you stay in flow, i run the agents.
a multi-agent harness, made for humans :* meet your team lead. you stay in flow, i run the agents. - gvergnaud/bise
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
And there's more! Lots of tiny and big features. Voice to voice, Computer Use...
100
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
It scales to as many agents as you want! But don't worry about your token bill. ❌ No multi agent commitee that runs in circles 👉 Just one agent per task It cost the same as your manual parallel sessions!
210
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
It's to keep you in flow. You enter zen mode when you type so you don't get distracted.
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
It's always available for you. You can give it large tasks and it will distribute the work, push implementers forward, answer their questions, and only surface to you what's relevant.
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
Bise is a new take on agents. Bise is your team lead. It has one single everlasting thread for your whole repo. Don't worry about context management, memory, ... everything is handled for you!
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
We can do better now, models got super strong! We can stop babysitting them.
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
And if you have a cool idea, you need to start from an empty session with 0 context. So ofc your agents don't get it!
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
There are so many harnesses out there, and yet they all look the same. And managing parallel agents is pretty painful! 😭 You need to babysit your sessions, think about the context window, remember where is what, juggle with your open PRs and worktrees...
110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026
Oops, I made yet another agent harness. This one is designed to keep _humans_ in flow 😌 Introducing ✨ bise :* ✨ If you feel the agent fatigue while managing your 10 parallel coding sessions, this is for you. and it's packed with cool features 🧵👇
120
Gabriel Vergnaud @gabrielvergnaud.com · 28/03/2025
Release note 👇 github.com/gvergnaud/ts...
github.com
Release v5.7.0 · gvergnaud/ts-pattern
New feature Exhaustive callback By default, .exhaustive() will throw an error if the input value wasn't handled by any .with(...) clause. This should only happen if your types are incorrect. It is ...
010
Gabriel Vergnaud @gabrielvergnaud.com · 28/03/2025
A new version of TS-Pattern is out 🚨 You can now customize the fallback behavior of `.exhaustive()` if the runtime value you get is unexpected. upgrade 👉 npm i ts-pattern@5.7.0
382
Gabriel Vergnaud @gabrielvergnaud.com · 25/02/2025
Love it! These sound effects are just perfect ❤️
000
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025
And here is a TypeScript Playground with the full code snippet 👇 www.typescriptlang.org/play/#code/F...
typescriptlang.org
TS Playground - An online editor for exploring TypeScript and JavaScript
The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.
010
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025
I also have a full chapter about advance uses for Mapped Types in my TypeScript course, check it out: type-level-typescript.com/mapped-types
type-level-typescript.com
Loops with Mapped Types — Type-Level TypeScript
Most TypeScript code is about transforming objects, so we often end up with many object variants in our codebases. Let’s learn how to generate object types by looping through the keys and values of ex...
160
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025
Mapped Types are a super powerful feature that you can learn about in TypeScript docs: www.typescriptlang.org/docs/handboo...
typescriptlang.org
Documentation - Mapped Types
Generating types by re-using an existing type.
120
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025
Here is another reason I like Type Catalogs. They can easily be transformed with Mapped Types! Full code snippet in thread 🧵👇
1182
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
You need to understand how unions distribute over conditional types to fully get why `Extract` works. Its definition can be somewhat cryptic:
110
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
yea ultimately unions and catalogs encode the same information so either option works! To extract a member of a discriminated union, I find that using the builtin Extract utility is the simplest, but I've noticed that the way Extract works isn't immediately intuitive to most people
110
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
I started using this pattern in one of my codebases a year ago and never looked back. If you are also a heavy user of unions of objects, give it a try!
130
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
And lastly, it makes writing generic function types so much easier! No need for pesky `Extract`s or `Exclude`s 🔥
140
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
Secondly, you can generate sub-unions super easily:
130
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
Firstly, having a catalog greatly decreases the number of type imports you need to make:
120
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025
Pro tip: Don't write your #TypeScript union types by hand, use a Type Catalog instead! Why are Type Catalogs better? Find out in the thread 🧵 👇
2274
Gabriel Vergnaud @gabrielvergnaud.com · 15/12/2024
A new TS-Pattern release is out! 👉 Prevent passing impossible patterns to `isMatching` when used with 2 parameters. 👉 `P.infer` behaves better when used in an argument position. just run `npm i ts-pattern@v5.6.0` in your project 😊 Release note: github.com/gvergnaud/ts...
0120
Gabriel Vergnaud @gabrielvergnaud.com · 26/11/2024
Type-Level TypeScript is on sale for Black Friday! 🚨 You can get it for 25% off! It's only 74$ to get lifetime access to all course materials. 👉 type-level-typescript.com Enroll to learn how to craft and transform #TypeScript *types* with the same ease you handle JavaScript values every day!
0110
Gabriel Vergnaud @gabrielvergnaud.com · 14/11/2024
Template Literal Types are awesome. If you concat `number` and a union of time units, you have a human readable AND type-safe way to provide time values! 👇
0133
Gabriel Vergnaud @gabrielvergnaud.com · 06/11/2024
Thanks @ayc0.github.io! ❤️🙌
020
Gabriel Vergnaud @gabrielvergnaud.com · 05/11/2024
Hey friends 👋 Trying out @bsky.app, looks great so far! I'll post TypeScript and programming related things. to get started, here is an article I wrote a couple of weeks ago explaining how to get optional keys from object types 🤗 type-level-typescript.com/articles/how...
type-level-typescript.com
How to get optional keys from object types in TypeScript? — Type-Level TypeScript
Let's build a reusable type helper to get all optional keys from an object type in TypeScript.
1171