@adonis-agora/agent
Version:
Governed, durable-backed AI agent (chat + tool-calling + governance) for AdonisJS — part of the Agora ecosystem.
61 lines • 2.24 kB
JavaScript
let current;
/** Install (or clear, with `undefined`) the durable agent context. Called by the provider at boot. */
export function setDurableAgentContext(context) {
current = context;
}
/**
* The installed {@link DurableAgentContext}. Throws if the durable runner was reached without the
* provider having wired it — a misconfiguration, never a normal path.
*/
export function getDurableAgentContext() {
if (current === undefined) {
throw new Error('[@adonis-agora/agent] durable agent context is not set — the durable runner was used before ' +
'the provider wired it (call setDurableAgentContext during boot).');
}
return current;
}
let registered;
const engineListeners = new Set();
/** @internal Recorded by `registerAgentWorkflow`: the engine the agent workflow runs on. */
export function rememberAgentEngine(engine) {
registered = engine;
if (engine === undefined)
return;
for (const listener of engineListeners)
listener(engine);
}
/**
* @internal The engine the agent's durable runner was wired on (`durable: true`), if it was — what
* the text channels run their inbound messages on.
*/
export function registeredAgentEngine() {
return registered;
}
/**
* @internal Be told when the agent's durable engine is wired (now, when it already is). Returns an
* unsubscribe function.
*/
export function onAgentEngine(listener) {
engineListeners.add(listener);
if (registered !== undefined)
listener(registered);
return () => engineListeners.delete(listener);
}
let stepServer;
/**
* @internal Where the app's durable engine serves dispatched steps by name (its transport) —
* recorded by the provider before the agent workflow is registered, so the text channels dispatch
* their phases there.
*/
export function rememberAgentStepServer(server) {
stepServer = server;
}
/** @internal See {@link rememberAgentStepServer}. */
export function registeredAgentStepServer() {
return stepServer;
}
/** @internal The engine a detached delegation starts on — see {@link DurableAgentContext.engine}. */
export function agentEngine(context) {
return context.engine ?? registered;
}
//# sourceMappingURL=agent-run-context.js.map