@gemstack/ai-sdk@0.4.0
Minor Changes
-
e784b5d: Decouple the cache-backed run stores from
@rudderjs/cache(epic: framework-agnostic engine).CachedAgentRunStoreandCachedSubAgentRunStoreno longer lazy-import@rudderjs/cacheor read a globalCacheRegistry. They now take a required, caller-supplied cache via{ cache }, typed against the new exportedCacheAdaptercontract (a 3-method interface:get/set/forget). Bring any cache (redis, Memcached, aMap, a framework's cache).Breaking (0.x):
new CachedAgentRunStore()/new CachedSubAgentRunStore()with no cache now throw; pass{ cache }. (All in-repo and documented usage already passes it.)- Default key prefixes changed from
rudderjs:ai:*togemstack:ai:*. These guard 5-minute-TTL ephemeral run snapshots, so the only effect on upgrade is that in-flight parked runs fall back to "not found" once (they self-heal). OverridekeyPrefixto keep the old value if needed.
Also made the Google prompt-cache registry fully neutral (it already accepted a BYO store): it now uses the shared
CacheAdaptertype and agemstack:ai:google-cache:key prefix, with no@rudderjs/cachereferences. -
97ed299: Remove the
@gemstack/ai-sdk/doctorsubpath (epic: framework-agnostic engine).The AI doctor check registered into
@rudderjs/console's doctor registry, coupling the agnostic engine to the Rudder CLI. It has moved to the Rudder binding@rudderjs/ai/doctor(same import path on that package). The./doctorexport is removed here.Breaking (0.x): importing
@gemstack/ai-sdk/doctorno longer resolves; use@rudderjs/ai/doctor. (The@rudderjs/consolepeer stays for now —make:agentand the/serverprovider still use it until they relocate too.) -
4fa5820: Decouple from
@rudderjs/orm(epic: framework-agnostic engine).The ORM-backed store subpaths
@gemstack/ai-sdk/conversation-orm,/memory-orm,/budget-orm, and/memory-embeddingare removed from this package. They imported@rudderjs/orm, coupling the agnostic engine to the Rudder ORM, so they have moved to the Rudder binding@rudderjs/aiunder the same subpath names (@rudderjs/ai/conversation-orm, etc.). The@rudderjs/ormpeer dependency is dropped.Breaking (0.x): update imports from
@gemstack/ai-sdk/{conversation-orm,memory-orm,budget-orm,memory-embedding}to@rudderjs/ai/{...}. The relocated implementations are unchanged and still implement the neutralConversationStore/UserMemory/BudgetStoragecontracts, which remain exported from@gemstack/ai-sdk. Non-Rudder apps implement those contracts against their own persistence, or use the in-memory defaults. -
cf28664: Export
GoogleCacheRegistry(+GoogleCacheRegistryOptions/CacheStoreLike) from the main entry, anddefaultFixturesDir/readFixture/writeFixturefrom the./evalsubpath.These were gemstack-internal symbols that framework bindings could not reach against a published build. Surfacing them lets a binding construct the Gemini context-cache registry with its own
CacheAdapter(new GoogleCacheRegistry({ store })) and lets anai:evalCLI binding read/write recorded fixtures. Purely additive; unblocks relocating the/serverprovider and theai-evalcommand to the Rudder side. -
3cb13db: Decouple
ImageGenerator.store()/AudioGenerator.store()from@rudderjs/storage(epic: framework-agnostic engine).Both
.store()helpers no longer lazy-import@rudderjs/storage. They now take a required, caller-supplied storage via a new exportedStorageAdaptercontract (a one-method interface:put(path, bytes)). Implement it against any blob store (S3, GCS, the filesystem, a framework's storage layer).Breaking (0.x):
.store(path)is now.store(path, storage). Migrateawait ImageGenerator.of(p).store('out.png')toawait ImageGenerator.of(p).store('out.png', storage)wherestoragesatisfiesStorageAdapter. A Rudder app wraps@rudderjs/storagein a ~3-line adapter.
Patch Changes
- 035050e: Quality pass for ai-sdk: rebrand the error/log message prefix from the migration leftover
[Rudder AI]to[ai-sdk](108 messages across 38 modules), matching the sibling packages' package-name prefix convention, and fix the "file an issue" URL in the Bedrock provider to point atgemstack-land/gemstack. No API or behavior change beyond the message text.