trusty-mpm 1.7.7

trusty-mpm: unified multi-agent orchestration platform (core, daemon, CLI, TUI, Telegram)
Documentation
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
//! Compile-time embedded framework artifacts.
//!
//! Why: `trusty-mpm install` must deploy a working set of default artifacts
//! (optimizer/overseer policy, agent/skill catalog)
//! without depending on files shipped alongside the binary — embedding them
//! at compile time keeps the installer a single self-contained executable.
//! (Issue #3374: the former `CLAUDE_STUB` user-instruction-stub artifact was
//! removed — it was never read back by any consumer; the project `CLAUDE.md`
//! actually delivered to users is [`crate::core::instruction_pipeline`]'s
//! `CLAUDE_MD_STUB`. #4286 split A likewise removed the bundled
//! `FRAMEWORK_INSTRUCTIONS`/`instructions/INSTRUCTIONS.md` artifact — its
//! content never reached the compiled prompt: `tm install`/`tm launch` always
//! overwrite that same on-disk path with
//! [`crate::core::instruction_pipeline::assemble_system_prompt`]'s output in
//! the same call, and [`crate::core::instruction_pipeline::build_instructions`]
//! already treats the file as optional.)
//! What: exposes each default artifact under `crates/trusty-mpm-core/assets/`
//! as a `pub const &str` via `include_str!`, plus a [`BundledArtifact`] table
//! describing the relative install path of each one.
//! Test: `cargo test -p trusty-mpm-core bundle` asserts every constant is
//! non-empty and that [`ALL`] enumerates each artifact exactly once.

/// Default token-optimizer policy installed to `hooks/optimizer.toml`.
pub const OPTIMIZER_TOML: &str = include_str!("../assets/hooks/optimizer.toml");

/// Default session-overseer policy installed to `hooks/overseer.toml`.
///
/// Overseer oversight is opt-in: the shipped policy has `enabled = false`, so
/// installing it is inert until an operator flips the flag.
pub const OVERSEER_TOML: &str = include_str!("../assets/hooks/overseer.toml");

/// Base agent — the root of every trusty-mpm inheritance chain.
pub const BASE_AGENT: &str = trusty_agents_common::agent_assets::BASE_AGENT;

/// Base engineer agent — foundation for all engineer agents.
pub const BASE_ENGINEER: &str = trusty_agents_common::agent_assets::BASE_ENGINEER;

/// Base research agent — foundation for all research agents.
pub const BASE_RESEARCH: &str = trusty_agents_common::agent_assets::BASE_RESEARCH;

/// Base QA agent — foundation for all QA agents.
pub const BASE_QA: &str = trusty_agents_common::agent_assets::BASE_QA;

/// Base ops agent — foundation for all ops agents.
pub const BASE_OPS: &str = trusty_agents_common::agent_assets::BASE_OPS;

/// Concrete general-purpose engineer agent (`extends: base-engineer`).
pub const ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::ENGINEER;

/// Concrete QA agent (`extends: base-qa`).
pub const QA_AGENT: &str = trusty_agents_common::agent_assets::QA;

/// Concrete research agent (`extends: base-research`).
pub const RESEARCH_AGENT: &str = trusty_agents_common::agent_assets::RESEARCH;

/// Concrete secrets-manager agent (`extends: base-agent`).
pub const SECRETS_MANAGER_AGENT: &str = trusty_agents_common::agent_assets::SECRETS_MANAGER;

/// Concrete security agent (`extends: base-agent`).
pub const SECURITY_AGENT: &str = trusty_agents_common::agent_assets::SECURITY;

/// Concrete documentation agent (`extends: base-agent`).
pub const DOCUMENTATION_AGENT: &str = trusty_agents_common::agent_assets::DOCUMENTATION;

/// Concrete data-engineer agent (`extends: base-engineer`).
pub const DATA_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::DATA_ENGINEER;

