Transporte e implantação

2.1 Implantação padrão

Um serviço DEVE escutar por padrão nos endereços de loopback 127.0.0.1 e ::1. A porta convencional é 17832, o que torna o endereço base padrão http://127.0.0.1:17832.

Item Valor
Endereços de escuta 127.0.0.1 e ::1
Transporte HTTP/1.1 ou HTTP/2 transportando JSON
Streaming Eventos enviados pelo servidor, Content-Type: text/event-stream
Prefixo da interface principal /lmsp/v1
Prefixo compatível com a OpenAI /v1
Descrição do serviço GET /.well-known/lmsp.json
Contrato legível por máquina GET /lmsp/v1/openapi.json
Canal local opcional Socket de domínio Unix ou named pipe do Windows

As requisições e as respostas usam JSON em UTF-8 (Content-Type: application/json), exceto os fluxos (text/event-stream) e os erros (application/problem+json). Os carimbos de data e hora são inteiros: segundos desde a época Unix. Os identificadores são strings opacas; um prefixo de tipo, como resp_ ou task_, é RECOMENDADO.

O contrato da interface é um documento OpenAPI 3.2. O OpenAPI 3.2 consegue descrever eventos enviados pelo servidor, JSON Lines e JSON Sequences, de modo que os endpoints de streaming são especificados no mesmo documento que o restante. O contrato desta versão é publicado em /lmsp/1.0/openapi.json.

Um serviço PODE também aceitar conexões em um socket de domínio Unix ou em um named pipe do Windows, com a mesma semântica HTTP. Na 1.0, a forma de anunciar esses endpoints fica a cargo de extensões.

2.2 Operação contínua

Um serviço DEVERIA ser hospedado pelo sistema operacional: launchd no macOS, systemd no Linux e o Gerenciador de Serviços no Windows.

O processo do serviço e os processos dos modelos DEVERIAM ser separados. A falha de um modelo DEVERIA afetar apenas as tarefas que usam esse modelo. Ela NÃO DEVERIA tornar indisponíveis a descoberta de serviços, o catálogo de modelos nem as consultas sobre tarefas anteriores.