Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions .changeset/ai-autopilot-quality-pass.md

This file was deleted.

13 changes: 0 additions & 13 deletions .changeset/ai-sdk-cache-seam.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/ai-sdk-drop-doctor-subpath.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/ai-sdk-drop-orm-subpaths.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/ai-sdk-export-cache-registry-eval-helpers.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/ai-sdk-quality-pass.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/ai-sdk-storage-seam.md

This file was deleted.

12 changes: 0 additions & 12 deletions .changeset/ai-skills-quality-pass.md

This file was deleted.

10 changes: 0 additions & 10 deletions .changeset/mcp-quality-pass.md

This file was deleted.

19 changes: 19 additions & 0 deletions packages/ai-autopilot/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# @gemstack/ai-autopilot

## 0.1.1

### Patch Changes

- 81fe17b: Quality + docs pass for ai-autopilot:

- `Supervisor` now validates its options at construction (`plan` must be a function, `workers` is required, `concurrency`/`maxSubtasks` must be positive integers) and `run()` rejects an empty task, so misconfiguration fails fast with a clear message instead of deep in a planner call.
- An `onEvent` callback that throws is now isolated (logged and swallowed) so an observer bug can no longer abort a supervised run.
- Corrected the `SupervisorRun.usage` docs: it aggregates dispatched-subtask usage only (the `Planner`/`Synthesizer` contracts return data, not usage, so planning/synthesis spend isn't observable).
- Clarified that `maxSubtasks` and `budget` are optional, marked the internal `runPool` helper `@internal`, and added JSDoc examples.

- Updated dependencies [e784b5d]
- Updated dependencies [97ed299]
- Updated dependencies [4fa5820]
- Updated dependencies [cf28664]
- Updated dependencies [035050e]
- Updated dependencies [3cb13db]
- @gemstack/ai-sdk@0.4.0

## 0.1.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/ai-autopilot/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gemstack/ai-autopilot",
"version": "0.1.0",
"version": "0.1.1",
"description": "Orchestration for @gemstack/ai-sdk agents: a Supervisor that plans, dispatches subagents (bounded concurrency + budget guardrails), and synthesizes the result.",
"keywords": [
"ai",
Expand Down
12 changes: 12 additions & 0 deletions packages/ai-mcp/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# @gemstack/ai-mcp

## 0.1.1

### Patch Changes

- Updated dependencies [e784b5d]
- Updated dependencies [97ed299]
- Updated dependencies [4fa5820]
- Updated dependencies [cf28664]
- Updated dependencies [035050e]
- Updated dependencies [3cb13db]
- @gemstack/ai-sdk@0.4.0

## 0.1.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/ai-mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gemstack/ai-mcp",
"version": "0.1.0",
"version": "0.1.1",
"description": "Bridge between @gemstack/ai-sdk Agents and Model Context Protocol servers: consume remote MCP tools as Agent tools, and expose an Agent as an MCP server.",
"keywords": [
"ai",
Expand Down
41 changes: 41 additions & 0 deletions packages/ai-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,46 @@
# @gemstack/ai-sdk

## 0.4.0

### Minor Changes

- e784b5d: Decouple the cache-backed run stores from `@rudderjs/cache` (epic: framework-agnostic engine).

`CachedAgentRunStore` and `CachedSubAgentRunStore` no longer lazy-import `@rudderjs/cache` or read a global `CacheRegistry`. They now take a required, caller-supplied cache via `{ cache }`, typed against the new exported `CacheAdapter` contract (a 3-method interface: `get` / `set` / `forget`). Bring any cache (redis, Memcached, a `Map`, 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:*` to `gemstack: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). Override `keyPrefix` to 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 `CacheAdapter` type and a `gemstack:ai:google-cache:` key prefix, with no `@rudderjs/cache` references.

- 97ed299: Remove the `@gemstack/ai-sdk/doctor` subpath (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 `./doctor` export is removed here.

**Breaking (0.x):** importing `@gemstack/ai-sdk/doctor` no longer resolves; use `@rudderjs/ai/doctor`. (The `@rudderjs/console` peer stays for now — `make:agent` and the `/server` provider 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-embedding` are **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/ai` under the same subpath names (`@rudderjs/ai/conversation-orm`, etc.). The `@rudderjs/orm` peer 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 neutral `ConversationStore` / `UserMemory` / `BudgetStorage` contracts, 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, and `defaultFixturesDir` / `readFixture` / `writeFixture` from the `./eval` subpath.

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 an `ai:eval` CLI binding read/write recorded fixtures. Purely additive; unblocks relocating the `/server` provider and the `ai-eval` command 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 exported `StorageAdapter` contract (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)`. Migrate `await ImageGenerator.of(p).store('out.png')` to `await ImageGenerator.of(p).store('out.png', storage)` where `storage` satisfies `StorageAdapter`. A Rudder app wraps `@rudderjs/storage` in 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 at `gemstack-land/gemstack`. No API or behavior change beyond the message text.

## 0.3.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/ai-sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gemstack/ai-sdk",
"version": "0.3.0",
"version": "0.4.0",
"description": "AI engine: providers, agents, tools, streaming, middleware. The first GemStack package.",
"keywords": [
"ai",
Expand Down
23 changes: 23 additions & 0 deletions packages/ai-skills/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
# @gemstack/ai-skills

## 0.2.0

### Minor Changes

- 3eb72d4: Quality + docs pass for ai-skills:

- `SkillRegistry.discover()` no longer aborts the whole scan when a single `SKILL.md` is unreadable or malformed; the bad bundle is skipped and the rest are still indexed. Pass `discover(root, { onError })` to observe what was skipped. This restores the documented "index hundreds of skills safely" contract.
- Skill `name` is now validated at parse time against `[a-zA-Z0-9_-]` instead of being silently mangled later at compose time, so invalid names fail fast with a clear message.
- `load()` on an undiscovered name now lists the available skill names (or hints to call `discover()` first).
- `loadSkill()` distinguishes a missing `SKILL.md` from an unreadable one.
- Deduplicated the internal `fileExists`/`isDirectory` helpers into a shared module.
- README: clarified that the tools module is loaded compiled (`tools.js`/`.mjs`/`.cjs`, not `tools.ts`), and added a direct `loadSkill()` usage example.

### Patch Changes

- Updated dependencies [e784b5d]
- Updated dependencies [97ed299]
- Updated dependencies [4fa5820]
- Updated dependencies [cf28664]
- Updated dependencies [035050e]
- Updated dependencies [3cb13db]
- @gemstack/ai-sdk@0.4.0

## 0.1.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/ai-skills/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gemstack/ai-skills",
"version": "0.1.0",
"version": "0.2.0",
"description": "Portable capability bundles for @gemstack/ai-sdk agents: load SKILL.md skills (instructions + tools + resources) and compose them onto an Agent.",
"keywords": [
"ai",
Expand Down
11 changes: 11 additions & 0 deletions packages/mcp/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# @gemstack/mcp

## 0.2.1

### Patch Changes

- 36f56e2: Quality + docs pass for mcp:

- OAuth: reject an empty bearer token (`Authorization: Bearer ` with no value) up front with a `401 invalid_token` instead of forwarding an empty string to `verifyToken`.
- Errors thrown when a `@Handle` dependency fails to resolve now chain the original via `{ cause }`.
- Documented `McpResponse.text/json/error` (and when to prefer `error()` over throwing); neutralized framework-specific wording in the OAuth core docs.
- README: completed the OAuth 2.1 section (a real `jose`-based `verifyToken`, and that `oauth2McpMiddleware` + `registerOAuth2Metadata` must both be wired), softened the origin framing.

## 0.2.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gemstack/mcp",
"version": "0.2.0",
"version": "0.2.1",
"description": "Agent-agnostic framework for authoring Model Context Protocol (MCP) servers: tools, resources, prompts, decorators, OAuth 2.1, a framework-neutral HTTP handler, and a test client. The graduation of @rudderjs/mcp.",
"keywords": [
"mcp",
Expand Down
Loading