defmodule CMDCRAGArcana.MixProject do use Mix.Project @version "0.4.0" @source_url "https://github.com/tupleyun/cmdc_rag_arcana" @description "CMDC RAG Arcana — Arcana-backed enterprise RAG tools and plugins for CMDC" def project do [ app: :cmdc_rag_arcana, version: @version, elixir: "~> 1.18", start_permanent: Mix.env() == :prod, deps: deps(), description: @description, package: package(), docs: docs(), source_url: @source_url, homepage_url: @source_url, elixirc_paths: elixirc_paths(Mix.env()) ] end def application do [ extra_applications: [:logger] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp deps do [ cmdc_dep(), cmdc_eval_dep(), {:arcana, "~> 2.0"}, {:jason, "~> 1.4"}, {:nimble_options, "~> 1.1"}, {:telemetry, "~> 1.2"}, # Arcana 2.0 编译 dashboard 模块时会读取 Phoenix / LiveView assets。 {:phoenix, "~> 1.8"}, {:phoenix_live_view, "~> 1.0"}, {:phoenix_html, "~> 4.1"}, {:mdex, "~> 0.12"}, {:ex_doc, "~> 0.35", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.18", only: :test, runtime: false} ] end defp cmdc_dep do if File.exists?("../mix.exs") && is_nil(System.get_env("HEX_BUILD")) do {:cmdc, path: "..", env: Mix.env()} else {:cmdc, "~> 0.6"} end end defp cmdc_eval_dep do if File.exists?("../cmdc_eval/mix.exs") && is_nil(System.get_env("HEX_BUILD")) do {:cmdc_eval, path: "../cmdc_eval", env: Mix.env()} else {:cmdc_eval, "~> 0.2"} end end defp package do [ name: "cmdc_rag_arcana", description: @description, licenses: ["Apache-2.0"], links: %{ "Repository" => @source_url, "HexDocs" => "https://hexdocs.pm/cmdc_rag_arcana", "CMDC Core" => "https://hex.pm/packages/cmdc", "Arcana" => "https://hex.pm/packages/arcana", "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md" }, maintainers: ["CMDC Team"], files: ~w(lib guides mix.exs README.md CHANGELOG.md LICENSE) ] end defp docs do [ main: "CMDCRAGArcana", source_ref: "v#{@version}", source_url: @source_url, extras: [ "README.md", "guides/knowledge_control_plane.md": [title: "Knowledge Control Plane"], "CHANGELOG.md": [title: "Changelog"], LICENSE: [title: "License"] ], groups_for_modules: [ 入门: [ CMDCRAGArcana, CMDCRAGArcana.Config ], 数据结构: [ CMDCRAGArcana.CollectionPolicy, CMDCRAGArcana.Citation, CMDCRAGArcana.CitationSpan, CMDCRAGArcana.SearchResult, CMDCRAGArcana.Knowledge.Collection, CMDCRAGArcana.Knowledge.Document, CMDCRAGArcana.Knowledge.DocumentVersion, CMDCRAGArcana.Knowledge.IngestionRun, CMDCRAGArcana.Knowledge.IndexStatus, CMDCRAGArcana.Knowledge.SourceMapping ], 工具: [ CMDCRAGArcana.Tool.Search, CMDCRAGArcana.Tool.Answer, CMDCRAGArcana.Tool.PipelineAnswer, CMDCRAGArcana.Tool.IngestStatus ], 插件: [ CMDCRAGArcana.Plugin.AccessControl, CMDCRAGArcana.Plugin.CitationAudit ], 控制面接缝: [ CMDCRAGArcana.Ingestion, CMDCRAGArcana.Ingestion.JobSpec, CMDCRAGArcana.Ingestion.ParsedDocument, CMDCRAGArcana.Ingestion.ParsedPage, CMDCRAGArcana.Ingestion.ParsedTable, CMDCRAGArcana.Ingestion.Preprocessor, CMDCRAGArcana.Ingestion.Preprocessor.PassThrough, CMDCRAGArcana.Knowledge.Status, CMDCRAGArcana.Knowledge.StatusBackend, CMDCRAGArcana.Knowledge.StatusBackend.Unavailable, CMDCRAGArcana.Maintenance, CMDCRAGArcana.ProgressEvent ], Pipeline: [ CMDCRAGArcana.Pipeline, CMDCRAGArcana.Pipeline.StepSpec, CMDCRAGArcana.Pipeline.Preset, CMDCRAGArcana.Pipeline.Policy, CMDCRAGArcana.Pipeline.Registry, CMDCRAGArcana.Pipeline.RunSummary, CMDCRAGArcana.Pipeline.TelemetryBridge, CMDCRAGArcana.Pipeline.Runner, CMDCRAGArcana.Pipeline.Runner.Arcana ], Eval: [ CMDCRAGArcana.Eval.ArcanaAdapter, CMDCRAGArcana.Eval.TelemetryBridge, CMDCRAGArcana.Eval.Gate ], 后端: [ CMDCRAGArcana.Backend, CMDCRAGArcana.Backend.Arcana, CMDCRAGArcana.Ingestion.Backend, CMDCRAGArcana.Ingestion.Backend.Arcana, CMDCRAGArcana.Maintenance.Backend, CMDCRAGArcana.Maintenance.Backend.Arcana ] ] ] end end