Portsmith

Traga recursos focados de JS/TS de outros repositórios para o seu aplicativo via MCP—com verificações de comportamento e um patch que você pode revisar.

Documentação

Portsmith

Mova recursos JS/TS entre repositórios—com verificações de comportamento e um patch revisável.

Tests npm alpha MIT license

Início rápido · Primeira transferência · Agentes de codificação · Exemplos · Discussões

Encontrou um recurso útil em outro código? O Portsmith rastreia seus arquivos JS/TS, os prepara em uma cópia do seu aplicativo e verifica a integração contra o comportamento que você declarar. Use suas próprias edições, um agente de codificação ou um modelo compatível com OpenAI. Seus repositórios originais permanecem inalterados.

A recorded browser session: catalog search fails before the transfer and works afterward, with the declared checks passing.

Gravado a partir da demonstração original usando uma proposta autoral incluída, não IA autônoma. O alfa publicado tem o mesmo comportamento de exemplo com estilização de navegador mais simples. Detalhes da demonstração e reprodução · Imagem estática

Experimente agora

Node 22.19+ (22.x) ou 24.11+, além de Git. Sem necessidade de chave de API ou cadastro:

npx --yes --package=portsmith-workbench@alpha portsmith-demo

O exemplo incluído move a filtragem de tabela para um aplicativo de catálogo:

Source contract       5/5 passed
Destination before    1/5 passed
Destination after     5/5 passed
Existing tests        pass before and after
Output                a patch + verification report

Ele cria uma nova pasta .portsmith/demo-* no seu diretório atual e imprime os caminhos do patch e do relatório. A proposta é autoral para que você possa testar o fluxo de trabalho sem um modelo.

Para uso contínuo:

npm install -g portsmith-workbench@alpha
portsmith doctor --human
portsmith-demo --install-browser

O último comando baixa o Chromium correspondente e executa verificações de interação no navegador. Depois, use portsmith-demo --browser. Hosts Linux mínimos também podem precisar de npx playwright@1.61.1 install-deps chromium. Instalação e solução de problemas →

Para que posso usar?

  • Reutilizar um recurso específico: mova um filtro, parser ou transformação para outro aplicativo JS/TS.
  • Revisar a integração de um agente: teste o comportamento proposto, mantenha os testes existentes e inspecione o patch.
  • Verificar um fluxo de navegador: declare interações como busca e redefinição, e mantenha capturas de tela e rastros.

Comece com um recurso pequeno cujas entradas, saídas e testes de destino você possa nomear. Percorra uma transferência completa →

Como funciona

Discover → Inspect → Declare behavior → Prepare a copy
                                             ↓
Review patch ← Export ← Verify ← Adapt the integration

A exportação exige uma fonte aprovada, uma lacuna de destino demonstrada, um candidato aprovado, regressões concluídas, originais inalterados e um patch novo que reproduza o candidato verificado. Uma falha, tempo limite ou teste ignorado bloqueia a verificação. Regras completas de verificação →

Traga seu agente de codificação

O Portsmith inclui uma CLI, servidor MCP e API JavaScript tipada. Conecte um host MCP como Claude Code ou Cursor e pergunte:

Use o Portsmith para encontrar o recurso de busca em /work/source e planeje uma transferência para /work/app. Mostre-me o contrato de comportamento e as dependências antes de executar o código. Preserve os testes existentes e exporte um patch que eu possa revisar.

Configurações MCP copiáveis · Habilidade de fluxo de trabalho do agente · Referência da API

Para a adaptação orientada por modelo do próprio Portsmith:

portsmith init --out ./portsmith-setup --model YOUR_MODEL_ID
# Copy portsmith-setup/.env.example to .env in that directory; add your key locally.

Em seguida, siga o guia de configuração do modelo. Sua chave permanece no ambiente; o uso do modelo envia código selecionado ao seu provedor configurado. A demonstração sem chave acima não exercita a adaptação autônoma.

Escopo deste alfa

Funciona dentro do escopo declaradoLimites a conhecer
Rastreamento de arquivos JS/TS e descoberta de recursosPistas lexicais, não prova em tempo de execução ou fatiamento de funções
Configuração npm/pnpm em cópias novas, incluindo workspacesScripts desabilitados; versões desconhecidas precisam de declarações revisadas
Aliases estáticos e capturas explícitas de resolução Vite/pluginImports computados e ativos arbitrários de bundler não são suportados
Contratos de função, regressões Node/Vitest, builds declaradosApenas verificações declaradas concluídas contam
Interações Chromium, capturas de tela e rastrosSem conversão geral entre frameworks ou garantia de produção

Alfa público: 0.6.0-alpha.2. Revise cada patch. A verificação executa o código do repositório na sua máquina; não é uma sandbox de segurança. Use código confiável e revise as licenças da fonte. Uma aprovação prova os casos declarados, não equivalência geral. Detalhes de dependências · Segurança

Exemplos e evidências

Transferências controladas históricas incluem IT-Tools, TodoMVC, drawDB e Mermaid Live Editor. Elas têm limites autorais e limitações registradas; não são uma taxa de sucesso geral ou prova de paridade com Rea. Explore os casos →

Rea é um adaptador opcional de evidência de análise. Suas descobertas permanecem separadas das verificações de comportamento do Portsmith. Escopo do adaptador e comparação.

Documentação e contribuição

Eu quero…Comece aqui
Instalar ou diagnosticar a configuraçãoConfiguração
Entender cada etapaPrimeira transferência
Usar um agente ou um modeloConfiguração MCP / agente · Adaptação autônoma
Transferir um aplicativo maiorConfiguração de dependências · Aliases
Declarar verificações de navegadorContratos de navegador
Encontrar comandos ou tipos de APIReferência da CLI · API
Contribuir ou relatar um problemaContribuindo · Issues
git clone https://github.com/punsnprotons/portsmith.git
cd portsmith
npm ci --ignore-scripts
npm run browser:install
npm run check
npm run demo

Arquitetura · Validação · Verificações de lançamento · Licença MIT