/// Concrete version-control agent (`extends: base-ops`).
pub const VERSION_CONTROL_AGENT: &str = trusty_agents_common::agent_assets::VERSION_CONTROL;

/// Concrete ticketing agent (`extends: base-agent`).
pub const TICKETING_AGENT: &str = trusty_agents_common::agent_assets::TICKETING;

/// Concrete code-analyzer agent (`extends: base-research`).
pub const CODE_ANALYZER_AGENT: &str = trusty_agents_common::agent_assets::CODE_ANALYZER;

/// Concrete python-engineer agent (`extends: base-engineer`).
pub const PYTHON_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::PYTHON_ENGINEER;

/// Concrete typescript-engineer agent (`extends: base-engineer`).
pub const TYPESCRIPT_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::TYPESCRIPT_ENGINEER;

/// Concrete golang-engineer agent (`extends: base-engineer`).
pub const GOLANG_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::GOLANG_ENGINEER;

/// Concrete rust-engineer agent (`extends: base-engineer`).
pub const RUST_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::RUST_ENGINEER;

/// Concrete java-engineer agent (`extends: base-engineer`).
pub const JAVA_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::JAVA_ENGINEER;

/// Concrete php-engineer agent (`extends: base-engineer`).
pub const PHP_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::PHP_ENGINEER;

/// Concrete ruby-engineer agent (`extends: base-engineer`).
pub const RUBY_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::RUBY_ENGINEER;

/// Concrete react-engineer agent (`extends: base-engineer`).
pub const REACT_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::REACT_ENGINEER;

/// Concrete nextjs-engineer agent (`extends: base-engineer`).
pub const NEXTJS_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::NEXTJS_ENGINEER;

/// Concrete svelte-engineer agent (`extends: base-engineer`).
pub const SVELTE_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::SVELTE_ENGINEER;

/// Concrete web-qa agent (`extends: base-qa`).
pub const WEB_QA_AGENT: &str = trusty_agents_common::agent_assets::WEB_QA;

/// Concrete api-qa agent (`extends: base-qa`).
pub const API_QA_AGENT: &str = trusty_agents_common::agent_assets::API_QA;

// --- Increment 3 agents ---

/// Concrete javascript-engineer agent (`extends: base-engineer`).
pub const JAVASCRIPT_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::JAVASCRIPT_ENGINEER;

/// Concrete elixir-engineer agent — Elixir/OTP/Mix (`extends: base-engineer`).
pub const ELIXIR_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::ELIXIR_ENGINEER;

/// Concrete phoenix-engineer agent — the Phoenix web layer (`extends: base-engineer`).
pub const PHOENIX_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::PHOENIX_ENGINEER;

/// Concrete dart-engineer agent — Flutter/Dart (`extends: base-engineer`).
pub const DART_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::DART_ENGINEER;

/// Concrete dotnet-engineer agent — C#/.NET 8+ with VB.NET awareness (`extends: base-engineer`).
pub const DOTNET_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::DOTNET_ENGINEER;

/// Concrete tauri-engineer agent (`extends: base-engineer`).
pub const TAURI_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::TAURI_ENGINEER;

/// Concrete web-ui-engineer agent (`extends: base-engineer`).
pub const WEB_UI_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::WEB_UI_ENGINEER;

/// Concrete refactoring-engineer agent (`extends: base-engineer`).
pub const REFACTORING_ENGINEER_AGENT: &str =
    trusty_agents_common::agent_assets::REFACTORING_ENGINEER;

/// Concrete prompt-engineer agent (`extends: base-engineer`).
pub const PROMPT_ENGINEER_AGENT: &str = trusty_agents_common::agent_assets::PROMPT_ENGINEER;

/// Concrete code-critic agent — adversarial reviewer (`extends: base-qa`).
pub const CODE_CRITIC_AGENT: &str = trusty_agents_common::agent_assets::CODE_CRITIC;

