packages feed

baikai-openai-0.7.1.0: baikai-openai.cabal

cabal-version: 3.4
name: baikai-openai
version: 0.7.1.0
synopsis: OpenAI providers for the baikai abstraction
description:
  OpenAI-compatible backends for baikai: Chat Completions over SSE against OpenAI and
  any host that emulates it, the codex exec batch provider, a launcher for interactive
  Codex sessions, and the renderer for unattended codex runs driven by baikai-agent.

category: AI
license: BSD-3-Clause
license-file: LICENSE
author: Nadeem Bitar
maintainer: nadeem@gmail.com
copyright: (c) 2026 Nadeem Bitar
build-type: Simple
tested-with: ghc ==9.12.4
extra-doc-files: CHANGELOG.md

common common-options
  ghc-options:
    -Wall
    -Wcompat
    -Widentities
    -Wincomplete-uni-patterns
    -Wincomplete-record-updates
    -Wredundant-constraints
    -fhide-source-paths
    -Wmissing-export-lists
    -Wpartial-fields
    -Wmissing-deriving-strategies

  -- Exhaustiveness is an error, not a warning. A non-exhaustive match
  -- is a crash the compiler already found: it fails at runtime, on
  -- whichever input reaches the missing branch, usually in front of a
  -- user. This is not hypothetical here — adding a constructor to
  -- AgentRunFailure left `failureExitCode` non-exhaustive and shipped a
  -- pattern-match failure on `baikai agent run --require-evidence`,
  -- because the warning scrolled past in a build log.
  --
  -- Promoted individually rather than through -Werror, which would also
  -- fail the build on warnings that are stylistic or that a future GHC
  -- invents, and would push people toward blanket suppression.
  ghc-options:
    -Werror=incomplete-patterns
    -Werror=incomplete-uni-patterns
    -Werror=incomplete-record-updates

  default-language: GHC2024
  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    OverloadedLabels
    OverloadedStrings

library
  import: common-options
  hs-source-dirs: src
  exposed-modules:
    Baikai.Provider.OpenAI.Agent
    Baikai.Provider.OpenAI.Api
    Baikai.Provider.OpenAI.Cli
    Baikai.Provider.OpenAI.Interactive
    Baikai.Provider.OpenAI.Internal.ErrorClass
    Baikai.Provider.OpenAI.Internal.Request
    Baikai.Provider.OpenAI.Internal.Stream
    Baikai.Provider.OpenAI.Internal.Usage
    Baikai.Provider.OpenAI.Responses
    Baikai.Provider.OpenAI.Responses.Assembler
    Baikai.Provider.OpenAI.Responses.Request
    Baikai.Provider.OpenAI.Responses.Stream
    Baikai.Provider.OpenAI.Shape
    Baikai.Provider.OpenAI.Sse
    Baikai.Provider.OpenAI.Transport

  other-modules: Paths_baikai_openai
  autogen-modules: Paths_baikai_openai
  build-depends:
    aeson ^>=2.2,
    baikai ^>=0.7.2,
    base >=4.20 && <5,
    base64-bytestring ^>=1.2,
    bytestring ^>=0.12,
    case-insensitive ^>=1.2,
    containers ^>=0.7,
    directory ^>=1.3,
    generic-lens ^>=2.3,
    http-client ^>=0.7,
    http-client-tls >=0.3 && <0.5,
    http-types ^>=0.12,
    lens ^>=5.3,
    openai ^>=2.5,
    process ^>=1.6,
    scientific ^>=0.3,
    servant-client ^>=0.20,
    streamly >=0.11 && <0.13,
    streamly-core >=0.3 && <0.5,
    text ^>=2.1,
    time ^>=1.14,
    vector ^>=0.13,

test-suite baikai-openai-test
  import: common-options
  type: exitcode-stdio-1.0
  hs-source-dirs: test
  main-is: Main.hs
  other-modules:
    BillingSpec
    CliEvidenceSpec
    Contract
    EndpointModels
    ErrorClassSpec
    EvidenceSpec
    LifecycleSpec
    MidStreamSpec
    PublicSurfaceSpec
    ReasoningSpec
    ResponsesAssemblerSpec
    ResponsesEvidenceSpec
    ResponsesSpec
    ResponsesStreamSpec
    ResponsesTransportSpec
    ShapeSpec
    SseSpec
    StructuredCliSpec
    TransportSpec

  build-depends:
    aeson,
    baikai ^>=0.7.2,
    baikai-openai,
    base >=4.20 && <5,
    bytestring,
    case-insensitive,
    containers,
    directory,
    filepath,
    generic-lens,
    http-client,
    http-types,
    lens ^>=5.3,
    network,
    openai,
    servant-client,
    stm,
    streamly-core >=0.3 && <0.5,
    tasty,
    tasty-hunit,
    temporary,
    text ^>=2.1,
    time,
    tls,
    vector,