defmodule CMDC.MixProject do use Mix.Project @version "0.6.0" @source_url "https://github.com/tupleyun/cmdc" @description "Elixir Agent Kernel — OTP gen_statem 驱动的 AI Agent 开发库" def project do [ app: :cmdc, version: @version, elixir: "~> 1.17", start_permanent: Mix.env() == :prod, deps: deps(), aliases: aliases(), description: @description, package: package(), docs: docs(), source_url: @source_url, homepage_url: @source_url, test_coverage: [tool: ExCoveralls], dialyzer: [ plt_add_apps: [:mix], ignore_warnings: ".dialyzer_ignore.exs" ] ] end def cli do [ preferred_envs: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ] ] end def application do [ extra_applications: [:logger, :crypto], mod: {CMDC.Application, []} ] end defp deps do [ {:req_llm, "~> 1.7"}, {:jason, "~> 1.4"}, {:nimble_options, "~> 1.1"}, {:anubis_mcp, "~> 0.17"}, {:plug, "~> 1.16"}, {:yaml_elixir, "~> 2.11"}, {:ex_doc, "~> 0.35", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.18", only: :test, runtime: false} ] end defp aliases do [ "quality.check": [ "format --check-formatted", "compile --warnings-as-errors", "credo --strict", "test" ] ] end defp package do [ name: "cmdc", description: @description, licenses: ["Apache-2.0"], links: %{ "GitHub" => @source_url, "HexDocs" => "https://hexdocs.pm/cmdc", "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md", "Commercial Licensing" => "#{@source_url}#license" }, maintainers: ["CMDC Team"], files: ~w(lib guides mix.exs README.md CHANGELOG-public.md LICENSE) ] end defp docs do [ main: "readme", source_ref: "v#{@version}", source_url: @source_url, source_url_pattern: "#{@source_url}/blob/v#{@version}/%{path}#L%{line}", extras: [ "README.md": [title: "概览"], "guides/quickstart.md": [title: "5 分钟上手"], "guides/concepts.md": [title: "核心概念"], "guides/agent-loop.md": [title: "Agent 状态机与事件"], "guides/plugins.md": [title: "写一个 Plugin"], "guides/tools.md": [title: "写一个 Tool"], "guides/cookbook.md": [title: "常见配方"], "guides/upgrading.md": [title: "升级指南"], "CHANGELOG-public.md": [title: "Changelog"], LICENSE: [title: "License"] ], groups_for_extras: [ 入门: ~r/(README\.md|guides\/(quickstart|concepts)\.md)/, 指南: ~r/guides\/(agent-loop|plugins|tools|cookbook|upgrading)\.md/, 发布: ~r/(CHANGELOG-public\.md|LICENSE)/ ], groups_for_modules: [ 入门: [ CMDC, CMDC.Options, CMDC.Config, CMDC.Context, CMDC.Message ], 事件与状态: [ CMDC.Event, CMDC.EventBus, CMDC.TokenUsage, CMDC.Plan, CMDC.AuditEvent ], "工具(Tools)": [ CMDC.Tool, CMDC.Tool.ReadFile, CMDC.Tool.WriteFile, CMDC.Tool.EditFile, CMDC.Tool.Shell, CMDC.Tool.Grep, CMDC.Tool.ListDir, CMDC.Tool.Glob, CMDC.Tool.Task, CMDC.Tool.WriteTodos, CMDC.Tool.AskUser, CMDC.Tool.CompactConversation ], "Plugins(安全与控制)": [ CMDC.Plugin, CMDC.Plugin.Builtin.SecurityGuard, CMDC.Plugin.Builtin.HumanApproval, CMDC.Plugin.Builtin.ContentPolicy, CMDC.Plugin.Builtin.OutputFilter, CMDC.Plugin.Builtin.PatchToolCalls, CMDC.Plugin.Builtin.EventLogger, CMDC.Plugin.Builtin.SkillGuard ], "Plugins(优化与记忆)": [ CMDC.Plugin.Builtin.MemoryLoader, CMDC.Plugin.Builtin.MemoryFlush, CMDC.Plugin.Builtin.EpisodicMemory, CMDC.Plugin.Builtin.LargeResultOffload, CMDC.Plugin.Builtin.PromptCache, CMDC.Plugin.Builtin.ModelRouter, CMDC.Plugin.Builtin.CostGuard, CMDC.Plugin.Builtin.Recovery, CMDC.Plugin.Builtin.Planning, CMDC.Plugin.Builtin.Reflection ], 存储与沙箱: [ CMDC.Sandbox, CMDC.Sandbox.Local, CMDC.Backend, CMDC.Backend.State, CMDC.Backend.Filesystem, CMDC.Backend.Composite, CMDC.Memory, CMDC.Memory.ETS, CMDC.Checkpoint, CMDC.Checkpoint.Backend, CMDC.Checkpoint.Snapshot ], 扩展点: [ CMDC.Provider, CMDC.Provider.StreamBridge, CMDC.Blueprint, CMDC.Blueprint.Base, CMDC.SubAgent, CMDC.Skill, CMDC.Skill.Selector, CMDC.Telemetry, CMDC.Gateway, CMDC.Gateway.Local ], 集成: [ CMDC.MCP.Bridge, CMDC.MCP.Client, CMDC.MCP.Config, CMDC.MCP.Supervisor ], "内核(高级)": [ CMDC.Agent, CMDC.SessionServer, CMDC.Agent.BasePrompt, CMDC.Agent.SystemPrompt, CMDC.Agent.ToolRunner, CMDC.Agent.Stream, CMDC.Agent.Compactor, CMDC.Agent.Compactor.ArgTruncator, CMDC.SubAgent.Supervisor, CMDC.Plugin.Registry ] ] ] end end