Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions adapters/claude/src/nemo_fabric_adapters/claude/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def runtime_id(payload: dict[str, Any]) -> str:
value = common_utils.runtime_context(payload).get("runtime_id")
if not isinstance(value, str) or not value:
raise AdapterInputError(
"claude_invalid_request", "Fabric runtime ID is required"
"claude_invalid_request", "NeMo Fabric runtime ID is required"
)
return value

Expand Down Expand Up @@ -345,13 +345,13 @@ def _stage_skill_plugin(payload: dict[str, Any]) -> list[dict[str, str]]:
if not skill_path.is_dir() or not (skill_path / "SKILL.md").is_file():
raise AdapterConfigError(
"claude_invalid_configuration",
f"Fabric skill path must be a directory containing SKILL.md: {skill_path}",
f"NeMo Fabric skill path must be a directory containing SKILL.md: {skill_path}",
)
name = skill_path.name
if name in names:
raise AdapterConfigError(
"claude_invalid_configuration",
f"Fabric skill names must be unique: {name}",
f"NeMo Fabric skill names must be unique: {name}",
)
names.add(name)
skills.append((name, skill_path))
Expand Down
6 changes: 3 additions & 3 deletions adapters/codex/src/nemo_fabric_adapters/codex/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ def runtime_id(payload: dict[str, Any]) -> str:
value = common_utils.runtime_context(payload).get("runtime_id")
if not isinstance(value, str) or not value:
raise AdapterInputError(
"codex_invalid_request", "Fabric runtime ID is required"
"codex_invalid_request", "NeMo Fabric runtime ID is required"
)
return value

Expand Down Expand Up @@ -259,14 +259,14 @@ def _native_skill_paths(payload: dict[str, Any]) -> list[Path]:
if not skill_path.is_dir() or not skill_file.is_file():
raise AdapterConfigError(
"codex_invalid_configuration",
"Fabric skill path must be a directory containing SKILL.md: "
"NeMo Fabric skill path must be a directory containing SKILL.md: "
f"{skill_path}",
)
name = skill_path.name
if not name or name in names:
raise AdapterConfigError(
"codex_invalid_configuration",
f"Fabric skill names must be unique: {name}",
f"NeMo Fabric skill names must be unique: {name}",
)
names.add(name)
paths.append(skill_path)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def relay_cli_contract(executable: Path) -> RelayCliContract:
raise RelayGatewayError(
"unsupported NeMo Relay CLI version "
f"{'.'.join(str(value) for value in version)}; "
"Fabric requires >=0.6.0,<0.7.0"
"NeMo Fabric requires >=0.6.0,<0.7.0"
)
return RelayCliContract(version=version, observability_version=2)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -407,8 +407,8 @@ def _validated_passthrough(extra: Any) -> dict[str, Any]:
reserved = sorted(FABRIC_OWNED_AGENT_KEYS.intersection(extra))
if reserved:
raise AdapterConfigError(
f"harness.settings.deepagents cannot override Fabric-owned keys {reserved}; "
"they are derived from the normalized Fabric config."
f"harness.settings.deepagents cannot override NeMo Fabric-owned keys {reserved}; "
"they are derived from the normalized NeMo Fabric config."
)
unknown = sorted(set(extra) - DEEPAGENTS_PASSTHROUGH_KEYS)
if unknown:
Expand Down
2 changes: 1 addition & 1 deletion crates/fabric-cli/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ enum Command {
#[arg(long, default_value = "")]
input: String,
},
/// Print the Fabric core version.
/// Print the NeMo Fabric core version.
Version,
}

Expand Down
62 changes: 31 additions & 31 deletions crates/fabric-core/src/config.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

//! Fabric config models and loading helpers.
//! NeMo Fabric config models and loading helpers.

use std::collections::{BTreeMap, BTreeSet};
use std::fs;
Expand All @@ -16,7 +16,7 @@ use crate::error::{FabricError, Result};
/// Adapter descriptor contract version supported by this core.
pub const ADAPTER_CONTRACT_VERSION: &str = "fabric.adapter/v1alpha1";

/// Versioned Fabric agent config.
/// Versioned NeMo Fabric agent config.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct FabricConfig {
/// Config schema version.
Expand Down Expand Up @@ -113,7 +113,7 @@ pub struct AdapterDescriptor {
/// Runtime requirements.
#[serde(default)]
pub requirements: AdapterRequirements,
/// Fabric config areas this adapter consumes or generates.
/// NeMo Fabric config areas this adapter consumes or generates.
#[serde(default)]
pub config: AdapterConfigSupport,
/// Telemetry support declared by this adapter.
Expand All @@ -127,11 +127,11 @@ pub struct AdapterDescriptor {
pub extensions: BTreeMap<String, Value>,
}

/// Where Fabric resolved an adapter descriptor from.
/// Where NeMo Fabric resolved an adapter descriptor from.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum AdapterDescriptorSource {
/// Descriptor maintained in this Fabric repository.
/// Descriptor maintained in this NeMo Fabric repository.
Repository,
/// Descriptor registered by the agent package or local development config.
Local,
Expand Down Expand Up @@ -275,23 +275,23 @@ pub enum ResolutionStrategy {
NativePlugin,
}

/// Where Fabric control code runs relative to the environment.
/// Where NeMo Fabric control code runs relative to the environment.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ControlLocation {
/// Fabric runs on the host/control plane and starts or connects to the harness in the environment.
/// NeMo Fabric runs on the host/control plane and starts or connects to the harness in the environment.
ExternalControl,
/// Fabric runs inside the prepared environment with the harness.
/// NeMo Fabric runs inside the prepared environment with the harness.
InEnvControl,
}

