Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Vibe.MixProject do
use Mix.Project
@version "0.2.1"
@source_url "https://github.com/elixir-vibe/vibe"
def project do
[
app: :vibe,
version: @version,
elixir: "~> 1.19",
start_permanent: Mix.env() == :prod,
deps: deps(),
compilers: Mix.compilers() ++ [:phoenix_iconify],
elixirc_paths: elixirc_paths(Mix.env()),
description: "BEAM-native coding agent substrate for Elixir/OTP projects",
source_url: @source_url,
package: package(),
aliases: aliases(),
escript: escript(),
dialyzer: [
plt_file: {:no_warn, "_build/dev/dialyxir_plt.plt"},
plt_add_apps: [:mix, :credo, :ex_dna, :ex_slop, :reach]
]
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger, :tools, :mix, :ssh, :public_key, :crypto],
mod: {Vibe.Application, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp package do
[
licenses: ["MIT"],
links: %{"GitHub" => @source_url},
files: ~w(assets config lib priv mix.exs mix.lock README.md LICENSE CHANGELOG.md)
]
end
defp escript do
[
main_module: Vibe.CLI.Escript,
name: "vibe",
app: nil,
include_priv_for: [
:vibe,
:tzdata,
:llm_db,
:mdex,
:lumis,
:oxc,
:ghostty,
:quickbeam,
:pythonx,
:exqlite,
:volt,
:vize,
:oxide_ex
],
strip_beams: [keep: ["Docs"]]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_env), do: ["lib"]
defp deps do
[
{:abnf_parsec, "~> 2.1"},
{:boxart, "~> 0.3.3"},
{:ex_ast, "~> 0.12"},
{:floki, "~> 0.38"},
{:glob_ex, "~> 0.1.11"},
{:jason, "~> 1.4"},
{:json_spec, "~> 1.1"},
{:mdex, "~> 0.12"},
{:yaml_elixir, "~> 2.12"},
{:toml, "~> 0.7"},
{:ecto_sql, "~> 3.12"},
{:ecto_sqlite3, "~> 0.23"},
{:ex_gram, "~> 0.66"},
{:req, "~> 0.5.18"},
{:req_llm, "~> 1.11"},
{:phoenix, "~> 1.8"},
{:phoenix_live_view, "~> 1.1"},
{:phoenix_streamdown, "~> 1.0.0-beta"},
{:phoenix_iconify, "~> 0.3.0"},
{:plug_cowboy, "~> 2.7"},
{:lazy_html, ">= 0.1.0", only: :test},
{:volt, "~> 0.12"},
{:opentelemetry_api, "~> 1.5"},
{:opentelemetry, "~> 1.7"},
{:opentelemetry_telemetry, "~> 1.1"},
{:ex_doc, ">= 0.0.0", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:ex_dna, "~> 1.5", only: [:dev, :test], runtime: false},
{:ex_slop, "~> 0.4", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:reach, "~> 2.6", runtime: false},
{:dune, "~> 0.3", optional: true},
{:pythonx, "~> 0.4.10", optional: true},
{:quickbeam, "~> 0.10.14", optional: true},
{:jido, "~> 2.2"},
{:jido_ai, "~> 2.1"},
{:ghostty, "~> 0.4.8"}
]
end
def cli do
[]
end
defp aliases do
[
ci: [
"compile --warnings-as-errors",
"format --check-formatted",
"cmd env MIX_ENV=test mix test",
"credo --strict",
"dialyzer",
"ex_dna",
"reach.check --arch --smells --strict"
]
]
end
end