cabal-version:      3.0
name:               sabela
version:            0.1.0.0
synopsis:           A reactive notebook environment for Haskell.
description:        Sabela is a web-based reactive notebook for Haskell. Notebooks are
                    plain Markdown files whose code blocks become executable cells,
                    evaluated by a long-lived GHCi subprocess. Editing a cell
                    re-runs the cells that depend on it, and a bundled web IDE
                    (embedded in the executable) provides editing, rich output,
                    and slideshow/dashboard export.
homepage:           https://www.datahaskell.org/
license:            MIT
license-file:       LICENSE
author:             DataHaskell
maintainer:         mschavinda@gmail.com
category:           Development
build-type:         Simple
extra-doc-files:    CHANGELOG.md, README.md
extra-source-files: static/index.html, static/dashboard.html, static/slideshow.html,
                    static/src/widgets/scatter.js,
                    static/src/widgets/sabela-widgets.js

source-repository head
    type:     git
    location: https://github.com/DataHaskell/sabela

common warnings
    ghc-options: -Wall

-- The shared contract sub-library: the typed wire (ToolName, ToolOutcome,
-- KernelState, CellResult, Output, SessionEvent), Api, and the AST parser.
-- Both lib:sabela and lib:siza-client depend on it, so the client stops
-- dragging the full server dependency set (warp/servant/process).
library sabela-contract
    import:           warnings
    visibility:       public
    autogen-modules:  Paths_sabela
    other-modules:    Paths_sabela
    exposed-modules:  Sabela.Anthropic.Types,
                      Sabela.Anthropic.Types.Request,
                      Sabela.Anthropic.Types.Response,
                      Sabela.Anthropic.Types.Stream,
                      Sabela.AI.Types,
                      Sabela.AI.CellResult,
                      Sabela.AI.KernelState,
                      Sabela.AI.KernelVocab,
                      Sabela.AI.Verdict,
                      Sabela.AI.Resource,
                      Sabela.Session.Timeout,
                      Sabela.AI.Provenance,
                      Sabela.AI.RepairTrace,
                      Sabela.AI.Output,
                      Sabela.AI.Grammar,
                      Sabela.AI.Grammar.Card,
                      Sabela.AI.Grammar.Synth,
                      Sabela.AI.LeakShape,
                      Sabela.AI.VerifierDistill,
                      Sabela.AI.Discover,
                      Sabela.AI.QualifiedName,
                      Sabela.AI.AnswerSource,
                      Sabela.AI.ErrorIndex,
                      Sabela.AI.Examples,
                      Sabela.AI.HoleFits,
                      Sabela.AI.FitRule,
                      Sabela.AI.FitSignature,
                      Sabela.AI.Hints,
                      Sabela.AI.GoalText,
                      Sabela.AI.ArgRepair,
                      Sabela.AI.HoleRepair,
                      Sabela.AI.HoleProbe,
                      Sabela.AI.TypedHole,
                      Sabela.AI.SelfHeal,
                      Sabela.AI.Unshowable,
                      Sabela.AI.NormalizeProposals,
                      Sabela.AI.ValueEcho,
                      Sabela.AI.Health,
                      Sabela.AI.ModuleResolve,
                      Sabela.AI.Owned,
                      Sabela.AI.PromptCore,
                      Sabela.AI.ToolDoc,
                      Sabela.AI.Repair,
                      Sabela.AI.RepairDispatch,
                      Sabela.AI.Salvage,
                      Sabela.AI.Similarity,
                      Sabela.AI.Spine,
                      Sabela.AI.Capabilities.ToolName,
                      Sabela.AI.WriteAck,
                      Sabela.LLM.Ollama.Client,
                      Sabela.LLM.Ollama.Client.Parse,
                      Sabela.LLM.Ollama.Client.Repair,
                      Sabela.LLM.Ollama.Client.Schema,
                      Sabela.LLM.Ollama.Client.Types,
                      Sabela.LLM.Ollama,
                      Sabela.LLM.Anthropic.Client,
                      Sabela.LLM.Anthropic,
                      Sabela.LLM.Message,
                      Sabela.LLM.Usage,
                      Sabela.LLM.Completion,
                      Sabela.LLM.Turn,
                      Sabela.LLM.Tool,
                      Sabela.LLM.Cancel,
                      Sabela.LLM.Provider,
                      Sabela.Ids,
                      Sabela.Model,
                      Sabela.Model.Status,
                      Sabela.SessionTypes,
                      Sabela.Api,
                      Sabela.Parse.Ast,
                      Sabela.Parse.Ast.Names,
                      Sabela.Parse.Ast.PatNodeBinders,
                      Sabela.Parse.Preprocess,
                      Sabela.AI.Shape
    build-depends:    base >= 4 && < 5,
                      aeson >= 2.0 && < 3,
                      bytestring >= 0.10 && < 0.13,
                      containers >= 0.6.7 && < 0.9,
                      directory >= 1.3 && < 1.4,
                      filepath >= 1.4 && < 1.6,
                      ghc-lib-parser >= 9.6 && < 9.20,
                      http-client >= 0.7 && < 0.10,
                      http-types >= 0.12 && < 0.13,
                      uniplate >= 1.6 && < 1.7,
                      scripths >= 0.5.4.0 && < 0.6,
                      stm >= 2.4 && < 3,
                      text >= 1.2 && < 3,
                      time >= 1.9 && < 2
    hs-source-dirs:   src-contract
    if impl(ghc >= 9.6)
        hs-source-dirs:   src-contract-ghc96
    else
        hs-source-dirs:   src-contract-ghc94
    default-language: Haskell2010

