Skip to main content

apcore_cli/
lib.rs

1// apcore-cli — Command-line interface for apcore modules
2// Library root: re-exports all public API items.
3// Protocol spec: FE-01 through FE-10, SEC-01 through SEC-04
4
5pub mod approval;
6pub mod cli;
7pub mod config;
8pub mod discovery;
9pub mod fs_discoverer;
10pub mod output;
11pub mod ref_resolver;
12pub mod schema_parser;
13pub mod security;
14pub mod shell;
15
16// Internal sandbox runner — not part of the public API surface, but must be
17// pub so the binary entry point (main.rs) can invoke run_sandbox_subprocess().
18#[doc(hidden)]
19pub mod _sandbox_runner;
20
21// Exit codes as defined in the API contract.
22pub const EXIT_SUCCESS: i32 = 0;
23pub const EXIT_MODULE_EXECUTE_ERROR: i32 = 1;
24pub const EXIT_INVALID_INPUT: i32 = 2;
25pub const EXIT_MODULE_NOT_FOUND: i32 = 44;
26pub const EXIT_SCHEMA_VALIDATION_ERROR: i32 = 45;
27pub const EXIT_APPROVAL_DENIED: i32 = 46;
28pub const EXIT_CONFIG_NOT_FOUND: i32 = 47;
29pub const EXIT_SCHEMA_CIRCULAR_REF: i32 = 48;
30pub const EXIT_ACL_DENIED: i32 = 77;
31pub const EXIT_SIGINT: i32 = 130;
32
33// Re-export primary public types at crate root.
34pub use approval::{check_approval, ApprovalError};
35pub use cli::{
36    build_module_command, collect_input, collect_input_from_reader, set_audit_logger,
37    set_executables, validate_module_id, ModuleExecutor,
38};
39pub use config::ConfigResolver;
40pub use discovery::{
41    cmd_describe, cmd_list, register_discovery_commands, ApCoreRegistryProvider, DiscoveryError,
42    RegistryProvider,
43};
44// Test utilities — available but hidden from docs.
45// Gated behind cfg(test) for unit tests and the test-support feature for
46// integration tests. Excluded from production builds.
47#[cfg(any(test, feature = "test-support"))]
48#[doc(hidden)]
49pub use discovery::{mock_module, MockRegistry};
50pub use fs_discoverer::FsDiscoverer;
51pub use output::{format_exec_result, format_module_detail, format_module_list, resolve_format};
52pub use ref_resolver::resolve_refs;
53pub use schema_parser::{
54    reconvert_enum_values, schema_to_clap_args, BoolFlagPair, SchemaArgs, SchemaParserError,
55};
56pub use security::{AuditLogger, AuthProvider, ConfigEncryptor, Sandbox};
57pub use shell::{
58    build_synopsis, cmd_completion, cmd_man, completion_command, generate_man_page,
59    register_shell_commands, ShellError, KNOWN_BUILTINS,
60};