/// `code-review-standards` skill — the full adversarial review rubric
/// (severity taxonomy, 80% confidence filter, verdict protocol) that
/// `code-critic` declares in its `skills:` frontmatter (issue #2890, DOC-42).
///
/// Why: DOC-28 (self-awareness incident) taught that a skill file existing
/// under `src/assets/skills/` is not sufficient for it to ship — it must also
/// be registered as a [`crate::core::bundle::BundledArtifact`] in [`ALL`] or
/// `deploy_all_skill_tiers` never sees it (the exact historical bug that left
/// `tm-doctor.md` orphaned; see `bundle_tm_skills.rs`'s module doc).
/// What: embedded markdown skill file deployed to
/// `skills/code-review-standards.md`.
/// Test: `bundle_table_is_complete`, `code_critic_declared_skills_are_in_bundle`.
pub const CODE_REVIEW_STANDARDS: &str = include_str!("../assets/skills/code-review-standards.md");

/// `contract-driven-testing` skill — the three-level test pyramid derived
/// from Code Contracts that `code-critic` declares in its `skills:`
/// frontmatter (issue #2890, DOC-42).
///
/// Why: see [`CODE_REVIEW_STANDARDS`] — registration in [`ALL`] is what
/// actually makes a bundled skill installable, not the presence of the file.
/// What: embedded markdown skill file deployed to
/// `skills/contract-driven-testing.md`.
/// Test: `bundle_table_is_complete`, `code_critic_declared_skills_are_in_bundle`.
pub const CONTRACT_DRIVEN_TESTING: &str =
    include_str!("../assets/skills/contract-driven-testing.md");

/// Concrete gcp-ops agent — Google Cloud Platform (`extends: base-ops`).
pub const GCP_OPS_AGENT: &str = trusty_agents_common::agent_assets::GCP_OPS;

/// Concrete vercel-ops agent (`extends: base-ops`).
pub const VERCEL_OPS_AGENT: &str = trusty_agents_common::agent_assets::VERCEL_OPS;

/// Concrete local-ops agent — local dev environment (`extends: base-ops`).
pub const LOCAL_OPS_AGENT: &str = trusty_agents_common::agent_assets::LOCAL_OPS;

/// Concrete memory-manager agent — trusty-memory MCP backend only (`extends: base-agent`).
pub const MEMORY_MANAGER_AGENT: &str = trusty_agents_common::agent_assets::MEMORY_MANAGER;

/// Concrete mpm-agent-manager agent — bundled-asset catalog lifecycle (`extends: base-agent`).
pub const MPM_AGENT_MANAGER_AGENT: &str = trusty_agents_common::agent_assets::MPM_AGENT_MANAGER;

/// Concrete mpm-skills-manager agent — skill lifecycle and recommendations (`extends: base-agent`).
pub const MPM_SKILLS_MANAGER_AGENT: &str = trusty_agents_common::agent_assets::MPM_SKILLS_MANAGER;

// --- Issue #2911: `documentation-style` bundled skill (SLD-grounded
// per-artifact-type documentation conventions) — own module, kept separate
// from the batch-1 groups since it lands independently of epic #2902.
#[path = "bundle_skills_documentation_style.rs"]
mod skills_documentation_style_inner;
pub use skills_documentation_style_inner::{
    DOCUMENTATION_STYLE, DOCUMENTATION_STYLE_BLOCK_INLINE, DOCUMENTATION_STYLE_CLASS,
    DOCUMENTATION_STYLE_FILE_LEVEL, DOCUMENTATION_STYLE_METHOD_FUNCTION,
    DOCUMENTATION_STYLE_README, DOCUMENTATION_STYLE_SPEC,
};

// --- Rust build-performance bundled skill (per Bob directive 2026-07-17) —
// own module, declared by rust-engineer and tauri-engineer's `skills:`.
#[path = "bundle_skills_rust_build_performance.rs"]
mod skills_rust_build_performance_inner;
pub use skills_rust_build_performance_inner::RUST_BUILD_PERFORMANCE;

