Skip to content

Releases: gemstack-land/gemstack

@gemstack/mcp@0.2.1

27 Jun 09:03
5827ced

Choose a tag to compare

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.

@gemstack/ai-skills@0.2.1

27 Jun 11:13
153d55a

Choose a tag to compare

Patch Changes

  • Updated dependencies [dbc8b3a]
  • Updated dependencies [1b2ba93]
    • @gemstack/ai-sdk@0.5.0

@gemstack/ai-skills@0.2.0

27 Jun 09:03
5827ced

Choose a tag to compare

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

@gemstack/ai-sdk@0.5.0

27 Jun 11:13
153d55a

Choose a tag to compare

Minor Changes

  • dbc8b3a: Make agent.queue() / .broadcast() framework-agnostic. The engine no longer dynamically imports @rudderjs/queue or @rudderjs/broadcast; instead register a neutral adapter once at startup with the new configureAiQueue({ dispatch, broadcast }). New public exports: configureAiQueue, and the QueueDispatch / QueueBroadcast types. Rudder users get this wired automatically by @rudderjs/ai's provider (no app change). This removes the last @rudderjs/* reference from the engine source.
  • 1b2ba93: Remove the relocated Rudder bindings from the engine: the /server provider, the make:agent scaffolder, and the ai:eval CLI command, plus the @rudderjs/core and @rudderjs/console optional peers. These now live in @rudderjs/ai (Rudder users pick them up there unchanged). The framework-agnostic engine no longer carries any @rudderjs/* peer dependency for these paths. Closes the ai-sdk/Rudder decouple epic.

@gemstack/ai-sdk@0.4.0

27 Jun 09:03
5827ced

Choose a tag to compare

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.

@gemstack/ai-mcp@0.1.2

27 Jun 11:13
153d55a

Choose a tag to compare

Patch Changes

  • Updated dependencies [dbc8b3a]
  • Updated dependencies [1b2ba93]
    • @gemstack/ai-sdk@0.5.0

@gemstack/ai-mcp@0.1.1

27 Jun 09:03
5827ced

Choose a tag to compare

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

@gemstack/ai-autopilot@0.1.2

27 Jun 11:13
153d55a

Choose a tag to compare

Patch Changes

  • Updated dependencies [dbc8b3a]
  • Updated dependencies [1b2ba93]
    • @gemstack/ai-sdk@0.5.0

@gemstack/ai-autopilot@0.1.1

27 Jun 09:03
5827ced

Choose a tag to compare

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

@gemstack/mcp@0.2.0

26 Jun 15:25
b0fb4ae

Choose a tag to compare

Minor Changes

  • f7c7a45: Promote MCP-authoring utilities to the public API so inspectors and tooling no longer need internal access.

    • McpServer.introspect(): a public introspection surface returning the registered tool / resource / prompt classes (constructors, not instances) without starting a session. The supported alternative to the internal _tools() / _resources() / _prompts() accessors, which stay @internal.
    • zodToJsonSchema(schema): convert a Zod schema to the JSON Schema MCP advertises (exported from the package entry).
    • matchUriTemplate(template, uri): match a URI against a resource://{template} pattern and extract params.
    • New McpServerIntrospection and ZodLikeObject types exported alongside.

    This lets a thin framework binding (e.g. @rudderjs/mcp) build a server inspector against the published surface instead of re-declaring internal shapes or carrying local copies of the helpers.