mockforge-intelligence 0.3.145

AI-powered behavior, response generation, and behavioral cloning for MockForge
Documentation
[package]
name = "mockforge-intelligence"
description = "AI-powered behavior, response generation, and behavioral cloning for MockForge"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
readme = "../../README.md"
keywords = ["mock", "ai", "llm", "intelligence"]
categories = ["development-tools::testing"]

[dependencies]
# Intentionally NO `mockforge-core` dep — Issue #562 broke this cycle so
# `mockforge-core` can re-export modules that live here (currently
# `pr_generation`). The only thing this crate needs from core was
# `Result`/`Error` (now sourced from `mockforge-foundation` directly) and
# `ScenarioDefinition` (the one method that produced one now lives in
# `mockforge-http::handlers::behavioral_cloning`, the only caller).
mockforge-foundation = { version = "0.3.145", path = "../mockforge-foundation", default-features = false }
# `intelligent_behavior` (#562 phase 2) needs `OpenApiSpec`, `ResponseGenerator`,
# and `OpenApiRouteRegistry`. `mockforge-openapi` is foundation-only, so this
# dep is cycle-safe — it does NOT pull `mockforge-core` back in.
mockforge-openapi = { version = "0.3.145", path = "../mockforge-openapi" }
# `handlers::forecasting` (#555 phase 5) needs the contract-drift forecasting
# engine. Cycle-safe: `mockforge-contracts` depends only on `mockforge-foundation`.
mockforge-contracts = { version = "0.3.145", path = "../mockforge-contracts" }
# `consistency` (#555 phase 7) uses `mockforge_data::{PersonaProfile,
# PersonaGraph, PersonaLifecycle, LifecyclePreset, LifecycleState}`. Cycle-safe
# — mockforge-data has no upstream deps in this workspace.
mockforge-data = { version = "0.3.145", path = "../mockforge-data" }
anyhow = { workspace = true }
async-trait = { workspace = true }
# `handlers::*` (HTTP-handler files migrated out of `mockforge-http` under
# Issue #555) need axum. Cycle-safe: `mockforge-http` already depends on
# `mockforge-intelligence`, never the reverse. `macros` is for
# `#[axum::debug_handler]` in `handlers::ai_studio` (#555 phase 5).
axum = { workspace = true, features = ["macros"] }
base64 = { workspace = true }
chrono = { workspace = true }
dirs = "5.0"
# `incidents::integrations::WebhookIntegration` signs outgoing webhook
# payloads with HMAC-SHA256 (Issue #562 phase 9 — moved from
# `mockforge-core`); both hex and hmac were already on the workspace's
# pinned versions for the core crate.
hex = { workspace = true }
hmac = { workspace = true }
indexmap = "2.14"
once_cell = { workspace = true }
openapiv3 = { workspace = true }
rand = { workspace = true }
regex = { workspace = true }
reqwest = { workspace = true }
schemars = { version = "0.8", features = ["derive"], optional = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
sha2 = { workspace = true }
tokio = { workspace = true }
tracing = { workspace = true }
urlencoding = { workspace = true }
uuid = { workspace = true }

[features]
# Mirrors mockforge-core's `schema` feature so the moved `pr_generation`
# types still gate their `JsonSchema` derive the same way.
schema = ["schemars", "mockforge-foundation/schema"]
# Mirrors mockforge-core's `database` feature so ai_studio's org_controls_db
# (sqlx-backed) only compiles when the consumer opts in.
database = ["sqlx"]
# Mirrors mockforge-core's `advanced` feature so consistency / scenario_studio
# (moved here in #555 phase 7) only compile when consumers ask for the
# advanced feature set, same as before the move.
advanced = []
# Mirrors mockforge-core's `data` / `persona-graph` features so the
# moved-in #555-phase-7 `consistency` module's persona-graph-aware code
# paths can still be gated identically. mockforge-data is now an
# unconditional dep on this crate, but the cfg gates are preserved so
# the downstream API surface is unchanged.
data = []
persona-graph = []
# Mirrors mockforge-http's `data-faker` feature so the moved-in
# `handlers::spec_generation` (#656) keeps its dual data-faker /
# stub-503 contract. mockforge-http's `data-faker` now propagates to
# this crate so a single toggle still controls both ends.
data-faker = []

[dependencies.sqlx]
version = "0.8"
features = ["runtime-tokio-rustls", "postgres", "chrono", "uuid"]
optional = true

[dev-dependencies]
mockforge-template-expansion = { version = "0.3.145", path = "../mockforge-template-expansion" }