packages feed

claude-gate-1.0.0: claude-gate.cabal

cabal-version:      3.0

name:           claude-gate
version:        1.0.0
synopsis:       Hook gate that reviews and records edits from nested Claude Code sessions
description:
    A Claude Code hook-protocol gate. It intercepts edits made by nested Claude
    sessions, renders their diffs, tracks per-turn state, and drives the
    review, critique and dumbify passes that decide whether an edit is allowed
    through.
category:       Development
homepage:       https://github.com/jappeace/vibes#readme
bug-reports:    https://github.com/jappeace/vibes/issues
author:         Jappie Klooster
maintainer:     hi@jappie.me
copyright:      2026 Jappie Klooster
license:        MIT
license-file:   LICENSE
build-type:     Simple
extra-doc-files:
    Changelog.md

source-repository head
  type: git
  location: https://github.com/jappeace/vibes

-- Decision: -Werror lives behind a manual flag, default False. cabal check
-- rejects an unconditional -Werror (future GHCs add warnings that would break
-- the package), so the flag keeps `cabal check` green while CI and the nix
-- build still compile warning-clean by turning it on (see nix/hpkgs.nix and
-- cabal.project). Alternative considered: dropping -Werror entirely, rejected
-- because it would let warnings rot in.
flag werror
  description: Turn warnings into errors. Off by default; CI and the nix build enable it.
  default:     False
  manual:      True

common common-options
  default-extensions:
      EmptyCase
      FlexibleContexts
      FlexibleInstances
      InstanceSigs
      MultiParamTypeClasses
      LambdaCase
      MultiWayIf
      NamedFieldPuns
      TupleSections
      DeriveFoldable
      DeriveFunctor
      DeriveGeneric
      DeriveLift
      DeriveTraversable
      DerivingStrategies
      GeneralizedNewtypeDeriving
      StandaloneDeriving
      OverloadedStrings
      ScopedTypeVariables
      TypeApplications
      NumericUnderscores
      ImportQualifiedPost

  ghc-options:
    -O2 -Wall -Wincomplete-uni-patterns
    -Wincomplete-record-updates -Widentities -Wredundant-constraints
    -Wcpp-undef -fwarn-tabs -Wpartial-fields
    -fdefer-diagnostics -Wunused-packages
    -fno-omit-yields

  if flag(werror)
    ghc-options: -Werror

  build-depends:
      base >=4.9.1.0 && <4.22

  default-language: Haskell2010

library
  import: common-options
  exposed-modules:
      Claude.Gate.HookProtocol
      Claude.Gate.Edit
      Claude.Gate.TurnState
      Claude.Gate.RecordEdit
      Claude.Gate.DiffRender
      Claude.Gate.Corpus
      Claude.Gate.FileContext
      Claude.Gate.Repo
      Claude.Gate.SpawnAnnotation
      Claude.Gate.GateConfig
      Claude.Gate.EditStack
      Claude.Gate.NestedClaude
      Claude.Gate.Transcript
      Claude.Gate.ReviewPrompt
      Claude.Gate.Dumbify
      Claude.Gate.Critique
      Claude.Gate.RuleReview
      Claude.Gate.StopGate
  other-modules:
      Paths_claude_gate
  autogen-modules:
      Paths_claude_gate
  hs-source-dirs:
      src
  build-depends:
      aeson               < 2.3,
      annotated-exception < 0.4,
      bytestring          < 0.13,
      text                < 2.2,
      directory           < 1.4,
      filepath            < 1.6,
      typed-process       < 0.3,
      safe-exceptions     < 0.2

executable claude-gate
  import: common-options
  main-is: Main.hs
  hs-source-dirs:
      app
  build-depends:
      claude-gate,
      optparse-applicative < 0.19
  ghc-options: -Wno-unused-packages -threaded -rtsopts "-with-rtsopts=-N"

test-suite unit
  import: common-options
  type: exitcode-stdio-1.0
  main-is: Test.hs
  ghc-options: -Wno-unused-packages -threaded -rtsopts "-with-rtsopts=-N"
  hs-source-dirs:
      test
  build-depends:
      tasty          < 1.6,
      tasty-hunit    < 0.11,
      tasty-hedgehog < 1.5,
      hedgehog       < 1.6,
      claude-gate,
      aeson          < 2.3,
      bytestring     < 0.13,
      text           < 2.2,
      directory      < 1.4,
      filepath       < 1.6