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
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/benchmark_case.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Benchmark Case
description: Propose a benchmark, regression case, or evaluation scenario.
labels: [benchmark]
body:
- type: textarea
id: scenario
attributes:
label: Scenario
description: What behavior should the benchmark measure?
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected signal
description: What would a good result demonstrate?
validations:
required: true
- type: textarea
id: data
attributes:
label: Dataset or fixture
description: Link or describe the data needed to reproduce the case.
- type: textarea
id: notes
attributes:
label: Notes
37 changes: 37 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Bug Report
description: Report a reproducible bug in the AtomicMemory SDK.
labels: [bug]
body:
- type: textarea
id: description
attributes:
label: Description
description: What happened, and what did you expect instead?
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: Include a minimal code sample or repository when possible.
placeholder: |
1. Install package version ...
2. Configure provider ...
3. Run ...
validations:
required: true
- type: input
id: version
attributes:
label: Package version
placeholder: "@atomicmemory/atomicmemory-sdk@..."
- type: input
id: runtime
attributes:
label: Runtime
placeholder: "Node 22, browser, extension, edge runtime, etc."
- type: textarea
id: logs
attributes:
label: Relevant logs or errors
render: shell
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Documentation
url: https://docs.atomicmemory.ai
about: Read the AtomicMemory docs and quickstarts.
- name: Discussions
url: https://github.com/atomicstrata/atomicmemory-sdk/discussions
about: Ask questions, share ideas, and discuss roadmap items.
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/docs_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Docs Issue
description: Report missing, unclear, or incorrect documentation.
labels: [docs]
body:
- type: input
id: page
attributes:
label: Page or file
placeholder: "README.md, docs URL, API section, etc."
validations:
required: true
- type: textarea
id: issue
attributes:
label: What is wrong or missing?
validations:
required: true
- type: textarea
id: suggestion
attributes:
label: Suggested fix
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Feature Request
description: Suggest an SDK capability or improvement.
labels: [enhancement]
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What user or developer problem should this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: Describe the API, behavior, or developer experience you want.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
- type: dropdown
id: area
attributes:
label: Area
options:
- Memory client
- Provider contract
- Storage
- Embeddings
- Search/ranking
- Browser/runtime support
- Documentation
- Not sure
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/provider_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Provider Request
description: Request support for a memory, embedding, LLM, storage, or reranking provider.
labels: [provider]
body:
- type: input
id: provider
attributes:
label: Provider name
placeholder: "Provider or service name"
validations:
required: true
- type: dropdown
id: provider-type
attributes:
label: Provider type
options:
- Memory backend
- Embedding model
- LLM
- Reranker
- Storage
- Other
validations:
required: true
- type: textarea
id: use-case
attributes:
label: Use case
description: What workflow would this provider enable?
validations:
required: true
- type: textarea
id: references
attributes:
label: API docs or references
27 changes: 27 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## Summary

<!-- What changed and why? -->

## Validation

- [ ] Tests were run or the reason they were not run is documented.
- [ ] Typecheck/build were run when code or package output changed.
- [ ] Docs were updated or no docs changes are needed.
- [ ] Benchmark or performance impact was considered.

## Change Type

- [ ] Bug fix
- [ ] Feature
- [ ] Provider change
- [ ] Refactoring (no behavior change)
- [ ] Documentation
- [ ] Tests / benchmarks
- [ ] Chore / maintenance

## Breaking Changes

- [ ] No breaking changes
- [ ] Breaking changes are documented below

<!-- Describe migration impact if applicable. -->
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

## [Unreleased]

## [1.0.1] - 2026-05-14

### Changed
- Version bump for public package publication after internal-to-public repository sync.

## [1.0.0]

Initial public release.
Expand Down
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# @atomicmemory/sdk

