Packages
fnord
0.9.36
0.9.40
0.9.39
0.9.38
0.9.37
0.9.36
0.9.35
0.9.34
0.9.33
0.9.32
0.9.31
0.9.30
0.9.29
0.9.28
0.9.27
0.9.26
0.9.25
0.9.24
0.9.23
0.9.22
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.99
0.8.98
0.8.97
0.8.96
0.8.95
0.8.94
0.8.93
0.8.92
0.8.91
0.8.90
0.8.89
0.8.88
0.8.87
0.8.86
0.8.85
0.8.84
0.8.83
0.8.82
0.8.81
0.8.80
0.8.79
0.8.78
0.8.77
0.8.76
0.8.75
0.8.74
0.8.73
0.8.72
0.8.71
0.8.70
0.8.69
0.8.68
0.8.67
0.8.66
0.8.65
0.8.64
0.8.63
0.8.62
0.8.61
0.8.60
0.8.59
0.8.58
0.8.57
0.8.56
0.8.55
0.8.54
0.8.53
0.8.52
0.8.51
0.8.50
0.8.49
0.8.48
0.8.47
0.8.46
0.8.45
0.8.44
0.8.43
0.8.42
0.8.41
0.8.40
0.8.39
0.8.38
0.8.37
0.8.36
0.8.35
0.8.34
0.8.33
0.8.32
0.8.31
0.8.30
0.8.29
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.1
0.8.0
0.7.24
0.7.23
0.7.22
0.7.21
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.3
0.7.2
0.7.1
0.7.0
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.44
0.4.43
0.4.42
0.4.41
0.4.40
0.4.39
0.4.38
0.4.37
0.4.36
0.4.35
0.4.34
0.4.33
0.4.32
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
AI code archaeology
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Fnord.MixProject do
use Mix.Project
def project do
[
app: :fnord,
version: "0.9.36",
elixir: "~> 1.19",
start_permanent: Mix.env() == :prod,
description: "AI code archaeology",
package: package(),
deps: deps(),
escript: escript(),
cli: cli(),
docs: docs(),
test_coverage: [tool: ExCoveralls],
test_ignore_filters: [
~r/^test\/support\/.*\.ex/
]
]
end
def cli do
[
preferred_envs: [
coveralls: :test,
"coveralls.html": :test,
"coveralls.json": :test
]
]
end
defp docs do
# Glob so adding a new guide under docs/user/ auto-publishes it to
# hexdocs. The self-help tool (`AI.Tools.SelfHelp.Docs`) already globs
# the same directory at compile time for its URL list, so both stay
# in sync without hand-editing two lists. The root README.md at the
# top is separate from docs/user/README.md to avoid a
# `readme.html` filename collision in the published output.
user_guides =
"docs/user/*.md"
|> Path.wildcard()
|> Enum.reject(&(&1 == "docs/user/README.md"))
|> Enum.sort()
[
main: "readme",
extras: ["README.md" | user_guides],
groups_for_extras: [Guides: user_guides],
source_url: "https://github.com/sysread/fnord",
homepage_url: "https://hex.pm/packages/fnord",
format: :html
]
end
defp package do
[
maintainers: ["Jeff Ober"],
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/sysread/fnord"}
]
end
defp escript do
[
main_module: Fnord,
strip_beams: Mix.env() == :prod
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:briefly, "~> 0.5.1"},
{:clipboard, "~> 0.2.1"},
{:dialyxir, "~> 1.4.5", only: [:dev], runtime: false},
{:ex_doc, ">= 0.0.0", only: [:dev], runtime: false},
{:excoveralls, "~> 0.18.5", only: [:test], runtime: false},
# finch >= 0.22 rejects hermes_mcp 0.14.1's :transport_opts via
# Keyword.validate! in Finch.Request.build/5. Hermes upstream has been
# dormant since Aug 2025, so cap finch below 0.22 until a fix ships.
{:finch, ">= 0.19.0 and < 0.22.0"},
{:hermes_mcp, "~> 0.14"},
{:httpoison, "~> 2.2.1"},
{:jason, "~> 1.4"},
{:mox, "~> 1.2", only: [:test], runtime: false},
{:optimus, "~> 0.2"},
{:owl, "~> 0.12"},
{:stemmer, "~> 1.2"},
{:toml, "~> 0.7"},
{:uniq, "~> 0.1"},
{:yaml_elixir, "~> 2.9"},
# OAuth2 browser-based flow (loopback server)
{:plug_cowboy, "~> 2.7"}
]
end
end