@aliyunrds/ctxdb-shared
v0.0.3
Published
Shared B-rule modules + memory/KB types for RDS ContextDatabase access layers (OpenClaw fork + Qoder hooks).
Maintainers
Readme
@aliyunrds/ctxdb-shared
Shared B-rule modules + memory/KB types for RDS ContextDatabase access layers.
Why this package
ctxdb-dev ships two access layers that both implement the same B-rules (B-0 wrapper strip / B-1 KB anti-injection preamble / B-2 KB content sanitize / B-3c KB-upload-turn skip) and the same memory/KB type system:
openclaw_memory_rds_ctxdb— OpenClaw plugin (Mem0-mode platform / OSS)@aliyunrds/ctxdb-qoder— Qoder hooks +rds-ctxdbCLI
Without this shared package, the two access layers had to keep two parallel
implementations of the B-rules in sync — a TS implementation in the OpenClaw
fork and (formerly) a Python port for Qoder. That bug-for-bug sync became
a recurring source of drift (see ctxdb-dev WHOLE.md for the audit trail).
This package is the single source of truth.
What's in here
| Module | Purpose |
|---|---|
| kb-detection.ts | B-3c — detect KB-upload turns by scanning assistant tool_use blocks; short-circuits autoCapture |
| external-knowledge.ts | B-1 + B-2 — preamble + chunk sanitize; build the <external-knowledge> block injected at recall time |
| filtering.ts | B-0 — strip wrapper tags from messages before extraction; drop noise messages |
| capture-slicing.ts | selectTurnMessages — pick the current turn from a multi-turn parsed transcript |
| recall.ts | Token-budgeted, category-ranked recall engine (memories search → format) |
| types.ts | Shared types: MemoryItem / ExternalContext{Chunk} / Mem0Provider / SearchOptions etc. |
What's NOT in here
- Plugin SDK shapes (OpenClaw plugin entry / hooks system) — fork-internal
Mem0Config/Mem0Mode/FileConfig— Mem0 SDK config (fork-private)- HTTP client / backend implementation — both consumers do their own
- CLI / hooks / setup logic — those are consumer-specific
Usage
import {
isKnowledgeBaseUploadTurn,
buildExternalKnowledgeBlock,
filterMessagesForExtraction,
selectTurnMessages,
recall,
type MemoryItem,
type SearchOptions,
} from "@aliyunrds/ctxdb-shared";Versioning
Released as @aliyunrds/[email protected] on npm. Both consumer
packages declare it as a dependencies entry — npm resolves at install
time, no bundling.
Build / test
pnpm install
pnpm test # → vitest unit tests
pnpm build # → dist/index.{js,d.ts}