[![CI](https://github.com/atomicstrata/atomicmemory-sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/atomicstrata/atomicmemory-sdk/actions/workflows/ci.yml)
[![npm](https://img.shields.io/npm/v/%40atomicmemory%2Fsdk?label=npm)](https://www.npmjs.com/package/@atomicmemory/sdk)
[![Docs](https://img.shields.io/badge/docs-docs.atomicstrata.ai-blue)](https://docs.atomicstrata.ai)
[![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)

Backend-agnostic memory-layer SDK — pluggable providers, local embeddings, storage adapters, semantic search.

[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
**Docs:** [docs.atomicstrata.ai/sdk](https://docs.atomicstrata.ai/sdk)

AtomicMemory Core currently reaches cost-Pareto SOTA on BEAM-100K, BEAM-1M, and LoCoMo10, with BEAM-10M parity against the strongest published Mem0-new result. The SDK is the typed application surface for building on that memory layer.

## What this package provides

Expand Down Expand Up @@ -34,6 +41,8 @@ Also works with `npm install` / `yarn add`.

## Quick start

Prerequisite: start `atomicmemory-core` first. The full SDK walkthrough is in the [SDK Quickstart](https://docs.atomicstrata.ai/sdk/quickstart).

```ts
import { AtomicMemoryClient } from '@atomicmemory/sdk';

Expand Down Expand Up @@ -69,9 +78,9 @@ const artifact = await client.storage.put({
console.log(artifact.artifactId);
```

The flat `MemoryClient` export is still available for internal-tool
consumers but its JSDoc tags it `@internal`; new code should reach
the memory namespace through `AtomicMemoryClient.memory`.
Applications that only need memory operations can still use
`MemoryClient` directly. New integrations should prefer the
namespaced `AtomicMemoryClient.memory` surface.

## Providers

Expand Down
72 changes: 72 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# AtomicMemory SDK Roadmap

This roadmap is directional. It describes the areas the maintainers are actively investing in, but it is not a promise of specific features or dates.

The AtomicMemory SDK provides the TypeScript interface for applications, agents, and integrations that need to capture, store, retrieve, and package memory. The near-term focus is a stable developer surface that works across local, server, and agent-oriented runtimes.

## Current Focus

- Keep the SDK API stable and aligned with AtomicMemory Core.
- Make memory capture and retrieval flows easier to use from applications and agent integrations.
- Improve provider configuration for embeddings, storage, and retrieval behavior.
- Keep local-first and self-hosted use cases straightforward.
- Add examples that show realistic memory workflows rather than isolated snippets.
- Preserve a clear separation between SDK logic and application-specific UI or extension behavior.

## Near-Term Work

### API Stability

- Clarify the public client surface for capture, search, retrieval, mutation, and context packaging.
- Tighten TypeScript types for request options, result metadata, and provider configuration.
- Document compatibility expectations across SDK and Core versions.
- Add migration notes when public behavior changes.

### Retrieval And Context Packaging

- Improve helpers for retrieving relevant memories and packaging them for model prompts.
- Expose enough metadata for applications to debug why a memory was selected.
- Add better support for correction-aware and time-sensitive memory workflows.
- Keep benchmark-driven behavior changes covered by reproducible examples or tests.

### Providers And Runtime Support

- Continue improving provider interfaces for embeddings, storage, and transport.
- Document recommended provider choices for common local and server deployments.
- Keep browser, Node.js, and server-side usage boundaries explicit.
- Avoid application-specific assumptions in the SDK layer.

### Developer Experience

- Expand quickstarts and examples for common application flows.
- Improve error messages for configuration and provider failures.
- Add focused tests around public API behavior and runtime compatibility.
- Keep package metadata, badges, and release notes easy to inspect.

## Later Work

- Higher-level workflows for memory lifecycle management where they remain runtime-agnostic.
- Additional provider adapters driven by contributor and application demand.
- More structured retrieval helpers over entities, events, and relationships.
- Deeper debugging utilities for ranking, token budgets, and prompt assembly.

## Contribution Areas

Good first areas for contributors include:

- Type improvements and documentation for public APIs.
- Small examples that show real capture, retrieval, and context assembly flows.
- Provider adapter fixes and compatibility tests.
- Bug reports with minimal reproduction projects.
- Tests that protect behavior across supported runtimes.

## Non-Goals

- The SDK should not contain browser-extension UI logic.
- The SDK should not require a hosted AtomicMemory service.
- The SDK should not expose private roadmap, benchmark, or customer-specific planning details.
- The SDK should not hide provider behavior behind uninspectable defaults.

## How We Prioritize

We prioritize changes that make the SDK easier to adopt safely: stable APIs, clear examples, predictable runtime behavior, and testable retrieval improvements.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/sdk",
"version": "1.0.0",
"version": "1.0.1",
"type": "module",
"engines": {
"node": ">=22"
Expand Down
1 change: 1 addition & 0 deletions src/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ export * from './memory/pipeline';
export * from './memory/registration';
export * from './memory/atomicmemory-provider';
export * from './memory/mem0-provider';
export * from './memory/hindsight-provider';
12 changes: 12 additions & 0 deletions src/client/__tests__/memory-client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,16 @@ describe('MemoryClient', () => {
});
expect(client.atomicmemory).toBeUndefined();
});

it('initializes hindsight through the default provider registry', async () => {
const client = new MemoryClient({
providers: {
hindsight: { apiUrl: 'https://api.hindsight.vectorize.io' },
},
});

await client.initialize();

expect(client.capabilities().extensions.reflect).toBe(true);
});
});
11 changes: 5 additions & 6 deletions src/client/atomic-memory-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
* v1 SDK is server-side only. Browser bundles must proxy through a
* trusted server (the webapp-sdk does this for `Atomicmem-webapp`).
*
* The flat `MemoryClient` export remains available for internal-tool
* consumers but its JSDoc tags it `@internal` and steers readers
* toward `AtomicMemoryClient.memory`.
* Applications that only need memory operations can still use
* `MemoryClient` directly. New integrations should prefer
* `AtomicMemoryClient.memory`.
*/

import { MemoryClient, type MemoryClientConfig } from './memory-client';
Expand Down Expand Up @@ -55,9 +55,8 @@ export interface AtomicMemoryClientConfig {
}

/**
* Primary public client. Holds a `memory` namespace (existing
* `MemoryClient`) and a `storage` namespace (the Step-6 concrete
* `StorageClient`).
* Primary public client. Holds a `memory` namespace (`MemoryClient`)
* and a `storage` namespace (`StorageClient`).
*/
export class AtomicMemoryClient {
readonly memory: MemoryClient;
Expand Down
2 changes: 2 additions & 0 deletions src/client/memory-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import type { MemoryProvider } from '../memory/provider';
import type { AtomicMemoryProviderConfig } from '../memory/atomicmemory-provider/types';
import type { AtomicMemoryHandle } from '../memory/atomicmemory-provider/handle';
import type { Mem0ProviderConfig } from '../memory/mem0-provider/types';
import type { HindsightProviderConfig } from '../memory/hindsight-provider/types';
import type {
IngestInput,
IngestResult,
Expand All @@ -37,6 +38,7 @@ import {
export interface MemoryProviderConfigs {
atomicmemory?: AtomicMemoryProviderConfig;
mem0?: Mem0ProviderConfig;
hindsight?: HindsightProviderConfig;
[providerName: string]: unknown;
}

Expand Down
Loading
Loading