1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[]
= "mockforge-intelligence"
= "AI-powered behavior, response generation, and behavioral cloning for MockForge"
= true
= true
= true
= true
= "../../README.md"
= ["mock", "ai", "llm", "intelligence"]
= ["development-tools::testing"]
[]
# 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).
= { = "0.3.145", = "../mockforge-foundation", = 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.
= { = "0.3.145", = "../mockforge-openapi" }
# `handlers::forecasting` (#555 phase 5) needs the contract-drift forecasting
# engine. Cycle-safe: `mockforge-contracts` depends only on `mockforge-foundation`.
= { = "0.3.145", = "../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.
= { = "0.3.145", = "../mockforge-data" }
= { = true }
= { = 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).
= { = true, = ["macros"] }
= { = true }
= { = true }
= "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.
= { = true }
= { = true }
= "2.14"
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = "0.8", = ["derive"], = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
[]
# Mirrors mockforge-core's `schema` feature so the moved `pr_generation`
# types still gate their `JsonSchema` derive the same way.
= ["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.
= ["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.
= []
# 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.
= []
= []
# 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.
= []
[]
= "0.8"
= ["runtime-tokio-rustls", "postgres", "chrono", "uuid"]
= true
[]
= { = "0.3.145", = "../mockforge-template-expansion" }