Skip to content

src/stories/chat-sim/lib/ importa un tipo desde el repo PRIVADO inbox-ai por ruta relativa cross-repo #29

Description

@A-PachecoT

Contexto

Dos archivos de stories importan un tipo saliéndose del repo, seis niveles arriba, hacia un repo privado:

src/stories/chat-sim/lib/inboxMessageAdapter.ts:12
src/stories/chat-sim/lib/inboxMessageFixtures.ts:9
  import type { Message } from '../../../../../../products/cofoundy-platform/inbox-ai/frontend/src/lib/api';

Dos problemas distintos:

1. Hoy ya es frágil. Esa ruta sólo resuelve en una máquina que tenga el monorepo completo con products/cofoundy-platform/inbox-ai clonado al lado. Cualquiera que clone sólo cofoundy/ui tiene esas stories rotas en typecheck/Storybook. Es import type, así que no afecta runtime — pero sí tsc y el build de Storybook.

2. Bloquea el open source. inbox-ai es privado. Ese import no puede irse a un repo público tal cual, ni por extracción de chat-sim ni abriendo packages/ui.

Decisión requerida (no hay default bueno)

  • (a) La story InboxAIReplacement no va al repo público. Se pierde la demo, se conserva la propiedad.
  • (b) Vendorizar el tipo Message. Cuesta exactamente la propiedad que esa story existe para probar: que el reemplazo está tipado contra la interfaz real de inbox-ai y no contra un espejo copiado a mano que se desincroniza en silencio.
  • (c) inbox-ai publica su tipo como paquete o .d.ts versionado, y ambos consumen eso.

La (c) es la única que conserva la propiedad y desbloquea el OSS; también es la más cara.

Criterios de aceptación

  • npx tsc --noEmit pasa en un clon sin el monorepo alrededor
  • Ninguna ruta relativa sale del repo
  • Si se elige (b), queda escrito en el archivo que el tipo es una copia y cómo se detecta la deriva

Verificación (runnable)

grep -rn "\.\./\.\./\.\./\.\./\.\./\.\." src/ ; echo "exit=$?"   # espera 1 (sin hits)

Guardrails

  • No elegir (b) por default por ser la más rápida: es la que borra el valor de la story
  • Notar que esto vive en la celda de stories, no en chat-sim/** — dentro del subárbol del componente las menciones a inbox-ai son comentarios y fragmentos citados, sin imports. El subárbol sigue siendo liftable.

Scope

src/stories/chat-sim/lib/*.ts. Hallazgo de la lane oss12, verificado por el lead.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions