1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
using Agent.App.Cli;
using Agent.App.Configuration;
namespace Agent.Core.Tests;
public sealed class ConfigurationTests
{
[Fact]
public void ValidYamlLoadsTypedConfiguration()
{
using var directory = new TestDirectory();
string config = CreateValidConfiguration(directory);
AgentConfiguration result = ConfigurationLoader.Load(config);
Assert.Equal(1, result.SchemaVersion);
Assert.Equal("model", result.Ollama.Model);
Assert.Equal("deny", result.Sandbox.Network.Mode);
}
[Fact]
public void UnknownYamlPropertyIsFatal()
{
using var directory = new TestDirectory();
string config = CreateValidConfiguration(directory);
System.IO.File.AppendAllText(config, "unknown_root: true\n");
Assert.Throws<ConfigurationException>(() => ConfigurationLoader.Load(config));
}
[Fact]
public void InvalidSchemaIsFatal()
{
using var directory = new TestDirectory();
string config = CreateValidConfiguration(directory);
System.IO.File.WriteAllText(config, System.IO.File.ReadAllText(config).Replace("schema_version: 1", "schema_version: 2", StringComparison.Ordinal));
Assert.Throws<ConfigurationException>(() => ConfigurationLoader.Load(config));
}
[Fact]
public void CommandLineLanguageOverrideIsCaptured()
{
CommandLine result = CommandLine.Parse(["serve", "--lang", "ja", "--transport", "http"]);
Assert.Equal("ja", result.Language);
Assert.Equal("http", result.Transport);
}
private static string CreateValidConfiguration(TestDirectory directory)
{
directory.File("prompts/user-system.md", string.Empty);
Directory.CreateDirectory(System.IO.Path.Combine(directory.Path, "config/locales"));
Directory.CreateDirectory(System.IO.Path.Combine(directory.Path, "skills"));
return directory.File("agent.yaml", """
schema_version: 1
application:
language: en
agent:
user_system_prompt: prompts/user-system.md
ollama:
endpoint: http://127.0.0.1:11434
model: model
localization:
directory: config/locales
fallback: en
skills:
directory: skills
""");
}
}
|