Current section
Files
Jump to
Current section
Files
mix.exs
# The workspace root vendors the shared dependency-source helper. Load it here
# too, so `mix deps.sources`, `mix deps.publish_preflight`, and this package's
# own gate all see it when they run from the package directory.
unless Code.ensure_loaded?(DependencySources) do
Code.require_file("../../build_support/dependency_sources.exs", __DIR__)
end
defmodule Inference.MixProject do
use Mix.Project
@version "0.2.0"
@source_url "https://github.com/nshkrdotcom/inference"
@homepage_url "https://hex.pm/packages/inference"
@docs_url "https://hexdocs.pm/inference"
def project do
[
app: :inference,
version: @version,
elixir: "~> 1.18",
description:
"Reusable semantic inference contracts, adapters, tracing, and conformance tests for Elixir AI systems.",
source_url: @source_url,
homepage_url: @homepage_url,
start_permanent: Mix.env() == :prod,
package: package(),
docs: docs(),
deps: deps(),
aliases: aliases()
]
end
def cli do
[
preferred_envs: [
ci: :test,
credo: :test,
dialyzer: :test,
docs: :dev
]
]
end
def application do
[
extra_applications: [:logger],
mod: {Inference.Application, []}
]
end
defp deps do
[
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.38", only: [:dev, :test], runtime: false}
]
end
defp aliases do
[
ci: [
"format --check-formatted",
"compile --warnings-as-errors",
"test",
"credo --strict",
"dialyzer --format short",
"docs --warnings-as-errors"
]
]
end
defp package do
[
name: :inference,
licenses: ["MIT"],
maintainers: ["nshkrdotcom"],
links: %{
"Changelog" => "#{@source_url}/blob/main/apps/inference/CHANGELOG.md",
"GitHub" => @source_url,
"Hex" => @homepage_url,
"HexDocs" => @docs_url,
"License" => "#{@source_url}/blob/main/apps/inference/LICENSE"
},
files: ["lib", "mix.exs", "README.md", "CHANGELOG.md", "LICENSE", "assets", "guides"]
]
end
defp docs do
[
main: "overview",
source_ref: "v#{@version}",
source_url: @source_url,
source_url_pattern: "#{@source_url}/blob/v#{@version}/apps/inference/%{path}#L%{line}",
homepage_url: @docs_url,
logo: "assets/inference.svg",
assets: %{"assets" => "assets"},
extras: [
{"README.md", [filename: "overview", title: "Overview"]},
{"guides/architecture.md", [filename: "architecture", title: "Architecture"]},
{"guides/requests_and_responses.md",
[filename: "requests-and-responses", title: "Requests And Responses"]},
{"guides/clients_and_adapters.md",
[filename: "clients-and-adapters", title: "Clients And Adapters"]},
{"guides/optional_providers.md",
[filename: "optional-providers", title: "Optional Providers"]},
{"guides/adapter_testkit.md", [filename: "adapter-testkit", title: "Adapter Testkit"]},
{"guides/live_examples.md", [filename: "live-examples", title: "Live Examples"]},
{"guides/jido_integration.md",
[filename: "jido-integration", title: "Jido Integration Ownership"]},
"CHANGELOG.md",
"LICENSE"
],
groups_for_extras: [
Overview: ["README.md"],
Guides: [
"guides/architecture.md",
"guides/requests_and_responses.md",
"guides/clients_and_adapters.md",
"guides/optional_providers.md",
"guides/adapter_testkit.md",
"guides/live_examples.md",
"guides/jido_integration.md"
],
Project: ["CHANGELOG.md", "LICENSE"]
],
groups_for_modules: [
Core: [
Inference,
Inference.Request,
Inference.Message,
Inference.Response,
Inference.Client,
Inference.Adapter,
Inference.GovernedAuthority,
Inference.Capability,
Inference.ResponseFormat,
Inference.Error,
Inference.StreamEvent,
Inference.Trace,
Inference.Redaction
],
Adapters: [
Inference.Adapters.Mock,
Inference.Adapters.ASM,
Inference.Adapters.GeminiEx,
Inference.Adapters.GeminiExManaged,
Inference.Adapters.ReqLlmNext,
Inference.Adapters.ReqLLM
],
Testkit: [
Inference.Testkit.AdapterCase
]
],
skip_undefined_reference_warnings_on: ["CHANGELOG.md"]
]
end
end