Pi 5 min read

Cómo configurar Pi para proyectos TypeScript

Publicado: 2026-03-25 | Categoría: Pi | Lectura: 8 min

Lo que nadie te dice: Pi está construido en TypeScript. Configurarlo para proyectos TypeScript no es una configuración especial — es su modo NATIVO.


🎯 Lo que aprenderás

  • Por qué Pi y TypeScript son una combinación perfecta
  • Cómo configurar models.json para TypeScript-friendly development
  • Extensiones y Skills que mejoran la experiencia TS
  • Mi setup de producción para proyectos TypeScript

El mito: “Pi es para JavaScript”

He escuchado esto muchas veces:

“Pi es para proyectos JavaScript/Node.js. Para TypeScript, necesitas otra cosa.”

Esto es falso. Pi está construido en TypeScript desde el inicio.

pi-ai              → LLM communication (TypeScript)
pi-agent-core       → Agent loop (TypeScript)
pi-coding-agent     → Full CLI (TypeScript)

No es que Pi “soporta” TypeScript. Es que Pi está hecho de TypeScript.


Configuración básica de Pi para TypeScript

1. Instalación (igual que siempre)

npm install -g @mariozechner/pi-coding-agent
pi

2. Configurar models.json para TypeScript

{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-sonnet-4",
  "defaultThinkingLevel": "high",
  "providers": {
    "anthropic": {
      "apiKey": "sk-ant-...",
      "defaultModel": "claude-sonnet-4",
      "models": [
        {
          "id": "claude-sonnet-4",
          "name": "Claude Sonnet 4",
          "contextWindow": 200000,
          "supportsTools": true,
          "typeScriptOptimized": true
        }
      ]
    }
  }
}

💡 Tip: La mayoría de modelos modernos (Claude, GPT-4, GLM) son nativamente TypeScript-optimizados.

3. Configurar tsconfig.json para Pi

En tu proyecto TypeScript:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "allowSyntheticDefaultImports": true,
    "plugins": [
      {
        "name": "@mariozechner/pi-typecheck-plugin"
      }
    ]
  }
}

Extensiones esenciales para TypeScript

1. pi-typescript (no oficial, pero útil)

Esta extensión no existe oficialmente, pero los desarrolladores de Pi recomiendan este setup:

# Extensiones que mejoran la experiencia TS
pi install npm:pi-context
pi install npm:pi-ask-user
pi install npm:pi-serena-tools  # ← IMPORTANTE para TS

2. pi-serena-tools para TypeScript

Serena entiende TypeScript. Es como tener tsc en el agente:

# Ver tipos de una función
get_type_hierarchy(name_path="AuthService.login", relative_path="src/auth/service.ts")
# → Ve: (token: string) => Promise<User | null>

# Renombrar respetando tipos
rename_symbol(
  name_path="AuthService.login",
  relative_path="src/auth/service.ts",
  new_name="authenticate"
)
# → Renombra Y actualiza tipos

3. Skills de TypeScript

Pi incluye skills pre-instalados para TS:

/skill:typescript-analyzer    # Analiza código TS
/skill:typescript-linter      # Sugiere mejoras
/skill:typescript-refactor   # Refactors comunes

Mi setup de producción

Este es mi archivo ~/.pi/agent/settings.json para proyectos TypeScript:

{
  "defaultProvider": "anthropic",
  "defaultModel": "claude-sonnet-4",
  "defaultThinkingLevel": "high",
  "theme": "nord",
  "compaction": {
    "enabled": true,
    "reserveTokens": 19200,
    "keepRecentTokens": 19200
  },
  "retry": {
    "enabled": true,
    "maxRetries": 3
  },
  "onetool": {
    "command": "/home/pablo/.local/bin/onetool",
    "args": [
      "--config",
      "/home/pablo/.onetool/onetool.yaml",
      "--secrets",
      "/home/pablo/.onetool/secrets.yaml"
    ]
  },
  "packages": [
    "npm:oh-pi",
    "npm:onetool-pi",
    "npm:pi-context",
    "npm:pi-ask-user",
    "npm:pi-rewind",
    "npm:pi-serena-tools",
    "npm:glimpseui"
  ],
  "mcpServers": {
    "serena": {
      "command": "/home/pablo/.npm-global/bin/serena-mcp",
      "env": {}
    },
    "chrome-devtools": {
      "command": "/home/pablo/.npm-global/bin/chrome-devtools-mcp",
      "args": ["--autoConnect"],
      "env": {
        "CHROME_PATH": "/usr/bin/google-chrome"
      }
    }
  }
}

