Files
composiohq__composio/mise.toml
T
Alberto Schiabel 07160d14fa feat(toolchain): introduce mise.toml as single source of truth (#3492)
## Summary

This PR starts Phase 1 of PLEN-1368 by adding `mise.toml` as the
repo-owned source for the primary toolchain versions:

- Node `20.20.2`
- Bun `1.3.10`
- Deno `2.6.7`
- Python `3.12`
- uv `0.8.19`

It also keeps pnpm corepack-driven through
`package.json#packageManager`, adds `devEngines` for Node/pnpm
visibility, documents the new `mise install && corepack enable && pnpm
install` bootstrap path, ignores `.mise.local.toml`, and fixes stale
release-doc prerequisites.

## Why

The repo already has real toolchain drift, not just duplicated version
strings. The internal release docs had stale Node/Bun/pnpm versions,
Deno is repeated across workflows, Dockerfiles, docs, and e2e helpers,
and Python local setup still has a separate `3.11` venv path while the
repo pins `3.12`.

A composite-action cleanup would improve CI, but it would not solve
local development. `mise.toml` gives us one file that declares the
versions and lets contributors install or switch them with one command.
That is the main value proposition here: make the repo declare its own
toolchain, then let CI consume the same declaration in the next phase.

## Rollout

This is deliberately additive. It does not remove `.nvmrc`,
`.bun-version`, `.python-version`, or `.dvmrc`, and it does not change
CI behavior yet. Contributors who do not use mise can keep working as
before; contributors who do use mise get managed Node/Bun/Deno/Python/uv
immediately.

Phase 2 can migrate the existing composite actions to
`jdx/mise-action@v4`. Phase 3 can remove the legacy version files and
add the lockfile once the transition is complete.

## Out of Scope

- Migrating CI to `jdx/mise-action@v4`
- Removing legacy version files
- Adding `mise.lock`
- Updating nested TS package/example `packageManager` fields that still
say `pnpm@10.28.0`; that is pre-existing metadata drift and should be
handled separately to avoid broadening Phase 1

## Verification

- `git diff --check origin/next...HEAD`
- `mise install && mise current`
- `pnpm --version` -> `10.28.2`
- `pnpm dlx prettier@3.8.1 --check package.json`

Refs: PLEN-1368
2026-06-04 23:50:59 -07:00

31 lines
1.2 KiB
TOML

# Single source of truth for Node, Bun, Deno, Python, and uv versions.
#
# Local dev: `mise install` (after `brew install mise` / `winget install jdx.mise` / `curl https://mise.run | sh`)
# CI: driven by `jdx/mise-action@v4` in the composite actions under `.github/actions/`
#
# pnpm is intentionally NOT pinned here. Pattern A (corepack-driven) is in effect:
# the version comes from `packageManager` in `package.json` and corepack shims it.
# See https://github.com/jdx/mise/discussions/7622 for why pinning pnpm in [tools] can shadow corepack.
min_version = "2026.1.0"
[tools]
node = "20.20.2"
bun = "1.3.10"
deno = "2.6.7"
python = "3.12"
uv = "0.8.19"
[env]
_.path = ["{{config_root}}/node_modules/.bin"]
[settings]
# Read .nvmrc / .python-version / .bun-version during the transition window.
# Removed in Phase 3 once the legacy files are deleted.
idiomatic_version_file_enable_tools = ["node", "python", "bun"]
# uv integration: mise installs Python, uv owns the venv.
# "source" activates an existing .venv when entering the repo;
# use "create|source" if you want mise to also create the venv automatically.
python.uv_venv_auto = "source"