load("//:defs.bzl", "codex_rust_crate")

filegroup(
    name = "model_availability_nux_fixtures",
    srcs = [
        "tests/cli_responses_fixture.sse",
    ],
    visibility = ["//visibility:public"],
)

codex_rust_crate(
    name = "core",
    crate_name = "codex_core",
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD.bazel",
            "Cargo.toml",
        ],
        allow_empty = True,
    ),
    rustc_env = {
        # Keep manifest-root path lookups inside the Bazel execroot for code
        # that relies on env!("CARGO_MANIFEST_DIR").
        "CARGO_MANIFEST_DIR": "codex-rs/core",
    },
    integration_compile_data_extra = [
        "//codex-rs/apply-patch:apply_patch_tool_instructions.md",
        "templates/realtime/backend_prompt.md",
    ],
    integration_test_timeout = "long",
    test_data_extra = [
        "config.schema.json",
    ] + glob([
        "src/**/snapshots/**",
    ]) + [
        # This is a bit of a hack, but empirically, some of our integration tests
        # are relying on the presence of this file as a repo root marker. When
        # running tests locally, this "just works," but in remote execution,
        # the working directory is different and so the file is not found unless it
        # is explicitly added as test data.
        #
        # TODO(aibrahim): Update the tests so that `just bazel-remote-test`
        # succeeds without this workaround.
        "//:AGENTS.md",
    ],
    test_shard_counts = {
        "core-all-test": 16,
        "core-unit-tests": 8,
    },
    test_tags = ["no-sandbox"],
    unit_test_timeout = "long",
    extra_binaries = [
        "//codex-rs/linux-sandbox:codex-linux-sandbox",
        "//codex-rs/rmcp-client:test_stdio_server",
        "//codex-rs/rmcp-client:test_streamable_http_server",
        "//codex-rs/cli:codex",
    ],
)