library
    import:           warnings
    autogen-modules:  Paths_sabela
    other-modules:    Paths_sabela
    exposed-modules:  Sabela.Anthropic,
                      Sabela.AI.Store,
                      Sabela.AI.WriteRegistry,
                      Sabela.AI.Capabilities,
                      Sabela.AI.Capabilities.CapabilityApi,
                      Sabela.AI.Capabilities.CapabilityHelper,
                      Sabela.AI.Capabilities.CapabilitySearch,
                      Sabela.AI.Capabilities.Discover,
                      Sabela.AI.Capabilities.Edit,
                      Sabela.AI.Capabilities.Edit.HoleSearch,
                      Sabela.AI.Capabilities.Edit.HoleNudge,
                      Sabela.AI.Capabilities.Edit.HoleRewrite,
                      Sabela.AI.Capabilities.Edit.HoleRewrite.Section,
                      Sabela.AI.Capabilities.Edit.HoleRewrite.Adapter,
                      Sabela.AI.Capabilities.Edit.HoleRewrite.Call,
                      Sabela.AI.Capabilities.Edit.HoleRewrite.Head,
                      Sabela.AI.Capabilities.Edit.HoleRewrite.Payload,
                      Sabela.AI.Capabilities.Edit.HoleRewrite.Repair,
                      Sabela.AI.Capabilities.Edit.ValueGate,
                      Sabela.AI.Capabilities.Edit.TypeSelect,
                      Sabela.AI.Capabilities.Edit.Repair,
                      Sabela.AI.Capabilities.Edit.Repair.Resolvers,
                      Sabela.AI.Capabilities.Edit.Repair.Mitigate,
                      Sabela.AI.Capabilities.Edit.Repair.Mitigate.Loop,
                      Sabela.AI.Capabilities.Edit.RepairGate,
                      Sabela.AI.Capabilities.Edit.GateRepair,
                      Sabela.AI.Capabilities.Edit.GateRepair.Binders,
                      Sabela.AI.Capabilities.Edit.Submission,
                      Sabela.AI.Capabilities.Edit.GateRepair.Candidates,
                      Sabela.AI.Capabilities.Edit.GateFrontier,
                      Sabela.AI.Capabilities.Edit.GateFrontier.Localise,
                      Sabela.AI.Capabilities.Edit.Admission,
                      Sabela.AI.Capabilities.Edit.Admit,
                      Sabela.AI.Capabilities.Edit.Ack,
                      Sabela.AI.Capabilities.Edit.CompileGate,
                      Sabela.AI.Capabilities.Edit.CompileGate.Render,
                      Sabela.AI.Capabilities.Edit.CompileGate.Source,
                      Sabela.AI.Capabilities.Edit.CompileGate.Defaulting,
                      Sabela.AI.Capabilities.Edit.Replace,
                      Sabela.AI.Capabilities.Edit.Propose,
                      Sabela.AI.Triage,
                      Sabela.AI.Capabilities.Edit.Exec,
                      Sabela.AI.Capabilities.Edit.ScratchVet,
                      Sabela.AI.Capabilities.Edit.Cascade,
                      Sabela.AI.Capabilities.Edit.Cascade.Commit,
                      Sabela.AI.Capabilities.Edit.Run,
                      Sabela.AI.Capabilities.Kernel,
                      Sabela.AI.Capabilities.KernelHealth,
                      Sabela.AI.Capabilities.Bindings,
                      Sabela.AI.Capabilities.Notebook,
                      Sabela.AI.Capabilities.Query,
                      Sabela.AI.Capabilities.Query.Explore,
                      Sabela.AI.Capabilities.Query.IndexAnswer,
                      Sabela.AI.Capabilities.Query.CheckType,
                      Sabela.AI.Capabilities.Query.Route,
                      Sabela.AI.Capabilities.Query.SessionFacts,
                      Sabela.AI.Capabilities.Query.Struct,
                      Sabela.AI.Capabilities.ApiRef,
                      Sabela.AI.Capabilities.BrowseCard,
                      Sabela.AI.Capabilities.EvalLive,
                      Sabela.AI.Capabilities.ModuleSearch,
                      Sabela.AI.Capabilities.Resolve,
                      Sabela.AI.PeekData,
                      Sabela.AI.Artefact,
                      Sabela.AI.Capabilities.Scratchpad,
                      Sabela.AI.Capabilities.Scratchpad.Key,
                      Sabela.AI.Capabilities.Scratchpad.Payload,
                      Sabela.AI.Capabilities.Try,
                      Sabela.AI.Capabilities.Try.HoleProbe,
                      Sabela.AI.Capabilities.Try.Payload,
                      Sabela.AI.Capabilities.Try.Payload.Disposable,
                      Sabela.AI.Capabilities.Try.Payload.Repair,
                      Sabela.AI.Capabilities.Try.Payload.Checked,
                      Sabela.AI.Capabilities.Try.Snapshot,
                      Sabela.AI.Capabilities.TryPlan,
                      Sabela.AI.Capabilities.Tools,
                      Sabela.AI.Capabilities.Tools.Notebook,
                      Sabela.AI.Capabilities.Tools.Query,
                      Sabela.AI.Capabilities.Util,
                      Sabela.AI.Doc,
                      Sabela.AI.Handles,
                      Sabela.AI.NormalizeGate,
                      Sabela.AI.Orchestrator,
                      Sabela.AI.Orchestrator.Compact,
                      Sabela.AI.Orchestrator.Loop,
                      Sabela.AI.Capabilities.Edit.Assemble,
                      Sabela.AI.Orchestrator.Loop.Accept,
                      Sabela.AI.Orchestrator.Loop.Dispatch,
                      Sabela.AI.Orchestrator.Loop.Usage,
                      Sabela.AI.Orchestrator.Prompt,
                      Sabela.AI.Orchestrator.Trace,
                      Sabela.AI.ReferenceCard,
                      Sabela.Session,
                      Sabela.Session.Admission,
                      Sabela.Session.Drain,
                      Sabela.Session.Materialize,
                      Sabela.Session.Materialize.Candidate,
                      Sabela.Session.Materialize.Pipeline,
                      Sabela.Session.Materialize.Replay,
                      Sabela.Session.Materialize.Result,
                      Sabela.Session.Materialize.Run,
                      Sabela.Session.MaterializeSnapshot,
                      Sabela.Session.MaterializeStage,
                      Sabela.Session.ParentPoller,
                      Sabela.Session.Proc,
                      Sabela.Session.Proc.Signal,
                      Sabela.Session.Process,
                      Sabela.Session.Process.Invocation,
                      Sabela.Session.Project,
                      Sabela.Session.Query,
                      Sabela.Session.Query.Bindings,
                      Sabela.Session.Query.Command,
                      Sabela.Session.Query.PureEval,
                      Sabela.Session.Query.PureEval.Deadline,
                      Sabela.Session.Query.PureEval.Protocol,
                      Sabela.Session.Query.Typecheck,
                      Sabela.ThrowawayExecute,
                      Sabela.Session.Reader,
                      Sabela.Session.Workspace,
                      Sabela.Session.TryCache,
                      Sabela.Bridge,
                      Sabela.Dashboard,
                      Sabela.Deps,
                      Sabela.Export,
                      Sabela.Export.Analyze,
                      Sabela.Export.Block,
                      Sabela.Export.Reactive,
                      Sabela.Export.Trailing,
                      Sabela.Export.Widget,
                      Sabela.Parse,
                      Sabela.Parse.Declared,
                      Sabela.Parse.Normalize,
                      Sabela.Parse.Normalize.HoistWhere,
                      Sabela.Compiled,
                      Sabela.Reactivity,
                      Sabela.Reactivity.Errors,
                      Sabela.State,
                      Sabela.State.AIConfig,
                      Sabela.State.App,
                      Sabela.State.BridgeStore,
                      Sabela.State.Config,
                      Sabela.State.DependencyTracker,
                      Sabela.State.Environment,
                      Sabela.State.EventBus,
                      Sabela.State.NotebookStore,
                      Sabela.State.SessionManager,
                      Sabela.State.WidgetStore,
                      Sabela.Handlers,
                      Sabela.Handlers.Compile,
                      Sabela.Handlers.Exec,
                      Sabela.Handlers.Lifecycle,
                      Sabela.Handlers.Lifecycle.Startup,
                      Sabela.Handlers.Plan,
                      Sabela.Handlers.Plan.Inputs,
                      Sabela.Handlers.Plan.Log,
                      Sabela.Handlers.PlanErrors,
                      Sabela.Handlers.PostCompile,
                      Sabela.Handlers.Shared,
                      Sabela.Handlers.Python,
                      Sabela.Output,
                      Sabela.Parquet,
                      Sabela.Parquet.Read,
                      Sabela.Parquet.Thrift,
                      Sabela.Output.Examples,
                      Sabela.Output.Scatter,
                      Sabela.Output.Widgets,
                      Sabela.Errors,
                      Sabela.Errors.Json,
                      Sabela.Errors.Locate,
                      Sabela.Diagnose,
                      Sabela.Diagnose.Packages,
                      Sabela.Diagnose.Parse,
                      Sabela.AI.DepRepair,
                      Sabela.AI.ExtRepair,
                      Sabela.AI.ImportRepair,
                      Sabela.AI.PathRepair,
                      Sabela.AI.PathResolve,
                      Sabela.AI.PathGate,
                      Sabela.AI.Files,
                      Sabela.AI.GitHub,
                      Sabela.AI.Capabilities.Files,
                      Sabela.AI.Capabilities.Tools.World,
                      Sabela.AI.PackageIndex,
                      Sabela.AI.Popularity,
                      Sabela.AI.Capabilities.ModuleCard,
                      Sabela.AI.Capabilities.ModuleCard.Browse,
                      Sabela.AI.Capabilities.ModuleCard.Card,
                      Sabela.AI.Capabilities.ModuleCard.Hit,
                      Sabela.AI.Capabilities.ModuleCard.Resolve,
                      Sabela.AI.Capabilities.Try.Autofix,
                      Sabela.AI.Capabilities.Try.Candidate,
                      Sabela.AI.Capabilities.Try.Commit,
                      Sabela.AI.Capabilities.Try.Route,
                      Sabela.AI.Capabilities.Try.Scope,
                      Sabela.AI.Capabilities.Try.Tier,
                      Sabela.AI.SearchCache,
                      Sabela.AI.CellEco,
                      Sabela.AI.HoogleClient,
                      Sabela.AI.Search.Export,
                      Sabela.AI.Search.Gather,
                      Sabela.AI.Search.Need,
                      Sabela.AI.Search.Probe,
                      Sabela.AI.Search.Row,
                      Sabela.AI.HoogleProse,
                      Sabela.AI.HoogleRank,
                      Sabela.AI.HoogleResolve,
                      Sabela.AI.Capability,
                      Sabela.AI.Capability.Parse,
                      Sabela.Server,
                      Sabela.Server.Ai,
                      Sabela.Server.Api,
                      Sabela.Server.Dataset,
                      Sabela.Server.Export,
                      Sabela.Server.Files,
                      Sabela.Server.Import,
                      Sabela.Server.Notebook,
                      Sabela.Server.Run,
                      Sabela.Server.Static,
                      Sabela.Topo,
                      Sabela.Url,
                      Sabela.Platform,
                      Sabela.PythonSession
    build-depends:    base >= 4 && < 5,
                      aeson >= 2.0 && < 3,
                      bytestring >= 0.10 && < 0.13,
                      containers >= 0.6.7 && < 0.9,
                      directory >= 1.3 && < 1.4,
                      file-embed >= 0.0.11 && < 0.1,
                      filepath >= 1.4 && < 1.6,
                      ghc-lib-parser >= 9.6 && < 9.20,
                      ghc-lib-parser-ex >= 9.6 && < 9.20,
                      hashable >= 1.3 && < 1.6,
                      http-client >= 0.7 && < 0.10,
                      http-types >= 0.12 && < 0.13,
                      process >= 1.6.4 && < 1.8,
                      scripths >= 0.5.4.0 && < 0.6,
                      servant-server >= 0.20 && < 0.21,
                      stm >= 2.4 && < 3,
                      temporary >= 1.3 && < 1.4,
                      text >= 1.2 && < 3,
                      time >= 1.9 && < 2,
                      wai >= 3.2 && < 3.3,
                      sabela:sabela-contract
    if !os(windows)
        build-depends:    unix >= 2.7 && < 2.9
    if os(windows)
        extra-libraries:  kernel32
    hs-source-dirs:   src
    default-language: Haskell2010