// --- Rust delivery-workflow bundled skill (issue #8192) — own module,
// declared by rust-engineer's `skills:`; process rules, not build speed.
#[path = "bundle_skills_rust_delivery_workflow.rs"]
mod skills_rust_delivery_workflow_inner;
pub use skills_rust_delivery_workflow_inner::RUST_DELIVERY_WORKFLOW;

// --- `self-improvement-loop` bundled skill (issue #7723) — own module,
// on-demand only (not declared in any agent's `skills:` frontmatter).
#[path = "bundle_skills_self_improvement_loop.rs"]
mod skills_self_improvement_loop_inner;
pub use skills_self_improvement_loop_inner::SELF_IMPROVEMENT_LOOP;

// --- Skill-port batch 1 (issue #2903, epic #2902): 25 upstream universal/
// skills, split across 4 modules by category to stay under the 500-SLOC cap.
#[path = "bundle_skills_batch1_debugging.rs"]
mod skills_batch1_debugging_inner;
pub use skills_batch1_debugging_inner::{
    CONDITION_BASED_WAITING, CONDITION_BASED_WAITING_PATTERNS_AND_IMPLEMENTATION,
    ROOT_CAUSE_TRACING, ROOT_CAUSE_TRACING_ADVANCED_TECHNIQUES, ROOT_CAUSE_TRACING_EXAMPLES,
    ROOT_CAUSE_TRACING_INTEGRATION, ROOT_CAUSE_TRACING_TRACING_TECHNIQUES, SYSTEMATIC_DEBUGGING,
    SYSTEMATIC_DEBUGGING_ANTI_PATTERNS, SYSTEMATIC_DEBUGGING_EXAMPLES,
    SYSTEMATIC_DEBUGGING_TROUBLESHOOTING, SYSTEMATIC_DEBUGGING_WORKFLOW, TEST_DRIVEN_DEVELOPMENT,
    TEST_DRIVEN_DEVELOPMENT_ANTI_PATTERNS, TEST_DRIVEN_DEVELOPMENT_EXAMPLES,
    TEST_DRIVEN_DEVELOPMENT_INTEGRATION, TEST_DRIVEN_DEVELOPMENT_PHILOSOPHY,
    TEST_DRIVEN_DEVELOPMENT_WORKFLOW, TEST_QUALITY_INSPECTOR,
    TEST_QUALITY_INSPECTOR_ASSERTION_QUALITY, TEST_QUALITY_INSPECTOR_INSPECTION_CHECKLIST,
    TEST_QUALITY_INSPECTOR_RED_FLAGS, TESTING_ANTI_PATTERNS,
    TESTING_ANTI_PATTERNS_COMPLETENESS_ANTI_PATTERNS, TESTING_ANTI_PATTERNS_CORE_ANTI_PATTERNS,
    TESTING_ANTI_PATTERNS_DETECTION_GUIDE, TESTING_ANTI_PATTERNS_PYTHON_EXAMPLES,
    TESTING_ANTI_PATTERNS_TDD_CONNECTION, VERIFICATION_BEFORE_COMPLETION,
    VERIFICATION_BEFORE_COMPLETION_GATE_FUNCTION,
    VERIFICATION_BEFORE_COMPLETION_INTEGRATION_AND_WORKFLOWS,
    VERIFICATION_BEFORE_COMPLETION_RED_FLAGS_AND_FAILURES,
    VERIFICATION_BEFORE_COMPLETION_VERIFICATION_PATTERNS, WEBAPP_TESTING,
};

