I need help to find a strategy to speed up my development process. I have written a framework in Julia, which I use for writing conversational agents.
Whenever I am working on the framework code, everything is painless and automatic, thanks to Revise (execpt the ocassional struct redefinition).
However, when I am working on client-code, I have to reload everything, which can be very expensive (an agent potentially includes a lot of modules, read some TOML files and transform this into objects). I will try to put an abstract example:
agent_x = AgentXModule.agent agent_y = AgentXModule.agent agent_z = AgentXModule.agent agent_selector = Framework.AgentSelector( agentX = agent_x, agentY = agent_Y, agentZ = agent_Z, )
Each agent has a structure similar to this:
/agent_x /scenarios/ |_ scenario_1.toml /modules/ |_ scenario_1.jl
And is defined in a module like this:
module AgentX using Framework include("agents/x/modules/scenario_1.jl") agent = Framework.AgentXExpensiveInstantiation(...) end
What I would like to do is to observer those
scenarios folder so when one changes, the corresponding
Agent is partially updated as wells as
AgentSelector with the new
Is this feasible with
Cassette.jl? Does someone have any experience with a similar problem or can provide any guidance?
Thanks in advance.