executable sabela
  main-is: Main.hs
  build-depends: base >= 4 && < 5,
                 aeson >= 2.0 && < 3,
                 bytestring >= 0.10 && < 0.13,
                 containers >= 0.6.7 && < 0.9,
                 directory >= 1.3 && < 1.4,
                 filepath >= 1.4 && < 1.6,
                 http-client-tls >= 0.3 && < 0.4,
                 text >= 1.2 && < 3,
                 process >= 1.6.4 && < 1.8,
                 warp >= 3.3  && < 3.5,
                 sabela,
                 sabela:sabela-contract
  if !os(windows)
    build-depends:    unix >= 2.7 && < 2.9
  hs-source-dirs:     app
  default-language:   Haskell2010
  default-extensions: OverloadedStrings
  ghc-options:        -Wall -threaded -rtsopts "-with-rtsopts=-N"

test-suite sabela-test
    import:           warnings
    default-language: Haskell2010
    type:             exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          Main.hs
    ghc-options:      -threaded -rtsopts "-with-rtsopts=-N"
    other-modules:    Test.AllSpecsA,
                      Test.AllSpecsB,
                      Test.NotebookAnimSpec,
                      Test.NotebookCheckSpec,
                      Test.NotebookEditSpec,
                      Test.NotebookFrpSpec,
                      Test.NotebookPictureSpec,
                      Test.BridgeGraphSpec,
                      Test.EditDispatchSpec,
                      Test.EnvStaleSpec,
                      Test.EnvironmentFaultSpec,
                      Test.SessionResetSpec,
                      Test.SkipFeedbackSpec,
                      Test.SessionSpec,
                      Test.SessionLoopSpec,
                      Test.SessionLiveSpec,
                      Test.PureEvalLiveSpec,
                      Test.TryPlanSpec,
                      Test.ScopeModel,
                      Test.TryPayloadRead,
                      Test.TryFrontierGen,
                      Test.TryFrontierSpec,
                      Test.TryLiveRouteSpec,
                      Test.TryContainedSeamSpec,
                      Test.TrySeamFixtures,
                      Test.TrySpec,
                      Test.TryOutcomeWireSpec,
                      Test.StaleRunSpec,
                      Test.SwitchNotebookSpec,
                      Test.TopoSpec,
                      Test.CellFixture,
                      Test.CompiledPlanSpec,
                      Test.CompileEscalationSpec,
                      Test.CompileGateSpec,
                      Test.CompileGateRenderSpec,
                      Test.CompileGateWireSpec,
                      Test.RepairGateSpec,
                      Test.AdviceTruthSpec,
                      Test.AdviceGen,
                      Test.AdviceWitness,
                      Test.HarnessBinderSpec,
                      Test.ClassifyErrorSpec,
                      Test.ErrorIndexSpec,
                      Test.ErrorsJsonSpec,
                      Test.JsonDiagSpec,
                      Test.CellShapeSpec,
                      Test.WriteBoundarySpec,
                      Test.PendingRefusalSpec,
                      Test.CellDefinesSpec,
                      Test.CheckTypeStructSpec,
                      Test.QueryDistillSpec,
                      Test.DiagnoseSpec,
                      Test.DiagnoseAdviceSpec,
                      Test.DiagnosticMitigationSpec,
                      Test.AwaitIdleAgreementSpec,
                      Test.BuiltinSearchLiveSpec,
                      Test.PromptBuiltinsSpec,
                      Test.DiagnosticMitigationFixtures,
                      Test.DiagnosticMitigationLiveSpec,
                      Test.DiagnosticMitigationCompoundSpec,
                      Test.SpineSpec,
                      Test.NormalizeGateSpec,
                      Test.NormalizeProposalsSpec,
                      Test.SourceNormalizeSpec,
                      Test.SelfHealSpec,
                      Test.UnshowableSpec,
                      Test.ValueEchoSpec,
                      Test.ValueSynopsisSpec,
                      Test.BindingsLiveSpec,
                      Test.ScratchVetSpec,
                      Test.PreludeScope,
                      Test.PreludeAmbient,
                      Test.GateCheckedSpec,
                      Test.PreludeScopeSpec,
                      Test.PreludeGhciSpec,
                      Test.QualifiedNameSpec,
                      Test.ScratchScopeSpec,
                      Test.CheckTypeScopeSpec,
                      Test.ArgRepairSpec,
                      Test.RefinementFitSpec,
                      Test.InsertSupersedeSpec,
                      Test.TriageSpec,
                      Test.ModuleCardRankSpec,
                      Test.ModuleCardTruthSpec,
                      Test.ModuleResolveSpec,
                      Test.DiscoverToolSpec,
                      Test.DepRepairSpec,
                      Test.ExtRepairSpec,
                      Test.ImportRepairSpec,
                      Test.RepairGuardSpec,
                      Test.CapabilityApiSpec,
                      Test.CapabilitySearchSpec,
                      Test.HealthSpec,
                      Test.OwnedSpec,
                      Test.RepairEngineSpec,
                      Test.DiscoverGrammarSpec,
                      Test.DiscoveryBenchSpec,
                      Test.ExportRankSpec,
                      Test.HoogleProseSpec,
                      Test.HoogleRankSpec,
                      Test.HoogleResolveSpec,
                      Test.TypeDirectedResolveSpec,
                      Test.TypeDiscoverySpec,
                      Test.TypecheckPrimitiveSpec,
                      Test.TypecheckClassifySpec,
                      Test.ThrowawayExecuteSpec,
                      Test.NonThreadedForkSpec,
                      Test.ResolveSpec,
                      Test.BrowseCardSpec,
                      Test.BrowseCardSanitizeSpec,
                      Test.BrowseCardParseSpec,
                      Test.CapabilitySpec,
                      Test.CapabilitySpec.Fixtures,
                      Test.SessionSpec.Fixture,
                      Test.CapabilitySpec.Search,
                      Test.NotebookViolationSpec,
                      Test.GrammarRouteSpec,
                      Test.HoleFitsSpec,
                      Test.IndexAnswerSpec,
                      Test.CheckTypeRouteSpec,
                      Test.QualifiedSeamSpec,
                      Test.SessionFactsSpec,
                      Test.HoleProbeSpec,
                      Test.TryHoleProbeSpec,
                      Test.ExampleSearchSpec,
                      Test.ExecuteCellSpec,
                      Test.TopoSpec.Names,
                      Test.TopoSpec.Order,
                      Test.TopoSpec.Select,
                      Test.ExportSpec,
                      Test.DefaultExtsSpec,
                      Test.DepsMatchSpec,
                      Test.DeclaredSpec,
                      Test.DepsRepairSpec,
                      Test.NotebookExportSpec,
                      Test.ParseSpec,
                      Test.PathRepairSpec,
                      Test.PathGateSpec,
                      Test.FilesSpec,
                      Test.GitHubSpec,
                      Test.PackageIndexSpec,
                      Test.StderrFailureSpec,
                      Test.HintsSpec,
                      Test.GateRepairSpec,
                      Test.GateFrontierSpec,
                      Test.GateLocaliseSpec,
                      Test.GateCandidatesSpec,
                      Test.UnshowableValueSpec,
                      Test.HarnessFrameSpec,
                      Test.HoleFitsJsonSpec,
                      Test.FitRuleSpec,
                      Test.ReadCellFitsSpec,
                      Test.HarnessHonestyLiveSpec,
                      Test.GateFixture,
                      Test.Live,
                      Test.GateFrontierLiveSpec,
                      Test.HoleNudgeSpec,
                      Test.HoleRewriteSpec,
                      Test.HoleRewriteTruthSpec,
                      Test.HoleRewriteGen,
                      Test.HoleAdapterSpec,
                      Test.HoleAdapterTruthSpec,
                      Test.HoleAdapterPublishSpec,
                      Test.HoleAdapterGen,
                      Test.HoleAdapterCascadeGen,
                      Test.HoleAdapterCascadeSpec,
                      Test.HoleAdapterDiag,
                      Test.HoleAdapterRig,
                      Test.TryRepairSpec,
                      Test.RecordFieldDiscoverySpec,
                      Test.PlatformSpec,
                      Test.OutputSpec,
                      Test.PreinstalledSpec,
                      Test.ProseRoundTripSpec,
                      Test.GenerationSpec,
                      Test.AiDocSpec,
                      Test.AiHandlesSpec,
                      Test.AiHistorySpec,
                      Test.AiRestSpec,
                      Test.CacheControlSpec,
                      Test.ProviderAdapterSpec,
                      Test.ConfigWireSpec,
                      Test.OrchestratorLoopSpec,
                      Test.OllamaParseSafetySpec,
                      Test.VerifyDownstreamSpec,
                      Test.ToolInputRewriteSpec,
                      Test.PromptUnifySpec,
                      Test.ProviderSelectSpec,
                      Test.ApiRefSpec,
                      Test.CompactResultSpec,
                      Test.CycleMsgSpec,
                      Test.ScratchpadKeySpec,
                      Test.ScratchpadRenderSpec,
                      Test.ScratchpadSilenceSpec,
                      Test.HoogleDbSpec,
                      Test.SearchCacheFreshSpec,
                      Test.ToolParseSpec,
                      Test.ToolOutcomeWireSpec,
                      Test.BuildBlameSpec,
                      Test.RepairNeverWorseSpec,
                      Test.RestartModeSpec,
                      Test.EvCellResultWireSpec,
                      Test.KernelErrorWireSpec,
                      Test.ProvenanceWireSpec,
                      Test.UploadSpec,
                      Test.UrlSpec,
                      Test.UsageEventSpec,
                      Test.UsageMergeSpec,
                      Test.WidgetsSpec,
                      Test.ApiWireSpec,
                      Test.CellResultWireSpec,
                      Test.KernelStateWireSpec,
                      Test.OutputChokepointWireSpec,
                      Test.SizaContractWireSpec,
                      Test.AdmissionSpec,
                      Test.AtomicAdmissionSpec,
                      Test.DiscoveryToolsPreSessionSpec,
                      Test.AwaitIdleSpec,
                      Test.BusyWindowSpec,
                      Test.KernelVocabSpec,
                      Test.VerdictSpec,
                      Test.ResourceSpec,
                      Test.RtsGhcOptionsSpec,
                      Test.ResourceLiveSpec,
                      Test.WriteAckSpec,
                      Test.WriteAckLiveSpec,
                      Test.CellWireSpec,
                      Test.NotebookStateSpec,
                      Test.WorkspaceRecoverySpec,
                      Test.WriteAckFixture,
                      Test.WriteAckRetrySpec,
                      Test.WriteAckShapeSpec,
                      Test.MarkerSpec,
                      Test.RenderSpec,
                      Test.RepairTraceWireSpec,
                      Test.ReplProjectSpec,
                      Test.ExportGoldenSpec,
                      Test.ConfigurableTimeoutSpec,
                      Test.InterruptTimestampFilterSpec,
                      Test.OrphanSpec,
                      Test.QueryConcurrencySpec,
                      Test.QueryGuidanceSpec,
                      Test.TimeoutEscalationSpec,
                      Test.SessionGenSpec,
                      Test.ParquetSpec,
                      Test.PeekDataSpec,
                      Test.PeekVerdictSpec,
                      Test.ArtefactViewSpec,
                      Test.ArtefactSampleSpec,
                      Test.PeekArtefactSpec,
                      Test.ReadMissSpec,
                      Test.ReadSurfaceSpec,
                      Test.PathFactsSpec,
                      Test.ArtefactGen,
                      Test.MaterializeSpec,
                      Test.Materialize.Helpers,
                      Test.TryCacheSpec,
                      Test.KernelState.HolderSpec,
                      Test.KernelStateIntegritySpec,
                      Test.GateStageWireSpec,
                      Test.GateBinderGuardSpec,
                      Test.GateErrorClassSpec,
                      Test.InsertGateRouteSpec,
                      Test.GateDefaultingSpec,
                      Test.GateSourceTruthSpec,
                      Test.GatePartialRepairSpec,
                      Test.GateArmingSpec,
                      Test.DisposableAttributionSpec,
                      Test.DisposableFixtures,
                      Test.TrialWarningSpec,
                      Test.SubmissionSpec,
                      Test.HarnessGen
    build-depends:
        base >= 4 && < 5,
        sabela-notebook >= 0.2 && < 0.3,
        aeson >= 2.0 && < 3,
        bytestring >= 0.10 && < 0.13,
        containers >= 0.6.7 && < 0.9,
        hspec >= 2 && < 3,
        QuickCheck >= 2.14 && < 3,
        directory >= 1.3.0.0 && < 2,
        filepath >= 1.4 && < 1.6,
        http-client >= 0.7 && < 0.10,
        process >= 1.6.4 && < 1.8,
        scripths >= 0.5.4.0 && < 0.6,
        servant-server >= 0.20 && < 0.21,
        stm >= 2.4 && < 3,
        temporary >= 1.3 && < 1.4,
        text >= 1.2 && < 3,
        time >= 1.9 && < 2,
        ghc-lib-parser >= 9.6 && < 9.20,
        uniplate >= 1.6 && < 1.7,
        sabela,
        sabela:sabela-contract
    if !os(windows)
        build-depends:    unix >= 2.7 && < 2.9

test-suite sabela-webdriver
    import:           warnings
    default-language: Haskell2010
    type:             exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          WebDriverMain.hs
    other-modules:    Test.WebDriverSpec,
                      Test.WebDriverHelpers
    ghc-options:      -threaded -rtsopts "-with-rtsopts=-N"
    build-depends:
        base >= 4 && < 5,
        hspec >= 2 && < 3,
        webdriver >= 0.12 && < 0.13,
        http-client >= 0.7 && < 0.10,
        directory >= 1.3.0.0 && < 2,
        http-types >= 0.12 && < 0.13,
        network >= 3.0 && < 3.3,
        text >= 1.2 && < 3,
        process >= 1.6.4 && < 1.8,
        warp >= 3.3 && < 3.5,
        containers >= 0.6.7 && < 0.9,
        sabela
