# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
"""Editable NeMo Fabric code-review application."""
import argparse
import asyncio
import json
from pathlib import Path
from nemo_fabric import EnvironmentConfig
from nemo_fabric import DiscoveryConfig
from nemo_fabric import Fabric
from nemo_fabric import FabricConfig
from nemo_fabric import HarnessConfig
from nemo_fabric import InstructionConfig
from nemo_fabric import InstructionsConfig
from nemo_fabric import MetadataConfig
from nemo_fabric import ModelConfig
from nemo_fabric import RuntimeConfig
BASE_DIR = Path(__file__).parent
def build_config() -> FabricConfig:
"""Build the complete editable configuration."""
config = FabricConfig(
metadata=MetadataConfig(name={{AGENT_NAME}}, description={{DESCRIPTION}}),
harness=HarnessConfig(
adapter_id={{ADAPTER_ID}},
resolution="preinstalled",
settings={{HARNESS_SETTINGS}},
),
discovery=DiscoveryConfig(local_paths=["adapters"]),
models={{MODELS}},
instructions={{INSTRUCTIONS}},
runtime=RuntimeConfig(
input_schema="text",
output_schema="message",
timeout_seconds={{TIMEOUT_SECONDS}},
max_turns={{MAX_TURNS}},
),
environment=EnvironmentConfig(
provider="local",
workspace="repo",
env={{ENVIRONMENT_ENV}},
),
)
config.add_skill_path("skills/code-review.md")
return config
async def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("input", nargs="?", default="Review the workspace")
args = parser.parse_args()
result = await Fabric().run(build_config(), base_dir=BASE_DIR, input=args.input)
print(json.dumps(result.to_mapping(), indent=2))
if __name__ == "__main__":
asyncio.run(main())