/// Whether Fabric owns the underlying environment resource.
/// Whether NeMo Fabric owns the underlying environment resource.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum EnvironmentOwnership {
/// The caller or a surrounding system owns the environment resource.
CallerOwned,
/// Fabric created or leased the environment resource and may release it.
/// NeMo Fabric created or leased the environment resource and may release it.
FabricOwned,
}

Expand Down Expand Up @@ -321,7 +321,7 @@ pub struct AdapterRequirements {
/// Adapter config support.
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct AdapterConfigSupport {
/// Fabric config areas or policy paths accepted by this adapter.
/// NeMo Fabric config areas or policy paths accepted by this adapter.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub accepts: Vec<String>,
/// Harness-native files generated by this adapter.
Expand Down Expand Up @@ -357,10 +357,10 @@ pub struct AdapterTelemetryProviderSupport {
pub extensions: BTreeMap<String, Value>,
}

/// Source context used when resolving an in-memory Fabric config.
/// Source context used when resolving an in-memory NeMo Fabric config.
#[derive(Debug, Clone, PartialEq)]
pub struct ResolveContext {
/// Base directory used to resolve relative Fabric paths.
/// Base directory used to resolve relative NeMo Fabric paths.
pub base_dir: PathBuf,
}

Expand Down Expand Up @@ -438,10 +438,10 @@ fn default_output_schema() -> String {
pub struct EnvironmentConfig {
/// Environment provider, for example `local`, `docker`, `opensandbox`, or `k8s`.
pub provider: String,
/// Where Fabric control code runs relative to the environment.
/// Where NeMo Fabric control code runs relative to the environment.
#[serde(default = "default_control_location")]
pub control_location: ControlLocation,
/// Whether Fabric owns the environment resource.
/// Whether NeMo Fabric owns the environment resource.
#[serde(default = "default_environment_ownership")]
pub ownership: EnvironmentOwnership,
/// Workspace path inside or outside the provider.
Expand Down Expand Up @@ -501,7 +501,7 @@ pub struct McpServerConfig {
pub transport: String,
/// MCP server URL or process command, depending on transport.
pub url: String,
/// How Fabric exposes the MCP capability to the harness.
/// How NeMo Fabric exposes the MCP capability to the harness.
pub exposure: McpExposure,
/// Additive MCP server fields.
#[serde(default, flatten)]
Expand All @@ -514,7 +514,7 @@ pub struct McpServerConfig {
pub enum McpExposure {
/// Map into harness-native MCP config through the selected adapter.
HarnessNative,
/// Fabric manages MCP and exposes basic tools/actions.
/// NeMo Fabric manages MCP and exposes basic tools/actions.
FabricManaged,
}

Expand Down Expand Up @@ -982,7 +982,7 @@ fn validate_config(config: &FabricConfig) -> Result<()> {
Ok(())
}

/// Resolve a typed Fabric config into a runnable plan.
/// Resolve a typed NeMo Fabric config into a runnable plan.
///
/// Callers provide an already-composed typed config and the explicit base
/// directory used for resolving relative paths.
Expand Down Expand Up @@ -1228,7 +1228,7 @@ fn resolve_capability_plan(
kind: CapabilityKind::Tools,
name: "tools.blocked".to_string(),
target: CapabilityTarget::HarnessNative,
reason: "selected adapter explicitly supports the Fabric blocked-tools policy"
reason: "selected adapter explicitly supports the NeMo Fabric blocked-tools policy"
.to_string(),
});
} else {
Expand All @@ -1237,7 +1237,7 @@ fn resolve_capability_plan(
kind: CapabilityKind::Tools,
name: "tools.blocked".to_string(),
target: CapabilityTarget::Unsupported,
reason: "selected adapter does not explicitly declare blocked-tools policy support and Fabric-managed enforcement is not implemented".to_string(),
reason: "selected adapter does not explicitly declare blocked-tools policy support and NeMo Fabric-managed enforcement is not implemented".to_string(),
});
}
}
Expand All @@ -1249,15 +1249,15 @@ fn resolve_capability_plan(
kind: CapabilityKind::Skills,
name: "skills".to_string(),
target: CapabilityTarget::HarnessNative,
reason: "selected adapter accepts Fabric skills config".to_string(),
reason: "selected adapter accepts NeMo Fabric skills config".to_string(),
});
} else {
unsupported.skill_paths = skill_paths.clone();
routes.push(CapabilityRoute {
kind: CapabilityKind::Skills,
name: "skills".to_string(),
target: CapabilityTarget::Unsupported,
reason: "selected adapter does not declare native skills support and Fabric-managed skills are not implemented".to_string(),
reason: "selected adapter does not declare native skills support and NeMo Fabric-managed skills are not implemented".to_string(),
});
}
}
Expand All @@ -1284,9 +1284,9 @@ fn resolve_capability_plan(
target: CapabilityTarget::Unsupported,
reason: match server.exposure {
McpExposure::FabricManaged => {
"MCP server explicitly requests Fabric-managed exposure but Fabric-managed MCP is not implemented".to_string()
"MCP server explicitly requests NeMo Fabric-managed exposure but NeMo Fabric-managed MCP is not implemented".to_string()
}
_ => "selected adapter does not declare native MCP support and Fabric-managed MCP is not implemented".to_string(),
_ => "selected adapter does not declare native MCP support and NeMo Fabric-managed MCP is not implemented".to_string(),
},
});
}
Expand Down Expand Up @@ -1420,14 +1420,14 @@ fn normalize_path(path: PathBuf) -> PathBuf {
.collect()
}

