Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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