config := agent.config
config.Name = "Lena"
- writeAgentConfig(t, dir, config)
+ agentWriteTestConfig(t, dir, config)
renamed, err := openAgent(dir)
require.NoError(t, err)
text, err := agent.Prompt()
require.NoError(t, err)
- require.Equal(t, prompt(agent.config.Name, ""), text)
+ require.Equal(t, prompt(agent.config.Name, filepath.Join(dir, agentInstructionsFileName), ""), text)
+
+ require.NoError(t, os.WriteFile(filepath.Join(dir, agentInstructionsFileName), []byte("I am Lena.\n"), 0o600))
- require.NoError(t, os.WriteFile(filepath.Join(dir, instructionsFileName), []byte("I am Lena.\n"), 0o600))
text, err = agent.Prompt()
require.NoError(t, err)
- require.Equal(t, prompt(agent.config.Name, "I am Lena."), text)
+ require.Equal(t, prompt(agent.config.Name, filepath.Join(dir, agentInstructionsFileName), "I am Lena."), text)
+}
+
+func TestAgentPromptUsesAnAbsoluteInstructionsPath(t *testing.T) {
+ dir := t.TempDir()
+ workdir, err := os.Getwd()
+ require.NoError(t, err)
+
+ relative, err := filepath.Rel(workdir, dir)
+ require.NoError(t, err)
+ require.False(t, filepath.IsAbs(relative))
+
+ agent, err := openAgent(relative)
+ require.NoError(t, err)
+
+ text, err := agent.Prompt()
+ require.NoError(t, err)
+ require.Contains(t, text, "The user's instructions live in the file "+filepath.Join(dir, agentInstructionsFileName)+",")
}
-// writeAgentConfig writes config as the config.json of the agent in dir.
-func writeAgentConfig(t *testing.T, dir string, config AgentConfig) {
+// agentWriteTestConfig writes config as the config.json of the agent in dir.
+func agentWriteTestConfig(t *testing.T, dir string, config AgentConfig) {
t.Helper()
data, err := json.Marshal(config)