#[path = "bundle_skills_batch1_collab.rs"]
mod skills_batch1_collab_inner;
pub use skills_batch1_collab_inner::{
    BRAINSTORMING, DATABASE_MIGRATION, DATABASE_MIGRATION_DECISION_TREES,
    DATABASE_MIGRATION_TROUBLESHOOTING, GIT_WORKFLOW, JSON_DATA_HANDLING, REQUESTING_CODE_REVIEW,
    REQUESTING_CODE_REVIEW_CODE_REVIEWER_TEMPLATE, REQUESTING_CODE_REVIEW_REVIEW_EXAMPLES,
    SOFTWARE_PATTERNS, SOFTWARE_PATTERNS_ANTI_PATTERNS, SOFTWARE_PATTERNS_CODE_SMELL_SIGNALS,
    SOFTWARE_PATTERNS_DECISION_TREES, SOFTWARE_PATTERNS_EXAMPLES,
    SOFTWARE_PATTERNS_FOUNDATIONAL_PATTERNS, SOFTWARE_PATTERNS_SITUATIONAL_PATTERNS, WRITING_PLANS,
    WRITING_PLANS_BEST_PRACTICES, WRITING_PLANS_PLAN_STRUCTURE_TEMPLATES,
};

#[path = "bundle_skills_batch1_security_web.rs"]
mod skills_batch1_security_web_inner;
pub use skills_batch1_security_web_inner::{
    API_DESIGN_PATTERNS, API_DESIGN_PATTERNS_AUTHENTICATION, API_DESIGN_PATTERNS_GRAPHQL_PATTERNS,
    API_DESIGN_PATTERNS_GRPC_PATTERNS, API_DESIGN_PATTERNS_REST_PATTERNS,
    API_DESIGN_PATTERNS_VERSIONING_STRATEGIES, API_DOCUMENTATION, ENV_MANAGER,
    ENV_MANAGER_FRAMEWORKS, ENV_MANAGER_SECURITY, ENV_MANAGER_SYNCHRONIZATION,
    ENV_MANAGER_TROUBLESHOOTING, ENV_MANAGER_VALIDATION, SECURITY_SCANNING,
    SECURITY_SCANNING_CI_WORKFLOWS, SECURITY_SCANNING_COMMON_FINDINGS_AND_FIXES,
    SECURITY_SCANNING_OPEN_SOURCE_SAFETY, SECURITY_SCANNING_SUPPLY_CHAIN_AND_SBOM,
    SECURITY_SCANNING_TOOLING_MATRIX, SECURITY_SCANNING_TRIAGE_AND_REMEDIATION,
    WEB_PERFORMANCE_OPTIMIZATION, WEB_PERFORMANCE_OPTIMIZATION_CORE_WEB_VITALS,
    WEB_PERFORMANCE_OPTIMIZATION_FRAMEWORK_SPECIFIC,
    WEB_PERFORMANCE_OPTIMIZATION_MODERN_PATTERNS_2025, WEB_PERFORMANCE_OPTIMIZATION_MONITORING,
    WEB_PERFORMANCE_OPTIMIZATION_OPTIMIZATION_TECHNIQUES, WEB_PERFORMANCE_OPTIMIZATION_QUICK_WINS,
};

#[path = "bundle_skills_batch1_process.rs"]
mod skills_batch1_process_inner;
pub use skills_batch1_process_inner::{
    ARTIFACTS_BUILDER, CODE_PRODUCTION_PROCESS, CODE_PRODUCTION_PROCESS_CRITIC_ISOLATION,
    CODE_PRODUCTION_PROCESS_SKIP_RULES, CODE_PRODUCTION_PROCESS_STAGE_ARCHITECT,
    CODE_PRODUCTION_PROCESS_STAGE_CRITIC, CODE_PRODUCTION_PROCESS_STAGE_IMPLEMENT,
    CODE_PRODUCTION_PROCESS_STAGE_RESEARCH, CODE_PRODUCTION_PROCESS_STAGE_SECURITY,
    CODE_PRODUCTION_PROCESS_STAGE_TESTS, INTERNAL_COMMS, MODEL_CONTEXT_BUILDER, XLSX,
};

