packages feed

kioku-cli-0.7.0.0: kioku-cli.cabal

cabal-version: 3.0
name: kioku-cli
version: 0.7.0.0
synopsis: kioku command-line interface
description:
  Command-line entry point for kioku demos and operational commands.

license: BSD-3-Clause
license-file: LICENSE
author: Nadeem Bitar
maintainer: nadeem@gmail.com
copyright: 2026 Nadeem Bitar
category: Data
build-type: Simple
tested-with: ghc >=9.12 && <9.13
homepage: https://github.com/shinzui/kioku
bug-reports: https://github.com/shinzui/kioku/issues
extra-doc-files: CHANGELOG.md

source-repository head
  type: git
  location: https://github.com/shinzui/kioku.git
  subdir: kioku-cli

common warnings
  ghc-options:
    -Wall
    -Wcompat
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wpartial-fields
    -Wredundant-constraints
    -Werror=incomplete-patterns

common shared
  default-language: GHC2024
  default-extensions:
    BlockArguments
    DeriveAnyClass
    DuplicateRecordFields
    MultilineStrings
    OverloadedLabels
    OverloadedRecordDot
    OverloadedStrings
    QualifiedDo
    TemplateHaskell

library
  import: warnings, shared
  hs-source-dirs: src
  exposed-modules:
    Kioku.Cli
    Kioku.Cli.AIConfig
    Kioku.Cli.Commands.Artifacts
    Kioku.Cli.Commands.Demo
    Kioku.Cli.Commands.DemoSession
    Kioku.Cli.Commands.Distill
    Kioku.Cli.Commands.Persona
    Kioku.Cli.Commands.Recall
    Kioku.Cli.Commands.Scenes
    Kioku.Cli.Commands.Worker
    Kioku.Cli.Context
    Kioku.Cli.Options
    Kioku.Cli.Scope

  -- Same GHC 9.12.4 coercion-optimiser bug that kioku-core works around; here it
  -- fells the profiled build of Kioku.Cli.Commands.DemoSession:
  --
  --     panic! (the 'impossible' happened) / coercionKind / ConsSymbolDef
  --     pprPanic, called at compiler/GHC/Core/Coercion.hs:2550:17
  --
  -- The type-level Symbol axioms arrive transitively through kioku-core's
  -- KindID-typed identifiers, so this package needs the same opt-out even though
  -- it never mentions mmzk-typeid itself. See kioku-core.cabal for the full
  -- write-up. Profiled way only; ordinary builds keep the coercion optimiser.
  -- mori://MMZK1526/mmzk-typeid/upstream-issues/mmzk-typeid-kindid-ghc-9-12-4-profiling-coercionkind-panic
  ghc-prof-options: -fno-opt-coercion
  build-depends:
    async >=2.2 && <2.3,
    baikai ^>=0.7.0.0,
    base >=4.21 && <5,
    containers >=0.6 && <0.8,
    directory >=1.3 && <1.4,
    effectful >=2.5 && <2.7,
    keiro ^>=0.17.0.0,
    kioku-api ^>=0.7.0.0,
    kioku-core ^>=0.7.0.0,
    kiroku-store ^>=0.8.0.0,
    optparse-applicative >=0.19 && <0.20,
    text >=2.1 && <2.2,
    time >=1.12 && <1.15,
    uuid >=1.3 && <1.4,

executable kioku
  import: warnings, shared
  main-is: Main.hs
  hs-source-dirs: app
  ghc-options:
    -threaded
    -rtsopts
    -with-rtsopts=-N

  build-depends:
    base >=4.21 && <5,
    kioku-cli ^>=0.7.0.0,

test-suite kioku-cli-test
  import: warnings, shared
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs: test
  other-modules:
    Kioku.Cli.ParserSpec
    Kioku.Cli.RecallEndToEndSpec

  ghc-options:
    -threaded
    -rtsopts
    -with-rtsopts=-N

  -- Kioku.Cli.RecallEndToEndSpec runs the real binary as a subprocess: stdout, stderr and the
  -- environment are process-wide, and tasty runs cases concurrently, so redirecting them in
  -- process would race the rest of the suite.
  build-tool-depends: kioku-cli:kioku
  build-depends:
    aeson >=2.2 && <2.3,
    base >=4.21 && <5,
    effectful >=2.5 && <2.7,
    filepath >=1.4 && <1.6,
    keiro ^>=0.17.0.0,
    kioku-api ^>=0.7.0.0,
    kioku-cli ^>=0.7.0.0,
    kioku-core ^>=0.7.0.0,
    kioku-migrations:test-support ^>=0.7.0.0,
    kiroku-store ^>=0.8.0.0,
    optparse-applicative >=0.19 && <0.20,
    process >=1.6 && <1.7,
    tasty >=1.5,
    tasty-hunit >=0.10,
    temporary >=1.3,
    text >=2.1,
    time >=1.12 && <1.15,
    uuid >=1.3 && <1.4,