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, build_module_command_with_limit, collect_input,
37    collect_input_from_reader, set_audit_logger, set_executables, validate_module_id,
38    ModuleExecutor,
39};
40pub use config::ConfigResolver;
41pub use discovery::{
42    cmd_describe, cmd_list, register_discovery_commands, ApCoreRegistryProvider, DiscoveryError,
43    RegistryProvider,
44};
45// Test utilities — available but hidden from docs.
46// Gated behind cfg(test) for unit tests and the test-support feature for
47// integration tests. Excluded from production builds.
48#[cfg(any(test, feature = "test-support"))]
49#[doc(hidden)]
50pub use discovery::{mock_module, MockRegistry};
51pub use fs_discoverer::FsDiscoverer;
52pub use output::{format_exec_result, format_module_detail, format_module_list, resolve_format};
53pub use ref_resolver::resolve_refs;
54pub use schema_parser::{
55    extract_help_with_limit, reconvert_enum_values, schema_to_clap_args,
56    schema_to_clap_args_with_limit, BoolFlagPair, SchemaArgs, SchemaParserError, HELP_TEXT_MAX_LEN,
57};
58pub use security::{AuditLogger, AuthProvider, ConfigEncryptor, Sandbox};
59pub use shell::{
60    build_synopsis, cmd_completion, cmd_man, completion_command, generate_man_page,
61    register_shell_commands, ShellError, KNOWN_BUILTINS,
62};