Migrating to v3
v3 is a deletion release. Nothing new was added; a lot was taken away. Two changes affect real code — toolkit imports and thelearning flag — and the rest only affects
you if you were calling modules that never did much in the first place.
The main @agentium/core bundle went from 593.8 KB to 363.8 KB (ESM, unminified), a
39% cut, because toolkits moved behind their own entry point and dead modules are gone.
1. Toolkit imports moved
This is the change most projects will hit. Concrete toolkits now come from@agentium/core/toolkits:
toolkitCatalog and ToolkitCatalog moved with them. The base abstractions did not —
Toolkit, collectToolkitTools, and describeToolLibrary are still at the root,
because writing your own toolkit shouldn’t pull in all 30 first-party ones.
Every symbol that moved is a toolkit class, its config type, or the catalog. If
TypeScript tells you '@agentium/core' has no exported member 'XToolkit', add
/toolkits to the import path.
2. learning: true is gone
learning always needed a vector store to do anything useful. Passing true quietly
gave you an in-memory store that vanished on restart, which looked like a working
feature and wasn’t. It now takes a config object only:
Agent.deep() no longer turns learning on for you, for the same reason. Turn it on
explicitly when you have somewhere real to put the vectors.
3. Removed modules
Each of these is gone from@agentium/core. The replacement column is what people were
actually reaching for.
The scheduling, versioning, and compliance modules stored data and emitted events, but
nothing in the agent loop ever read them back. They were reporting surfaces pretending
to be features, so they were cut rather than half-wired.
4. Removed AgentConfig fields
These fields were accepted and then ignored, or wired to a module that no longer exists:
Multi-tenancy itself did not go anywhere.
AgentFactory, ScopedStorage, and
TenantScopedStorage are unchanged; only the config shortcut is gone. See
Multi-tenant.
5. Never-emitted events
AgentEventMap had 41 keys that nothing ever emitted — capacity, compliance, versioning,
and scheduling events among them. Subscribing to one gave you a handler that never fired.
They’re removed, leaving 37 real events, so a typo in an event name is now a type error
rather than silence. Everything you actually listen to is unchanged: run.start,
run.complete, run.error, run.cancelled, run.stream.chunk, tool.call,
tool.result, the memory.* and voice.* families, context.compacted, and
reflection.critique.
6. Storage stayed in core
Storage drivers were considered for extraction into@agentium/storage and deliberately
left in place. InMemoryStorage, SqliteStorage, PostgresStorage, MongoDBStorage,
RedisStorage, MySQLStorage, and DynamoDBStorage are still imported from
@agentium/core. Their database clients are optional peer dependencies, so a driver you
don’t import costs you nothing.
Checklist
- Add
/toolkitsto toolkit imports — or run a find-and-replace onToolkit } from "@agentium/core". - Replace
learning: truewithlearning: { vectorStore }, or drop it. - Delete
generateFollowups,culture,contextCurator,versioning,compliance,tenant, andrateLimitfrom agent configs. - Typecheck. Everything in this guide surfaces as a compile error, not a runtime surprise.