Por qué esto funciona para TS:

  • pi-serena-tools → LSP nativo para TS
  • pi-context → Gestión de contexto para sesiones TS largas
  • pi-rewind → Back-in-time si TS se rompe algo
  • glimpseui → UI para previews de TS en tiempo real

Flujos de trabajo comunes con TypeScript

1. Crear nuevo archivo TypeScript

pi
# Tú: "Crea un nuevo servicio de usuarios en TypeScript con tipos"

Pi genera:

// src/users/service.ts
export interface User {
  id: string;
  email: string;
  createdAt: Date;
}

export class UserService {
  async create(data: CreateUserDTO): Promise<User> {
    // implementation
  }

  async findById(id: string): Promise<User | null> {
    // implementation
  }
}

2. Agregar tipos a función existente

pi
# Tú: "Agrega tipos TypeScript a la función validateToken en src/auth/"

Pi usa Serena para inferir tipos y luego los añade:

// Antes
function validateToken(token) {
  // sin tipos
}

// Después
function validateToken(token: string): Promise<User | null> {
  // con tipos + JSDoc
}

3. Refactorizar interface

# Usar Serena para refactor
rename_symbol(
  name_path="IUser",
  relative_path="src/types/users.ts",
  new_name="UserDTO"
)

Resulta: renombrado en TODOS los archivos que usan IUser.


Comandos específicos para TypeScript

ComandoQué haceEjemplo
get_type_hierarchy()Ver tipos de función/variableget_type_hierarchy(name_path="User.login")
find_referencing_symbols()Encontrar dónde se usa un tipofind_referencing_symbols(name_path="UserDTO")
/skill:typescript-analyzerAnalizar código TS/skill:typescript-analyzer src/service.ts
/skill:typescript-linterSugerir mejoras TS/skill:typescript-linter src/service.ts
/skill:typescript-refactorRefactors comunes/skill:typescript-refactor --pattern="any-to-unknown"

¿Y los proyectos frontend (React/Vue/Next.js)?

Pi funciona exactamente igual. La diferencia es solo en qué archivos tocas.

FrameworkPi entiende
React✅ JSX + TSX + tipos de React
Vue✅ VUE + tipos de Vue
Next.js✅ React + routing + API routes
Svelte✅ Svelte + tipos de Svelte

Ejemplo con Next.js + TS:

pi
# Tú: "Añade una nueva página /dashboard con TypeScript"

Pi genera:

// app/dashboard/page.tsx
export default function DashboardPage() {
  return (
    <div>
      <h1>Dashboard</h1>
      {/* TSX con tipos automáticos */}
    </div>
  )
}

export const metadata = {
  title: 'Dashboard',
  description: 'Your personal dashboard'
}

Problemas comunes y soluciones

Problema: “Pi no entiende mis tipos”

Causa: tsconfig.json no está en el directorio actual

Solución:

# Asegúrate que Pi encuentra el tsconfig
pi --cwd /ruta/a/tu/proyecto
# O
cd /ruta/a/tu/proyecto && pi

Problema: “Refactor rompe tipos”

Causa: Usar edit en lugar de Serena para refactors

Solución:

# ❌ No hagas esto
edit(path="src/types.ts", oldText="interface User", newText="interface UserDTO")

# ✅ Haz esto
rename_symbol(name_path="User", relative_path="src/types.ts", new_name="UserDTO")

Problema: “Pi no encuentra tipos de node_modules”

Causa: Pi no tiene acceso a node_modules/@types

Solución:

// tsconfig.json
{
  "compilerOptions": {
    "typeRoots": ["./node_modules/@types", "./types"]
  }
}

Comparación: Pi con TS vs sin Pi

TareaSin PiCon Pi + TS
Crear archivo nuevoManual + pensar tiposPi genera con tipos
Agregar tiposManual, tediosoPi infiere y añade
RefactorizarManual, riesgosoSerena renombra con tipos
Buscar tipogrep + abrir archivosSerena encuentra instantáneo
Error de tiposVS Code lentoPi + Serena en terminal

En resumen

  1. Pi está construido en TypeScript → no es una configuración especial, es nativo
  2. Configuración básica: models.json + tsconfig.json
  3. Extensiones esenciales: pi-serena-tools, pi-context, glimpseui
  4. Serena entiende TS → LSP nativo para inferencia de tipos
  5. Funciona para todos los frameworks: React, Vue, Next.js, Svelte
  6. El setup es el mismo → Pi es Pi, TS es JS con tipos

🔗 Recursos


💬 ¿Qué framework TS usas con Pi?

React, Vue, Next.js, Angular? ¿Algo diferente? ¿Tienes algún tip específico? Déjamelo en los comentarios.


Tags: pi, typescript, ts, configuración, desarrollo


Este artículo forma parte de la categoría Pi