/// Canonical self-description doc installed to `docs/WHAT-IS-TRUSTY-MPM.md`
/// (DOC-28 R1 — `docs/specs/trusty-mpm-self-awareness.md`).
///
/// Why: no single, stable, canonically-pointed-at answer to "what is
/// trusty-mpm" existed anywhere in the bundled assets, which let a launched
/// session conflate this Rust project with the unrelated Python `claude-mpm`
/// package (the "self-awareness incident"). Source lives under
/// `crates/trusty-mpm/docs/` (ordinary, human-reviewable documentation)
/// rather than `src/assets/` so it reads naturally as a doc while still being
/// embeddable here, exactly like every other bundled artifact.
pub const WHAT_IS_TRUSTY_MPM: &str = include_str!("../../docs/WHAT-IS-TRUSTY-MPM.md");

/// Architecture overview doc installed to `docs/ARCHITECTURE-MEMORY-SESSIONS-SEARCH.md`
/// (issue #2034 — bundled PM-facing reference for shipped design patterns).
///
/// Why: three foundational behaviours (memory over MCP, session↔worktree 1:1
/// model, per-worktree search-index) are now shipped on main but not
/// documented for PM audiences. This doc summarizes each pattern, its
/// trade-offs, and its integration with the others, then cross-references
/// the deeper specs and source code so operators and framework users can
/// understand the design from first principles.
pub const ARCHITECTURE_MEMORY_SESSIONS_SEARCH: &str =
    include_str!("../../docs/ARCHITECTURE-MEMORY-SESSIONS-SEARCH.md");

// --- tm-skills-portfolio epic: the /tm- skill catalog — bundle_tm_skills.rs ---
// Supersedes the Phase 1 (#770) mpm-* guidance skills (formerly
// bundle_skills.rs), which were a mechanical port of claude-mpm's Python
// skill catalog with unadapted tool/path references. Removed entirely.
#[path = "bundle_tm_skills.rs"]
mod tm_skills_inner;
pub use tm_skills_inner::{
    TM_ADR, TM_AGENT_ARCHITECTURE, TM_BUG_REPORTING, TM_CIRCUIT_BREAKER, TM_CLI_OPERATIONS,
    TM_DELEGATION_PATTERNS, TM_DOCTOR, TM_EPIC, TM_EPIC_ANTI_PATTERNS, TM_EPIC_MANUAL_PROCEDURE,
    TM_EPIC_PHASE_TEMPLATE, TM_EPIC_TRACKER_TEMPLATE, TM_GIT_FILE_TRACKING, TM_INIT,
    TM_ISSUES_PRUNE, TM_OVERVIEW, TM_POSTMORTEM, TM_PROSE_STYLE, TM_SECRETS, TM_SESSION_MANAGEMENT,
    TM_SESSION_PAUSE, TM_SESSION_RESUME, TM_SLACK, TM_TEACHING_TEMPLATES, TM_TICKETING,
    TM_TICKETING_REFERENCES_README, TM_TOOL_USAGE_GUIDE, TM_VERIFICATION_PROTOCOLS, TM_WORKFLOW,
    TM_WORKFLOW_REFERENCES_README,
};

// --- tm-capabilities: auto-generated harness capability catalog (issue
// #2913) — generator lives in `crates/trusty-mpm/src/bin/tm/generate/`.
#[path = "bundle_tm_capabilities.rs"]
mod tm_capabilities_inner;
pub use tm_capabilities_inner::{
    TM_CAPABILITIES, TM_CAPABILITIES_AGENTS, TM_CAPABILITIES_CLI, TM_CAPABILITIES_DOCTOR,
    TM_CAPABILITIES_FRAMEWORK, TM_CAPABILITIES_MCP_TOOLS, TM_CAPABILITIES_SKILLS,
    TM_CAPABILITIES_WORKFLOWS,
};

