@eidetic-labs/stigmem-ts 0.9.0-alpha.1 → 0.9.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -0
- package/dist/client.d.ts +3 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +15 -7
- package/dist/client.js.map +1 -1
- package/dist/generated.d.ts +374 -751
- package/dist/generated.d.ts.map +1 -1
- package/dist/generated.js +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/client.ts +18 -6
- package/src/generated.ts +374 -751
- package/src/types.ts +12 -0
package/README.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# `@eidetic-labs/stigmem-ts`
|
|
2
|
+
|
|
3
|
+
TypeScript / JavaScript client SDK for **[Stigmem](https://github.com/eidetic-labs/stigmem)** — a federated knowledge fabric for AI agents that stores facts as immutable, signed assertions and replicates them across peer nodes.
|
|
4
|
+
|
|
5
|
+
> **Status: preview alpha.** No stability guarantee on the wire format or public API until `v1.0.0` GA. See [LIMITATIONS.md](https://github.com/eidetic-labs/stigmem/blob/main/LIMITATIONS.md) and the [retraction post](https://dev.to/offbyonce/walking-back-our-v10-announcement-resetting-to-v090a1-as-the-first-build-al0) for context on why we reset to `v0.9.0a1` as the first build.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @eidetic-labs/stigmem-ts
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @eidetic-labs/stigmem-ts
|
|
13
|
+
# or
|
|
14
|
+
yarn add @eidetic-labs/stigmem-ts
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Provenance is attested via npm + GitHub Actions OIDC. Verify with:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm audit signatures
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick start
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { StigmemClient, sv, tv } from "@eidetic-labs/stigmem-ts";
|
|
27
|
+
|
|
28
|
+
const client = new StigmemClient({
|
|
29
|
+
url: "http://localhost:8765",
|
|
30
|
+
apiKey: process.env.STIGMEM_API_KEY,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Assert a fact
|
|
34
|
+
const fact = await client.assertFact(
|
|
35
|
+
"user:alice", // entity URI
|
|
36
|
+
"memory:role", // relation
|
|
37
|
+
sv("CEO"), // value (string)
|
|
38
|
+
"agent:cto", // source
|
|
39
|
+
{ session_id: "session:example" },
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
// Query facts
|
|
43
|
+
const page = await client.queryFacts({ entity: "user:alice", scope: "company" });
|
|
44
|
+
console.log(page.facts);
|
|
45
|
+
|
|
46
|
+
// Semantic recall
|
|
47
|
+
const recall = await client.recall("Alice's current role", { token_budget: 500 });
|
|
48
|
+
|
|
49
|
+
// Memory card (synthesized snapshot for a single entity)
|
|
50
|
+
const card = await client.getCard("user:alice");
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Value constructors
|
|
54
|
+
|
|
55
|
+
Facts carry a typed `value`. Use these helpers to build well-formed values:
|
|
56
|
+
|
|
57
|
+
| Helper | TypeScript | Wire-format type |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| `sv(s)` | `(s: string)` | `StringValue` |
|
|
60
|
+
| `tv(s)` | `(s: string)` | `TextValue` (longer free-form) |
|
|
61
|
+
| `nv(n)` | `(n: number)` | `NumberValue` |
|
|
62
|
+
| `bv(b)` | `(b: boolean)` | `BooleanValue` |
|
|
63
|
+
| `dtv(s)` | `(iso8601: string)` | `DatetimeValue` |
|
|
64
|
+
| `rv(uri)` | `(entityURI: string)` | `RefValue` (entity reference) |
|
|
65
|
+
| `nullv()` | `()` | `NullValue` |
|
|
66
|
+
|
|
67
|
+
## API surface
|
|
68
|
+
|
|
69
|
+
The full client surface covers:
|
|
70
|
+
|
|
71
|
+
- **Facts**: `assertFact`, `getFact`, `queryFacts`, `retractFact`, `verifyCid`
|
|
72
|
+
- **Recall**: `recall` (semantic, weighted retrieval), `getCard` (synthesized memory card per entity)
|
|
73
|
+
- **Conflicts**: `listConflicts`, `resolveConflict`
|
|
74
|
+
- **Lint**: `lint` (validate facts before assert)
|
|
75
|
+
- **Federation**: `listPeers`, `registerPeer`, `getNodeInfo`
|
|
76
|
+
- **Subscriptions**: `subscribe` (push federation, opt-in)
|
|
77
|
+
|
|
78
|
+
Full TypeScript types are exported from the main package — your editor will autocomplete and check at compile time.
|
|
79
|
+
|
|
80
|
+
## Session and provenance options
|
|
81
|
+
|
|
82
|
+
Agent integrations should pass a stable `session_id` on reads and writes so the
|
|
83
|
+
node can enforce same-session read/write graph isolation. Writes that summarize
|
|
84
|
+
facts read earlier in the same session should use `write_mode:
|
|
85
|
+
"summarize_with_provenance"` and carry source facts in `derived_from`.
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
await client.assertFact(
|
|
89
|
+
"handoff:session-123",
|
|
90
|
+
"intent:handoff_summary",
|
|
91
|
+
tv("Summarized context for the next agent."),
|
|
92
|
+
"agent:openclaw",
|
|
93
|
+
{
|
|
94
|
+
session_id: "session:example",
|
|
95
|
+
write_mode: "summarize_with_provenance",
|
|
96
|
+
derived_from: [{ fact_id: "fact-source-001" }],
|
|
97
|
+
},
|
|
98
|
+
);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Compatibility
|
|
102
|
+
|
|
103
|
+
| `stigmem-node` server | `@eidetic-labs/stigmem-ts` SDK |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `0.9.0a1` (preview alpha) | `0.9.0-alpha.1` |
|
|
106
|
+
| `0.9.0aN` / `0.9.0bN` (alpha + beta lines) | `0.9.0-alpha.N` / `0.9.0-beta.N` |
|
|
107
|
+
| `1.0.0` (GA — future) | `1.0.0` and later |
|
|
108
|
+
|
|
109
|
+
The SDK and server advance together along the version line; pin compatible versions in production-leaning environments.
|
|
110
|
+
|
|
111
|
+
## npm `latest` dist-tag — what it points at
|
|
112
|
+
|
|
113
|
+
Until `v1.0.0` GA, `latest` tracks the **most recent published version** regardless of stability tier. Today that's `0.9.0-alpha.1`; it walks forward through `0.9.0-alpha.N` → `0.9.0-beta.N` → `1.0.0-rc.N` → `1.0.0`. This is a deliberate deviation from the standard "`latest` = stable" npm convention; full rationale in [LIMITATIONS.md §npm `latest` dist-tag](https://github.com/eidetic-labs/stigmem/blob/main/LIMITATIONS.md).
|
|
114
|
+
|
|
115
|
+
Stability lives in the version string itself: any version ending in `-alpha.N`, `-beta.N`, or `-rc.N` is pre-stable and carries no compatibility guarantee.
|
|
116
|
+
|
|
117
|
+
## Documentation
|
|
118
|
+
|
|
119
|
+
- **[stigmem.dev](https://stigmem.dev)** — landing page
|
|
120
|
+
- **[docs.stigmem.dev](https://docs.stigmem.dev)** — full docs site (Learn / Build / Operate / Secure)
|
|
121
|
+
- **[Repository](https://github.com/eidetic-labs/stigmem)** — source, issue tracker, contributor guide
|
|
122
|
+
- **[Threat model](https://github.com/eidetic-labs/stigmem/blob/main/spec/security/threat-model.md)** — STRIDE risk register; read before deploying federation across organizational boundaries
|
|
123
|
+
- **[LIMITATIONS.md](https://github.com/eidetic-labs/stigmem/blob/main/LIMITATIONS.md)** — adopter-facing constraints, known gaps, deployment-pattern guidance
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
[Apache-2.0](https://github.com/eidetic-labs/stigmem/blob/main/LICENSE).
|
package/dist/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stigmem TypeScript client SDK.
|
|
3
3
|
*/
|
|
4
|
-
import type { AssertOptions, CardOptions, ConflictListOptions, ConflictPage, ConflictResolution, Fact, FactPage, FactScope, FactValue, LintOptions, LintResult, MemoryCard, NodeInfo, Peer, QueryOptions, RecallOptions, RecallResponse, ResolveOptions, SubscribeOptions } from "./types.js";
|
|
4
|
+
import type { AssertOptions, CardOptions, ConflictListOptions, ConflictPage, ConflictResolution, Fact, FactPage, FactScope, FactValue, GetFactOptions, LintOptions, LintResult, MemoryCard, NodeInfo, Peer, QueryOptions, RecallOptions, RecallResponse, ResolveOptions, SubscribeOptions } from "./types.js";
|
|
5
5
|
export declare class StigmemError extends Error {
|
|
6
6
|
constructor(message: string);
|
|
7
7
|
}
|
|
@@ -31,10 +31,11 @@ export declare class StigmemClient {
|
|
|
31
31
|
private readonly fetchFn;
|
|
32
32
|
constructor(opts: ClientOptions);
|
|
33
33
|
private req;
|
|
34
|
+
private sessionHeaders;
|
|
34
35
|
nodeInfo(): Promise<NodeInfo>;
|
|
35
36
|
assertFact(entity: string, relation: string, value: FactValue, source: string, opts?: AssertOptions): Promise<Fact>;
|
|
36
37
|
retract(entity: string, relation: string, scope: FactScope, source: string, value?: FactValue): Promise<Fact>;
|
|
37
|
-
getFact(factId: string): Promise<Fact>;
|
|
38
|
+
getFact(factId: string, opts?: GetFactOptions): Promise<Fact>;
|
|
38
39
|
query(opts?: QueryOptions): Promise<FactPage>;
|
|
39
40
|
listConflicts(opts?: ConflictListOptions): Promise<ConflictPage>;
|
|
40
41
|
resolveConflict(conflictId: string, opts?: ResolveOptions): Promise<ConflictResolution>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAEX,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAEX,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AASpB,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,YAAY;aAE9B,UAAU,EAAE,MAAM;aAClB,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAKjC;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB;gBACxC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI/C;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;gBAC5C,MAAM,EAAE,MAAM;CAI3B;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;gBAC5C,MAAM,EAAE,MAAM;CAI3B;AAMD,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AA2BD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,IAAI,EAAE,aAAa;YASjB,GAAG;IAwBjB,OAAO,CAAC,cAAc;IAQhB,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQ7B,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,IAAI,CAAC;IAeV,OAAO,CACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC;IAUV,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,KAAK,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBjD,aAAa,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQpE,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAiBxB,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAanE,gBAAgB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IASnC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBxE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAWtE,cAAc,CACnB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,gBAAqB,GAC1B,cAAc,CAAC,IAAI,EAAE,CAAC;CAqB1B"}
|
package/dist/client.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.StigmemClient = exports.StigmemConflictError = exports.StigmemNotFoundError = exports.StigmemAuthError = exports.StigmemHTTPError = exports.StigmemError = void 0;
|
|
7
7
|
const types_js_1 = require("./types.js");
|
|
8
|
+
const SESSION_HEADER = "Stigmem-Session";
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
9
10
|
// Errors
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
@@ -84,7 +85,7 @@ class StigmemClient {
|
|
|
84
85
|
}
|
|
85
86
|
this.fetchFn = opts.fetch ?? globalThis.fetch;
|
|
86
87
|
}
|
|
87
|
-
async req(method, path, body, params) {
|
|
88
|
+
async req(method, path, body, params, headers) {
|
|
88
89
|
let url = `${this.baseUrl}${path}`;
|
|
89
90
|
if (params) {
|
|
90
91
|
const qs = Object.entries(params)
|
|
@@ -96,12 +97,15 @@ class StigmemClient {
|
|
|
96
97
|
}
|
|
97
98
|
const res = await this.fetchFn(url, {
|
|
98
99
|
method,
|
|
99
|
-
headers: this.headers,
|
|
100
|
+
headers: { ...this.headers, ...headers },
|
|
100
101
|
...(body !== undefined ? { body: JSON.stringify(body) } : {}),
|
|
101
102
|
});
|
|
102
103
|
await raiseForStatus(res);
|
|
103
104
|
return res.json();
|
|
104
105
|
}
|
|
106
|
+
sessionHeaders(sessionId) {
|
|
107
|
+
return sessionId ? { [SESSION_HEADER]: sessionId } : undefined;
|
|
108
|
+
}
|
|
105
109
|
// ------------------------------------------------------------------
|
|
106
110
|
// Node info
|
|
107
111
|
// ------------------------------------------------------------------
|
|
@@ -119,15 +123,17 @@ class StigmemClient {
|
|
|
119
123
|
source,
|
|
120
124
|
confidence: opts.confidence ?? 1.0,
|
|
121
125
|
scope: opts.scope ?? "company",
|
|
126
|
+
write_mode: opts.write_mode ?? "assert",
|
|
127
|
+
derived_from: opts.derived_from ?? [],
|
|
122
128
|
...(opts.valid_until ? { valid_until: opts.valid_until } : {}),
|
|
123
129
|
};
|
|
124
|
-
return this.req("POST", "/v1/facts", body);
|
|
130
|
+
return this.req("POST", "/v1/facts", body, undefined, this.sessionHeaders(opts.session_id));
|
|
125
131
|
}
|
|
126
132
|
async retract(entity, relation, scope, source, value) {
|
|
127
133
|
return this.assertFact(entity, relation, value ?? (0, types_js_1.sv)("retracted"), source, { confidence: 0.0, scope });
|
|
128
134
|
}
|
|
129
|
-
async getFact(factId) {
|
|
130
|
-
return this.req("GET", `/v1/facts/${factId}
|
|
135
|
+
async getFact(factId, opts = {}) {
|
|
136
|
+
return this.req("GET", `/v1/facts/${factId}`, undefined, undefined, this.sessionHeaders(opts.session_id));
|
|
131
137
|
}
|
|
132
138
|
async query(opts = {}) {
|
|
133
139
|
return this.req("GET", "/v1/facts", undefined, {
|
|
@@ -141,7 +147,7 @@ class StigmemClient {
|
|
|
141
147
|
cursor: opts.cursor,
|
|
142
148
|
after: opts.after,
|
|
143
149
|
limit: opts.limit ?? 50,
|
|
144
|
-
});
|
|
150
|
+
}, this.sessionHeaders(opts.session_id));
|
|
145
151
|
}
|
|
146
152
|
// ------------------------------------------------------------------
|
|
147
153
|
// Conflicts
|
|
@@ -202,7 +208,9 @@ class StigmemClient {
|
|
|
202
208
|
};
|
|
203
209
|
if (opts.weights)
|
|
204
210
|
body["weights"] = opts.weights;
|
|
205
|
-
return this.req("POST", "/v1/recall", body
|
|
211
|
+
return this.req("POST", "/v1/recall", body, {
|
|
212
|
+
legacy_format: opts.legacy_format ? true : undefined,
|
|
213
|
+
}, this.sessionHeaders(opts.session_id));
|
|
206
214
|
}
|
|
207
215
|
// ------------------------------------------------------------------
|
|
208
216
|
// Memory cards (Phase 9 — spec §20)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|