packages feed

baikai-kit-0.2.0.0: baikai-kit.cabal

cabal-version:   3.4
name:            baikai-kit
version:         0.2.0.0
synopsis:        Shared kit installer for AI-agent skills and subagents
description:
  Shared implementation of kit listing, installation, update, uninstall,
  status, and discovery helpers for command-line tools that install local
  AI-agent skills and subagents.

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.Kit
    Baikai.Kit.Command
    Baikai.Kit.Config
    Baikai.Kit.Error
    Baikai.Kit.Install
    Baikai.Kit.Manifest
    Baikai.Kit.Path
    Baikai.Kit.Repo
    Baikai.Kit.Session
    Baikai.Kit.Sidecar
    Baikai.Kit.Status

  build-depends:
    , aeson                 ^>=2.2
    , baikai                ^>=0.6.0
    , base                  >=4.20   && <5
    , binary                ^>=0.8
    , bytestring            ^>=0.12
    , crypton               ^>=1.0
    , directory             ^>=1.3
    , filepath              ^>=1.5
    , optparse-applicative  ^>=0.19
    , process               ^>=1.6
    , text                  ^>=2.1
    , time                  ^>=1.14

test-suite baikai-kit-test
  import:         common-options
  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Main.hs
  ghc-options:    -threaded -with-rtsopts=-N
  build-depends:
    , aeson
    , baikai
    , baikai-kit
    , base
    , bytestring
    , directory
    , filepath
    , tasty
    , tasty-hunit
    , temporary
    , text