/// Default (professional) Claude Code output style deployed to
/// `~/.claude/output-styles/trusty-mpm.md`.
///
/// Why: launched sessions set `"outputStyle": "trusty-mpm"` in the project
/// `.claude/settings.json`; Claude Code only honours that name if a matching
/// style file exists. Bundling it lets the launch path deploy it directly,
/// outside the framework-root [`ALL`] table (which installs under
/// `~/.trusty-mpm/framework/`, not `~/.claude/`).
pub const OUTPUT_STYLE: &str = include_str!("../assets/output-styles/trusty-mpm.md");

/// Teaching-mode Claude Code output style (id `trusty-mpm-teacher`).
///
/// Why: HR-4 bundles three styles so an operator can pick a communication mode;
/// this variant narrates the orchestration reasoning while keeping the
/// mandatory-delegation floor intact.
pub const OUTPUT_STYLE_TEACHER: &str =
    include_str!("../assets/output-styles/trusty-mpm-teacher.md");

/// Research-mode Claude Code output style (id `trusty-mpm-research`).
///
/// Why: HR-4 bundles three styles; this variant front-loads investigation and
/// demands evidence before any change, again keeping the delegation floor.
pub const OUTPUT_STYLE_RESEARCH: &str =
    include_str!("../assets/output-styles/trusty-mpm-research.md");

/// The default output-style id used when none is configured/selected.
///
/// Why: callers (config resolution, settings writer) need a single source of
/// truth for the professional default so they cannot drift.
/// What: the frontmatter `name:` of [`OUTPUT_STYLE`].
/// Test: `bundle_tests::output_style_registry_default_resolves`.
pub const DEFAULT_OUTPUT_STYLE_ID: &str = "trusty-mpm";

/// One entry in the bundled output-style registry.
///
/// Why: the multi-style launch path (HR-4) must map a configured/selected style
/// id to its bundled content and the file name it deploys to; bundling the id,
/// file name, and content together keeps those three facts from drifting.
/// What: the style id (matching the file's frontmatter `name:`), the file name
/// written under `~/.claude/output-styles/`, and the embedded content.
/// Test: `bundle_tests::output_style_registry_ids_match_frontmatter`.
#[derive(Debug, Clone, Copy)]
pub struct BundledStyle {
    /// Style id — matches the frontmatter `name:` and the `outputStyle` settings
    /// key Claude Code resolves against `~/.claude/output-styles/<file_name>`.
    pub id: &'static str,
    /// File name written under `~/.claude/output-styles/`.
    pub file_name: &'static str,
    /// Embedded Markdown content of the style.
    pub content: &'static str,
}

/// All bundled output styles, default first.
///
/// Why: `deploy_output_style` writes every entry, and the style resolver looks
/// up a configured/selected id against this table; a single ordered slice keeps
/// both behaviours consistent.
/// What: the professional (`trusty-mpm`), teaching (`trusty-mpm-teacher`), and
/// research (`trusty-mpm-research`) styles.
/// Test: `bundle_tests::output_style_registry_has_three_distinct_ids`.
pub const OUTPUT_STYLES: &[BundledStyle] = &[
    BundledStyle {
        id: DEFAULT_OUTPUT_STYLE_ID,
        file_name: "trusty-mpm.md",
        content: OUTPUT_STYLE,
    },
    BundledStyle {
        id: "trusty-mpm-teacher",
        file_name: "trusty-mpm-teacher.md",
        content: OUTPUT_STYLE_TEACHER,
    },
    BundledStyle {
        id: "trusty-mpm-research",
        file_name: "trusty-mpm-research.md",
        content: OUTPUT_STYLE_RESEARCH,
    },
];

// BundledArtifact, InstallPolicy, and ALL are defined in bundle_all.rs.
// They are included here so they can access the constants above via `use super::*`.
#[path = "bundle_all.rs"]
mod all_inner;
pub use all_inner::{ALL, BundledArtifact, InstallPolicy};

#[cfg(test)]
#[path = "bundle_tests.rs"]
mod tests;