[INFO] fetching crate this-cli 0.0.4... [INFO] testing this-cli-0.0.4 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate this-cli 0.0.4 into /workspace/builds/worker-5-tc2/source [INFO] started tweaking crates.io crate this-cli 0.0.4 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate this-cli 0.0.4 [INFO] tweaked toml for crates.io crate this-cli 0.0.4 written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate this-cli 0.0.4 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate this-cli 0.0.4 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 77fc7f425f8175bba56a1bbf6c51a48e453d888bcc3a9788284b26fb24960edd [INFO] running `Command { std: "docker" "start" "-a" "77fc7f425f8175bba56a1bbf6c51a48e453d888bcc3a9788284b26fb24960edd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "77fc7f425f8175bba56a1bbf6c51a48e453d888bcc3a9788284b26fb24960edd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "77fc7f425f8175bba56a1bbf6c51a48e453d888bcc3a9788284b26fb24960edd", kill_on_drop: false }` [INFO] [stdout] 77fc7f425f8175bba56a1bbf6c51a48e453d888bcc3a9788284b26fb24960edd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 050fcbf1c8637c704982b236da546be839b95e21b3c766db7ce281353aea321d [INFO] running `Command { std: "docker" "start" "-a" "050fcbf1c8637c704982b236da546be839b95e21b3c766db7ce281353aea321d", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Compiling siphasher v1.0.2 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling phf v0.11.3 [INFO] [stderr] Compiling phf_generator v0.11.3 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling phf_codegen v0.11.3 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling zmij v1.0.19 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling nix v0.31.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling clap_lex v0.7.7 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling clap_builder v4.5.57 [INFO] [stderr] Compiling parse-zoneinfo v0.3.1 [INFO] [stderr] Compiling pest_generator v2.8.6 [INFO] [stderr] Compiling chrono-tz-build v0.3.0 [INFO] [stderr] Compiling chrono-tz v0.9.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling anyhow v1.0.101 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling deunicode v1.6.2 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling humansize v2.1.3 [INFO] [stderr] Compiling pest_derive v2.8.6 [INFO] [stderr] Compiling globwalk v0.9.1 [INFO] [stderr] Compiling slug v0.1.6 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling ryu v1.0.22 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling clap v4.5.57 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling clap_complete v4.5.66 [INFO] [stderr] Compiling ctrlc v3.5.2 [INFO] [stderr] Compiling colored v2.2.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling tera v1.20.1 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling this-cli v0.0.4 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 26s [INFO] running `Command { std: "docker" "inspect" "050fcbf1c8637c704982b236da546be839b95e21b3c766db7ce281353aea321d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "050fcbf1c8637c704982b236da546be839b95e21b3c766db7ce281353aea321d", kill_on_drop: false }` [INFO] [stdout] 050fcbf1c8637c704982b236da546be839b95e21b3c766db7ce281353aea321d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c6d910ff7ce4231bf71d8191823169a5efaf4f9254962e0ff0ea5c516853a2d4 [INFO] running `Command { std: "docker" "start" "-a" "c6d910ff7ce4231bf71d8191823169a5efaf4f9254962e0ff0ea5c516853a2d4", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling sdd v3.0.10 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling serial_test_derive v3.4.0 [INFO] [stderr] Compiling nix v0.31.1 [INFO] [stderr] Compiling globwalk v0.9.1 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling tera v1.20.1 [INFO] [stderr] Compiling scc v2.4.0 [INFO] [stderr] Compiling ctrlc v3.5.2 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling tempfile v3.24.0 [INFO] [stderr] Compiling serial_test v3.4.0 [INFO] [stderr] Compiling this-cli v0.0.4 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 37.19s [INFO] running `Command { std: "docker" "inspect" "c6d910ff7ce4231bf71d8191823169a5efaf4f9254962e0ff0ea5c516853a2d4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c6d910ff7ce4231bf71d8191823169a5efaf4f9254962e0ff0ea5c516853a2d4", kill_on_drop: false }` [INFO] [stdout] c6d910ff7ce4231bf71d8191823169a5efaf4f9254962e0ff0ea5c516853a2d4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] e55dd27d7702851fafc98e6a4ff8a6c27c9c994550b4d16dbdd9d3e96b15da7d [INFO] running `Command { std: "docker" "start" "-a" "e55dd27d7702851fafc98e6a4ff8a6c27c9c994550b4d16dbdd9d3e96b15da7d", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.23s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/this-d1813232bb0fca6a) [INFO] [stdout] [INFO] [stdout] running 520 tests [INFO] [stdout] test codegen::introspect::tests::test_introspect_empty_project ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_entity_model_no_macro ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_entity_model_basic ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_fields ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_links_yaml_empty ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_links_yaml_multiple ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_links_yaml_with_links ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_string_list ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_crud_functions ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_full_file ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_interface_create_excludes_auto_fields ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_interface_full ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_interface_update_all_optional ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_link_function ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_multiple_entities ... ok [INFO] [stdout] test codegen::typescript::tests::test_generate_no_links_section ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_entity_model_validated ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_hashmap ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_json_value ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_option ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_datetime ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_primitives ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_vec ... ok [INFO] [stdout] test codegen::typescript::tests::test_rust_type_to_ts_unknown_passthrough ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_descriptor_basic ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_descriptor_no_plural ... ok [INFO] [stdout] test codegen::introspect::tests::test_parse_entity_model_no_indexed_fields ... ok [INFO] [stdout] test codegen::introspect::tests::test_introspect_no_descriptor ... ok [INFO] [stdout] test codegen::introspect::tests::test_introspect_full_project ... ok [INFO] [stdout] test codegen::introspect::tests::test_introspect_multiple_entities_sorted ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_duplicate_error ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_in_workspace ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_descriptor_content ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_model_content ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_mod_rs_content ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_outside_project_error ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_creates_files ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_lmdb_backend ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_mongodb_backend ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_mysql_backend ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_no_stores_rs ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_postgres_backend ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_reserved_fields_skipped ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_no_links_yaml ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_no_module_rs ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_pascal_case_naming ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_updates_stores ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_updates_links_yaml ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_updates_entities_mod ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_all_types ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_empty ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_with_custom_indexed_fields ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_invalid_format ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_updates_existing_entities_mod ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_optional ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_with_spaces ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_unsupported_type ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_updates_module_rs ... ok [INFO] [stdout] test commands::add_entity::tests::test_parse_fields_valid ... ok [INFO] [stdout] test commands::add_event_flow::tests::test_add_event_flow_missing_events_yaml_errors ... ok [INFO] [stdout] test commands::add_event_flow::tests::test_add_event_flow_custom_trigger ... ok [INFO] [stdout] test commands::add_event_flow::tests::test_add_event_flow_basic ... ok [INFO] [stdout] test commands::add_event_flow::tests::test_add_event_flow_missing_sink_errors ... ok [INFO] [stdout] test commands::add_event_flow::tests::test_add_event_flow_duplicate_errors ... ok [INFO] [stdout] test commands::add_link::tests::test_add_basic_link ... ok [INFO] [stdout] test commands::add_link::tests::test_add_link_with_description ... ok [INFO] [stdout] test commands::add_link::tests::test_add_link_with_custom_names ... ok [INFO] [stdout] test commands::add_link::tests::test_default_description_auto_generated ... ok [INFO] [stdout] test commands::add_link::tests::test_add_duplicate_link_errors ... ok [INFO] [stdout] test commands::add_link::tests::test_default_forward_is_pluralized_target ... ok [INFO] [stdout] test commands::add_link::tests::test_default_link_type_is_has_target ... ok [INFO] [stdout] test commands::add_link::tests::test_entities_auto_created ... ok [INFO] [stdout] test commands::add_link::tests::test_no_validation_rule_flag ... ok [INFO] [stdout] test commands::add_link::tests::test_default_reverse_is_source ... ok [INFO] [stdout] test commands::add_link::tests::test_links_config_serde_roundtrip ... ok [INFO] [stdout] test commands::add_link::tests::test_missing_links_yaml_errors ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_duplicate_errors ... ok [INFO] [stdout] test commands::add_link::tests::test_validation_rule_added_by_default ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_counter ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_missing_events_yaml_errors ... ok [INFO] [stdout] test commands::add_link::tests::test_source_target_normalized_to_snake_case ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_webhook_with_url ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_invalid_type_errors ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_in_app ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_webhook_without_url_errors ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_args_parsing ... ok [INFO] [stdout] test commands::add_sink::tests::test_add_sink_websocket ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_with_fields ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_stores_idempotent ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_with_optional_fields ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_main_rs_content ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_requires_webapp ... ok [INFO] [stdout] test commands::add_entity::tests::test_add_entity_with_validated_flag ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_android_package_json_content ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_creates_files ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_android_creates_files ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_custom_name ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_ios_requires_webapp ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_duplicate_error ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_unsupported_type_error ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_tauri_conf_content ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_desktop_updates_this_yaml ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_ios_creates_files ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_webapp_outside_workspace_error ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_ios_capacitor_config_content ... ok [INFO] [stdout] test commands::build::tests::test_copy_dir_recursive ... ok [INFO] [stdout] test commands::build::tests::test_copy_dir_recursive_empty_dir ... ok [INFO] [stdout] test commands::build::tests::test_copy_dir_recursive_nested_dirs ... ok [INFO] [stdout] test commands::build::tests::test_copy_dir_recursive_overwrites_existing_dst ... ok [INFO] [stdout] test commands::build::tests::test_find_webapp_target_among_multiple_targets ... ok [INFO] [stdout] test commands::build::tests::test_find_webapp_target_found ... ok [INFO] [stdout] test commands::build::tests::test_find_webapp_target_not_found ... ok [INFO] [stdout] test commands::build::tests::test_find_webapp_target_only_native_targets ... ok [INFO] [stdout] test commands::build::tests::test_find_webapp_target_returns_first_webapp ... ok [INFO] [stdout] test commands::build::tests::test_find_webapp_target_website_is_not_webapp ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_both_mobile_coexist ... ok [INFO] [stdout] test commands::build::tests::test_require_webapp_error_includes_flag_name_docker ... ok [INFO] [stdout] test commands::build::tests::test_require_webapp_error_suggests_add_target ... ok [INFO] [stdout] test commands::build::tests::test_require_webapp_with_target ... ok [INFO] [stdout] test commands::build::tests::test_require_webapp_without_target ... ok [INFO] [stdout] test commands::build::tests::test_run_api_build_non_existent_path ... ignored [INFO] [stdout] test commands::build::tests::test_run_build_desktop_missing_scaffold ... ok [INFO] [stdout] test commands::build::tests::test_run_build_desktop_suggests_add_target_on_missing_scaffold ... ok [INFO] [stdout] test commands::build::tests::test_run_build_mobile_android_missing_scaffold ... ok [INFO] [stdout] test commands::build::tests::test_require_webapp_error_includes_flag_name_front_only ... ok [INFO] [stdout] test commands::build::tests::test_run_build_mobile_ios_missing_front_dist ... ok [INFO] [stdout] test commands::build::tests::test_run_build_mobile_missing_scaffold ... ok [INFO] [stdout] test commands::build::tests::test_run_build_mobile_without_webapp_skips_dist_check ... ignored [INFO] [stdout] test commands::add_target::tests::test_add_target_ios_duplicate_error ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_ios_updates_this_yaml ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_webapp_creates_files ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_webapp_custom_name ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_webapp_duplicate_error ... ok [INFO] [stdout] test commands::build::tests::test_run_front_build_missing_front_dir ... ok [INFO] [stdout] test commands::build::tests::test_run_front_build_missing_package_json ... ok [INFO] [stdout] test commands::build::tests::test_run_target_build_all_no_native ... ok [INFO] [stdout] test commands::build::tests::test_run_target_build_all_with_desktop_fails_at_scaffold ... ignored [INFO] [stdout] test commands::build::tests::test_run_target_build_error_lists_configured_targets ... ok [INFO] [stdout] test commands::build::tests::test_run_target_build_unknown_target ... ok [INFO] [stdout] test commands::build::tests::test_run_target_build_webapp_rejected ... ok [INFO] [stdout] test commands::build::tests::test_run_target_build_website_rejected ... ok [INFO] [stdout] test commands::add_target::tests::test_add_target_webapp_updates_this_yaml ... ok [INFO] [stdout] # Print an optspec for argparse to handle cmd's options that are independent of any subcommand. [INFO] [stdout] function __fish_this_global_optspecs [INFO] [stdout] string join \n dry-run h/help V/version [INFO] [stdout] end [INFO] [stdout] [INFO] [stdout] function __fish_this_needs_command [INFO] [stdout] # Figure out if the current invocation already has a command. [INFO] [stdout] set -l cmd (commandline -opc) [INFO] [stdout] set -e cmd[1] [INFO] [stdout] argparse -s (__fish_this_global_optspecs) -- $cmd 2>/dev/null [INFO] [stdout] or return [INFO] [stdout] if set -q argv[1] [INFO] [stdout] # Also print the command, so this can be used to figure out what it is. [INFO] [stdout] echo $argv[1] [INFO] [stdout] return 1 [INFO] [stdout] end [INFO] [stdout] return 0 [INFO] [stdout] end [INFO] [stdout] [INFO] [stdout] function __fish_this_using_subcommand [INFO] [stdout] set -l cmd (__fish_this_needs_command) [INFO] [stdout] test -z "$cmd" [INFO] [stdout] and return 1 [INFO] [stdout] contains -- $cmd[1] $argv [INFO] [stdout] end [INFO] [stdout] [INFO] [stdout] _this() { [INFO] [stdout] local i cur prev opts cmd [INFO] [stdout] COMPREPLY=() [INFO] [stdout] if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then [INFO] [stdout] cur="$2" [INFO] [stdout] else [INFO] [stdout] cur="${COMP_WORDS[COMP_CWORD]}" [INFO] [stdout] fi [INFO] [stdout] prev="$3" [INFO] [stdout] cmd="" [INFO] [stdout] opts="" [INFO] [stdout] [INFO] [stdout] for i in "${COMP_WORDS[@]:0:COMP_CWORD}" [INFO] [stdout] do [INFO] [stdout] case "${cmd},${i}" in [INFO] [stdout] ",$1") [INFO] [stdout] cmd="this" [INFO] [stdout] ;; [INFO] [stdout] this,add) [INFO] [stdout] cmd="this__add" [INFO] [stdout] ;; [INFO] [stdout] this,build) [INFO] [stdout] cmd="this__build" [INFO] [stdout] ;; [INFO] [stdout] this,completions) [INFO] [stdout] cmd="this__completions" [INFO] [stdout] ;; [INFO] [stdout] this,dev) [INFO] [stdout] cmd="this__dev" [INFO] [stdout] ;; [INFO] [stdout] this,doctor) [INFO] [stdout] cmd="this__doctor" [INFO] [stdout] ;; [INFO] [stdout] this,generate) [INFO] [stdout] cmd="this__generate" [INFO] [stdout] ;; [INFO] [stdout] this,help) [INFO] [stdout] cmd="this__help" [INFO] [stdout] ;; [INFO] [stdout] this,info) [INFO] [stdout] cmd="this__info" [INFO] [stdout] ;; [INFO] [stdout] this,init) [INFO] [stdout] cmd="this__init" [INFO] [stdout] ;; [INFO] [stdout] this,mcp) [INFO] [stdout] cmd="this__mcp" [INFO] [stdout] ;; [INFO] [stdout] this__add,entity) [INFO] [stdout] cmd="this__add__entity" [INFO] [stdout] ;; [INFO] [stdout] this__add,event-flow) [INFO] [stdout] cmd="this__add__event__flow" [INFO] [stdout] ;; [INFO] [stdout] this__add,help) [INFO] [stdout] cmd="this__add__help" [INFO] [stdout] ;; [INFO] [stdout] this__add,link) [INFO] [stdout] cmd="this__add__link" [INFO] [stdout] ;; [INFO] [stdout] this__add,sink) [INFO] [stdout] cmd="this__add__sink" [INFO] [stdout] ;; [INFO] [stdout] this__add,target) [INFO] [stdout] cmd="this__add__target" [INFO] [stdout] ;; [INFO] [stdout] this__add__help,entity) [INFO] [stdout] cmd="this__add__help__entity" [INFO] [stdout] ;; [INFO] [stdout] this__add__help,event-flow) [INFO] [stdout] cmd="this__add__help__event__flow" [INFO] [stdout] ;; [INFO] [stdout] this__add__help,help) [INFO] [stdout] cmd="this__add__help__help" [INFO] [stdout] ;; [INFO] [stdout] this__add__help,link) [INFO] [stdout] cmd="this__add__help__link" [INFO] [stdout] ;; [INFO] [stdout] this__add__help,sink) [INFO] [stdout] cmd="this__add__help__sink" [INFO] [stdout] ;; [INFO] [stdout] this__add__help,target) [INFO] [stdout] cmd="this__add__help__target" [INFO] [stdout] ;; [INFO] [stdout] this__generate,client) [INFO] [stdout] cmd="this__generate__client" [INFO] [stdout] ;; [INFO] [stdout] this__generate,help) [INFO] [stdout] cmd="this__generate__help" [INFO] [stdout] ;; [INFO] [stdout] this__generate__help,client) [INFO] [stdout] cmd="this__generate__help__client" [INFO] [stdout] ;; [INFO] [stdout] this__generate__help,help) [INFO] [stdout] cmd="this__generate__help__help" [INFO] [stdout] ;; [INFO] [stdout] this__help,add) [INFO] [stdout] cmd="this__help__add" [INFO] [stdout] ;; [INFO] [stdout] this__help,build) [INFO] [stdout] cmd="this__help__build" [INFO] [stdout] ;; [INFO] [stdout] this__help,completions) [INFO] [stdout] cmd="this__help__completions" [INFO] [stdout] ;; [INFO] [stdout] this__help,dev) [INFO] [stdout] cmd="this__help__dev" [INFO] [stdout] ;; [INFO] [stdout] this__help,doctor) [INFO] [stdout] cmd="this__help__doctor" [INFO] [stdout] ;; [INFO] [stdout] this__help,generate) [INFO] [stdout] cmd="this__help__generate" [INFO] [stdout] ;; [INFO] [stdout] this__help,help) [INFO] [stdout] cmd="this__help__help" [INFO] [stdout] ;; [INFO] [stdout] this__help,info) [INFO] [stdout] cmd="this__help__info" [INFO] [stdout] ;; [INFO] [stdout] this__help,init) [INFO] [stdout] cmd="this__help__init" [INFO] [stdout] ;; [INFO] [stdout] this__help,mcp) [INFO] [stdout] cmd="this__help__mcp" [INFO] [stdout] ;; [INFO] [stdout] this__help__add,entity) [INFO] [stdout] cmd="this__help__add__entity" [INFO] [stdout] ;; [INFO] [stdout] this__help__add,event-flow) [INFO] [stdout] cmd="this__help__add__event__flow" [INFO] [stdout] ;; [INFO] [stdout] this__help__add,link) [INFO] [stdout] cmd="this__help__add__link" [INFO] [stdout] ;; [INFO] [stdout] this__help__add,sink) [INFO] [stdout] cmd="this__help__add__sink" [INFO] [stdout] ;; [INFO] [stdout] this__help__add,target) [INFO] [stdout] cmd="this__help__add__target" [INFO] [stdout] ;; [INFO] [stdout] this__help__generate,client) [INFO] [stdout] cmd="this__help__generate__client" [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] done [INFO] [stdout] [INFO] [stdout] case "${cmd}" in [INFO] [stdout] this) [INFO] [stdout] opts="-h -V --dry-run --help --version init add info build dev generate doctor completions mcp help" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add) [INFO] [stdout] opts="-h -V --dry-run --help --version entity link target event-flow sink help" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__entity) [INFO] [stdout] opts="-h -V --fields --validated --indexed --backend --dry-run --help --version " [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --fields) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --indexed) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --backend) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__event__flow) [INFO] [stdout] opts="-h -V --trigger --sink --dry-run --help --version " [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --trigger) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --sink) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help) [INFO] [stdout] opts="entity link target event-flow sink help" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help__entity) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help__event__flow) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help__help) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help__link) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help__sink) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__help__target) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__link) [INFO] [stdout] opts="-h -V --link-type --forward --reverse --description --no-validation-rule --dry-run --help --version " [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --link-type) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --forward) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --reverse) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --description) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__sink) [INFO] [stdout] opts="-h -V --sink-type --url --dry-run --help --version " [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --sink-type) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --url) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__add__target) [INFO] [stdout] opts="-h -V --framework --name --dry-run --help --version webapp website desktop ios android" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --framework) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --name) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__build) [INFO] [stdout] opts="-h -V --embed --api-only --front-only --docker --release --target --dry-run --help --version" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --target) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__completions) [INFO] [stdout] opts="-h -V --dry-run --help --version bash elvish fish powershell zsh" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__dev) [INFO] [stdout] opts="-h -V --api-only --no-watch --port --dry-run --help --version" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --port) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__doctor) [INFO] [stdout] opts="-h -V --dry-run --help --version" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__generate) [INFO] [stdout] opts="-h -V --dry-run --help --version client help" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__generate__client) [INFO] [stdout] opts="-h -V --lang --output --dry-run --help --version" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --lang) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --output) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__generate__help) [INFO] [stdout] opts="client help" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__generate__help__client) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__generate__help__help) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help) [INFO] [stdout] opts="init add info build dev generate doctor completions mcp help" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__add) [INFO] [stdout] opts="entity link target event-flow sink" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__add__entity) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__add__event__flow) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__add__link) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__add__sink) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__add__target) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__build) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__completions) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__dev) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__doctor) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__generate) [INFO] [stdout] opts="client" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__generate__client) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__help) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__info) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__init) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__help__mcp) [INFO] [stdout] opts="" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__info) [INFO] [stdout] opts="-h -V --dry-run --help --version" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__init) [INFO] [stdout] opts="-h -V --path --no-git --port --this-path --workspace --websocket --grpc --events --dry-run --help --version " [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] --path) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --port) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] --this-path) [INFO] [stdout] COMPREPLY=($(compgen -f "${cur}")) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] this__mcp) [INFO] [stdout] opts="-h -V --dry-run --help --version" [INFO] [stdout] if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] fi [INFO] [stdout] case "${prev}" in [INFO] [stdout] *) [INFO] [stdout] COMPREPLY=() [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) [INFO] [stdout] return 0 [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] } [INFO] [stdout] [INFO] [stdout] if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then [INFO] [stdout] complete -F _this -o nosort -o bashdefault -o default this [INFO] [stdout] else [INFO] [stdout] complete -F _this -o bashdefault -o default this [INFO] [stdout] fi [INFO] [stdout] test commands::completions::tests::test_completions_bash ... ok [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "init" -d 'Create a new this-rs project' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "add" -d 'Add components to an existing this-rs project' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "info" -d 'Show project information and status' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "build" -d 'Build the project (API, frontend, or embedded single binary)' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "dev" -d 'Start development servers (API + frontend in parallel)' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "generate" -d 'Generate code from project introspection (TypeScript API client, etc.)' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "doctor" -d 'Check project health and consistency' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "completions" -d 'Generate shell completions' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "mcp" -d 'Start MCP server on stdio for AI agent integration' [INFO] [stdout] complete -c this -n "__fish_this_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l path -d 'Parent directory (default: current directory)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l port -d 'Default server port' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l this-path -d 'Path to this-rs crate for local development (uses path dependency instead of crates.io)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l no-git -d 'Do not initialize a git repository' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l workspace -d 'Create a workspace layout with this.yaml and api/ subdirectory' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l websocket -d 'Enable WebSocket support (adds websocket feature and WebSocketExposure in main.rs)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l grpc -d 'Enable gRPC support (adds grpc feature and GrpcExposure in main.rs)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l events -d 'Enable event system (EventBus, NotificationStore, SSE streaming, event flows)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand init" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -f -a "entity" -d 'Add a new entity to the project' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -f -a "link" -d 'Add a link between two entity types' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -f -a "target" -d 'Add a deployment target to the workspace (webapp, desktop, mobile)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -f -a "event-flow" -d 'Add an event flow pipeline to config/events.yaml' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -f -a "sink" -d 'Add an event sink (delivery target) to config/events.yaml' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and not __fish_seen_subcommand_from entity link target event-flow sink help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -l fields -d 'Entity fields as "field:Type" pairs, comma-separated Example: --fields "sku:String,price:f64,description:Option"' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -l indexed -d 'Fields to index, comma-separated (default: "name")' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -l backend -d 'Storage backend for the entity store - in-memory: uses InMemoryDataService (default, no external deps) - postgres: uses PostgresDataService (requires --features postgres + PgPool)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -l validated -d 'Use impl_data_entity_validated! with basic validators' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from entity" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -l link-type -d 'Custom link type (default: has_)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -l forward -d 'Forward route name (default: pluralized target)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -l reverse -d 'Reverse route name (default: source)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -l description -d 'Link description' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -l no-validation-rule -d 'Do not add a validation rule' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from link" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from target" -l framework -d 'Frontend framework (for webapp targets)' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from target" -l name -d 'Custom name for the target directory' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from target" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from target" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from target" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from event-flow" -l trigger -d 'Trigger pattern (e.g. "entity.created.*", "entity.updated.order")' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from event-flow" -l sink -d 'Delivery sink name to use in the final deliver step' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from event-flow" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from event-flow" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from event-flow" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from sink" -l sink-type -d 'Sink type: in_app, webhook, push, websocket, counter' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from sink" -l url -d 'URL for webhook sinks' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from sink" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from sink" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from sink" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from help" -f -a "entity" -d 'Add a new entity to the project' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from help" -f -a "link" -d 'Add a link between two entity types' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from help" -f -a "target" -d 'Add a deployment target to the workspace (webapp, desktop, mobile)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from help" -f -a "event-flow" -d 'Add an event flow pipeline to config/events.yaml' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from help" -f -a "sink" -d 'Add an event sink (delivery target) to config/events.yaml' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand add; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand info" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand info" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand info" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l target -d 'Build a specific native target (desktop, ios, android, or "all")' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l embed -d 'Build a single binary with frontend embedded (npm build → copy dist → cargo build --features embedded-frontend)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l api-only -d 'Only build the API (cargo build)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l front-only -d 'Only build the frontend (npm run build)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l docker -d 'Generate an optimized multi-stage Dockerfile' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l release -d 'Build in release mode' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand build" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand dev" -l port -d 'Override the API port from this.yaml' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand dev" -l api-only -d 'Only start the API server (skip frontend dev server)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand dev" -l no-watch -d 'Disable auto-detection of cargo-watch, force plain cargo run' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand dev" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand dev" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand dev" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and not __fish_seen_subcommand_from client help" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and not __fish_seen_subcommand_from client help" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and not __fish_seen_subcommand_from client help" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and not __fish_seen_subcommand_from client help" -f -a "client" -d 'Generate a typed API client from project entities' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and not __fish_seen_subcommand_from client help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from client" -l lang -d 'Target language for the generated client' -r [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from client" -l output -d 'Output file path (default: auto-detected from this.yaml webapp target)' -r -F [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from client" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from client" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from client" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from help" -f -a "client" -d 'Generate a typed API client from project entities' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand generate; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand doctor" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand doctor" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand doctor" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand completions" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand completions" -s h -l help -d 'Print help (see more with \'--help\')' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand completions" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand mcp" -l dry-run -d 'Simulate operations without writing any files' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand mcp" -s h -l help -d 'Print help' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand mcp" -s V -l version -d 'Print version' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "init" -d 'Create a new this-rs project' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "add" -d 'Add components to an existing this-rs project' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "info" -d 'Show project information and status' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "build" -d 'Build the project (API, frontend, or embedded single binary)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "dev" -d 'Start development servers (API + frontend in parallel)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "generate" -d 'Generate code from project introspection (TypeScript API client, etc.)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "doctor" -d 'Check project health and consistency' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "completions" -d 'Generate shell completions' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "mcp" -d 'Start MCP server on stdio for AI agent integration' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and not __fish_seen_subcommand_from init add info build dev generate doctor completions mcp help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and __fish_seen_subcommand_from add" -f -a "entity" -d 'Add a new entity to the project' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and __fish_seen_subcommand_from add" -f -a "link" -d 'Add a link between two entity types' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and __fish_seen_subcommand_from add" -f -a "target" -d 'Add a deployment target to the workspace (webapp, desktop, mobile)' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and __fish_seen_subcommand_from add" -f -a "event-flow" -d 'Add an event flow pipeline to config/events.yaml' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and __fish_seen_subcommand_from add" -f -a "sink" -d 'Add an event sink (delivery target) to config/events.yaml' [INFO] [stdout] complete -c this -n "__fish_this_using_subcommand help; and __fish_seen_subcommand_from generate" -f -a "client" -d 'Generate a typed API client from project entities' [INFO] [stdout] test commands::completions::tests::test_completions_fish ... ok [INFO] [stdout] [INFO] [stdout] using namespace System.Management.Automation [INFO] [stdout] using namespace System.Management.Automation.Language [INFO] [stdout] [INFO] [stdout] Register-ArgumentCompleter -Native -CommandName 'this' -ScriptBlock { [INFO] [stdout] param($wordToComplete, $commandAst, $cursorPosition) [INFO] [stdout] [INFO] [stdout] $commandElements = $commandAst.CommandElements [INFO] [stdout] $command = @( [INFO] [stdout] 'this' [INFO] [stdout] for ($i = 1; $i -lt $commandElements.Count; $i++) { [INFO] [stdout] $element = $commandElements[$i] [INFO] [stdout] if ($element -isnot [StringConstantExpressionAst] -or [INFO] [stdout] $element.StringConstantType -ne [StringConstantType]::BareWord -or [INFO] [stdout] $element.Value.StartsWith('-') -or [INFO] [stdout] $element.Value -eq $wordToComplete) { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] $element.Value [INFO] [stdout] }) -join ';' [INFO] [stdout] [INFO] [stdout] $completions = @(switch ($command) { [INFO] [stdout] 'this' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('init', 'init', [CompletionResultType]::ParameterValue, 'Create a new this-rs project') [INFO] [stdout] [CompletionResult]::new('add', 'add', [CompletionResultType]::ParameterValue, 'Add components to an existing this-rs project') [INFO] [stdout] [CompletionResult]::new('info', 'info', [CompletionResultType]::ParameterValue, 'Show project information and status') [INFO] [stdout] [CompletionResult]::new('build', 'build', [CompletionResultType]::ParameterValue, 'Build the project (API, frontend, or embedded single binary)') [INFO] [stdout] [CompletionResult]::new('dev', 'dev', [CompletionResultType]::ParameterValue, 'Start development servers (API + frontend in parallel)') [INFO] [stdout] [CompletionResult]::new('generate', 'generate', [CompletionResultType]::ParameterValue, 'Generate code from project introspection (TypeScript API client, etc.)') [INFO] [stdout] [CompletionResult]::new('doctor', 'doctor', [CompletionResultType]::ParameterValue, 'Check project health and consistency') [INFO] [stdout] [CompletionResult]::new('completions', 'completions', [CompletionResultType]::ParameterValue, 'Generate shell completions') [INFO] [stdout] [CompletionResult]::new('mcp', 'mcp', [CompletionResultType]::ParameterValue, 'Start MCP server on stdio for AI agent integration') [INFO] [stdout] [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;init' { [INFO] [stdout] [CompletionResult]::new('--path', '--path', [CompletionResultType]::ParameterName, 'Parent directory (default: current directory)') [INFO] [stdout] [CompletionResult]::new('--port', '--port', [CompletionResultType]::ParameterName, 'Default server port') [INFO] [stdout] [CompletionResult]::new('--this-path', '--this-path', [CompletionResultType]::ParameterName, 'Path to this-rs crate for local development (uses path dependency instead of crates.io)') [INFO] [stdout] [CompletionResult]::new('--no-git', '--no-git', [CompletionResultType]::ParameterName, 'Do not initialize a git repository') [INFO] [stdout] [CompletionResult]::new('--workspace', '--workspace', [CompletionResultType]::ParameterName, 'Create a workspace layout with this.yaml and api/ subdirectory') [INFO] [stdout] [CompletionResult]::new('--websocket', '--websocket', [CompletionResultType]::ParameterName, 'Enable WebSocket support (adds websocket feature and WebSocketExposure in main.rs)') [INFO] [stdout] [CompletionResult]::new('--grpc', '--grpc', [CompletionResultType]::ParameterName, 'Enable gRPC support (adds grpc feature and GrpcExposure in main.rs)') [INFO] [stdout] [CompletionResult]::new('--events', '--events', [CompletionResultType]::ParameterName, 'Enable event system (EventBus, NotificationStore, SSE streaming, event flows)') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('entity', 'entity', [CompletionResultType]::ParameterValue, 'Add a new entity to the project') [INFO] [stdout] [CompletionResult]::new('link', 'link', [CompletionResultType]::ParameterValue, 'Add a link between two entity types') [INFO] [stdout] [CompletionResult]::new('target', 'target', [CompletionResultType]::ParameterValue, 'Add a deployment target to the workspace (webapp, desktop, mobile)') [INFO] [stdout] [CompletionResult]::new('event-flow', 'event-flow', [CompletionResultType]::ParameterValue, 'Add an event flow pipeline to config/events.yaml') [INFO] [stdout] [CompletionResult]::new('sink', 'sink', [CompletionResultType]::ParameterValue, 'Add an event sink (delivery target) to config/events.yaml') [INFO] [stdout] [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;entity' { [INFO] [stdout] [CompletionResult]::new('--fields', '--fields', [CompletionResultType]::ParameterName, 'Entity fields as "field:Type" pairs, comma-separated Example: --fields "sku:String,price:f64,description:Option"') [INFO] [stdout] [CompletionResult]::new('--indexed', '--indexed', [CompletionResultType]::ParameterName, 'Fields to index, comma-separated (default: "name")') [INFO] [stdout] [CompletionResult]::new('--backend', '--backend', [CompletionResultType]::ParameterName, 'Storage backend for the entity store - in-memory: uses InMemoryDataService (default, no external deps) - postgres: uses PostgresDataService (requires --features postgres + PgPool)') [INFO] [stdout] [CompletionResult]::new('--validated', '--validated', [CompletionResultType]::ParameterName, 'Use impl_data_entity_validated! with basic validators') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;link' { [INFO] [stdout] [CompletionResult]::new('--link-type', '--link-type', [CompletionResultType]::ParameterName, 'Custom link type (default: has_)') [INFO] [stdout] [CompletionResult]::new('--forward', '--forward', [CompletionResultType]::ParameterName, 'Forward route name (default: pluralized target)') [INFO] [stdout] [CompletionResult]::new('--reverse', '--reverse', [CompletionResultType]::ParameterName, 'Reverse route name (default: source)') [INFO] [stdout] [CompletionResult]::new('--description', '--description', [CompletionResultType]::ParameterName, 'Link description') [INFO] [stdout] [CompletionResult]::new('--no-validation-rule', '--no-validation-rule', [CompletionResultType]::ParameterName, 'Do not add a validation rule') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;target' { [INFO] [stdout] [CompletionResult]::new('--framework', '--framework', [CompletionResultType]::ParameterName, 'Frontend framework (for webapp targets)') [INFO] [stdout] [CompletionResult]::new('--name', '--name', [CompletionResultType]::ParameterName, 'Custom name for the target directory') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;event-flow' { [INFO] [stdout] [CompletionResult]::new('--trigger', '--trigger', [CompletionResultType]::ParameterName, 'Trigger pattern (e.g. "entity.created.*", "entity.updated.order")') [INFO] [stdout] [CompletionResult]::new('--sink', '--sink', [CompletionResultType]::ParameterName, 'Delivery sink name to use in the final deliver step') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;sink' { [INFO] [stdout] [CompletionResult]::new('--sink-type', '--sink-type', [CompletionResultType]::ParameterName, 'Sink type: in_app, webhook, push, websocket, counter') [INFO] [stdout] [CompletionResult]::new('--url', '--url', [CompletionResultType]::ParameterName, 'URL for webhook sinks') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help' { [INFO] [stdout] [CompletionResult]::new('entity', 'entity', [CompletionResultType]::ParameterValue, 'Add a new entity to the project') [INFO] [stdout] [CompletionResult]::new('link', 'link', [CompletionResultType]::ParameterValue, 'Add a link between two entity types') [INFO] [stdout] [CompletionResult]::new('target', 'target', [CompletionResultType]::ParameterValue, 'Add a deployment target to the workspace (webapp, desktop, mobile)') [INFO] [stdout] [CompletionResult]::new('event-flow', 'event-flow', [CompletionResultType]::ParameterValue, 'Add an event flow pipeline to config/events.yaml') [INFO] [stdout] [CompletionResult]::new('sink', 'sink', [CompletionResultType]::ParameterValue, 'Add an event sink (delivery target) to config/events.yaml') [INFO] [stdout] [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help;entity' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help;link' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help;target' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help;event-flow' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help;sink' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;add;help;help' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;info' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;build' { [INFO] [stdout] [CompletionResult]::new('--target', '--target', [CompletionResultType]::ParameterName, 'Build a specific native target (desktop, ios, android, or "all")') [INFO] [stdout] [CompletionResult]::new('--embed', '--embed', [CompletionResultType]::ParameterName, 'Build a single binary with frontend embedded (npm build → copy dist → cargo build --features embedded-frontend)') [INFO] [stdout] [CompletionResult]::new('--api-only', '--api-only', [CompletionResultType]::ParameterName, 'Only build the API (cargo build)') [INFO] [stdout] [CompletionResult]::new('--front-only', '--front-only', [CompletionResultType]::ParameterName, 'Only build the frontend (npm run build)') [INFO] [stdout] [CompletionResult]::new('--docker', '--docker', [CompletionResultType]::ParameterName, 'Generate an optimized multi-stage Dockerfile') [INFO] [stdout] [CompletionResult]::new('--release', '--release', [CompletionResultType]::ParameterName, 'Build in release mode') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;dev' { [INFO] [stdout] [CompletionResult]::new('--port', '--port', [CompletionResultType]::ParameterName, 'Override the API port from this.yaml') [INFO] [stdout] [CompletionResult]::new('--api-only', '--api-only', [CompletionResultType]::ParameterName, 'Only start the API server (skip frontend dev server)') [INFO] [stdout] [CompletionResult]::new('--no-watch', '--no-watch', [CompletionResultType]::ParameterName, 'Disable auto-detection of cargo-watch, force plain cargo run') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;generate' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('client', 'client', [CompletionResultType]::ParameterValue, 'Generate a typed API client from project entities') [INFO] [stdout] [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;generate;client' { [INFO] [stdout] [CompletionResult]::new('--lang', '--lang', [CompletionResultType]::ParameterName, 'Target language for the generated client') [INFO] [stdout] [CompletionResult]::new('--output', '--output', [CompletionResultType]::ParameterName, 'Output file path (default: auto-detected from this.yaml webapp target)') [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;generate;help' { [INFO] [stdout] [CompletionResult]::new('client', 'client', [CompletionResultType]::ParameterValue, 'Generate a typed API client from project entities') [INFO] [stdout] [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;generate;help;client' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;generate;help;help' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;doctor' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;completions' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help (see more with ''--help'')') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;mcp' { [INFO] [stdout] [CompletionResult]::new('--dry-run', '--dry-run', [CompletionResultType]::ParameterName, 'Simulate operations without writing any files') [INFO] [stdout] [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') [INFO] [stdout] [CompletionResult]::new('-V', '-V ', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] [CompletionResult]::new('--version', '--version', [CompletionResultType]::ParameterName, 'Print version') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help' { [INFO] [stdout] [CompletionResult]::new('init', 'init', [CompletionResultType]::ParameterValue, 'Create a new this-rs project') [INFO] [stdout] [CompletionResult]::new('add', 'add', [CompletionResultType]::ParameterValue, 'Add components to an existing this-rs project') [INFO] [stdout] [CompletionResult]::new('info', 'info', [CompletionResultType]::ParameterValue, 'Show project information and status') [INFO] [stdout] [CompletionResult]::new('build', 'build', [CompletionResultType]::ParameterValue, 'Build the project (API, frontend, or embedded single binary)') [INFO] [stdout] [CompletionResult]::new('dev', 'dev', [CompletionResultType]::ParameterValue, 'Start development servers (API + frontend in parallel)') [INFO] [stdout] [CompletionResult]::new('generate', 'generate', [CompletionResultType]::ParameterValue, 'Generate code from project introspection (TypeScript API client, etc.)') [INFO] [stdout] [CompletionResult]::new('doctor', 'doctor', [CompletionResultType]::ParameterValue, 'Check project health and consistency') [INFO] [stdout] [CompletionResult]::new('completions', 'completions', [CompletionResultType]::ParameterValue, 'Generate shell completions') [INFO] [stdout] [CompletionResult]::new('mcp', 'mcp', [CompletionResultType]::ParameterValue, 'Start MCP server on stdio for AI agent integration') [INFO] [stdout] [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;init' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;add' { [INFO] [stdout] [CompletionResult]::new('entity', 'entity', [CompletionResultType]::ParameterValue, 'Add a new entity to the project') [INFO] [stdout] [CompletionResult]::new('link', 'link', [CompletionResultType]::ParameterValue, 'Add a link between two entity types') [INFO] [stdout] [CompletionResult]::new('target', 'target', [CompletionResultType]::ParameterValue, 'Add a deployment target to the workspace (webapp, desktop, mobile)') [INFO] [stdout] [CompletionResult]::new('event-flow', 'event-flow', [CompletionResultType]::ParameterValue, 'Add an event flow pipeline to config/events.yaml') [INFO] [stdout] [CompletionResult]::new('sink', 'sink', [CompletionResultType]::ParameterValue, 'Add an event sink (delivery target) to config/events.yaml') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;add;entity' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;add;link' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;add;target' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;add;event-flow' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;add;sink' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;info' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;build' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;dev' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;generate' { [INFO] [stdout] [CompletionResult]::new('client', 'client', [CompletionResultType]::ParameterValue, 'Generate a typed API client from project entities') [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;generate;client' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;doctor' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;completions' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;mcp' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] 'this;help;help' { [INFO] [stdout] break [INFO] [stdout] } [INFO] [stdout] }) [INFO] [stdout] [INFO] [stdout] $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | [INFO] [stdout] Sort-Object -Property ListItemText [INFO] [stdout] } [INFO] [stdout] test commands::completions::tests::test_completions_powershell ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_bacon ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_bacon_args ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_bacon_sets_port_env ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_cargo_watch ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_cargo_watch_sets_current_dir ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_cargo_watch_sets_port_env ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_different_ports ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_no_watcher ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_no_watcher_sets_current_dir ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_no_watcher_sets_port_env ... ok [INFO] [stdout] #compdef this [INFO] [stdout] [INFO] [stdout] autoload -U is-at-least [INFO] [stdout] [INFO] [stdout] _this() { [INFO] [stdout] typeset -A opt_args [INFO] [stdout] typeset -a _arguments_options [INFO] [stdout] local ret=1 [INFO] [stdout] [INFO] [stdout] if is-at-least 5.2; then [INFO] [stdout] _arguments_options=(-s -S -C) [INFO] [stdout] else [INFO] [stdout] _arguments_options=(-s -C) [INFO] [stdout] fi [INFO] [stdout] [INFO] [stdout] local context curcontext="$curcontext" state line [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ":: :_this_commands" \ [INFO] [stdout] "*::: :->this" \ [INFO] [stdout] && ret=0 [INFO] [stdout] case $state in [INFO] [stdout] (this) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (init) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--path=[Parent directory (default\: current directory)]:PATH:_default' \ [INFO] [stdout] '--port=[Default server port]:PORT:_default' \ [INFO] [stdout] '--this-path=[Path to this-rs crate for local development (uses path dependency instead of crates.io)]:THIS_PATH:_default' \ [INFO] [stdout] '--no-git[Do not initialize a git repository]' \ [INFO] [stdout] '--workspace[Create a workspace layout with this.yaml and api/ subdirectory]' \ [INFO] [stdout] '--websocket[Enable WebSocket support (adds websocket feature and WebSocketExposure in main.rs)]' \ [INFO] [stdout] '--grpc[Enable gRPC support (adds grpc feature and GrpcExposure in main.rs)]' \ [INFO] [stdout] '--events[Enable event system (EventBus, NotificationStore, SSE streaming, event flows)]' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':name -- Name of the project to create:_default' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (add) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ":: :_this__add_commands" \ [INFO] [stdout] "*::: :->add" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (add) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-add-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (entity) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--fields=[Entity fields as "field\:Type" pairs, comma-separated Example\: --fields "sku\:String,price\:f64,description\:Option"]:FIELDS:_default' \ [INFO] [stdout] '--indexed=[Fields to index, comma-separated (default\: "name")]:INDEXED:_default' \ [INFO] [stdout] '--backend=[Storage backend for the entity store - in-memory\: uses InMemoryDataService (default, no external deps) - postgres\: uses PostgresDataService (requires --features postgres + PgPool)]:BACKEND:_default' \ [INFO] [stdout] '--validated[Use impl_data_entity_validated! with basic validators]' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':name -- Entity name (singular, snake_case, e.g. "product"):_default' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (link) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--link-type=[Custom link type (default\: has_)]:LINK_TYPE:_default' \ [INFO] [stdout] '--forward=[Forward route name (default\: pluralized target)]:FORWARD:_default' \ [INFO] [stdout] '--reverse=[Reverse route name (default\: source)]:REVERSE:_default' \ [INFO] [stdout] '--description=[Link description]:DESCRIPTION:_default' \ [INFO] [stdout] '--no-validation-rule[Do not add a validation rule]' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':source -- Source entity type (e.g. "order"):_default' \ [INFO] [stdout] ':target -- Target entity type (e.g. "invoice"):_default' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (target) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--framework=[Frontend framework (for webapp targets)]:FRAMEWORK:_default' \ [INFO] [stdout] '--name=[Custom name for the target directory]:NAME:_default' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':target_type -- Target type to add:(webapp website desktop ios android)' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (event-flow) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--trigger=[Trigger pattern (e.g. "entity.created.*", "entity.updated.order")]:TRIGGER:_default' \ [INFO] [stdout] '--sink=[Delivery sink name to use in the final deliver step]:SINK:_default' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':name -- Event flow name (e.g. "notify-on-create"):_default' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (sink) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--sink-type=[Sink type\: in_app, webhook, push, websocket, counter]:TYPE:_default' \ [INFO] [stdout] '--url=[URL for webhook sinks]:URL:_default' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':name -- Sink name (e.g. "my-webhook"):_default' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (help) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] ":: :_this__add__help_commands" \ [INFO] [stdout] "*::: :->help" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (help) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-add-help-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (entity) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (link) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (target) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (event-flow) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (sink) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (help) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] (info) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (build) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--target=[Build a specific native target (desktop, ios, android, or "all")]:TARGET:_default' \ [INFO] [stdout] '--embed[Build a single binary with frontend embedded (npm build → copy dist → cargo build --features embedded-frontend)]' \ [INFO] [stdout] '--api-only[Only build the API (cargo build)]' \ [INFO] [stdout] '--front-only[Only build the frontend (npm run build)]' \ [INFO] [stdout] '--docker[Generate an optimized multi-stage Dockerfile]' \ [INFO] [stdout] '--release[Build in release mode]' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (dev) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--port=[Override the API port from this.yaml]:PORT:_default' \ [INFO] [stdout] '--api-only[Only start the API server (skip frontend dev server)]' \ [INFO] [stdout] '--no-watch[Disable auto-detection of cargo-watch, force plain cargo run]' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (generate) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ":: :_this__generate_commands" \ [INFO] [stdout] "*::: :->generate" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (generate) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-generate-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (client) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--lang=[Target language for the generated client]:LANG:_default' \ [INFO] [stdout] '--output=[Output file path (default\: auto-detected from this.yaml webapp target)]:OUTPUT:_files' \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (help) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] ":: :_this__generate__help_commands" \ [INFO] [stdout] "*::: :->help" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (help) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-generate-help-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (client) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (help) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] (doctor) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (completions) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help (see more with '\''--help'\'')]' \ [INFO] [stdout] '--help[Print help (see more with '\''--help'\'')]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] ':shell -- Shell to generate completions for:(bash elvish fish powershell zsh)' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (mcp) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] '--dry-run[Simulate operations without writing any files]' \ [INFO] [stdout] '-h[Print help]' \ [INFO] [stdout] '--help[Print help]' \ [INFO] [stdout] '-V[Print version]' \ [INFO] [stdout] '--version[Print version]' \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (help) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] ":: :_this__help_commands" \ [INFO] [stdout] "*::: :->help" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (help) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-help-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (init) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (add) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] ":: :_this__help__add_commands" \ [INFO] [stdout] "*::: :->add" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (add) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-help-add-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (entity) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (link) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (target) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (event-flow) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (sink) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] (info) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (build) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (dev) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (generate) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] ":: :_this__help__generate_commands" \ [INFO] [stdout] "*::: :->generate" \ [INFO] [stdout] && ret=0 [INFO] [stdout] [INFO] [stdout] case $state in [INFO] [stdout] (generate) [INFO] [stdout] words=($line[1] "${words[@]}") [INFO] [stdout] (( CURRENT += 1 )) [INFO] [stdout] curcontext="${curcontext%:*:*}:this-help-generate-command-$line[1]:" [INFO] [stdout] case $line[1] in [INFO] [stdout] (client) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] (doctor) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (completions) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (mcp) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] (help) [INFO] [stdout] _arguments "${_arguments_options[@]}" : \ [INFO] [stdout] && ret=0 [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] ;; [INFO] [stdout] esac [INFO] [stdout] } [INFO] [stdout] [INFO] [stdout] (( $+functions[_this_commands] )) || [INFO] [stdout] _this_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'init:Create a new this-rs project' \ [INFO] [stdout] 'add:Add components to an existing this-rs project' \ [INFO] [stdout] 'info:Show project information and status' \ [INFO] [stdout] 'build:Build the project (API, frontend, or embedded single binary)' \ [INFO] [stdout] 'dev:Start development servers (API + frontend in parallel)' \ [INFO] [stdout] 'generate:Generate code from project introspection (TypeScript API client, etc.)' \ [INFO] [stdout] 'doctor:Check project health and consistency' \ [INFO] [stdout] 'completions:Generate shell completions' \ [INFO] [stdout] 'mcp:Start MCP server on stdio for AI agent integration' \ [INFO] [stdout] 'help:Print this message or the help of the given subcommand(s)' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add_commands] )) || [INFO] [stdout] _this__add_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'entity:Add a new entity to the project' \ [INFO] [stdout] 'link:Add a link between two entity types' \ [INFO] [stdout] 'target:Add a deployment target to the workspace (webapp, desktop, mobile)' \ [INFO] [stdout] 'event-flow:Add an event flow pipeline to config/events.yaml' \ [INFO] [stdout] 'sink:Add an event sink (delivery target) to config/events.yaml' \ [INFO] [stdout] 'help:Print this message or the help of the given subcommand(s)' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this add commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__entity_commands] )) || [INFO] [stdout] _this__add__entity_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add entity commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__event-flow_commands] )) || [INFO] [stdout] _this__add__event-flow_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add event-flow commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help_commands] )) || [INFO] [stdout] _this__add__help_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'entity:Add a new entity to the project' \ [INFO] [stdout] 'link:Add a link between two entity types' \ [INFO] [stdout] 'target:Add a deployment target to the workspace (webapp, desktop, mobile)' \ [INFO] [stdout] 'event-flow:Add an event flow pipeline to config/events.yaml' \ [INFO] [stdout] 'sink:Add an event sink (delivery target) to config/events.yaml' \ [INFO] [stdout] 'help:Print this message or the help of the given subcommand(s)' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this add help commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help__entity_commands] )) || [INFO] [stdout] _this__add__help__entity_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add help entity commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help__event-flow_commands] )) || [INFO] [stdout] _this__add__help__event-flow_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add help event-flow commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help__help_commands] )) || [INFO] [stdout] _this__add__help__help_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add help help commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help__link_commands] )) || [INFO] [stdout] _this__add__help__link_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add help link commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help__sink_commands] )) || [INFO] [stdout] _this__add__help__sink_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add help sink commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__help__target_commands] )) || [INFO] [stdout] _this__add__help__target_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add help target commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__link_commands] )) || [INFO] [stdout] _this__add__link_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add link commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__sink_commands] )) || [INFO] [stdout] _this__add__sink_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add sink commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__add__target_commands] )) || [INFO] [stdout] _this__add__target_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this add target commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__build_commands] )) || [INFO] [stdout] _this__build_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this build commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__completions_commands] )) || [INFO] [stdout] _this__completions_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this completions commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__dev_commands] )) || [INFO] [stdout] _this__dev_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this dev commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__doctor_commands] )) || [INFO] [stdout] _this__doctor_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this doctor commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__generate_commands] )) || [INFO] [stdout] _this__generate_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'client:Generate a typed API client from project entities' \ [INFO] [stdout] 'help:Print this message or the help of the given subcommand(s)' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this generate commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__generate__client_commands] )) || [INFO] [stdout] _this__generate__client_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this generate client commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__generate__help_commands] )) || [INFO] [stdout] _this__generate__help_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'client:Generate a typed API client from project entities' \ [INFO] [stdout] 'help:Print this message or the help of the given subcommand(s)' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this generate help commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__generate__help__client_commands] )) || [INFO] [stdout] _this__generate__help__client_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this generate help client commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__generate__help__help_commands] )) || [INFO] [stdout] _this__generate__help__help_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this generate help help commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help_commands] )) || [INFO] [stdout] _this__help_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'init:Create a new this-rs project' \ [INFO] [stdout] 'add:Add components to an existing this-rs project' \ [INFO] [stdout] 'info:Show project information and status' \ [INFO] [stdout] 'build:Build the project (API, frontend, or embedded single binary)' \ [INFO] [stdout] 'dev:Start development servers (API + frontend in parallel)' \ [INFO] [stdout] 'generate:Generate code from project introspection (TypeScript API client, etc.)' \ [INFO] [stdout] 'doctor:Check project health and consistency' \ [INFO] [stdout] 'completions:Generate shell completions' \ [INFO] [stdout] 'mcp:Start MCP server on stdio for AI agent integration' \ [INFO] [stdout] 'help:Print this message or the help of the given subcommand(s)' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this help commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__add_commands] )) || [INFO] [stdout] _this__help__add_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'entity:Add a new entity to the project' \ [INFO] [stdout] 'link:Add a link between two entity types' \ [INFO] [stdout] 'target:Add a deployment target to the workspace (webapp, desktop, mobile)' \ [INFO] [stdout] 'event-flow:Add an event flow pipeline to config/events.yaml' \ [INFO] [stdout] 'sink:Add an event sink (delivery target) to config/events.yaml' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this help add commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__add__entity_commands] )) || [INFO] [stdout] _this__help__add__entity_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help add entity commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__add__event-flow_commands] )) || [INFO] [stdout] _this__help__add__event-flow_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help add event-flow commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__add__link_commands] )) || [INFO] [stdout] _this__help__add__link_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help add link commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__add__sink_commands] )) || [INFO] [stdout] _this__help__add__sink_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help add sink commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__add__target_commands] )) || [INFO] [stdout] _this__help__add__target_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help add target commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__build_commands] )) || [INFO] [stdout] _this__help__build_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help build commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__completions_commands] )) || [INFO] [stdout] _this__help__completions_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help completions commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__dev_commands] )) || [INFO] [stdout] _this__help__dev_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help dev commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__doctor_commands] )) || [INFO] [stdout] _this__help__doctor_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help doctor commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__generate_commands] )) || [INFO] [stdout] _this__help__generate_commands() { [INFO] [stdout] local commands; commands=( [INFO] [stdout] 'client:Generate a typed API client from project entities' \ [INFO] [stdout] ) [INFO] [stdout] _describe -t commands 'this help generate commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__generate__client_commands] )) || [INFO] [stdout] _this__help__generate__client_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help generate client commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__help_commands] )) || [INFO] [stdout] _this__help__help_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help help commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__info_commands] )) || [INFO] [stdout] _this__help__info_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help info commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__init_commands] )) || [INFO] [stdout] _this__help__init_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help init commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__help__mcp_commands] )) || [INFO] [stdout] _this__help__mcp_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this help mcp commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__info_commands] )) || [INFO] [stdout] _this__info_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this info commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__init_commands] )) || [INFO] [stdout] _this__init_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this init commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] (( $+functions[_this__mcp_commands] )) || [INFO] [stdout] _this__mcp_commands() { [INFO] [stdout] local commands; commands=() [INFO] [stdout] _describe -t commands 'this mcp commands' commands "$@" [INFO] [stdout] } [INFO] [stdout] [INFO] [stdout] if [ "$funcstack[1]" = "_this" ]; then [INFO] [stdout] _this "$@" [INFO] [stdout] else [INFO] [stdout] compdef _this this [INFO] [stdout] fi [INFO] [stdout] test commands::completions::tests::test_completions_zsh ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_watchexec_args ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_watchexec_sets_port_env ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_all_features ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_entity_pluralization ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_graphql_only_with_entity ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_grpc_only ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_no_entities_fallback ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_no_entities_graphql_grpc_ws ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_no_entities_no_features ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_order_is_rest_gql_grpc_ws ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_rest_always_first ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_rest_only ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_uses_correct_port ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_uses_first_entity_only ... ok [INFO] [stdout] test commands::dev::tests::test_build_usage_examples_websocket_only ... ok [INFO] [stdout] test commands::dev::tests::test_color_clone_copy ... ok [INFO] [stdout] test commands::dev::tests::test_detect_rust_watcher_label_not_empty ... ok [INFO] [stdout] test commands::dev::tests::test_detect_rust_watcher_result_is_valid_variant ... ok [INFO] [stdout] test commands::dev::tests::test_detect_rust_watcher_returns_variant ... ok [INFO] [stdout] test commands::dev::tests::test_print_banner_all_watchers ... ok [INFO] [stdout] test commands::dev::tests::test_print_banner_api_only_ignores_webapp ... ok [INFO] [stdout] test commands::dev::tests::test_print_banner_no_watcher_no_webapp ... ok [INFO] [stdout] test commands::dev::tests::test_print_banner_with_watcher_and_webapp ... ok [INFO] [stdout] test commands::dev::tests::test_rust_watcher_debug ... ok [INFO] [stdout] test commands::dev::tests::test_rust_watcher_labels ... ok [INFO] [stdout] test commands::dev::tests::test_rust_watcher_partial_eq ... ok [INFO] [stdout] test commands::dev::tests::test_stream_prefixed_empty_input ... ok [INFO] [stdout] test commands::dev::tests::test_stream_prefixed_reads_all_lines ... ok [INFO] [stdout] test commands::dev::tests::test_stream_prefixed_stops_on_flag ... ok [INFO] [stdout] test commands::dev::tests::test_build_api_command_watchexec ... ok [INFO] [stdout] test commands::doctor::tests::test_check_cargo_toml_invalid_toml ... ok [INFO] [stdout] test commands::doctor::tests::test_check_cargo_toml_missing_file ... ok [INFO] [stdout] test commands::doctor::tests::test_check_cargo_toml_no_deps_section ... ok [INFO] [stdout] test commands::doctor::tests::test_check_cargo_toml_with_path_dep ... ok [INFO] [stdout] test commands::doctor::tests::test_check_cargo_toml_with_this ... ok [INFO] [stdout] test commands::doctor::tests::test_check_cargo_toml_without_this ... ok [INFO] [stdout] test commands::doctor::tests::test_check_entities_all_declared ... ok [INFO] [stdout] test commands::doctor::tests::test_check_entities_multiple_orphans ... ok [INFO] [stdout] test commands::doctor::tests::test_check_entities_no_dir ... ok [INFO] [stdout] test commands::doctor::tests::test_check_entities_missing_dir_in_mod_rs ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_empty_sinks ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_invalid_yaml ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_multiple_flows_mixed ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_no_config_no_event_bus ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_no_config_with_event_bus ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_unknown_sink_reference ... ok [INFO] [stdout] test commands::doctor::tests::test_check_events_valid_config ... ok [INFO] [stdout] test commands::doctor::tests::test_check_grpc_enabled_and_configured ... ok [INFO] [stdout] test commands::doctor::tests::test_check_entities_orphan ... ok [INFO] [stdout] test commands::doctor::tests::test_check_grpc_enabled_but_not_configured ... ok [INFO] [stdout] test commands::doctor::tests::test_check_grpc_not_enabled ... ok [INFO] [stdout] test commands::doctor::tests::test_check_grpc_enabled_but_no_main_rs ... ok [INFO] [stdout] test commands::doctor::tests::test_check_links_empty_links ... ok [INFO] [stdout] test commands::doctor::tests::test_check_links_invalid_yaml_syntax ... ok [INFO] [stdout] test commands::doctor::tests::test_check_links_invalid_entity ... ok [INFO] [stdout] test commands::doctor::tests::test_check_links_no_file ... ok [INFO] [stdout] test commands::doctor::tests::test_check_links_valid_with_known_entities ... ok [INFO] [stdout] test commands::doctor::tests::test_check_links_valid_with_yaml_entities ... ok [INFO] [stdout] test commands::doctor::tests::test_check_module_registration_all_registered_with_marker ... ok [INFO] [stdout] test commands::doctor::tests::test_check_module_registration_missing_entity ... ok [INFO] [stdout] test commands::doctor::tests::test_check_module_registration_no_module_rs ... ok [INFO] [stdout] test commands::doctor::tests::test_check_module_registration_no_entities ... ok [INFO] [stdout] test commands::doctor::tests::test_check_module_registration_without_marker ... ok [INFO] [stdout] test commands::doctor::tests::test_check_stores_missing_entity_store ... ok [INFO] [stdout] test commands::doctor::tests::test_check_stores_all_configured_with_marker ... ok [INFO] [stdout] test commands::doctor::tests::test_check_stores_no_stores_rs ... ok [INFO] [stdout] test commands::doctor::tests::test_check_stores_without_marker ... ok [INFO] [stdout] test commands::doctor::tests::test_check_websocket_enabled_and_configured ... ok [INFO] [stdout] test commands::doctor::tests::test_check_websocket_enabled_but_no_main_rs ... ok [INFO] [stdout] test commands::doctor::tests::test_check_websocket_enabled_but_not_configured ... ok [INFO] [stdout] test commands::doctor::tests::test_check_websocket_not_enabled ... ok [INFO] [stdout] test commands::doctor::tests::test_check_workspace_invalid_yaml ... ok [INFO] [stdout] test commands::doctor::tests::test_check_workspace_missing_api_dir ... ok [INFO] [stdout] test commands::doctor::tests::test_check_workspace_target_dir_missing ... ok [INFO] [stdout] test commands::doctor::tests::test_check_workspace_valid ... ok [INFO] [stdout] test commands::doctor::tests::test_check_workspace_with_targets ... ok [INFO] [stdout] test commands::doctor::tests::test_detect_project_name_invalid_toml ... ok [INFO] [stdout] test commands::doctor::tests::test_check_stores_no_entities ... ok [INFO] [stdout] test commands::doctor::tests::test_detect_project_name_missing_cargo ... ok [INFO] [stdout] test commands::doctor::tests::test_detect_project_name_valid ... ok [INFO] [stdout] test commands::doctor::tests::test_diagnostic_result_pass ... ok [INFO] [stdout] test commands::doctor::tests::test_diagnostic_result_error ... ok [INFO] [stdout] test commands::doctor::tests::test_diagnostic_result_to_serializable ... ok [INFO] [stdout] test commands::doctor::tests::test_diagnostic_result_warn ... ok [INFO] [stdout] test commands::doctor::tests::test_run_checks_broken_project ... ok [INFO] [stdout] test commands::doctor::tests::test_display_diagnostics_smoke_no_panic ... ok [INFO] [stdout] test commands::doctor::tests::test_run_checks_healthy_project ... ok [INFO] [stdout] test commands::doctor::tests::test_run_checks_project_with_features ... ok [INFO] [stdout] test commands::generate::tests::test_auto_detect_output_no_webapp ... ok [INFO] [stdout] test commands::generate::tests::test_auto_detect_output_with_webapp ... ok [INFO] [stdout] test commands::build::tests::test_run_docker_dockerfile_has_cmd ... ok [INFO] [stdout] test commands::build::tests::test_run_docker_dockerfile_uses_correct_paths ... ok [INFO] [stdout] test commands::build::tests::test_run_docker_dockerfile_uses_correct_port ... ok [INFO] [stdout] test commands::build::tests::test_run_docker_dockerfile_content_has_stages ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_no_entities_error ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_not_in_workspace_error ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_auto_detect_no_webapp ... ok [INFO] [stdout] test commands::info::tests::test_check_coherence_no_entities ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_auto_detect_with_webapp ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_unsupported_language ... ok [INFO] [stdout] test commands::info::tests::test_check_coherence_with_registered_entities ... ok [INFO] [stdout] test commands::info::tests::test_check_links_validity_invalid_yaml ... ok [INFO] [stdout] test commands::info::tests::test_check_coherence_with_unregistered_entity ... ok [INFO] [stdout] test commands::info::tests::test_check_links_validity_no_links_file ... ok [INFO] [stdout] test commands::info::tests::test_check_links_validity_unknown_source ... ok [INFO] [stdout] test commands::info::tests::test_check_links_validity_unknown_target ... ok [INFO] [stdout] test commands::info::tests::test_check_module_registration_no_module_rs ... ok [INFO] [stdout] test commands::info::tests::test_check_links_validity_valid_links ... ok [INFO] [stdout] test commands::info::tests::test_check_module_registration_with_marker ... ok [INFO] [stdout] test commands::info::tests::test_check_stores_configuration_no_stores_rs ... ok [INFO] [stdout] test commands::info::tests::test_check_stores_configuration_with_marker ... ok [INFO] [stdout] test commands::info::tests::test_check_stores_configuration_without_marker ... ok [INFO] [stdout] test commands::info::tests::test_check_module_registration_without_marker ... ok [INFO] [stdout] test commands::info::tests::test_detect_events_info_empty_config ... ok [INFO] [stdout] test commands::info::tests::test_detect_events_info_invalid_yaml ... ok [INFO] [stdout] test commands::info::tests::test_detect_events_info_no_file ... ok [INFO] [stdout] test commands::info::tests::test_detect_events_info_with_sinks_and_flows ... ok [INFO] [stdout] test commands::info::tests::test_detect_this_features_multiple ... ok [INFO] [stdout] test commands::info::tests::test_detect_this_features_grpc ... ok [INFO] [stdout] test commands::build::tests::test_run_docker_dockerfile_uses_project_name ... ok [INFO] [stdout] test commands::info::tests::test_detect_this_features_websocket ... ok [INFO] [stdout] test commands::info::tests::test_display_info_smoke_no_panic ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_dry_run ... ok [INFO] [stdout] test commands::info::tests::test_display_info_smoke_with_coherence_issues ... ok [INFO] [stdout] test commands::info::tests::test_display_info_smoke_with_workspace ... ok [INFO] [stdout] test commands::info::tests::test_detect_this_features_no_cargo_toml ... ok [INFO] [stdout] test commands::info::tests::test_detect_this_features_none ... ok [INFO] [stdout] test commands::info::tests::test_extract_this_version_path_dep ... ok [INFO] [stdout] test commands::info::tests::test_extract_this_version_simple_string ... ok [INFO] [stdout] test commands::info::tests::test_extract_this_version_no_deps ... ok [INFO] [stdout] test commands::info::tests::test_extract_this_version_table_form ... ok [INFO] [stdout] test commands::info::tests::test_parse_cargo_toml_missing_file ... ok [INFO] [stdout] test commands::info::tests::test_full_info_collection_with_entities_and_links ... ok [INFO] [stdout] test commands::info::tests::test_extract_this_version_no_this_dep ... ok [INFO] [stdout] test commands::info::tests::test_parse_cargo_toml_with_path_dep ... ok [INFO] [stdout] test commands::info::tests::test_parse_cargo_toml_no_this_dep ... ok [INFO] [stdout] test commands::info::tests::test_parse_cargo_toml_with_this_version ... ok [INFO] [stdout] test commands::info::tests::test_parse_links_yaml_empty ... ok [INFO] [stdout] test commands::info::tests::test_full_info_collection_basic_project ... ok [INFO] [stdout] test commands::info::tests::test_parse_links_yaml_no_file ... ok [INFO] [stdout] test commands::info::tests::test_parse_links_yaml_invalid_yaml ... ok [INFO] [stdout] test commands::info::tests::test_parse_cargo_toml_with_simple_version ... ok [INFO] [stdout] test commands::info::tests::test_parse_links_yaml_with_links ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_with_entities ... ok [INFO] [stdout] test commands::info::tests::test_parse_model_fields_basic ... ok [INFO] [stdout] test commands::info::tests::test_project_info_without_events_serialization ... ok [INFO] [stdout] test commands::info::tests::test_project_info_with_events ... ok [INFO] [stdout] test commands::info::tests::test_scan_entities_empty_dir ... ok [INFO] [stdout] test commands::info::tests::test_scan_entities_dir_without_model_skipped ... ok [INFO] [stdout] test commands::info::tests::test_parse_model_fields_empty ... ok [INFO] [stdout] test commands::info::tests::test_parse_model_fields_validated ... ok [INFO] [stdout] test commands::info::tests::test_scan_entities_no_entities_dir ... ok [INFO] [stdout] test commands::info::tests::test_scan_entities_multiple_sorted ... ok [INFO] [stdout] test commands::info::tests::test_scan_entities_validated_entity ... ok [INFO] [stdout] test commands::info::tests::test_scan_entities_one_entity ... ok [INFO] [stdout] test commands::init::tests::test_init_directory_already_exists_error ... ok [INFO] [stdout] test commands::build::tests::test_run_docker_generates_dockerfile ... ok [INFO] [stdout] test commands::generate::tests::test_generate_client_multiple_entities ... ok [INFO] [stdout] test commands::init::tests::test_init_classic_cargo_toml_content ... ok [INFO] [stdout] test commands::init::tests::test_init_classic_creates_structure ... ok [INFO] [stdout] test commands::init::tests::test_init_classic_main_rs_content ... ok [INFO] [stdout] test commands::init::tests::test_init_dry_run_allows_existing_directory ... ok [INFO] [stdout] test commands::init::tests::test_init_classic_dry_run_no_files_created ... ok [INFO] [stdout] test commands::init::tests::test_init_no_git_flag ... ok [INFO] [stdout] test commands::init::tests::test_init_with_custom_port ... ok [INFO] [stdout] test commands::init::tests::test_init_with_events ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_directory_already_exists_error ... ok [INFO] [stdout] test commands::init::tests::test_init_with_grpc ... ok [INFO] [stdout] test commands::init::tests::test_init_with_git_creates_gitignore ... ok [INFO] [stdout] test commands::init::tests::test_init_without_events_no_events_yaml ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_cargo_toml_has_workspace_features ... ok [INFO] [stdout] test commands::init::tests::test_init_with_websocket ... ok [INFO] [stdout] test commands::init::tests::test_init_with_websocket_and_grpc ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_creates_structure ... ok [INFO] [stdout] test commands::init::tests::test_resolve_project_dir_absolute_path ... ok [INFO] [stdout] test commands::init::tests::test_resolve_project_dir_custom_relative ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_dry_run_no_files_created ... ok [INFO] [stdout] test config::tests::test_deserialize_full_config ... ok [INFO] [stdout] test commands::init::tests::test_resolve_project_dir_relative_path ... ok [INFO] [stdout] test config::tests::test_deserialize_with_defaults ... ok [INFO] [stdout] test config::tests::test_deserialize_minimal_config ... ok [INFO] [stdout] test config::tests::test_load_invalid_yaml_returns_error ... ok [INFO] [stdout] test config::tests::test_load_save_roundtrip ... ok [INFO] [stdout] test config::tests::test_serialize_deserialize_roundtrip ... ok [INFO] [stdout] test config::tests::test_target_type_display ... ok [INFO] [stdout] test mcp::handlers::tests::test_cwd_guard_changes_and_restores_directory ... ok [INFO] [stdout] test mcp::handlers::tests::test_cwd_guard_invalid_directory ... ok [INFO] [stdout] test mcp::handlers::tests::test_cwd_guard_no_cwd_field ... ok [INFO] [stdout] test config::tests::test_load_missing_file_returns_error ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_with_custom_port ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_this_yaml_content ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_with_websocket ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_with_git_creates_gitignore ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_event_flow_missing_name ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_entity ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_with_events ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_link_missing_source ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_link_missing_target ... ok [INFO] [stdout] test commands::init::tests::test_init_workspace_with_grpc ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_sink_missing_name ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_sink_missing_sink_type ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_entity_duplicate ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_target_invalid_target_type ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_target_missing_target_type ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_check_project_health ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_entity_with_validation ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_event_flow_default_trigger_and_sink ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_generate_client_unsupported_language ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_event_flow_success ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_init_missing_name ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_get_project_info_outside_project ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_init_project ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_sink_success ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_init_project_workspace_mode ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_unknown_tool ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_check_project_health_outside_project ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_with_none_args ... ok [INFO] [stdout] test mcp::handlers::tests::test_mcp_file_writer_is_not_dry_run ... ok [INFO] [stdout] test mcp::handlers::tests::test_mcp_file_writer_create_dir_all ... ok [INFO] [stdout] test mcp::handlers::tests::test_mcp_file_writer_multiple_writes ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_sink_in_app_no_url ... ok [INFO] [stdout] test mcp::handlers::tests::test_mcp_file_writer_writes_and_tracks_created ... ok [INFO] [stdout] test mcp::handlers::tests::test_mcp_file_writer_tracks_modified ... ok [INFO] [stdout] test mcp::protocol::tests::test_parse_json_rpc_request ... ok [INFO] [stdout] test mcp::protocol::tests::test_parse_request_with_params ... ok [INFO] [stdout] test mcp::protocol::tests::test_parse_tool_call_params ... ok [INFO] [stdout] test mcp::protocol::tests::test_serialize_error_response ... ok [INFO] [stdout] test mcp::protocol::tests::test_serialize_success_response ... ok [INFO] [stdout] test mcp::protocol::tests::test_serialize_tool_definition ... ok [INFO] [stdout] test mcp::protocol::tests::test_tool_call_result_error ... ok [INFO] [stdout] test mcp::protocol::tests::test_tool_call_result_success ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_get_project_info ... ok [INFO] [stdout] test mcp::server::tests::test_handle_empty_json_parse_error ... ok [INFO] [stdout] test mcp::server::tests::test_handle_initialize_minimal_params ... ok [INFO] [stdout] test mcp::server::tests::test_handle_initialize ... ok [INFO] [stdout] test mcp::server::tests::test_handle_message_method_not_found ... ok [INFO] [stdout] test mcp::server::tests::test_handle_message_parse_error ... ok [INFO] [stdout] test mcp::server::tests::test_handle_notification_no_response ... ok [INFO] [stdout] test mcp::server::tests::test_handle_ping ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tools_call_before_init ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tools_call_invalid_params ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tools_call_missing_params ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tools_call_unknown_tool ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tools_list ... ok [INFO] [stdout] test mcp::server::tests::test_handle_tools_list_before_init ... ok [INFO] [stdout] test mcp::server::tests::test_handle_unknown_notification ... ok [INFO] [stdout] test mcp::server::tests::test_parse_initialize_request ... ok [INFO] [stdout] test mcp::server::tests::test_parse_tools_call_request ... ok [INFO] [stdout] test mcp::server::tests::test_parse_tools_list_request ... ok [INFO] [stdout] test mcp::server::tests::test_pipe_trait ... ok [INFO] [stdout] test mcp::server::tests::test_response_has_correct_id ... ok [INFO] [stdout] test mcp::server::tests::test_server_new_not_initialized ... ok [INFO] [stdout] test mcp::protocol::tests::test_parse_initialize_params ... ok [INFO] [stdout] test mcp::tools::tests::test_all_tools_count ... ok [INFO] [stdout] test mcp::tools::tests::test_all_tools_have_cwd_param ... ok [INFO] [stdout] test mcp::tools::tests::test_all_tools_have_non_empty_description ... ok [INFO] [stdout] test mcp::tools::tests::test_all_tools_have_valid_schema ... ok [INFO] [stdout] test mcp::tools::tests::test_init_project_required_fields ... ok [INFO] [stdout] test mcp::server::tests::test_handle_cancelled_notification ... ok [INFO] [stdout] test mcp::tools::tests::test_add_link_required_fields ... ok [INFO] [stdout] test mcp::server::tests::test_handle_initialize_no_params ... ok [INFO] [stdout] test templates::tests::test_cargo_toml_classic_no_embed_feature ... ok [INFO] [stdout] test templates::tests::test_cargo_toml_workspace_has_embed_feature ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_init_project_duplicate_name ... ok [INFO] [stdout] test templates::tests::test_desktop_capabilities_json ... ok [INFO] [stdout] test templates::tests::test_desktop_all_templates_render ... ok [INFO] [stdout] test templates::tests::test_desktop_tauri_build_rs ... ok [INFO] [stdout] test templates::tests::test_embedded_frontend_renders ... ok [INFO] [stdout] test templates::tests::test_desktop_tauri_cargo_toml ... ok [INFO] [stdout] test templates::tests::test_desktop_tauri_conf_json ... ok [INFO] [stdout] test templates::tests::test_desktop_tauri_main_rs ... ok [INFO] [stdout] test templates::tests::test_engine_creation ... ok [INFO] [stdout] test templates::tests::test_entity_descriptor ... ok [INFO] [stdout] test templates::tests::test_entity_handlers ... ok [INFO] [stdout] test templates::tests::test_entity_lmdb_store ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_init_project_with_custom_port ... ok [INFO] [stdout] test templates::tests::test_entity_migration_sql ... ok [INFO] [stdout] test templates::tests::test_entity_mod ... ok [INFO] [stdout] test templates::tests::test_entity_mod_inmemory ... ok [INFO] [stdout] test templates::tests::test_entity_mod_mongodb ... ok [INFO] [stdout] test templates::tests::test_entity_mod_lmdb ... ok [INFO] [stdout] test templates::tests::test_entity_mod_neo4j ... ok [INFO] [stdout] test templates::tests::test_entity_mod_mysql ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_link ... ok [INFO] [stdout] test mcp::handlers::tests::test_handle_add_entity_outside_project ... ok [INFO] [stdout] test templates::tests::test_entity_mod_postgres ... ok [INFO] [stdout] test templates::tests::test_entity_mod_scylladb ... ok [INFO] [stdout] test templates::tests::test_entity_mongodb_store ... ok [INFO] [stdout] test templates::tests::test_entity_mysql_store ... ok [INFO] [stdout] test templates::tests::test_entity_model ... ok [INFO] [stdout] test templates::tests::test_entity_model_validated ... ok [INFO] [stdout] test templates::tests::test_entity_scylladb_store ... ok [INFO] [stdout] test templates::tests::test_main_rs_classic_no_attach_frontend ... ok [INFO] [stdout] test templates::tests::test_main_rs_workspace_has_attach_frontend ... ok [INFO] [stdout] test templates::tests::test_mobile_all_templates_render_android ... ok [INFO] [stdout] test templates::tests::test_entity_postgres_store ... ok [INFO] [stdout] test templates::tests::test_mobile_all_templates_render_ios ... ok [INFO] [stdout] test templates::tests::test_entity_neo4j_store ... ok [INFO] [stdout] test templates::tests::test_mobile_capacitor_gitignore ... ok [INFO] [stdout] test templates::tests::test_mobile_capacitor_config_ts ... ok [INFO] [stdout] test templates::tests::test_entity_store ... ok [INFO] [stdout] test templates::tests::test_project_links_yaml ... ok [INFO] [stdout] test templates::tests::test_mobile_capacitor_package_json_ios ... ok [INFO] [stdout] test templates::tests::test_mobile_capacitor_package_json_android ... ok [INFO] [stdout] test templates::tests::test_project_main_rs ... ok [INFO] [stdout] test templates::tests::test_project_stores_rs ... ok [INFO] [stdout] test templates::tests::test_stores_rs_has_postgres_constructor ... ok [INFO] [stdout] test templates::tests::test_project_cargo_toml ... ok [INFO] [stdout] test templates::tests::test_stores_rs_has_all_backend_constructors ... ok [INFO] [stdout] test test_helpers::tests::test_add_entity_to_project ... ok [INFO] [stdout] test test_helpers::tests::test_assert_file_not_contains ... ok [INFO] [stdout] test test_helpers::tests::test_assert_file_not_exists ... ok [INFO] [stdout] test test_helpers::tests::test_setup_test_project_creates_structure ... ok [INFO] [stdout] test test_helpers::tests::test_setup_test_workspace_creates_structure ... ok [INFO] [stdout] test test_helpers::tests::test_setup_test_workspace_with_webapp ... ok [INFO] [stdout] test utils::file_writer::tests::test_dry_run_writer_does_not_write_real_files ... ok [INFO] [stdout] test utils::file_writer::tests::test_dry_run_writer_is_dry_run ... ok [INFO] [stdout] test utils::file_writer::tests::test_dry_run_writer_tracks_dirs_created ... ok [INFO] [stdout] test utils::file_writer::tests::test_dry_run_writer_tracks_files_created ... ok [INFO] [stdout] test utils::file_writer::tests::test_dry_run_writer_tracks_files_updated ... ok [INFO] [stdout] test utils::file_writer::tests::test_print_simple_diff ... ok [INFO] [stdout] test utils::file_writer::tests::test_print_summary_no_changes ... ok [INFO] [stdout] test utils::file_writer::tests::test_print_summary_with_changes ... ok [INFO] [stdout] test utils::file_writer::tests::test_real_writer_create_dir_all ... ok [INFO] [stdout] test utils::file_writer::tests::test_real_writer_is_not_dry_run ... ok [INFO] [stdout] test utils::file_writer::tests::test_real_writer_update_file ... ok [INFO] [stdout] test utils::file_writer::tests::test_real_writer_write_file ... ok [INFO] [stdout] test utils::markers::tests::test_add_import_after_last_use ... ok [INFO] [stdout] test utils::markers::tests::test_add_import_already_exists ... ok [INFO] [stdout] test utils::markers::tests::test_add_import_basic ... ok [INFO] [stdout] test utils::markers::tests::test_add_import_no_existing_imports ... ok [INFO] [stdout] test utils::markers::tests::test_has_line_after_marker_found ... ok [INFO] [stdout] test utils::markers::tests::test_has_line_after_marker_no_marker ... ok [INFO] [stdout] test utils::markers::tests::test_has_line_after_marker_not_found ... ok [INFO] [stdout] test utils::markers::tests::test_idempotent_insert ... ok [INFO] [stdout] test utils::markers::tests::test_insert_after_marker_basic ... ok [INFO] [stdout] test utils::markers::tests::test_insert_after_marker_not_found ... ok [INFO] [stdout] test utils::markers::tests::test_insert_after_marker_preserves_indent ... ok [INFO] [stdout] test utils::naming::tests::test_pluralize ... ok [INFO] [stdout] test utils::naming::tests::test_to_pascal_case ... ok [INFO] [stdout] test utils::naming::tests::test_to_snake_case ... ok [INFO] [stdout] test utils::output::tests::test_print_banner ... ok [INFO] [stdout] test utils::output::tests::test_print_error ... ok [INFO] [stdout] test utils::output::tests::test_print_file_created ... ok [INFO] [stdout] test utils::output::tests::test_print_info ... ok [INFO] [stdout] test utils::output::tests::test_print_next_steps ... ok [INFO] [stdout] test utils::output::tests::test_print_step ... ok [INFO] [stdout] test utils::output::tests::test_print_success ... ok [INFO] [stdout] test utils::output::tests::test_print_warn ... ok [INFO] [stdout] test utils::project::tests::test_detect_project_root_finds_cargo_with_this_dep ... ok [INFO] [stdout] test utils::project::tests::test_detect_project_root_from_nested_subdir ... ok [INFO] [stdout] test utils::project::tests::test_detect_project_root_ignores_cargo_without_this_dep ... ok [INFO] [stdout] test utils::project::tests::test_detect_project_root_returns_none_in_empty_dir ... ok [INFO] [stdout] test utils::project::tests::test_find_workspace_root_deeply_nested ... ok [INFO] [stdout] test utils::project::tests::test_find_workspace_root_from_root ... ok [INFO] [stdout] test utils::project::tests::test_find_workspace_root_from_subdirectory ... ok [INFO] [stdout] test utils::project::tests::test_find_workspace_root_returns_none_outside_workspace ... ok [INFO] [stdout] test templates::tests::test_project_module_rs ... ok [INFO] [stdout] test templates::tests::test_webapp_app_tsx ... ok [INFO] [stdout] test templates::tests::test_webapp_all_templates_render ... ok [INFO] [stdout] test templates::tests::test_webapp_package_json ... ok [INFO] [stdout] test templates::tests::test_webapp_index_html ... ok [INFO] [stdout] test templates::tests::test_webapp_vite_config ... ok [INFO] [stdout] test templates::tests::test_workspace_this_yaml ... ok [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-03cc413013f71b34) [INFO] [stdout] [INFO] [stdout] test result: ok. 517 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 23.88s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 73 tests [INFO] [stdout] test test_add_entity_outside_project_error ... ok [INFO] [stdout] test test_add_entity_duplicate_error ... ok [INFO] [stdout] test test_add_entity_updates_links_yaml ... ok [INFO] [stdout] test test_add_entity_updates_mod_rs ... ok [INFO] [stdout] test test_add_entity_creates_files ... ok [INFO] [stdout] test test_add_entity_reserved_field_name_filtered ... ok [INFO] [stdout] test test_add_entity_updates_module_rs ... ok [INFO] [stdout] test test_add_entity_idempotent_module ... ok [INFO] [stdout] test test_add_entity_idempotent_stores ... ok [INFO] [stdout] test test_add_entity_validated_flag ... ok [INFO] [stdout] test test_add_link_basic ... ok [INFO] [stdout] test test_add_link_adds_entity_configs ... ok [INFO] [stdout] test test_add_entity_multi_updates_stores_and_module ... ok [INFO] [stdout] test test_add_entity_updates_stores_rs ... ok [INFO] [stdout] test test_add_link_custom_options ... ok [INFO] [stdout] test test_add_entity_without_validated ... ok [INFO] [stdout] test test_add_link_duplicate_error ... ok [INFO] [stdout] test test_add_link_no_validation_rule ... ok [INFO] [stdout] test test_completions_bash ... ok [INFO] [stdout] test test_build_outside_workspace_fails ... ok [INFO] [stdout] test test_completions_fish ... ok [INFO] [stdout] test test_completions_powershell ... ok [INFO] [stdout] test test_completions_zsh ... ok [INFO] [stdout] test test_dev_outside_workspace_fails ... ok [INFO] [stdout] test test_build_embed_without_webapp_fails ... ok [INFO] [stdout] test test_build_docker_without_webapp_fails ... ok [INFO] [stdout] test test_build_front_only_without_webapp_fails ... ok [INFO] [stdout] test test_build_docker_dry_run ... ok [INFO] [stdout] test test_build_in_classic_project_fails ... ok [INFO] [stdout] test test_dev_in_classic_project_fails ... ok [INFO] [stdout] test test_build_docker_generates_dockerfile ... ok [INFO] [stdout] test test_doctor_grpc_incoherent ... ok [INFO] [stdout] test test_doctor_detects_invalid_link_entity ... ok [INFO] [stdout] test test_doctor_detects_orphan_entity ... ok [INFO] [stdout] test test_doctor_workspace_healthy ... ok [INFO] [stdout] test test_doctor_grpc_healthy ... ok [INFO] [stdout] test test_dry_run_init_no_files_created ... ok [INFO] [stdout] test test_generated_code_compiles ... ignored [INFO] [stdout] test test_doctor_websocket_healthy ... ok [INFO] [stdout] test test_doctor_workspace_missing_target_dir ... ok [INFO] [stdout] test test_dry_run_add_link_no_files_modified ... ok [INFO] [stdout] test test_doctor_websocket_incoherent ... ok [INFO] [stdout] test test_info_outside_project_fails ... ok [INFO] [stdout] test test_info_classic_no_workspace_section ... ok [INFO] [stdout] test test_dry_run_add_entity_no_files_created ... ok [INFO] [stdout] test test_doctor_healthy_project ... ok [INFO] [stdout] test test_info_grpc_enabled ... ok [INFO] [stdout] test test_info_websocket_disabled ... ok [INFO] [stdout] test test_info_websocket_enabled ... ok [INFO] [stdout] test test_init_directory_exists_error ... ok [INFO] [stdout] test test_info_workspace_displays_workspace_section ... ok [INFO] [stdout] test test_init_classic_unchanged ... ok [INFO] [stdout] test test_init_generated_cargo_toml_valid ... ok [INFO] [stdout] test test_init_creates_project_structure ... ok [INFO] [stdout] test test_init_custom_port ... ok [INFO] [stdout] test test_init_grpc_websocket_combined ... ok [INFO] [stdout] test test_info_in_project ... ok [INFO] [stdout] test test_init_grpc_main_rs ... ok [INFO] [stdout] test test_init_grpc_cargo_toml ... ok [INFO] [stdout] test test_full_pipeline ... ok [INFO] [stdout] test test_init_grpc_websocket_workspace_combined ... ok [INFO] [stdout] test test_init_websocket_cargo_toml ... ok [INFO] [stdout] test test_init_workspace_directory_exists_error ... ok [INFO] [stdout] test test_info_with_links ... ok [INFO] [stdout] test test_init_no_git ... ok [INFO] [stdout] test test_init_websocket_main_rs ... ok [INFO] [stdout] test test_init_workspace_custom_port ... ok [INFO] [stdout] test test_init_without_websocket_unchanged ... ok [INFO] [stdout] test test_workspace_info_from_root ... ok [INFO] [stdout] test test_init_workspace_creates_structure ... ok [INFO] [stdout] test test_init_workspace_websocket_combined ... ok [INFO] [stdout] test test_init_workspace_dry_run ... ok [INFO] [stdout] test test_workspace_add_entity_from_root ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 72 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 14.47s [INFO] [stdout] [INFO] [stderr] Running tests/mcp_integration.rs (/opt/rustwide/target/debug/deps/mcp_integration-8798956aeead01aa) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test test_mcp_build_project_outside_workspace_error ... ok [INFO] [stdout] test test_mcp_get_project_info_workspace ... ok [INFO] [stdout] test test_mcp_init_project_grpc_websocket ... ok [INFO] [stdout] test test_mcp_init_project_websocket ... ok [INFO] [stdout] test test_mcp_init_project ... ok [INFO] [stdout] test test_mcp_initialize ... ok [INFO] [stdout] test test_mcp_check_project_health ... ok [INFO] [stdout] test test_mcp_invalid_json_error ... ok [INFO] [stdout] test test_mcp_method_not_found ... ok [INFO] [stdout] test test_mcp_init_project_workspace ... ok [INFO] [stdout] test test_mcp_tools_list ... ok [INFO] [stdout] test test_mcp_start_dev_outside_workspace_error ... ok [INFO] [stdout] test test_mcp_tools_list_before_init_error ... ok [INFO] [stdout] test test_mcp_ping ... ok [INFO] [stdout] test test_mcp_unknown_tool_error ... ok [INFO] [stdout] test test_mcp_init_project_grpc ... ok [INFO] [stdout] test test_mcp_build_project_docker_generates_dockerfile ... ok [INFO] [stdout] test test_mcp_add_entity ... ok [INFO] [stdout] test test_mcp_get_project_info ... ok [INFO] [stdout] test test_mcp_add_link ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.36s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "e55dd27d7702851fafc98e6a4ff8a6c27c9c994550b4d16dbdd9d3e96b15da7d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e55dd27d7702851fafc98e6a4ff8a6c27c9c994550b4d16dbdd9d3e96b15da7d", kill_on_drop: false }` [INFO] [stdout] e55dd27d7702851fafc98e6a4ff8a6c27c9c994550b4d16dbdd9d3e96b15da7d