/// Resolved Fabric run plan.
/// Resolved NeMo Fabric run plan.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct RunPlan {
/// Stable agent name.
pub agent_name: String,
/// Base directory used to resolve relative Fabric paths.
/// Base directory used to resolve relative NeMo Fabric paths.
pub base_dir: PathBuf,
/// Complete typed Fabric config.
/// Complete typed NeMo Fabric config.
pub config: FabricConfig,
/// Adapter descriptor resolved for this plan, when configured.
#[serde(default, skip_serializing_if = "Option::is_none")]
Expand Down Expand Up @@ -1473,7 +1473,7 @@ pub struct RuntimeCapabilities {
pub struct EnvironmentPlan {
/// Environment provider.
pub provider: String,
/// Fabric control location.
/// NeMo Fabric control location.
pub control_location: ControlLocation,
/// Environment resource ownership.
pub ownership: EnvironmentOwnership,
Expand Down Expand Up @@ -1512,10 +1512,10 @@ pub struct CapabilityPlan {
/// Capabilities mapped into the harness-native surface.
#[serde(default)]
pub native: CapabilityTargetPlan,
/// Capabilities that Fabric must expose or manage outside the native harness config.
/// Capabilities that NeMo Fabric must expose or manage outside the native harness config.
#[serde(default)]
pub managed: CapabilityTargetPlan,
/// Capabilities that are configured but not executable by this Fabric build.
/// Capabilities that are configured but not executable by this NeMo Fabric build.
#[serde(default)]
pub unsupported: CapabilityTargetPlan,
/// Routing decisions made while planning the configured capabilities.
Expand Down Expand Up @@ -1576,7 +1576,7 @@ pub enum CapabilityKind {
pub enum CapabilityTarget {
/// Adapter maps the capability into harness-native config.
HarnessNative,
/// Fabric exposes or manages the capability around the harness.
/// NeMo Fabric exposes or manages the capability around the harness.
FabricManaged,
/// Capability is configured but no executable surface exists.
Unsupported,
Expand Down
4 changes: 2 additions & 2 deletions crates/fabric-core/src/doctor.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

//! Plan diagnostics for Fabric.
//! Plan diagnostics for NeMo Fabric.

use std::collections::BTreeMap;
use std::path::{Path, PathBuf};
Expand Down Expand Up @@ -115,7 +115,7 @@ fn check_resolution(plan: &RunPlan) -> DoctorCheck {
let message = match status {
DoctorStatus::Pass => format!("selected resolution strategy `{resolution:?}`"),
DoctorStatus::Warn if matches!(resolution, ResolutionStrategy::Service) => {
"selected resolution strategy `service` is modeled but not implemented by Fabric runtime execution".to_string()
"selected resolution strategy `service` is modeled but not implemented by NeMo Fabric runtime execution".to_string()
}
DoctorStatus::Warn => format!(
"selected resolution strategy `{resolution:?}` is declared but not executed by this POC"
Expand Down
6 changes: 3 additions & 3 deletions crates/fabric-core/src/error.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
// SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

//! Error types for Fabric core.
//! Error types for NeMo Fabric core.

use std::path::PathBuf;

use crate::config::AdapterKind;

/// Core Fabric result type.
/// Core NeMo Fabric result type.
pub type Result<T> = std::result::Result<T, FabricError>;

/// Errors raised by Fabric config loading and validation.
/// Errors raised by NeMo Fabric config loading and validation.
#[derive(Debug, thiserror::Error)]
pub enum FabricError {
/// The base directory could not be resolved to an absolute path.
Expand Down
Loading
Loading