profile: remove lua profile resolver
This commit is contained in:
@@ -845,15 +845,15 @@ recursive = true
|
||||
external.display()
|
||||
),
|
||||
);
|
||||
let profile = tmp.path().join("profile.lua");
|
||||
let profile = tmp.path().join("profile.toml");
|
||||
write(
|
||||
&profile,
|
||||
r#"
|
||||
local yoi = require("yoi")
|
||||
return yoi.profile {
|
||||
slug = "override-scope",
|
||||
model = { scheme = "anthropic", model_id = "test-model" },
|
||||
}
|
||||
slug = "override-scope"
|
||||
|
||||
[model]
|
||||
scheme = "anthropic"
|
||||
model_id = "test-model"
|
||||
"#,
|
||||
);
|
||||
let cli = Cli::try_parse_from([
|
||||
@@ -889,7 +889,7 @@ return yoi.profile {
|
||||
#[test]
|
||||
fn profile_uses_selected_profile() {
|
||||
let tmp = TempDir::new().unwrap();
|
||||
let profile = tmp.path().join("profile.lua");
|
||||
let profile = tmp.path().join("profile.toml");
|
||||
let cli = Cli::try_parse_from([
|
||||
"yoi worker",
|
||||
"--profile",
|
||||
@@ -1223,8 +1223,14 @@ permission = "write"
|
||||
fn profile_conflicts_with_manifest_and_restore_modes() {
|
||||
let segment_id = session_store::new_segment_id().to_string();
|
||||
for args in [
|
||||
vec!["yoi worker", "--profile", "p.lua", "--manifest", "m.toml"],
|
||||
vec!["yoi worker", "--profile", "p.lua", "--session", &segment_id],
|
||||
vec!["yoi worker", "--profile", "p.toml", "--manifest", "m.toml"],
|
||||
vec![
|
||||
"yoi worker",
|
||||
"--profile",
|
||||
"p.toml",
|
||||
"--session",
|
||||
&segment_id,
|
||||
],
|
||||
] {
|
||||
let err = Cli::try_parse_from(args).unwrap_err();
|
||||
assert_eq!(err.kind(), clap::error::ErrorKind::ArgumentConflict);
|
||||
@@ -1233,9 +1239,9 @@ permission = "write"
|
||||
|
||||
#[test]
|
||||
fn profile_and_worker_are_independent_startup_inputs() {
|
||||
let cli =
|
||||
Cli::try_parse_from(["yoi worker", "--profile", "p.lua", "--worker", "agent"]).unwrap();
|
||||
assert_eq!(cli.profile.as_deref(), Some("p.lua"));
|
||||
let cli = Cli::try_parse_from(["yoi worker", "--profile", "p.toml", "--worker", "agent"])
|
||||
.unwrap();
|
||||
assert_eq!(cli.profile.as_deref(), Some("p.toml"));
|
||||
assert_eq!(cli.worker.as_deref(), Some("agent"));
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@ impl ProtocolProviderContribution {
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum FeatureRuntimeKind {
|
||||
Builtin,
|
||||
LuaProfile,
|
||||
Profile,
|
||||
ExternalPlugin,
|
||||
ProtocolProvider,
|
||||
}
|
||||
|
||||
@@ -183,7 +183,9 @@ fn parse_spawn_profile_selector(raw: Option<&str>) -> Result<SpawnProfileSelecto
|
||||
|| raw.starts_with("./")
|
||||
|| raw.starts_with("../")
|
||||
|| raw.contains('/')
|
||||
|| raw.ends_with(".lua")
|
||||
|| raw.ends_with(".dcdl")
|
||||
|| raw.ends_with(".json")
|
||||
|| raw.ends_with(".toml")
|
||||
|| raw.ends_with(".nix")
|
||||
{
|
||||
return Err(format!(
|
||||
@@ -1181,25 +1183,31 @@ mod tests {
|
||||
}
|
||||
|
||||
const CODER_PROFILE: &str = r#"
|
||||
local profile = require("yoi.profile")
|
||||
local scope = require("yoi.scope")
|
||||
return profile {
|
||||
slug = "coder",
|
||||
model = { scheme = "anthropic", model_id = "coder-model" },
|
||||
engine = { instruction = "$yoi/coder", language = "Coderish", max_tokens = 2222 },
|
||||
scope = scope.workspace_write(),
|
||||
}
|
||||
slug = "coder"
|
||||
scope = "workspace_write"
|
||||
|
||||
[model]
|
||||
scheme = "anthropic"
|
||||
model_id = "coder-model"
|
||||
|
||||
[engine]
|
||||
instruction = "$yoi/coder"
|
||||
language = "Coderish"
|
||||
max_tokens = 2222
|
||||
"#;
|
||||
|
||||
const REVIEWER_PROFILE: &str = r#"
|
||||
local profile = require("yoi.profile")
|
||||
local scope = require("yoi.scope")
|
||||
return profile {
|
||||
slug = "reviewer",
|
||||
model = { scheme = "anthropic", model_id = "reviewer-model" },
|
||||
engine = { instruction = "$yoi/reviewer", language = "Reviewerish", max_tokens = 3333 },
|
||||
scope = scope.workspace_write(),
|
||||
}
|
||||
slug = "reviewer"
|
||||
scope = "workspace_write"
|
||||
|
||||
[model]
|
||||
scheme = "anthropic"
|
||||
model_id = "reviewer-model"
|
||||
|
||||
[engine]
|
||||
instruction = "$yoi/reviewer"
|
||||
language = "Reviewerish"
|
||||
max_tokens = 3333
|
||||
"#;
|
||||
|
||||
#[test]
|
||||
@@ -1297,8 +1305,8 @@ return profile {
|
||||
&project,
|
||||
Some("reviewer"),
|
||||
&[
|
||||
("coder", "coder.lua", CODER_PROFILE),
|
||||
("reviewer", "reviewer.lua", REVIEWER_PROFILE),
|
||||
("coder", "coder.toml", CODER_PROFILE),
|
||||
("reviewer", "reviewer.toml", REVIEWER_PROFILE),
|
||||
],
|
||||
);
|
||||
let parent = parent_manifest(&project, None);
|
||||
@@ -1333,8 +1341,8 @@ return profile {
|
||||
&project,
|
||||
Some("coder"),
|
||||
&[
|
||||
("coder", "coder.lua", CODER_PROFILE),
|
||||
("reviewer", "reviewer.lua", REVIEWER_PROFILE),
|
||||
("coder", "coder.toml", CODER_PROFILE),
|
||||
("reviewer", "reviewer.toml", REVIEWER_PROFILE),
|
||||
],
|
||||
);
|
||||
let parent = parent_manifest(&project, None);
|
||||
@@ -1414,7 +1422,7 @@ return profile {
|
||||
let available = write_project_profile_registry(
|
||||
&project,
|
||||
Some("reviewer"),
|
||||
&[("reviewer", "reviewer.lua", REVIEWER_PROFILE)],
|
||||
&[("reviewer", "reviewer.toml", REVIEWER_PROFILE)],
|
||||
);
|
||||
let parent = parent_manifest(&project, None);
|
||||
let scope = vec![abs_rule(&delegated, Permission::Write)];
|
||||
@@ -1451,7 +1459,7 @@ return profile {
|
||||
let available = write_project_profile_registry(
|
||||
&project,
|
||||
Some("reviewer"),
|
||||
&[("reviewer", "reviewer.lua", REVIEWER_PROFILE)],
|
||||
&[("reviewer", "reviewer.toml", REVIEWER_PROFILE)],
|
||||
);
|
||||
let parent = parent_manifest(&parent_root, Some(&parent_root.join("deny")));
|
||||
let scope = vec![abs_rule(&delegated, Permission::Read)];
|
||||
@@ -1497,12 +1505,12 @@ return profile {
|
||||
let available = write_project_profile_registry(
|
||||
&project,
|
||||
None,
|
||||
&[("coder", "coder.lua", CODER_PROFILE)],
|
||||
&[("coder", "coder.toml", CODER_PROFILE)],
|
||||
);
|
||||
let parent = parent_manifest(&project, None);
|
||||
let scope = vec![abs_rule(&project, Permission::Read)];
|
||||
|
||||
let invalid = parse_spawn_profile_selector(Some("./reviewer.lua"))
|
||||
let invalid = parse_spawn_profile_selector(Some("./reviewer.toml"))
|
||||
.map_err(|msg| format!("{msg}{}", available.error_suffix()))
|
||||
.unwrap_err();
|
||||
assert!(invalid.contains("Use `default`, `inherit`"));
|
||||
@@ -1521,7 +1529,7 @@ return profile {
|
||||
assert!(default_config.contains("\"name\":\"child\""));
|
||||
|
||||
let user_config = tmp.path().join("user-profiles.toml");
|
||||
std::fs::write(&user_config, "[profile]\ncoder = \"user-coder.lua\"\n").unwrap();
|
||||
std::fs::write(&user_config, "[profile]\ncoder = \"user-coder.toml\"\n").unwrap();
|
||||
let project_config = project.join(".yoi/profiles.toml");
|
||||
let ambiguous = AvailableProfiles {
|
||||
registry: Some(
|
||||
@@ -1550,9 +1558,9 @@ return profile {
|
||||
#[test]
|
||||
fn spawn_profile_selector_rejects_path_like_values() {
|
||||
for raw in [
|
||||
"./reviewer.lua",
|
||||
"path:./reviewer.lua",
|
||||
"/tmp/reviewer.lua",
|
||||
"./reviewer.toml",
|
||||
"path:./reviewer.toml",
|
||||
"/tmp/reviewer.toml",
|
||||
"legacy.nix",
|
||||
] {
|
||||
let err = parse_spawn_profile_selector(Some(raw)).unwrap_err();
|
||||
|
||||
Reference in New Issue
Block a user