@eidetic-labs/stigmem-ts 0.9.0-alpha.1

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.
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Stigmem TypeScript client SDK.
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";
5
+ export declare class StigmemError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export declare class StigmemHTTPError extends StigmemError {
9
+ readonly statusCode: number;
10
+ readonly detail: string;
11
+ constructor(statusCode: number, detail: string);
12
+ }
13
+ export declare class StigmemAuthError extends StigmemHTTPError {
14
+ constructor(statusCode: number, detail: string);
15
+ }
16
+ export declare class StigmemNotFoundError extends StigmemHTTPError {
17
+ constructor(detail: string);
18
+ }
19
+ export declare class StigmemConflictError extends StigmemHTTPError {
20
+ constructor(detail: string);
21
+ }
22
+ interface ClientOptions {
23
+ url: string;
24
+ apiKey?: string;
25
+ timeoutMs?: number;
26
+ fetch?: typeof fetch;
27
+ }
28
+ export declare class StigmemClient {
29
+ private readonly baseUrl;
30
+ private readonly headers;
31
+ private readonly fetchFn;
32
+ constructor(opts: ClientOptions);
33
+ private req;
34
+ nodeInfo(): Promise<NodeInfo>;
35
+ assertFact(entity: string, relation: string, value: FactValue, source: string, opts?: AssertOptions): Promise<Fact>;
36
+ retract(entity: string, relation: string, scope: FactScope, source: string, value?: FactValue): Promise<Fact>;
37
+ getFact(factId: string): Promise<Fact>;
38
+ query(opts?: QueryOptions): Promise<FactPage>;
39
+ listConflicts(opts?: ConflictListOptions): Promise<ConflictPage>;
40
+ resolveConflict(conflictId: string, opts?: ResolveOptions): Promise<ConflictResolution>;
41
+ lint(scope: FactScope, opts?: LintOptions): Promise<LintResult>;
42
+ federationStatus(): Promise<Peer[]>;
43
+ recall(query: string, opts?: RecallOptions): Promise<RecallResponse>;
44
+ getCard(entityUri: string, opts?: CardOptions): Promise<MemoryCard>;
45
+ subscribeScope(scope: FactScope, opts?: SubscribeOptions): AsyncGenerator<Fact[]>;
46
+ }
47
+ export {};
48
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +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;AAOpB,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;IA2BX,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;IAaV,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,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,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;IAkBxE,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 ADDED
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ /**
3
+ * Stigmem TypeScript client SDK.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StigmemClient = exports.StigmemConflictError = exports.StigmemNotFoundError = exports.StigmemAuthError = exports.StigmemHTTPError = exports.StigmemError = void 0;
7
+ const types_js_1 = require("./types.js");
8
+ // ---------------------------------------------------------------------------
9
+ // Errors
10
+ // ---------------------------------------------------------------------------
11
+ class StigmemError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.name = "StigmemError";
15
+ }
16
+ }
17
+ exports.StigmemError = StigmemError;
18
+ class StigmemHTTPError extends StigmemError {
19
+ statusCode;
20
+ detail;
21
+ constructor(statusCode, detail) {
22
+ super(`HTTP ${statusCode}: ${detail}`);
23
+ this.statusCode = statusCode;
24
+ this.detail = detail;
25
+ this.name = "StigmemHTTPError";
26
+ }
27
+ }
28
+ exports.StigmemHTTPError = StigmemHTTPError;
29
+ class StigmemAuthError extends StigmemHTTPError {
30
+ constructor(statusCode, detail) {
31
+ super(statusCode, detail);
32
+ this.name = "StigmemAuthError";
33
+ }
34
+ }
35
+ exports.StigmemAuthError = StigmemAuthError;
36
+ class StigmemNotFoundError extends StigmemHTTPError {
37
+ constructor(detail) {
38
+ super(404, detail);
39
+ this.name = "StigmemNotFoundError";
40
+ }
41
+ }
42
+ exports.StigmemNotFoundError = StigmemNotFoundError;
43
+ class StigmemConflictError extends StigmemHTTPError {
44
+ constructor(detail) {
45
+ super(409, detail);
46
+ this.name = "StigmemConflictError";
47
+ }
48
+ }
49
+ exports.StigmemConflictError = StigmemConflictError;
50
+ async function raiseForStatus(res) {
51
+ if (res.ok)
52
+ return;
53
+ let detail;
54
+ try {
55
+ const body = await res.json();
56
+ detail = body.detail ?? res.statusText;
57
+ }
58
+ catch {
59
+ detail = res.statusText;
60
+ }
61
+ if (res.status === 401 || res.status === 403) {
62
+ throw new StigmemAuthError(res.status, detail);
63
+ }
64
+ if (res.status === 404) {
65
+ throw new StigmemNotFoundError(detail);
66
+ }
67
+ if (res.status === 409) {
68
+ throw new StigmemConflictError(detail);
69
+ }
70
+ throw new StigmemHTTPError(res.status, detail);
71
+ }
72
+ // ---------------------------------------------------------------------------
73
+ // StigmemClient
74
+ // ---------------------------------------------------------------------------
75
+ class StigmemClient {
76
+ baseUrl;
77
+ headers;
78
+ fetchFn;
79
+ constructor(opts) {
80
+ this.baseUrl = opts.url.replace(/\/$/, "");
81
+ this.headers = { "Accept": "application/json", "Content-Type": "application/json" };
82
+ if (opts.apiKey) {
83
+ this.headers["Authorization"] = `Bearer ${opts.apiKey}`;
84
+ }
85
+ this.fetchFn = opts.fetch ?? globalThis.fetch;
86
+ }
87
+ async req(method, path, body, params) {
88
+ let url = `${this.baseUrl}${path}`;
89
+ if (params) {
90
+ const qs = Object.entries(params)
91
+ .filter(([, v]) => v !== undefined)
92
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
93
+ .join("&");
94
+ if (qs)
95
+ url += `?${qs}`;
96
+ }
97
+ const res = await this.fetchFn(url, {
98
+ method,
99
+ headers: this.headers,
100
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
101
+ });
102
+ await raiseForStatus(res);
103
+ return res.json();
104
+ }
105
+ // ------------------------------------------------------------------
106
+ // Node info
107
+ // ------------------------------------------------------------------
108
+ async nodeInfo() {
109
+ return this.req("GET", "/.well-known/stigmem");
110
+ }
111
+ // ------------------------------------------------------------------
112
+ // Facts
113
+ // ------------------------------------------------------------------
114
+ async assertFact(entity, relation, value, source, opts = {}) {
115
+ const body = {
116
+ entity,
117
+ relation,
118
+ value,
119
+ source,
120
+ confidence: opts.confidence ?? 1.0,
121
+ scope: opts.scope ?? "company",
122
+ ...(opts.valid_until ? { valid_until: opts.valid_until } : {}),
123
+ };
124
+ return this.req("POST", "/v1/facts", body);
125
+ }
126
+ async retract(entity, relation, scope, source, value) {
127
+ return this.assertFact(entity, relation, value ?? (0, types_js_1.sv)("retracted"), source, { confidence: 0.0, scope });
128
+ }
129
+ async getFact(factId) {
130
+ return this.req("GET", `/v1/facts/${factId}`);
131
+ }
132
+ async query(opts = {}) {
133
+ return this.req("GET", "/v1/facts", undefined, {
134
+ entity: opts.entity,
135
+ relation: opts.relation,
136
+ source: opts.source,
137
+ scope: opts.scope,
138
+ min_confidence: opts.min_confidence,
139
+ include_contradicted: opts.include_contradicted,
140
+ include_expired: opts.include_expired,
141
+ cursor: opts.cursor,
142
+ after: opts.after,
143
+ limit: opts.limit ?? 50,
144
+ });
145
+ }
146
+ // ------------------------------------------------------------------
147
+ // Conflicts
148
+ // ------------------------------------------------------------------
149
+ async listConflicts(opts = {}) {
150
+ return this.req("GET", "/v1/conflicts", undefined, {
151
+ status: opts.status ?? "unresolved",
152
+ cursor: opts.cursor,
153
+ limit: opts.limit ?? 50,
154
+ });
155
+ }
156
+ async resolveConflict(conflictId, opts = {}) {
157
+ const body = {
158
+ resolution_note: opts.resolution_note ?? "",
159
+ };
160
+ if (opts.winning_fact_id !== undefined) {
161
+ body["winning_fact_id"] = opts.winning_fact_id;
162
+ }
163
+ if (opts.new_value !== undefined) {
164
+ body["new_value"] = opts.new_value;
165
+ }
166
+ return this.req("POST", `/v1/conflicts/${conflictId}/resolve`, body);
167
+ }
168
+ // ------------------------------------------------------------------
169
+ // Lint — v0.7 (spec §14)
170
+ // ------------------------------------------------------------------
171
+ async lint(scope, opts = {}) {
172
+ const body = { scope };
173
+ if (opts.checks?.length)
174
+ body["checks"] = opts.checks;
175
+ if (opts.entity !== undefined)
176
+ body["entity"] = opts.entity;
177
+ if (opts.relation !== undefined)
178
+ body["relation"] = opts.relation;
179
+ if (opts.stale_lookahead_s !== undefined)
180
+ body["stale_lookahead_s"] = opts.stale_lookahead_s;
181
+ return this.req("POST", "/v1/lint", body);
182
+ }
183
+ // ------------------------------------------------------------------
184
+ // Federation
185
+ // ------------------------------------------------------------------
186
+ async federationStatus() {
187
+ const page = await this.req("GET", "/v1/federation/peers");
188
+ return page.peers;
189
+ }
190
+ // ------------------------------------------------------------------
191
+ // Recall (Phase 9 — spec §20)
192
+ // ------------------------------------------------------------------
193
+ async recall(query, opts = {}) {
194
+ const body = {
195
+ query,
196
+ scope: opts.scope ?? "local",
197
+ token_budget: opts.token_budget ?? 4000,
198
+ depth: opts.depth ?? 2,
199
+ min_confidence: opts.min_confidence ?? 0.1,
200
+ include_neighbors: opts.include_neighbors ?? true,
201
+ limit: opts.limit ?? 100,
202
+ };
203
+ if (opts.weights)
204
+ body["weights"] = opts.weights;
205
+ return this.req("POST", "/v1/recall", body);
206
+ }
207
+ // ------------------------------------------------------------------
208
+ // Memory cards (Phase 9 — spec §20)
209
+ // ------------------------------------------------------------------
210
+ async getCard(entityUri, opts = {}) {
211
+ return this.req("GET", `/v1/cards/${entityUri}`, undefined, {
212
+ scope: opts.scope ?? "local",
213
+ refresh: opts.refresh ? true : undefined,
214
+ });
215
+ }
216
+ // ------------------------------------------------------------------
217
+ // Subscribe (async generator, polling)
218
+ // ------------------------------------------------------------------
219
+ async *subscribeScope(scope, opts = {}) {
220
+ const intervalMs = opts.intervalMs ?? 30_000;
221
+ let cursor;
222
+ while (true) {
223
+ if (opts.signal?.aborted)
224
+ return;
225
+ const page = await this.query({ scope, limit: 100, ...(cursor !== undefined ? { cursor } : {}) });
226
+ if (page.facts.length > 0) {
227
+ yield page.facts;
228
+ }
229
+ cursor = page.cursor ?? undefined;
230
+ if (opts.signal?.aborted)
231
+ return;
232
+ await new Promise((resolve, reject) => {
233
+ const t = setTimeout(resolve, intervalMs);
234
+ opts.signal?.addEventListener("abort", () => { clearTimeout(t); reject(new Error("aborted")); });
235
+ }).catch(() => { });
236
+ if (opts.signal?.aborted)
237
+ return;
238
+ }
239
+ }
240
+ }
241
+ exports.StigmemClient = StigmemClient;
242
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}