@equationalapplications/react-llm-wiki 2.4.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Equational Applications
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # @equationalapplications/react-llm-wiki
2
+
3
+ React hooks and web utilities for @equationalapplications/core-llm-wiki, designed for web and Expo.
4
+
5
+ ## Features
6
+
7
+ - **Reactive reads** — Auto-refetch on `entityId` or query changes
8
+ - **Mutation hooks** — `useWikiWrite`, `useWikiIngest`, `useWikiForget`, etc.
9
+ - **Shared context** — Single `WikiProvider` per app, use anywhere
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ npm install @equationalapplications/react-llm-wiki
15
+ ```
16
+
17
+ ## Setup
18
+
19
+ **React** (with any `SQLiteAdapter`):
20
+
21
+ ```typescript
22
+ import { WikiProvider } from '@equationalapplications/react-llm-wiki';
23
+ import { createWiki } from '@equationalapplications/react-llm-wiki';
24
+
25
+ // Create wiki instance and initialize tables
26
+ const wiki = createWiki(adapter, options);
27
+ await wiki.setup();
28
+
29
+ // Wrap app
30
+ <WikiProvider wiki={wiki}>
31
+ <App />
32
+ </WikiProvider>
33
+ ```
34
+
35
+ **Expo / React Native** (`@equationalapplications/expo-llm-wiki` re-exports both `createWiki` and `WikiProvider`):
36
+
37
+ ```typescript
38
+ import { createWiki, WikiProvider } from '@equationalapplications/expo-llm-wiki';
39
+ import { openDatabaseSync } from 'expo-sqlite';
40
+
41
+ const db = openDatabaseSync('wiki.db');
42
+ const wiki = createWiki(db, options);
43
+ await wiki.setup();
44
+
45
+ <WikiProvider wiki={wiki}>
46
+ <App />
47
+ </WikiProvider>
48
+ ```
49
+
50
+ ## Hooks
51
+
52
+ ### `useMemoryRead(entityId, query)`
53
+
54
+ Fetch memory reactively.
55
+
56
+ ```typescript
57
+ const { data, isPending, error, refetch } = useMemoryRead('user-123', 'preferences');
58
+ ```
59
+
60
+ ### `useWikiWrite()`
61
+
62
+ Mutate facts.
63
+
64
+ ```typescript
65
+ const { execute, isPending, error } = useWikiWrite();
66
+ await execute('user-123', { event_type: 'observation', summary: '...' });
67
+ ```
68
+
69
+ ### `useWikiIngest()`
70
+
71
+ Ingest documents.
72
+
73
+ ```typescript
74
+ const { execute, isPending, error } = useWikiIngest();
75
+ await execute('user-123', {
76
+ sourceRef: 'doc-readme',
77
+ sourceHash: 'a3f1b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2',
78
+ documentChunk: 'raw document text...',
79
+ });
80
+ ```
81
+
82
+ ### `useWikiForget()`
83
+
84
+ Forget entries.
85
+
86
+ ```typescript
87
+ const { execute, isPending, error } = useWikiForget();
88
+ await execute('user-123', { entryId: 'fact-456' });
89
+ ```
90
+
91
+ ### `useWikiMaintenance()`
92
+
93
+ Run background maintenance.
94
+
95
+ ```typescript
96
+ const { runLibrarian, runHeal, isPending, error } = useWikiMaintenance();
97
+ await runLibrarian('user-123');
98
+ ```
99
+
100
+ ### `useWikiHasChanged()`
101
+
102
+ Check if a source document has changed since last ingest.
103
+
104
+ ```typescript
105
+ const { execute, lastResult, isPending, error } = useWikiHasChanged();
106
+ const changed = await execute('user-123', 'doc-readme', 'a3f1b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2');
107
+ ```
108
+
109
+ ### `useWikiExport()`
110
+
111
+ Export memory dump.
112
+
113
+ ```typescript
114
+ const { execute, lastResult, isPending, error } = useWikiExport();
115
+ await execute(['user-123']);
116
+ // lastResult: MemoryDump | null
117
+ ```
118
+
119
+ ## License
120
+
121
+ MIT
@@ -0,0 +1,106 @@
1
+ import { WikiMemory, MemoryBundle, WikiEvent, MemoryDump } from '@equationalapplications/core-llm-wiki';
2
+ export * from '@equationalapplications/core-llm-wiki';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { ReactNode } from 'react';
5
+
6
+ declare function WikiProvider({ wiki, children }: {
7
+ wiki: WikiMemory;
8
+ children: ReactNode;
9
+ }): react_jsx_runtime.JSX.Element;
10
+ declare function useWiki(): WikiMemory;
11
+
12
+ declare function useMemoryRead(entityId: string, query: string): {
13
+ data: MemoryBundle | null;
14
+ isPending: boolean;
15
+ error: Error | null;
16
+ refetch: () => void;
17
+ };
18
+
19
+ type WriteEvent = Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>;
20
+ declare function useWikiWrite(): {
21
+ execute: (entityId: string, event: WriteEvent) => Promise<void>;
22
+ lastResult: void | null;
23
+ isPending: boolean;
24
+ error: Error | null;
25
+ };
26
+
27
+ type MaintenanceResult = {
28
+ operation: 'librarian' | 'heal';
29
+ result: undefined;
30
+ } | {
31
+ operation: 'prune';
32
+ result: {
33
+ entries: number;
34
+ tasks: number;
35
+ events: number;
36
+ };
37
+ };
38
+ declare function useWikiMaintenance(): {
39
+ runLibrarian: (entityId: string) => Promise<void>;
40
+ runHeal: (entityId: string) => Promise<void>;
41
+ runPrune: (entityId: string, options?: {
42
+ retainSoftDeletedFor?: number | null;
43
+ retainEventsFor?: number | null;
44
+ vacuum?: boolean;
45
+ }) => Promise<{
46
+ entries: number;
47
+ tasks: number;
48
+ events: number;
49
+ }>;
50
+ lastResult: MaintenanceResult | null;
51
+ isPending: boolean;
52
+ error: Error | null;
53
+ };
54
+
55
+ interface IngestParams {
56
+ sourceRef: string;
57
+ sourceHash: string;
58
+ documentChunk: string;
59
+ maxChunkLength?: number;
60
+ }
61
+ type IngestResult = {
62
+ truncated: boolean;
63
+ chunks: number;
64
+ };
65
+ declare function useWikiIngest(): {
66
+ execute: (entityId: string, params: IngestParams) => Promise<IngestResult>;
67
+ lastResult: IngestResult | null;
68
+ isPending: boolean;
69
+ error: Error | null;
70
+ };
71
+
72
+ interface ForgetParams {
73
+ entryId?: string;
74
+ taskId?: string;
75
+ sourceRef?: string;
76
+ sourceHash?: string;
77
+ clearAll?: boolean;
78
+ }
79
+ type ForgetResult = {
80
+ deleted: {
81
+ entries: number;
82
+ tasks: number;
83
+ };
84
+ };
85
+ declare function useWikiForget(): {
86
+ execute: (entityId: string, params: ForgetParams) => Promise<ForgetResult>;
87
+ lastResult: ForgetResult | null;
88
+ isPending: boolean;
89
+ error: Error | null;
90
+ };
91
+
92
+ declare function useWikiExport(): {
93
+ execute: (entityIds?: string[]) => Promise<MemoryDump>;
94
+ lastResult: MemoryDump | null;
95
+ isPending: boolean;
96
+ error: Error | null;
97
+ };
98
+
99
+ declare function useWikiHasChanged(): {
100
+ execute: (entityId: string, sourceRef: string, sourceHash: string) => Promise<boolean>;
101
+ lastResult: boolean | null;
102
+ isPending: boolean;
103
+ error: Error | null;
104
+ };
105
+
106
+ export { type MaintenanceResult, WikiProvider, useMemoryRead, useWiki, useWikiExport, useWikiForget, useWikiHasChanged, useWikiIngest, useWikiMaintenance, useWikiWrite };
@@ -0,0 +1,106 @@
1
+ import { WikiMemory, MemoryBundle, WikiEvent, MemoryDump } from '@equationalapplications/core-llm-wiki';
2
+ export * from '@equationalapplications/core-llm-wiki';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { ReactNode } from 'react';
5
+
6
+ declare function WikiProvider({ wiki, children }: {
7
+ wiki: WikiMemory;
8
+ children: ReactNode;
9
+ }): react_jsx_runtime.JSX.Element;
10
+ declare function useWiki(): WikiMemory;
11
+
12
+ declare function useMemoryRead(entityId: string, query: string): {
13
+ data: MemoryBundle | null;
14
+ isPending: boolean;
15
+ error: Error | null;
16
+ refetch: () => void;
17
+ };
18
+
19
+ type WriteEvent = Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>;
20
+ declare function useWikiWrite(): {
21
+ execute: (entityId: string, event: WriteEvent) => Promise<void>;
22
+ lastResult: void | null;
23
+ isPending: boolean;
24
+ error: Error | null;
25
+ };
26
+
27
+ type MaintenanceResult = {
28
+ operation: 'librarian' | 'heal';
29
+ result: undefined;
30
+ } | {
31
+ operation: 'prune';
32
+ result: {
33
+ entries: number;
34
+ tasks: number;
35
+ events: number;
36
+ };
37
+ };
38
+ declare function useWikiMaintenance(): {
39
+ runLibrarian: (entityId: string) => Promise<void>;
40
+ runHeal: (entityId: string) => Promise<void>;
41
+ runPrune: (entityId: string, options?: {
42
+ retainSoftDeletedFor?: number | null;
43
+ retainEventsFor?: number | null;
44
+ vacuum?: boolean;
45
+ }) => Promise<{
46
+ entries: number;
47
+ tasks: number;
48
+ events: number;
49
+ }>;
50
+ lastResult: MaintenanceResult | null;
51
+ isPending: boolean;
52
+ error: Error | null;
53
+ };
54
+
55
+ interface IngestParams {
56
+ sourceRef: string;
57
+ sourceHash: string;
58
+ documentChunk: string;
59
+ maxChunkLength?: number;
60
+ }
61
+ type IngestResult = {
62
+ truncated: boolean;
63
+ chunks: number;
64
+ };
65
+ declare function useWikiIngest(): {
66
+ execute: (entityId: string, params: IngestParams) => Promise<IngestResult>;
67
+ lastResult: IngestResult | null;
68
+ isPending: boolean;
69
+ error: Error | null;
70
+ };
71
+
72
+ interface ForgetParams {
73
+ entryId?: string;
74
+ taskId?: string;
75
+ sourceRef?: string;
76
+ sourceHash?: string;
77
+ clearAll?: boolean;
78
+ }
79
+ type ForgetResult = {
80
+ deleted: {
81
+ entries: number;
82
+ tasks: number;
83
+ };
84
+ };
85
+ declare function useWikiForget(): {
86
+ execute: (entityId: string, params: ForgetParams) => Promise<ForgetResult>;
87
+ lastResult: ForgetResult | null;
88
+ isPending: boolean;
89
+ error: Error | null;
90
+ };
91
+
92
+ declare function useWikiExport(): {
93
+ execute: (entityIds?: string[]) => Promise<MemoryDump>;
94
+ lastResult: MemoryDump | null;
95
+ isPending: boolean;
96
+ error: Error | null;
97
+ };
98
+
99
+ declare function useWikiHasChanged(): {
100
+ execute: (entityId: string, sourceRef: string, sourceHash: string) => Promise<boolean>;
101
+ lastResult: boolean | null;
102
+ isPending: boolean;
103
+ error: Error | null;
104
+ };
105
+
106
+ export { type MaintenanceResult, WikiProvider, useMemoryRead, useWiki, useWikiExport, useWikiForget, useWikiHasChanged, useWikiIngest, useWikiMaintenance, useWikiWrite };
package/dist/index.js ADDED
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/index.ts
22
+ var index_exports = {};
23
+ __export(index_exports, {
24
+ WikiProvider: () => WikiProvider,
25
+ useMemoryRead: () => useMemoryRead,
26
+ useWiki: () => useWiki,
27
+ useWikiExport: () => useWikiExport,
28
+ useWikiForget: () => useWikiForget,
29
+ useWikiHasChanged: () => useWikiHasChanged,
30
+ useWikiIngest: () => useWikiIngest,
31
+ useWikiMaintenance: () => useWikiMaintenance,
32
+ useWikiWrite: () => useWikiWrite
33
+ });
34
+ module.exports = __toCommonJS(index_exports);
35
+ __reExport(index_exports, require("@equationalapplications/core-llm-wiki"), module.exports);
36
+
37
+ // src/WikiContext.tsx
38
+ var import_react = require("react");
39
+ var import_jsx_runtime = require("react/jsx-runtime");
40
+ var WikiContext = (0, import_react.createContext)(null);
41
+ function WikiProvider({ wiki, children }) {
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WikiContext.Provider, { value: wiki, children });
43
+ }
44
+ function useWiki() {
45
+ const wiki = (0, import_react.useContext)(WikiContext);
46
+ if (!wiki) throw new Error("useWiki must be used within WikiProvider");
47
+ return wiki;
48
+ }
49
+
50
+ // src/useMemoryRead.ts
51
+ var import_react2 = require("react");
52
+ function useMemoryRead(entityId, query) {
53
+ const wiki = useWiki();
54
+ const [data, setData] = (0, import_react2.useState)(null);
55
+ const [isPending, setIsPending] = (0, import_react2.useState)(false);
56
+ const [error, setError] = (0, import_react2.useState)(null);
57
+ const wikiRef = (0, import_react2.useRef)(wiki);
58
+ wikiRef.current = wiki;
59
+ const fetchQueue = (0, import_react2.useRef)({ inFlight: false, pending: null });
60
+ const scheduleFetch = (0, import_react2.useRef)(function schedule(eid, q) {
61
+ const fq = fetchQueue.current;
62
+ if (fq.inFlight) {
63
+ fq.pending = { entityId: eid, query: q };
64
+ return;
65
+ }
66
+ fq.inFlight = true;
67
+ setIsPending(true);
68
+ wikiRef.current.read(eid, q).then(
69
+ (result) => {
70
+ setData(result);
71
+ setError(null);
72
+ },
73
+ (e) => {
74
+ setError(e instanceof Error ? e : new Error(String(e)));
75
+ }
76
+ ).finally(() => {
77
+ fq.inFlight = false;
78
+ const next = fq.pending;
79
+ fq.pending = null;
80
+ if (next) {
81
+ scheduleFetch.current(next.entityId, next.query);
82
+ } else {
83
+ setIsPending(false);
84
+ }
85
+ });
86
+ });
87
+ (0, import_react2.useEffect)(() => {
88
+ scheduleFetch.current(entityId, query);
89
+ }, [entityId, query, wiki]);
90
+ const refetch = (0, import_react2.useCallback)(() => {
91
+ scheduleFetch.current(entityId, query);
92
+ }, [entityId, query]);
93
+ return { data, isPending, error, refetch };
94
+ }
95
+
96
+ // src/useWikiWrite.ts
97
+ var import_react3 = require("react");
98
+ function useWikiWrite() {
99
+ const wiki = useWiki();
100
+ const wikiRef = (0, import_react3.useRef)(wiki);
101
+ wikiRef.current = wiki;
102
+ const [isPending, setIsPending] = (0, import_react3.useState)(false);
103
+ const [error, setError] = (0, import_react3.useState)(null);
104
+ const [lastResult, setLastResult] = (0, import_react3.useState)(null);
105
+ const execute = (0, import_react3.useCallback)(async (entityId, event) => {
106
+ setError(null);
107
+ setIsPending(true);
108
+ setLastResult(null);
109
+ try {
110
+ await wikiRef.current.write(entityId, event);
111
+ setLastResult(void 0);
112
+ } catch (e) {
113
+ const error2 = e instanceof Error ? e : new Error(String(e));
114
+ setError(error2);
115
+ throw error2;
116
+ } finally {
117
+ setIsPending(false);
118
+ }
119
+ }, []);
120
+ return { execute, lastResult, isPending, error };
121
+ }
122
+
123
+ // src/useWikiMaintenance.ts
124
+ var import_react4 = require("react");
125
+ function useWikiMaintenance() {
126
+ const wiki = useWiki();
127
+ const wikiRef = (0, import_react4.useRef)(wiki);
128
+ wikiRef.current = wiki;
129
+ const [isPending, setIsPending] = (0, import_react4.useState)(false);
130
+ const [error, setError] = (0, import_react4.useState)(null);
131
+ const [lastResult, setLastResult] = (0, import_react4.useState)(null);
132
+ const pendingCount = (0, import_react4.useRef)(0);
133
+ const runLibrarian = (0, import_react4.useCallback)(async (entityId) => {
134
+ setError(null);
135
+ pendingCount.current += 1;
136
+ setIsPending(true);
137
+ setLastResult(null);
138
+ try {
139
+ await wikiRef.current.runLibrarian(entityId);
140
+ setLastResult({ operation: "librarian", result: void 0 });
141
+ } catch (e) {
142
+ const err = e instanceof Error ? e : new Error(String(e));
143
+ setError(err);
144
+ throw err;
145
+ } finally {
146
+ pendingCount.current -= 1;
147
+ if (pendingCount.current === 0) setIsPending(false);
148
+ }
149
+ }, []);
150
+ const runHeal = (0, import_react4.useCallback)(async (entityId) => {
151
+ setError(null);
152
+ pendingCount.current += 1;
153
+ setIsPending(true);
154
+ setLastResult(null);
155
+ try {
156
+ await wikiRef.current.runHeal(entityId);
157
+ setLastResult({ operation: "heal", result: void 0 });
158
+ } catch (e) {
159
+ const err = e instanceof Error ? e : new Error(String(e));
160
+ setError(err);
161
+ throw err;
162
+ } finally {
163
+ pendingCount.current -= 1;
164
+ if (pendingCount.current === 0) setIsPending(false);
165
+ }
166
+ }, []);
167
+ const runPrune = (0, import_react4.useCallback)(
168
+ async (entityId, options) => {
169
+ setError(null);
170
+ pendingCount.current += 1;
171
+ setIsPending(true);
172
+ setLastResult(null);
173
+ try {
174
+ const result = await wikiRef.current.runPrune(entityId, options);
175
+ setLastResult({ operation: "prune", result });
176
+ return result;
177
+ } catch (e) {
178
+ const err = e instanceof Error ? e : new Error(String(e));
179
+ setError(err);
180
+ throw err;
181
+ } finally {
182
+ pendingCount.current -= 1;
183
+ if (pendingCount.current === 0) setIsPending(false);
184
+ }
185
+ },
186
+ []
187
+ );
188
+ return { runLibrarian, runHeal, runPrune, lastResult, isPending, error };
189
+ }
190
+
191
+ // src/useWikiIngest.ts
192
+ var import_react5 = require("react");
193
+ function useWikiIngest() {
194
+ const wiki = useWiki();
195
+ const wikiRef = (0, import_react5.useRef)(wiki);
196
+ wikiRef.current = wiki;
197
+ const [isPending, setIsPending] = (0, import_react5.useState)(false);
198
+ const [error, setError] = (0, import_react5.useState)(null);
199
+ const [lastResult, setLastResult] = (0, import_react5.useState)(null);
200
+ const execute = (0, import_react5.useCallback)(async (entityId, params) => {
201
+ setError(null);
202
+ setIsPending(true);
203
+ setLastResult(null);
204
+ try {
205
+ const result = await wikiRef.current.ingestDocument(entityId, params);
206
+ setLastResult(result);
207
+ return result;
208
+ } catch (e) {
209
+ const err = e instanceof Error ? e : new Error(String(e));
210
+ setError(err);
211
+ throw err;
212
+ } finally {
213
+ setIsPending(false);
214
+ }
215
+ }, []);
216
+ return { execute, lastResult, isPending, error };
217
+ }
218
+
219
+ // src/useWikiForget.ts
220
+ var import_react6 = require("react");
221
+ function useWikiForget() {
222
+ const wiki = useWiki();
223
+ const wikiRef = (0, import_react6.useRef)(wiki);
224
+ wikiRef.current = wiki;
225
+ const [isPending, setIsPending] = (0, import_react6.useState)(false);
226
+ const [error, setError] = (0, import_react6.useState)(null);
227
+ const [lastResult, setLastResult] = (0, import_react6.useState)(null);
228
+ const execute = (0, import_react6.useCallback)(async (entityId, params) => {
229
+ setError(null);
230
+ setIsPending(true);
231
+ setLastResult(null);
232
+ try {
233
+ const result = await wikiRef.current.forget(entityId, params);
234
+ setLastResult(result);
235
+ return result;
236
+ } catch (e) {
237
+ const err = e instanceof Error ? e : new Error(String(e));
238
+ setError(err);
239
+ throw err;
240
+ } finally {
241
+ setIsPending(false);
242
+ }
243
+ }, []);
244
+ return { execute, lastResult, isPending, error };
245
+ }
246
+
247
+ // src/useWikiExport.ts
248
+ var import_react7 = require("react");
249
+ function useWikiExport() {
250
+ const wiki = useWiki();
251
+ const wikiRef = (0, import_react7.useRef)(wiki);
252
+ wikiRef.current = wiki;
253
+ const [isPending, setIsPending] = (0, import_react7.useState)(false);
254
+ const [error, setError] = (0, import_react7.useState)(null);
255
+ const [lastResult, setLastResult] = (0, import_react7.useState)(null);
256
+ const execute = (0, import_react7.useCallback)(async (entityIds) => {
257
+ setError(null);
258
+ setIsPending(true);
259
+ setLastResult(null);
260
+ try {
261
+ const result = await wikiRef.current.exportDump(entityIds);
262
+ setLastResult(result);
263
+ return result;
264
+ } catch (e) {
265
+ const err = e instanceof Error ? e : new Error(String(e));
266
+ setError(err);
267
+ throw err;
268
+ } finally {
269
+ setIsPending(false);
270
+ }
271
+ }, []);
272
+ return { execute, lastResult, isPending, error };
273
+ }
274
+
275
+ // src/useWikiHasChanged.ts
276
+ var import_react8 = require("react");
277
+ function useWikiHasChanged() {
278
+ const wiki = useWiki();
279
+ const wikiRef = (0, import_react8.useRef)(wiki);
280
+ wikiRef.current = wiki;
281
+ const [isPending, setIsPending] = (0, import_react8.useState)(false);
282
+ const [error, setError] = (0, import_react8.useState)(null);
283
+ const [lastResult, setLastResult] = (0, import_react8.useState)(null);
284
+ const execute = (0, import_react8.useCallback)(
285
+ async (entityId, sourceRef, sourceHash) => {
286
+ setError(null);
287
+ setIsPending(true);
288
+ setLastResult(null);
289
+ try {
290
+ const result = await wikiRef.current.hasChanged(entityId, sourceRef, sourceHash);
291
+ setLastResult(result);
292
+ return result;
293
+ } catch (e) {
294
+ const err = e instanceof Error ? e : new Error(String(e));
295
+ setError(err);
296
+ throw err;
297
+ } finally {
298
+ setIsPending(false);
299
+ }
300
+ },
301
+ []
302
+ );
303
+ return { execute, lastResult, isPending, error };
304
+ }
305
+ // Annotate the CommonJS export names for ESM import in node:
306
+ 0 && (module.exports = {
307
+ WikiProvider,
308
+ useMemoryRead,
309
+ useWiki,
310
+ useWikiExport,
311
+ useWikiForget,
312
+ useWikiHasChanged,
313
+ useWikiIngest,
314
+ useWikiMaintenance,
315
+ useWikiWrite,
316
+ ...require("@equationalapplications/core-llm-wiki")
317
+ });
318
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/WikiContext.tsx","../src/useMemoryRead.ts","../src/useWikiWrite.ts","../src/useWikiMaintenance.ts","../src/useWikiIngest.ts","../src/useWikiForget.ts","../src/useWikiExport.ts","../src/useWikiHasChanged.ts"],"sourcesContent":["export * from '@equationalapplications/core-llm-wiki';\nexport { WikiProvider, useWiki } from './WikiContext';\nexport { useMemoryRead } from './useMemoryRead';\nexport { useWikiWrite } from './useWikiWrite';\nexport { useWikiMaintenance } from './useWikiMaintenance';\nexport type { MaintenanceResult } from './useWikiMaintenance';\nexport { useWikiIngest } from './useWikiIngest';\nexport { useWikiForget } from './useWikiForget';\nexport { useWikiExport } from './useWikiExport';\nexport { useWikiHasChanged } from './useWikiHasChanged';\n","import React, { createContext, useContext, type ReactNode } from 'react';\nimport { WikiMemory } from '@equationalapplications/core-llm-wiki';\n\nconst WikiContext = createContext<WikiMemory | null>(null);\n\nexport function WikiProvider({ wiki, children }: { wiki: WikiMemory; children: ReactNode }) {\n return <WikiContext.Provider value={wiki}>{children}</WikiContext.Provider>;\n}\n\nexport function useWiki(): WikiMemory {\n const wiki = useContext(WikiContext);\n if (!wiki) throw new Error('useWiki must be used within WikiProvider');\n return wiki;\n}\n","import { useState, useEffect, useCallback, useRef } from 'react';\nimport type { MemoryBundle } from '@equationalapplications/core-llm-wiki';\nimport { useWiki } from './WikiContext';\n\nexport function useMemoryRead(entityId: string, query: string) {\n const wiki = useWiki();\n const [data, setData] = useState<MemoryBundle | null>(null);\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const fetchQueue = useRef<{\n inFlight: boolean;\n pending: { entityId: string; query: string } | null;\n }>({ inFlight: false, pending: null });\n\n // Stable scheduler: refs keep it from going stale across renders.\n // In-flight results are never discarded — spec requires them to land before\n // starting the next fetch with latest args.\n const scheduleFetch = useRef(function schedule(eid: string, q: string) {\n const fq = fetchQueue.current;\n if (fq.inFlight) {\n fq.pending = { entityId: eid, query: q };\n return;\n }\n fq.inFlight = true;\n setIsPending(true);\n\n wikiRef.current.read(eid, q).then(\n (result) => { setData(result); setError(null); },\n (e: unknown) => { setError(e instanceof Error ? e : new Error(String(e))); }\n ).finally(() => {\n fq.inFlight = false;\n const next = fq.pending;\n fq.pending = null;\n if (next) {\n scheduleFetch.current(next.entityId, next.query);\n } else {\n setIsPending(false);\n }\n });\n });\n\n useEffect(() => {\n scheduleFetch.current(entityId, query);\n }, [entityId, query, wiki]);\n\n const refetch = useCallback(() => {\n scheduleFetch.current(entityId, query);\n }, [entityId, query]);\n\n return { data, isPending, error, refetch };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport type { WikiEvent } from '@equationalapplications/core-llm-wiki';\nimport { useWiki } from './WikiContext';\n\ntype WriteEvent = Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>;\n\nexport function useWikiWrite() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<void | null>(null);\n\n const execute = useCallback(async (entityId: string, event: WriteEvent): Promise<void> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n await wikiRef.current.write(entityId, event);\n setLastResult(undefined);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e));\n setError(error);\n throw error;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\nexport type MaintenanceResult =\n | { operation: 'librarian' | 'heal'; result: undefined }\n | { operation: 'prune'; result: { entries: number; tasks: number; events: number } };\n\nexport function useWikiMaintenance() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<MaintenanceResult | null>(null);\n // Counter so any overlapping maintenance operation keeps isPending=true until all complete\n const pendingCount = useRef(0);\n\n const runLibrarian = useCallback(async (entityId: string): Promise<void> => {\n setError(null);\n pendingCount.current += 1;\n setIsPending(true);\n setLastResult(null);\n try {\n await wikiRef.current.runLibrarian(entityId);\n setLastResult({ operation: 'librarian', result: undefined });\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n pendingCount.current -= 1;\n if (pendingCount.current === 0) setIsPending(false);\n }\n }, []);\n\n const runHeal = useCallback(async (entityId: string): Promise<void> => {\n setError(null);\n pendingCount.current += 1;\n setIsPending(true);\n setLastResult(null);\n try {\n await wikiRef.current.runHeal(entityId);\n setLastResult({ operation: 'heal', result: undefined });\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n pendingCount.current -= 1;\n if (pendingCount.current === 0) setIsPending(false);\n }\n }, []);\n\n const runPrune = useCallback(\n async (\n entityId: string,\n options?: {\n retainSoftDeletedFor?: number | null;\n retainEventsFor?: number | null;\n vacuum?: boolean;\n }\n ): Promise<{ entries: number; tasks: number; events: number }> => {\n setError(null);\n pendingCount.current += 1;\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.runPrune(entityId, options);\n setLastResult({ operation: 'prune', result });\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n pendingCount.current -= 1;\n if (pendingCount.current === 0) setIsPending(false);\n }\n },\n []\n );\n\n return { runLibrarian, runHeal, runPrune, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\ninterface IngestParams {\n sourceRef: string;\n sourceHash: string;\n documentChunk: string;\n maxChunkLength?: number;\n}\n\ntype IngestResult = { truncated: boolean; chunks: number };\n\nexport function useWikiIngest() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<IngestResult | null>(null);\n\n const execute = useCallback(async (entityId: string, params: IngestParams): Promise<IngestResult> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.ingestDocument(entityId, params);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\ninterface ForgetParams {\n entryId?: string;\n taskId?: string;\n sourceRef?: string;\n sourceHash?: string;\n clearAll?: boolean;\n}\n\ntype ForgetResult = { deleted: { entries: number; tasks: number } };\n\nexport function useWikiForget() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<ForgetResult | null>(null);\n\n const execute = useCallback(async (entityId: string, params: ForgetParams): Promise<ForgetResult> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.forget(entityId, params);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\nimport type { MemoryDump } from '@equationalapplications/core-llm-wiki';\n\nexport function useWikiExport() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<MemoryDump | null>(null);\n\n const execute = useCallback(async (entityIds?: string[]): Promise<MemoryDump> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.exportDump(entityIds);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\nexport function useWikiHasChanged() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<boolean | null>(null);\n\n const execute = useCallback(\n async (entityId: string, sourceRef: string, sourceHash: string): Promise<boolean> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.hasChanged(entityId, sourceRef, sourceHash);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n },\n []\n );\n\n return { execute, lastResult, isPending, error };\n}\n"],"mappings":"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","names":["import_react","import_react","error","import_react","import_react","import_react","import_react","import_react"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,283 @@
1
+ // src/index.ts
2
+ export * from "@equationalapplications/core-llm-wiki";
3
+
4
+ // src/WikiContext.tsx
5
+ import { createContext, useContext } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ var WikiContext = createContext(null);
8
+ function WikiProvider({ wiki, children }) {
9
+ return /* @__PURE__ */ jsx(WikiContext.Provider, { value: wiki, children });
10
+ }
11
+ function useWiki() {
12
+ const wiki = useContext(WikiContext);
13
+ if (!wiki) throw new Error("useWiki must be used within WikiProvider");
14
+ return wiki;
15
+ }
16
+
17
+ // src/useMemoryRead.ts
18
+ import { useState, useEffect, useCallback, useRef } from "react";
19
+ function useMemoryRead(entityId, query) {
20
+ const wiki = useWiki();
21
+ const [data, setData] = useState(null);
22
+ const [isPending, setIsPending] = useState(false);
23
+ const [error, setError] = useState(null);
24
+ const wikiRef = useRef(wiki);
25
+ wikiRef.current = wiki;
26
+ const fetchQueue = useRef({ inFlight: false, pending: null });
27
+ const scheduleFetch = useRef(function schedule(eid, q) {
28
+ const fq = fetchQueue.current;
29
+ if (fq.inFlight) {
30
+ fq.pending = { entityId: eid, query: q };
31
+ return;
32
+ }
33
+ fq.inFlight = true;
34
+ setIsPending(true);
35
+ wikiRef.current.read(eid, q).then(
36
+ (result) => {
37
+ setData(result);
38
+ setError(null);
39
+ },
40
+ (e) => {
41
+ setError(e instanceof Error ? e : new Error(String(e)));
42
+ }
43
+ ).finally(() => {
44
+ fq.inFlight = false;
45
+ const next = fq.pending;
46
+ fq.pending = null;
47
+ if (next) {
48
+ scheduleFetch.current(next.entityId, next.query);
49
+ } else {
50
+ setIsPending(false);
51
+ }
52
+ });
53
+ });
54
+ useEffect(() => {
55
+ scheduleFetch.current(entityId, query);
56
+ }, [entityId, query, wiki]);
57
+ const refetch = useCallback(() => {
58
+ scheduleFetch.current(entityId, query);
59
+ }, [entityId, query]);
60
+ return { data, isPending, error, refetch };
61
+ }
62
+
63
+ // src/useWikiWrite.ts
64
+ import { useState as useState2, useCallback as useCallback2, useRef as useRef2 } from "react";
65
+ function useWikiWrite() {
66
+ const wiki = useWiki();
67
+ const wikiRef = useRef2(wiki);
68
+ wikiRef.current = wiki;
69
+ const [isPending, setIsPending] = useState2(false);
70
+ const [error, setError] = useState2(null);
71
+ const [lastResult, setLastResult] = useState2(null);
72
+ const execute = useCallback2(async (entityId, event) => {
73
+ setError(null);
74
+ setIsPending(true);
75
+ setLastResult(null);
76
+ try {
77
+ await wikiRef.current.write(entityId, event);
78
+ setLastResult(void 0);
79
+ } catch (e) {
80
+ const error2 = e instanceof Error ? e : new Error(String(e));
81
+ setError(error2);
82
+ throw error2;
83
+ } finally {
84
+ setIsPending(false);
85
+ }
86
+ }, []);
87
+ return { execute, lastResult, isPending, error };
88
+ }
89
+
90
+ // src/useWikiMaintenance.ts
91
+ import { useState as useState3, useCallback as useCallback3, useRef as useRef3 } from "react";
92
+ function useWikiMaintenance() {
93
+ const wiki = useWiki();
94
+ const wikiRef = useRef3(wiki);
95
+ wikiRef.current = wiki;
96
+ const [isPending, setIsPending] = useState3(false);
97
+ const [error, setError] = useState3(null);
98
+ const [lastResult, setLastResult] = useState3(null);
99
+ const pendingCount = useRef3(0);
100
+ const runLibrarian = useCallback3(async (entityId) => {
101
+ setError(null);
102
+ pendingCount.current += 1;
103
+ setIsPending(true);
104
+ setLastResult(null);
105
+ try {
106
+ await wikiRef.current.runLibrarian(entityId);
107
+ setLastResult({ operation: "librarian", result: void 0 });
108
+ } catch (e) {
109
+ const err = e instanceof Error ? e : new Error(String(e));
110
+ setError(err);
111
+ throw err;
112
+ } finally {
113
+ pendingCount.current -= 1;
114
+ if (pendingCount.current === 0) setIsPending(false);
115
+ }
116
+ }, []);
117
+ const runHeal = useCallback3(async (entityId) => {
118
+ setError(null);
119
+ pendingCount.current += 1;
120
+ setIsPending(true);
121
+ setLastResult(null);
122
+ try {
123
+ await wikiRef.current.runHeal(entityId);
124
+ setLastResult({ operation: "heal", result: void 0 });
125
+ } catch (e) {
126
+ const err = e instanceof Error ? e : new Error(String(e));
127
+ setError(err);
128
+ throw err;
129
+ } finally {
130
+ pendingCount.current -= 1;
131
+ if (pendingCount.current === 0) setIsPending(false);
132
+ }
133
+ }, []);
134
+ const runPrune = useCallback3(
135
+ async (entityId, options) => {
136
+ setError(null);
137
+ pendingCount.current += 1;
138
+ setIsPending(true);
139
+ setLastResult(null);
140
+ try {
141
+ const result = await wikiRef.current.runPrune(entityId, options);
142
+ setLastResult({ operation: "prune", result });
143
+ return result;
144
+ } catch (e) {
145
+ const err = e instanceof Error ? e : new Error(String(e));
146
+ setError(err);
147
+ throw err;
148
+ } finally {
149
+ pendingCount.current -= 1;
150
+ if (pendingCount.current === 0) setIsPending(false);
151
+ }
152
+ },
153
+ []
154
+ );
155
+ return { runLibrarian, runHeal, runPrune, lastResult, isPending, error };
156
+ }
157
+
158
+ // src/useWikiIngest.ts
159
+ import { useState as useState4, useCallback as useCallback4, useRef as useRef4 } from "react";
160
+ function useWikiIngest() {
161
+ const wiki = useWiki();
162
+ const wikiRef = useRef4(wiki);
163
+ wikiRef.current = wiki;
164
+ const [isPending, setIsPending] = useState4(false);
165
+ const [error, setError] = useState4(null);
166
+ const [lastResult, setLastResult] = useState4(null);
167
+ const execute = useCallback4(async (entityId, params) => {
168
+ setError(null);
169
+ setIsPending(true);
170
+ setLastResult(null);
171
+ try {
172
+ const result = await wikiRef.current.ingestDocument(entityId, params);
173
+ setLastResult(result);
174
+ return result;
175
+ } catch (e) {
176
+ const err = e instanceof Error ? e : new Error(String(e));
177
+ setError(err);
178
+ throw err;
179
+ } finally {
180
+ setIsPending(false);
181
+ }
182
+ }, []);
183
+ return { execute, lastResult, isPending, error };
184
+ }
185
+
186
+ // src/useWikiForget.ts
187
+ import { useState as useState5, useCallback as useCallback5, useRef as useRef5 } from "react";
188
+ function useWikiForget() {
189
+ const wiki = useWiki();
190
+ const wikiRef = useRef5(wiki);
191
+ wikiRef.current = wiki;
192
+ const [isPending, setIsPending] = useState5(false);
193
+ const [error, setError] = useState5(null);
194
+ const [lastResult, setLastResult] = useState5(null);
195
+ const execute = useCallback5(async (entityId, params) => {
196
+ setError(null);
197
+ setIsPending(true);
198
+ setLastResult(null);
199
+ try {
200
+ const result = await wikiRef.current.forget(entityId, params);
201
+ setLastResult(result);
202
+ return result;
203
+ } catch (e) {
204
+ const err = e instanceof Error ? e : new Error(String(e));
205
+ setError(err);
206
+ throw err;
207
+ } finally {
208
+ setIsPending(false);
209
+ }
210
+ }, []);
211
+ return { execute, lastResult, isPending, error };
212
+ }
213
+
214
+ // src/useWikiExport.ts
215
+ import { useState as useState6, useCallback as useCallback6, useRef as useRef6 } from "react";
216
+ function useWikiExport() {
217
+ const wiki = useWiki();
218
+ const wikiRef = useRef6(wiki);
219
+ wikiRef.current = wiki;
220
+ const [isPending, setIsPending] = useState6(false);
221
+ const [error, setError] = useState6(null);
222
+ const [lastResult, setLastResult] = useState6(null);
223
+ const execute = useCallback6(async (entityIds) => {
224
+ setError(null);
225
+ setIsPending(true);
226
+ setLastResult(null);
227
+ try {
228
+ const result = await wikiRef.current.exportDump(entityIds);
229
+ setLastResult(result);
230
+ return result;
231
+ } catch (e) {
232
+ const err = e instanceof Error ? e : new Error(String(e));
233
+ setError(err);
234
+ throw err;
235
+ } finally {
236
+ setIsPending(false);
237
+ }
238
+ }, []);
239
+ return { execute, lastResult, isPending, error };
240
+ }
241
+
242
+ // src/useWikiHasChanged.ts
243
+ import { useState as useState7, useCallback as useCallback7, useRef as useRef7 } from "react";
244
+ function useWikiHasChanged() {
245
+ const wiki = useWiki();
246
+ const wikiRef = useRef7(wiki);
247
+ wikiRef.current = wiki;
248
+ const [isPending, setIsPending] = useState7(false);
249
+ const [error, setError] = useState7(null);
250
+ const [lastResult, setLastResult] = useState7(null);
251
+ const execute = useCallback7(
252
+ async (entityId, sourceRef, sourceHash) => {
253
+ setError(null);
254
+ setIsPending(true);
255
+ setLastResult(null);
256
+ try {
257
+ const result = await wikiRef.current.hasChanged(entityId, sourceRef, sourceHash);
258
+ setLastResult(result);
259
+ return result;
260
+ } catch (e) {
261
+ const err = e instanceof Error ? e : new Error(String(e));
262
+ setError(err);
263
+ throw err;
264
+ } finally {
265
+ setIsPending(false);
266
+ }
267
+ },
268
+ []
269
+ );
270
+ return { execute, lastResult, isPending, error };
271
+ }
272
+ export {
273
+ WikiProvider,
274
+ useMemoryRead,
275
+ useWiki,
276
+ useWikiExport,
277
+ useWikiForget,
278
+ useWikiHasChanged,
279
+ useWikiIngest,
280
+ useWikiMaintenance,
281
+ useWikiWrite
282
+ };
283
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/WikiContext.tsx","../src/useMemoryRead.ts","../src/useWikiWrite.ts","../src/useWikiMaintenance.ts","../src/useWikiIngest.ts","../src/useWikiForget.ts","../src/useWikiExport.ts","../src/useWikiHasChanged.ts"],"sourcesContent":["export * from '@equationalapplications/core-llm-wiki';\nexport { WikiProvider, useWiki } from './WikiContext';\nexport { useMemoryRead } from './useMemoryRead';\nexport { useWikiWrite } from './useWikiWrite';\nexport { useWikiMaintenance } from './useWikiMaintenance';\nexport type { MaintenanceResult } from './useWikiMaintenance';\nexport { useWikiIngest } from './useWikiIngest';\nexport { useWikiForget } from './useWikiForget';\nexport { useWikiExport } from './useWikiExport';\nexport { useWikiHasChanged } from './useWikiHasChanged';\n","import React, { createContext, useContext, type ReactNode } from 'react';\nimport { WikiMemory } from '@equationalapplications/core-llm-wiki';\n\nconst WikiContext = createContext<WikiMemory | null>(null);\n\nexport function WikiProvider({ wiki, children }: { wiki: WikiMemory; children: ReactNode }) {\n return <WikiContext.Provider value={wiki}>{children}</WikiContext.Provider>;\n}\n\nexport function useWiki(): WikiMemory {\n const wiki = useContext(WikiContext);\n if (!wiki) throw new Error('useWiki must be used within WikiProvider');\n return wiki;\n}\n","import { useState, useEffect, useCallback, useRef } from 'react';\nimport type { MemoryBundle } from '@equationalapplications/core-llm-wiki';\nimport { useWiki } from './WikiContext';\n\nexport function useMemoryRead(entityId: string, query: string) {\n const wiki = useWiki();\n const [data, setData] = useState<MemoryBundle | null>(null);\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const fetchQueue = useRef<{\n inFlight: boolean;\n pending: { entityId: string; query: string } | null;\n }>({ inFlight: false, pending: null });\n\n // Stable scheduler: refs keep it from going stale across renders.\n // In-flight results are never discarded — spec requires them to land before\n // starting the next fetch with latest args.\n const scheduleFetch = useRef(function schedule(eid: string, q: string) {\n const fq = fetchQueue.current;\n if (fq.inFlight) {\n fq.pending = { entityId: eid, query: q };\n return;\n }\n fq.inFlight = true;\n setIsPending(true);\n\n wikiRef.current.read(eid, q).then(\n (result) => { setData(result); setError(null); },\n (e: unknown) => { setError(e instanceof Error ? e : new Error(String(e))); }\n ).finally(() => {\n fq.inFlight = false;\n const next = fq.pending;\n fq.pending = null;\n if (next) {\n scheduleFetch.current(next.entityId, next.query);\n } else {\n setIsPending(false);\n }\n });\n });\n\n useEffect(() => {\n scheduleFetch.current(entityId, query);\n }, [entityId, query, wiki]);\n\n const refetch = useCallback(() => {\n scheduleFetch.current(entityId, query);\n }, [entityId, query]);\n\n return { data, isPending, error, refetch };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport type { WikiEvent } from '@equationalapplications/core-llm-wiki';\nimport { useWiki } from './WikiContext';\n\ntype WriteEvent = Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>;\n\nexport function useWikiWrite() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<void | null>(null);\n\n const execute = useCallback(async (entityId: string, event: WriteEvent): Promise<void> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n await wikiRef.current.write(entityId, event);\n setLastResult(undefined);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e));\n setError(error);\n throw error;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\nexport type MaintenanceResult =\n | { operation: 'librarian' | 'heal'; result: undefined }\n | { operation: 'prune'; result: { entries: number; tasks: number; events: number } };\n\nexport function useWikiMaintenance() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<MaintenanceResult | null>(null);\n // Counter so any overlapping maintenance operation keeps isPending=true until all complete\n const pendingCount = useRef(0);\n\n const runLibrarian = useCallback(async (entityId: string): Promise<void> => {\n setError(null);\n pendingCount.current += 1;\n setIsPending(true);\n setLastResult(null);\n try {\n await wikiRef.current.runLibrarian(entityId);\n setLastResult({ operation: 'librarian', result: undefined });\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n pendingCount.current -= 1;\n if (pendingCount.current === 0) setIsPending(false);\n }\n }, []);\n\n const runHeal = useCallback(async (entityId: string): Promise<void> => {\n setError(null);\n pendingCount.current += 1;\n setIsPending(true);\n setLastResult(null);\n try {\n await wikiRef.current.runHeal(entityId);\n setLastResult({ operation: 'heal', result: undefined });\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n pendingCount.current -= 1;\n if (pendingCount.current === 0) setIsPending(false);\n }\n }, []);\n\n const runPrune = useCallback(\n async (\n entityId: string,\n options?: {\n retainSoftDeletedFor?: number | null;\n retainEventsFor?: number | null;\n vacuum?: boolean;\n }\n ): Promise<{ entries: number; tasks: number; events: number }> => {\n setError(null);\n pendingCount.current += 1;\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.runPrune(entityId, options);\n setLastResult({ operation: 'prune', result });\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n pendingCount.current -= 1;\n if (pendingCount.current === 0) setIsPending(false);\n }\n },\n []\n );\n\n return { runLibrarian, runHeal, runPrune, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\ninterface IngestParams {\n sourceRef: string;\n sourceHash: string;\n documentChunk: string;\n maxChunkLength?: number;\n}\n\ntype IngestResult = { truncated: boolean; chunks: number };\n\nexport function useWikiIngest() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<IngestResult | null>(null);\n\n const execute = useCallback(async (entityId: string, params: IngestParams): Promise<IngestResult> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.ingestDocument(entityId, params);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\ninterface ForgetParams {\n entryId?: string;\n taskId?: string;\n sourceRef?: string;\n sourceHash?: string;\n clearAll?: boolean;\n}\n\ntype ForgetResult = { deleted: { entries: number; tasks: number } };\n\nexport function useWikiForget() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<ForgetResult | null>(null);\n\n const execute = useCallback(async (entityId: string, params: ForgetParams): Promise<ForgetResult> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.forget(entityId, params);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\nimport type { MemoryDump } from '@equationalapplications/core-llm-wiki';\n\nexport function useWikiExport() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<MemoryDump | null>(null);\n\n const execute = useCallback(async (entityIds?: string[]): Promise<MemoryDump> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.exportDump(entityIds);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n return { execute, lastResult, isPending, error };\n}\n","import { useState, useCallback, useRef } from 'react';\nimport { useWiki } from './WikiContext';\n\nexport function useWikiHasChanged() {\n const wiki = useWiki();\n const wikiRef = useRef(wiki);\n wikiRef.current = wiki;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [lastResult, setLastResult] = useState<boolean | null>(null);\n\n const execute = useCallback(\n async (entityId: string, sourceRef: string, sourceHash: string): Promise<boolean> => {\n setError(null);\n setIsPending(true);\n setLastResult(null);\n try {\n const result = await wikiRef.current.hasChanged(entityId, sourceRef, sourceHash);\n setLastResult(result);\n return result;\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e));\n setError(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n },\n []\n );\n\n return { execute, lastResult, isPending, error };\n}\n"],"mappings":"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","names":["useState","useCallback","useRef","useRef","useState","useCallback","error","useState","useCallback","useRef","useRef","useState","useCallback","useState","useCallback","useRef","useRef","useState","useCallback","useState","useCallback","useRef","useRef","useState","useCallback","useState","useCallback","useRef","useRef","useState","useCallback","useState","useCallback","useRef","useRef","useState","useCallback"]}
package/dist/js.d.mts ADDED
@@ -0,0 +1,23 @@
1
+ import { WikiMemory, MemoryBundle, WikiEvent } from '@equationalapplications/core-llm-wiki';
2
+ export * from '@equationalapplications/core-llm-wiki';
3
+
4
+ /**
5
+ * Vanilla-JS entry for @equationalapplications/react-llm-wiki.
6
+ * Import from '@equationalapplications/react-llm-wiki/js' to use WikiMemory
7
+ * without bundling React or any hook code.
8
+ *
9
+ * Provides:
10
+ * - All core exports (createWiki, WikiMemory, types, …)
11
+ * - Standalone read() / write() helpers that wrap the WikiMemory instance methods
12
+ */
13
+
14
+ /**
15
+ * Standalone read helper. Equivalent to `wiki.read(entityId, query)`.
16
+ */
17
+ declare function read(wiki: WikiMemory, entityId: string, query: string): Promise<MemoryBundle>;
18
+ /**
19
+ * Standalone write helper. Equivalent to `wiki.write(entityId, event)`.
20
+ */
21
+ declare function write(wiki: WikiMemory, entityId: string, event: Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>): Promise<void>;
22
+
23
+ export { read, write };
package/dist/js.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { WikiMemory, MemoryBundle, WikiEvent } from '@equationalapplications/core-llm-wiki';
2
+ export * from '@equationalapplications/core-llm-wiki';
3
+
4
+ /**
5
+ * Vanilla-JS entry for @equationalapplications/react-llm-wiki.
6
+ * Import from '@equationalapplications/react-llm-wiki/js' to use WikiMemory
7
+ * without bundling React or any hook code.
8
+ *
9
+ * Provides:
10
+ * - All core exports (createWiki, WikiMemory, types, …)
11
+ * - Standalone read() / write() helpers that wrap the WikiMemory instance methods
12
+ */
13
+
14
+ /**
15
+ * Standalone read helper. Equivalent to `wiki.read(entityId, query)`.
16
+ */
17
+ declare function read(wiki: WikiMemory, entityId: string, query: string): Promise<MemoryBundle>;
18
+ /**
19
+ * Standalone write helper. Equivalent to `wiki.write(entityId, event)`.
20
+ */
21
+ declare function write(wiki: WikiMemory, entityId: string, event: Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>): Promise<void>;
22
+
23
+ export { read, write };
package/dist/js.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/js.ts
22
+ var js_exports = {};
23
+ __export(js_exports, {
24
+ read: () => read,
25
+ write: () => write
26
+ });
27
+ module.exports = __toCommonJS(js_exports);
28
+ __reExport(js_exports, require("@equationalapplications/core-llm-wiki"), module.exports);
29
+ function read(wiki, entityId, query) {
30
+ return wiki.read(entityId, query);
31
+ }
32
+ function write(wiki, entityId, event) {
33
+ return wiki.write(entityId, event);
34
+ }
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ read,
38
+ write,
39
+ ...require("@equationalapplications/core-llm-wiki")
40
+ });
41
+ //# sourceMappingURL=js.js.map
package/dist/js.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/js.ts"],"sourcesContent":["/**\n * Vanilla-JS entry for @equationalapplications/react-llm-wiki.\n * Import from '@equationalapplications/react-llm-wiki/js' to use WikiMemory\n * without bundling React or any hook code.\n *\n * Provides:\n * - All core exports (createWiki, WikiMemory, types, …)\n * - Standalone read() / write() helpers that wrap the WikiMemory instance methods\n */\nexport * from '@equationalapplications/core-llm-wiki';\n\nimport type { WikiMemory, MemoryBundle, WikiEvent } from '@equationalapplications/core-llm-wiki';\n\n/**\n * Standalone read helper. Equivalent to `wiki.read(entityId, query)`.\n */\nexport function read(\n wiki: WikiMemory,\n entityId: string,\n query: string,\n): Promise<MemoryBundle> {\n return wiki.read(entityId, query);\n}\n\n/**\n * Standalone write helper. Equivalent to `wiki.write(entityId, event)`.\n */\nexport function write(\n wiki: WikiMemory,\n entityId: string,\n event: Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>,\n): Promise<void> {\n return wiki.write(entityId, event);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,uBAAc,kDATd;AAgBO,SAAS,KACd,MACA,UACA,OACuB;AACvB,SAAO,KAAK,KAAK,UAAU,KAAK;AAClC;AAKO,SAAS,MACd,MACA,UACA,OACe;AACf,SAAO,KAAK,MAAM,UAAU,KAAK;AACnC;","names":[]}
package/dist/js.mjs ADDED
@@ -0,0 +1,13 @@
1
+ // src/js.ts
2
+ export * from "@equationalapplications/core-llm-wiki";
3
+ function read(wiki, entityId, query) {
4
+ return wiki.read(entityId, query);
5
+ }
6
+ function write(wiki, entityId, event) {
7
+ return wiki.write(entityId, event);
8
+ }
9
+ export {
10
+ read,
11
+ write
12
+ };
13
+ //# sourceMappingURL=js.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/js.ts"],"sourcesContent":["/**\n * Vanilla-JS entry for @equationalapplications/react-llm-wiki.\n * Import from '@equationalapplications/react-llm-wiki/js' to use WikiMemory\n * without bundling React or any hook code.\n *\n * Provides:\n * - All core exports (createWiki, WikiMemory, types, …)\n * - Standalone read() / write() helpers that wrap the WikiMemory instance methods\n */\nexport * from '@equationalapplications/core-llm-wiki';\n\nimport type { WikiMemory, MemoryBundle, WikiEvent } from '@equationalapplications/core-llm-wiki';\n\n/**\n * Standalone read helper. Equivalent to `wiki.read(entityId, query)`.\n */\nexport function read(\n wiki: WikiMemory,\n entityId: string,\n query: string,\n): Promise<MemoryBundle> {\n return wiki.read(entityId, query);\n}\n\n/**\n * Standalone write helper. Equivalent to `wiki.write(entityId, event)`.\n */\nexport function write(\n wiki: WikiMemory,\n entityId: string,\n event: Omit<WikiEvent, 'id' | 'entity_id' | 'created_at'>,\n): Promise<void> {\n return wiki.write(entityId, event);\n}\n"],"mappings":";AASA,cAAc;AAOP,SAAS,KACd,MACA,UACA,OACuB;AACvB,SAAO,KAAK,KAAK,UAAU,KAAK;AAClC;AAKO,SAAS,MACd,MACA,UACA,OACe;AACf,SAAO,KAAK,MAAM,UAAU,KAAK;AACnC;","names":[]}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@equationalapplications/react-llm-wiki",
3
+ "version": "2.4.0",
4
+ "description": "React hooks and web utilities for LLM Wiki Memory.",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./js": {
15
+ "types": "./dist/js.d.ts",
16
+ "import": "./dist/js.mjs",
17
+ "require": "./dist/js.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "LICENSE",
23
+ "README.md"
24
+ ],
25
+ "license": "MIT",
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "registry": "https://registry.npmjs.org"
29
+ },
30
+ "dependencies": {
31
+ "@equationalapplications/core-llm-wiki": "2.4.0"
32
+ },
33
+ "peerDependencies": {
34
+ "react": ">=17"
35
+ },
36
+ "devDependencies": {
37
+ "@testing-library/react": "^16.0.0",
38
+ "@types/react": "^19.0.0",
39
+ "@types/react-dom": "^19.0.0",
40
+ "happy-dom": "^20.9.0",
41
+ "jsdom": "^29.0.0",
42
+ "react": "19.2.5",
43
+ "react-dom": "19.2.5",
44
+ "tsup": "^8.0.0",
45
+ "typescript": "^5.4.0",
46
+ "vitest": "4.1.5"
47
+ },
48
+ "scripts": {
49
+ "build": "tsup",
50
+ "dev": "tsup --watch",
51
+ "typecheck": "tsc --noEmit",
52
+ "test": "echo 'React hook tests disabled pending vitest 5.x stable (see packages/react/vitest.config.ts)'",
53
+ "test:watch": "vitest"
54
+ }
55
+ }