diff --git a/.changeset/sync-agent-registration-before-ready.md b/.changeset/sync-agent-registration-before-ready.md new file mode 100644 index 000000000..9d5203dbe --- /dev/null +++ b/.changeset/sync-agent-registration-before-ready.md @@ -0,0 +1,5 @@ +--- +"@voltagent/core": patch +--- + +Register agents synchronously during VoltAgent construction so getAgent and getAgents can return agents with global defaults before ready resolves. diff --git a/packages/core/src/voltagent.spec.ts b/packages/core/src/voltagent.spec.ts index 6f751b995..cf2bc97aa 100644 --- a/packages/core/src/voltagent.spec.ts +++ b/packages/core/src/voltagent.spec.ts @@ -82,6 +82,13 @@ describe("VoltAgent defaults", () => { expect.arrayContaining(["ls", "read_file", "execute_command", "workspace_search"]), ); + const retrievedAgent = voltAgent.getAgent("assistant"); + expect(retrievedAgent).toBe(agent); + expect(retrievedAgent?.getWorkspace()).toBe(workspace); + expect(retrievedAgent?.getTools().map((tool) => tool.name)).toEqual( + expect.arrayContaining(["ls", "read_file", "execute_command", "workspace_search"]), + ); + await voltAgent.ready; await voltAgent.shutdown(); }); diff --git a/packages/core/src/voltagent.ts b/packages/core/src/voltagent.ts index 4b9887e4d..b3dde4d8d 100644 --- a/packages/core/src/voltagent.ts +++ b/packages/core/src/voltagent.ts @@ -129,9 +129,11 @@ export class VoltAgent { // Setup graceful shutdown handlers this.setupShutdownHandlers(); + // Register agents synchronously so getAgent/getAgents can be used immediately after construction. + // Workspace defaults are applied before registration; workspace initialization is still awaited by ready. + this.registerAgents(options.agents); + const finalizeInit = () => { - // ✅ NOW register agents - they can access global telemetry exporter - this.registerAgents(options.agents); this.registerTriggers(options.triggers); // Register workflows if provided