Packages

OTP-native conversational and operational runtime for Elixir agents.

Current section

Files

Jump to
spectre mix.exs
Raw

mix.exs

defmodule Spectre.MixProject do
use Mix.Project
@version "0.3.0"
@source_url "https://github.com/elchemista/spectre"
@homepage_url "https://spectre.elchemista.com"
@docs_extras [
"README.md",
"LLMS.md",
"SYSTEM.md",
"CHANGELOG.md",
"docs/GETTING_STARTED.md",
"docs/EXAMPLES.md",
"docs/ARCHITECTURE.md",
"docs/INTEGRATIONS.md",
"docs/DSL.md",
"docs/CANONICAL_DEFINITIONS.md",
"docs/DEFINITION_STORE.md",
"docs/IDENTITY_ACTIVATION.md",
"docs/EVENT_LIFECYCLE.md",
"docs/SKILL_STATE.md",
"docs/FOUNDATION_CONFORMANCE.md",
"docs/STACK.md",
"docs/RUNS.md",
"docs/INSTANCES.md",
"docs/OPERATIONS.md",
"docs/MIGRATING_TO_0_2.md",
"docs/MIGRATING_TO_0_2_3.md",
"docs/MIGRATING_TO_0_2_4.md",
"docs/MIGRATING_TO_0_2_5.md",
"docs/MIGRATING_TO_0_2_6.md",
"docs/MIGRATING_TO_0_2_7.md",
"docs/MIGRATING_TO_0_2_8.md",
"docs/MIGRATING_TO_0_2_9.md",
"docs/MIGRATING_TO_0_3.md",
"docs/SKILLS.md",
"docs/RUNTIME_SKILLS.md",
"docs/DATA_DRIVEN_EXECUTION.md",
"docs/GOVERNANCE.md",
"docs/REFLECTIVE_RUNTIME.md",
"docs/ROUTING.md",
"docs/EVALUATION.md",
"docs/PROVIDERS.md",
"docs/TRAINING.md",
"docs/ACTIONS.md",
"docs/MEMORY.md",
"docs/JOURNAL.md",
"docs/PRODUCTION.md",
"docs/TESTING.md",
"docs/API.md",
"docs/PUBLIC_API.md",
"docs/INSTALLATION.md",
"docs/ROADMAP.md",
"CONTRIBUTING.md",
"SECURITY.md",
"LICENSE"
]
def project do
[
app: :spectre,
name: "Spectre",
version: @version,
lockfile: lockfile(),
elixir: "~> 1.19",
start_permanent: Mix.env() == :prod,
deps: deps(),
test_coverage: [summary: [threshold: 93]],
description: description(),
package: package(),
dialyzer: [
plt_add_apps: [:mix],
flags: [:no_opaque]
],
docs: docs(),
source_url: @source_url,
homepage_url: @homepage_url
]
end
def application do
[
mod: {Spectre.Application, []},
extra_applications: [:logger, :eex, :crypto]
]
end
defp description do
"OTP-native conversational and operational runtime for Elixir agents."
end
defp package do
[
name: "spectre",
maintainers: ["elchemista"],
files:
~w(lib docs mix.exs .formatter.exs README.md LLMS.md SYSTEM.md CHANGELOG.md CONTRIBUTING.md SECURITY.md LICENSE),
licenses: ["Apache-2.0"],
links: %{
"Website" => @homepage_url,
"Documentation" => "https://hexdocs.pm/spectre/#{@version}",
"GitHub" => @source_url,
"Changelog" => "#{@source_url}/blob/#{@version}/CHANGELOG.md"
}
]
end
defp deps do
[
{:jason, "~> 1.4"},
{:vettore, "~> 0.3.2"},
{:ex_doc, "~> 0.40.3", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:stream_data, "~> 1.4", only: :test, runtime: false}
] ++ real_embedding_test_deps()
end
defp real_embedding_test_deps do
case real_embedding_test_path() do
path when is_binary(path) ->
[{:ex_fastembed, path: Path.expand(path), only: :test, runtime: false}]
_other ->
[]
end
end
defp lockfile do
if real_embedding_test_path(),
do: "mix.real_embeddings.lock",
else: "mix.lock"
end
defp real_embedding_test_path do
case {Mix.env(), System.get_env("SPECTRE_EX_FASTEMBED_PATH")} do
{:test, path} when is_binary(path) and path != "" -> path
_other -> nil
end
end
defp docs do
[
main: "readme",
source_ref: @version,
extras: @docs_extras,
groups_for_extras: [
"Start here": [
"README.md",
"LLMS.md",
"SYSTEM.md",
"docs/GETTING_STARTED.md",
"docs/EXAMPLES.md",
"docs/INSTALLATION.md"
],
"Core concepts": [
"docs/ARCHITECTURE.md",
"docs/INTEGRATIONS.md",
"docs/DSL.md",
"docs/CANONICAL_DEFINITIONS.md",
"docs/DEFINITION_STORE.md",
"docs/IDENTITY_ACTIVATION.md",
"docs/EVENT_LIFECYCLE.md",
"docs/SKILL_STATE.md",
"docs/FOUNDATION_CONFORMANCE.md",
"docs/STACK.md",
"docs/RUNS.md",
"docs/INSTANCES.md",
"docs/OPERATIONS.md",
"docs/MIGRATING_TO_0_2.md",
"docs/MIGRATING_TO_0_2_3.md",
"docs/MIGRATING_TO_0_2_4.md",
"docs/MIGRATING_TO_0_2_5.md",
"docs/MIGRATING_TO_0_2_6.md",
"docs/MIGRATING_TO_0_2_7.md",
"docs/MIGRATING_TO_0_2_8.md",
"docs/MIGRATING_TO_0_2_9.md",
"docs/MIGRATING_TO_0_3.md",
"docs/SKILLS.md",
"docs/RUNTIME_SKILLS.md",
"docs/DATA_DRIVEN_EXECUTION.md",
"docs/GOVERNANCE.md",
"docs/REFLECTIVE_RUNTIME.md",
"docs/API.md",
"docs/PUBLIC_API.md"
],
"Runtime guides": [
"docs/ROUTING.md",
"docs/ACTIONS.md",
"docs/MEMORY.md",
"docs/JOURNAL.md",
"docs/PROVIDERS.md",
"docs/TRAINING.md",
"docs/EVALUATION.md"
],
Operations: [
"docs/PRODUCTION.md",
"docs/TESTING.md",
"SECURITY.md"
],
Project: [
"CHANGELOG.md",
"CONTRIBUTING.md",
"docs/ROADMAP.md",
"LICENSE"
]
],
groups_for_modules: [
"Canonical definitions and projections": [
Spectre.Authority.Envelope,
Spectre.Canonical.Value,
Spectre.Definition.Candidate,
Spectre.Definition.Candidate.Ref,
Spectre.Definition.Canonical,
Spectre.Definition.Component,
Spectre.Definition.ContractRegistry,
Spectre.Definition.Manifest,
Spectre.Definition.Ref,
Spectre.Definition.Resolver,
Spectre.Definition.Store,
Spectre.Definition.Store.Conformance,
Spectre.Definition.Store.Memory,
Spectre.Foundation.Conformance,
Spectre.Execution.Closure,
Spectre.Projection,
Spectre.Projection.Audit,
Spectre.Projection.Reflection
],
"Core API": [
Spectre,
Spectre.Stack,
Spectre.Stack.Conformance,
Spectre.Agent,
Spectre.Turn.Handler,
Spectre.Turn.Handler.Request,
Spectre.Turn.Handler.Reply,
Spectre.Turn.Dispatcher,
Spectre.Reply.Sanitizer,
Spectre.Skill,
Spectre.Turn,
Spectre.Run,
Spectre.Run.Ref,
Spectre.Run.Boundary,
Spectre.Run.Request,
Spectre.Invocation,
Spectre.Runtime,
Spectre.AgentRef,
Spectre.Subject,
Spectre.ExternalIdentity,
Spectre.LinkIntent,
Spectre.SubjectLink,
Spectre.Subject.Registry,
Spectre.Instance,
Spectre.Instance.Activation,
Spectre.Event.Envelope,
Spectre.Instance.Owner,
Spectre.Instance.Owner.Lease,
Spectre.Instance.Owner.Local,
Spectre.Instance.Ref,
Spectre.Instance.Registry,
Spectre.Session,
Spectre.Supervisor
],
"Lifecycle and state": [
Spectre.Instance.Lifecycle,
Spectre.Skill.StateBinding,
Spectre.Lifecycle,
Spectre.Transition,
Spectre.State,
Spectre.State.Codec,
Spectre.State.Store,
Spectre.Result,
Spectre.Effect,
Spectre.Awaitable,
Spectre.Policy,
Spectre.Policy.Matcher,
Spectre.Policy.Resolution
],
Governance: [
Spectre.Morph,
Spectre.Morph.Change,
Spectre.Morph.DSL,
Spectre.Morph.Surface,
Spectre.Governance.ChangeSet,
Spectre.Governance.ChangeSet.Operation,
Spectre.Governance.ChangeSet.Handler,
Spectre.Governance.ChangeSet.Registry,
Spectre.Governance.Composition,
Spectre.Governance.Composer,
Spectre.Governance.CandidateState,
Spectre.Gate.Receipt,
Spectre.Gate.Receipt.Ref,
Spectre.Governance.EvaluationDelta,
Spectre.Governance.Review,
Spectre.Governance.Approval,
Spectre.Governance.Approval.Policy,
Spectre.Projection.HumanReport,
Spectre.Governance.GC,
Spectre.Governance.GC.Plan
],
"Reflection and Forge": [
Spectre.Experience,
Spectre.Experience.Evidence,
Spectre.Experience.Evidence.Ref,
Spectre.Experience.Redactor,
Spectre.Experience.Store,
Spectre.Experience.Store.Memory,
Spectre.Reflection,
Spectre.Reflection.Policy,
Spectre.Reflection.Operation,
Spectre.Forge,
Spectre.Forge.Critic,
Spectre.Forge.Critique,
Spectre.Forge.OracleApproval,
Spectre.Forge.Proposal
],
Routing: [
Spectre.Router,
Spectre.Router.Arbitration,
Spectre.Router.Arbitrator,
Spectre.Router.Candidate,
Spectre.Router.Context,
Spectre.Router.Receipt,
Spectre.Router.SemanticCache,
Spectre.Router.SemanticCache.Learned,
Spectre.Router.SemanticCache.Owner
],
"Prompts and providers": [
Spectre.LLM,
Spectre.Prompt,
Spectre.Prompt.Fragment,
Spectre.Prompt.Operation,
Spectre.Prompt.Plan,
Spectre.Provider.Call,
Spectre.Provider.Failure
],
Actions: [
Spectre.Action,
Spectre.Action.Spec,
Spectre.Action.Provider,
Spectre.Action.Provider.Local,
Spectre.Action.Planner,
Spectre.ActionConfig,
Spectre.ActionDispatcher,
Spectre.ActionExecutor,
Spectre.ActionHooks,
Spectre.ActionPlanner,
Spectre.ActionProtection,
Spectre.Execution
],
"Operational loops": [
Spectre.Execution.Expression,
Spectre.Execution.Program,
Spectre.Execution.Work,
Spectre.Execution.Materialization,
Spectre.Execution.Materializer,
Spectre.Execution.Runtime,
Spectre.Execution.Handoff,
Spectre.Execution.Migration,
Spectre.Execution.Migration.Receipt,
Spectre.Execution.Rehearsal,
Spectre.Execution.Rehearsal.Report,
Spectre.Projection.Execution,
Spectre.Prompt.Materializer,
Spectre.Prompt.Receipt,
Spectre.Work,
Spectre.Vigil,
Spectre.Operation.Controller,
Spectre.Operation.Definition,
Spectre.Operation.Spec,
Spectre.Operation.Registry,
Spectre.Operation.Runtime,
Spectre.Operation.Loop,
Spectre.Operation.Ref,
Spectre.Operation.View,
Spectre.Operation.Request,
Spectre.Operation.Wait,
Spectre.Operation.Attempt,
Spectre.Operation.Result,
Spectre.Operation.Progress,
Spectre.Operation.Execution,
Spectre.Operation.ExecutionContext,
Spectre.Operation.Executor,
Spectre.Operation.Runner,
Spectre.Operation.RunnerSupervisor,
Spectre.Operation.Monitor,
Spectre.Operation.Control,
Spectre.Operation.Control.Command,
Spectre.Operation.Budget,
Spectre.Operation.Retry,
Spectre.Operation.Outcome,
Spectre.Operation.Update,
Spectre.Operation.Artifact,
Spectre.Operation.Event,
Spectre.Operation.Events,
Spectre.Operation.Memory,
Spectre.Operation.Policy,
Spectre.Operation.Validator,
Spectre.Operation.Delivery,
Spectre.Operation.Delivery.Consent,
Spectre.Operation.Delivery.Policy,
Spectre.Operation.Delivery.Receipt,
Spectre.Instance.CheckpointStore
],
Extensions: [
Spectre.Extension,
Spectre.Stack.Contract.V1,
Spectre.Stack.Contract.V2,
Spectre.Stack.Definition,
Spectre.Stack.Installable,
Spectre.Stack.Installation,
Spectre.Stack.Package,
Spectre.Stack.Ref,
Spectre.Stack.Runtime
],
"Classifiers and evaluation": [
Spectre.Classifier,
Spectre.Classifier.Embedding,
Spectre.Classifier.Encoder,
Spectre.Classifier.Trainer,
Spectre.Eval,
Spectre.Eval.Case,
Spectre.Eval.Report,
Spectre.Eval.Result,
Spectre.Training.Dataset
],
"Journal and operations": [
Spectre.Journal,
Spectre.Journal.Buffer,
Spectre.Journal.Record,
Spectre.Journal.Recorder,
Spectre.Journal.Store,
Spectre.Monitor,
Spectre.Telemetry
],
"Mix tasks": ~r/^Mix.Tasks.Spectre/,
"Supporting API": ~r/^Spectre\./
]
]
end
end