Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Pixir.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/ranvier2d2/pixir-harness"
def project do
[
app: :pixir,
version: @version,
elixir: "~> 1.19",
start_permanent: Mix.env() == :prod,
elixirc_paths: elixirc_paths(Mix.env()),
escript: escript(),
deps: deps(),
aliases: aliases(),
description: description(),
package: package(),
docs: docs()
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger, :crypto, :public_key],
mod: {Pixir.Application, []}
]
end
defp escript do
# +Bi ignores the BEAM break handler so a companion shell trap can forward
# SIGINT as SIGUSR1 during CLI Turn execution (issue #24).
[main_module: Pixir.CLI, name: "pixir", emu_args: "-Bi"]
end
defp description do
"OTP-native, local-first coding agent runtime with ACP, Skills, Subagents, and Workflows."
end
defp docs do
adr_extras = Path.wildcard("docs/adr/*.md")
example_paths = Path.wildcard("docs/examples/**/*.md")
example_extras = Enum.map(example_paths, &{&1, [filename: doc_extra_filename(&1)]})
quickstart = "docs/open-beta-quickstart.md"
[
main: "readme",
source_url: @source_url,
source_ref: "main",
extras:
[
{"README.md", [filename: "readme", title: "Pixir"]},
"CONTEXT.md",
"docs/ROADMAP.md",
quickstart
] ++
adr_extras ++ example_extras,
groups_for_extras: [
"Project Context": ["CONTEXT.md", "docs/ROADMAP.md", quickstart],
ADRs: adr_extras,
Examples: example_paths
],
groups_for_modules: [
"Runtime Core": [
Pixir,
Pixir.Application,
Pixir.Event,
Pixir.Events,
Pixir.Log,
Pixir.Session,
Pixir.SessionSupervisor,
Pixir.Turn,
Pixir.Conversation
],
"Provider And Auth": ~r/^Pixir\.(Provider|Auth)/,
"Agent Practices": [Pixir.Agents, Pixir.Skills, Pixir.Subagents, Pixir.Workflows],
Tools: ~r/^Pixir\.Tools?/,
ACP: ~r/^Pixir\.ACP/
]
]
end
defp doc_extra_filename(path) do
path
|> Path.rootname()
|> String.replace("/", "-")
|> String.downcase()
end
defp deps do
[
{:ex_doc, "~> 0.40.3", only: :dev, runtime: false},
{:finch, "~> 0.18"},
{:jason, "~> 1.4"}
]
end
defp package do
[
files: package_files(),
licenses: ["MIT"],
links: %{"GitHub" => @source_url}
]
end
defp package_files do
[
".formatter.exs",
"CONTEXT.md",
"LICENSE",
"README.md",
"mix.exs",
"docs/ROADMAP.md",
"docs/open-beta-daily-driver-ritual.md",
"docs/open-beta-quickstart.md",
"docs/release-notes/open-beta-developer-preview.md"
] ++
Path.wildcard("lib/**/*.ex") ++
Path.wildcard("docs/adr/[0-9][0-9][0-9][0-9]-*.md") ++
Path.wildcard("docs/examples/**/README.md") ++
Path.wildcard("docs/examples/**/SKILL.md")
end
defp aliases do
[
check: [
"format --check-formatted",
"compile --warnings-as-errors",
"cmd env MIX_ENV=test mix do compile --warnings-as-errors + test --warnings-as-errors",
"escript.build",
"cmd ./pixir doctor --json",
"pixir.smoke.workflows --dry-run --json",
"pixir.smoke.prompt_cache --dry-run --json",
"pixir.smoke.websocket --dry-run --json",
"docs --warnings-as-errors"
]
]
end
end