Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
50a1859
feat(registry): lns login + policy push/pull as typed OCI artifacts
msa0311 Jun 15, 2026
6442702
feat(registry): auto-HTTP for loopback registries (+ LNS_REGISTRY_PLA…
msa0311 Jun 15, 2026
5d2165e
feat(registry): unify push/pull into generic `lns push`/`lns pull` fo…
msa0311 Jun 15, 2026
f94cc4f
feat(registry): pull/run images against the registry with stored auth…
msa0311 Jun 15, 2026
4fdcf58
refactor(registry): drop the now-unused RealRegistry::new/Default
msa0311 Jun 15, 2026
5b90ed2
feat(registry): lns push <cached-image> <ref> — push an image from ln…
msa0311 Jun 15, 2026
599ef1d
fix(push): push cached images from the persisted image record
msa0311 Jun 16, 2026
a6df7ee
feat(run): resolve agent and bundle references from the registry
msa0311 Jun 18, 2026
292f0d1
feat(run): carry resources, user, ports, and volumes in the agent art…
msa0311 Jun 18, 2026
ba2c71e
feat(run): source runtime resources from the sandbox artifact
msa0311 Jun 23, 2026
bb194f3
feat(policy): add model+fileset families and envelope mounts; drop ag…
msa0311 Jun 24, 2026
f15e4b4
feat(run): resolve application-layer artifact mounts into RunImageArgs
msa0311 Jun 24, 2026
9ef82f0
feat(service): materialize model mounts into the runtime layer at boot
msa0311 Jun 24, 2026
e3f8762
feat(service): fetch artifact OCI layers and expand them under a moun…
msa0311 Jun 24, 2026
9e6b8af
feat(cli): mount a bundle's tool and knowledge components
msa0311 Jun 24, 2026
0eb9581
fix(artifacts): nest bundle/sandbox content under spec per the envelope
msa0311 Jun 24, 2026
fc9cf55
feat(registry): pack content into an OCI layer on push (fileset autho…
msa0311 Jun 24, 2026
6c4a805
feat(run): lns run --mount <ref>[:/path] attaches an application-laye…
msa0311 Jun 24, 2026
1049127
feat(run): normalize bundle-policy integration refs to ids
msa0311 Jun 24, 2026
43bdb8b
fix(pull): trust the registry client's digest verification on pinned …
msa0311 Jun 24, 2026
8821dd5
feat(mounts): model mounts spec-only + bundle filesets component (rev…
msa0311 Jun 24, 2026
3e201a0
Merge remote-tracking branch 'origin/main' into feat/registry-login-p…
msa0311 Jun 25, 2026
9425960
refactor(cli): move registry run-fns to the real leaf + cover post-me…
msa0311 Jun 25, 2026
6595f9c
Merge remote-tracking branch 'origin/main' into feat/registry-login-p…
msa0311 Jun 25, 2026
c943ac5
test(service): collapse model-spec matches! onto one line for cross-p…
msa0311 Jun 25, 2026
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
2 changes: 1 addition & 1 deletion crates/lns-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"
futures-util = "0.3"
flate2 = "1"
tar = "0.4"
tempfile = "3"

[dev-dependencies]
tempfile = "3"
cucumber = "0.23"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "test-util"] }
# `#[serial]` for tests that mutate process-wide env state (LNS_LOG /
Expand Down
45 changes: 45 additions & 0 deletions crates/lns-cli/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,12 @@ pub struct RunArgs {
)]
pub mounts: Vec<lns_ipc::MountSpec>,

#[arg(
long = "mount",
help = "Mount an application-layer artifact (fileset/model/tool/knowledge) by reference: `<ref>[:/guest-path]`. The path overrides the artifact's declared mount."
)]
pub mount: Vec<String>,

#[arg(
short = 'q',
long = "quiet",
Expand All @@ -178,6 +184,10 @@ pub struct RunArgs {
help = "Override entrypoint+cmd. Everything after `--` is the command."
)]
pub cmd: Vec<String>,

/// Application-layer artifact mounts resolved from a bundle/agent ref or `--mount`; not a direct CLI arg.
#[arg(skip)]
pub artifact_mounts: Vec<lns_ipc::ArtifactMount>,
}

pub const DEFAULT_CPUS: u8 = 1;
Expand Down Expand Up @@ -378,6 +388,41 @@ fn parse_port(s: &str) -> Option<u16> {
s.parse::<u16>().ok().filter(|&p| p != 0)
}

#[derive(clap::Args)]
pub struct PushArgs {
#[arg(
help = "A local file (pushed as a typed artifact) or a cached image reference (pushed as an image)."
)]
pub source: String,
#[arg(
help = "Target registry reference, e.g. registry.example.com/org/acme/agents/hermes:v1."
)]
pub reference: String,
#[arg(
long,
help = "Artifact family (agent, policy, tool, …); inferred from the reference path when omitted."
)]
pub family: Option<String>,
#[arg(
long,
value_name = "PATH",
help = "Pack a local file or directory into the artifact's OCI layer (for filesets and other content-bearing artifacts)."
)]
pub content: Option<PathBuf>,
}

#[derive(clap::Args)]
pub struct PullArgs {
#[arg(help = "Registry reference, e.g. registry.example.com/org/acme/agents/hermes:v1.")]
pub reference: String,
#[arg(
short,
long,
help = "Write a pulled artifact here; defaults to stdout. Ignored for images (cached)."
)]
pub output: Option<PathBuf>,
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down
2 changes: 2 additions & 0 deletions crates/lns-cli/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ pub fn registry() -> Vec<CommandSpec> {
crate::config::SPEC,
crate::login::LOGIN_SPEC,
crate::login::LOGOUT_SPEC,
crate::registry::PUSH_SPEC,
crate::registry::PULL_SPEC,
]
}

Expand Down
2 changes: 2 additions & 0 deletions crates/lns-cli/src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,8 @@ mod tests {
mounts: Vec::new(),
quiet: false,
cmd: Vec::new(),
mount: Vec::new(),
artifact_mounts: Vec::new(),
}
}

Expand Down
1 change: 1 addition & 0 deletions crates/lns-cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ pub mod log;
pub mod login;
pub mod policy;
pub mod raw_mode;
pub mod registry;
pub mod run;
pub mod sandbox;
pub mod service;
Expand Down
Loading
Loading