@deepagents/context 0.6.0 → 0.7.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.
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Graph-based context store types and abstract interface.
3
+ *
4
+ * The storage model uses a DAG (Directed Acyclic Graph) for messages:
5
+ * - Messages are nodes with parentId forming the graph
6
+ * - Branches are pointers to head (tip) messages
7
+ * - Checkpoints are pointers to specific messages
8
+ * - No hard deletion - only soft delete via 'deleted' flag
9
+ */
10
+ /**
11
+ * Data for creating/storing a chat.
12
+ */
13
+ export interface ChatData {
14
+ id: string;
15
+ title?: string;
16
+ metadata?: Record<string, unknown>;
17
+ createdAt: number;
18
+ updatedAt: number;
19
+ }
20
+ /**
21
+ * Information about a chat for listing.
22
+ */
23
+ export interface ChatInfo {
24
+ id: string;
25
+ title?: string;
26
+ messageCount: number;
27
+ branchCount: number;
28
+ createdAt: number;
29
+ updatedAt: number;
30
+ }
31
+ /**
32
+ * Data for creating/storing a message (graph node).
33
+ */
34
+ export interface MessageData {
35
+ id: string;
36
+ chatId: string;
37
+ parentId: string | null;
38
+ name: string;
39
+ type?: string;
40
+ data: unknown;
41
+ persist: boolean;
42
+ deleted: boolean;
43
+ createdAt: number;
44
+ }
45
+ /**
46
+ * Message with computed properties for listing.
47
+ */
48
+ export interface MessageInfo extends MessageData {
49
+ hasChildren: boolean;
50
+ }
51
+ /**
52
+ * Data for creating/storing a branch.
53
+ * A branch is a pointer to a head message in the graph.
54
+ */
55
+ export interface BranchData {
56
+ id: string;
57
+ chatId: string;
58
+ name: string;
59
+ headMessageId: string | null;
60
+ isActive: boolean;
61
+ createdAt: number;
62
+ }
63
+ /**
64
+ * Information about a branch for listing.
65
+ */
66
+ export interface BranchInfo {
67
+ id: string;
68
+ name: string;
69
+ headMessageId: string | null;
70
+ isActive: boolean;
71
+ messageCount: number;
72
+ createdAt: number;
73
+ }
74
+ /**
75
+ * Data for creating/storing a checkpoint.
76
+ * A checkpoint is a pointer to a specific message in the graph.
77
+ */
78
+ export interface CheckpointData {
79
+ id: string;
80
+ chatId: string;
81
+ name: string;
82
+ messageId: string;
83
+ createdAt: number;
84
+ }
85
+ /**
86
+ * Information about a checkpoint for listing.
87
+ */
88
+ export interface CheckpointInfo {
89
+ id: string;
90
+ name: string;
91
+ messageId: string;
92
+ createdAt: number;
93
+ }
94
+ /**
95
+ * A node in the visualization graph.
96
+ */
97
+ export interface GraphNode {
98
+ id: string;
99
+ parentId: string | null;
100
+ role: string;
101
+ content: string;
102
+ createdAt: number;
103
+ deleted: boolean;
104
+ }
105
+ /**
106
+ * A branch pointer for visualization.
107
+ */
108
+ export interface GraphBranch {
109
+ name: string;
110
+ headMessageId: string | null;
111
+ isActive: boolean;
112
+ }
113
+ /**
114
+ * A checkpoint pointer for visualization.
115
+ */
116
+ export interface GraphCheckpoint {
117
+ name: string;
118
+ messageId: string;
119
+ }
120
+ /**
121
+ * Complete graph data for visualization.
122
+ */
123
+ export interface GraphData {
124
+ chatId: string;
125
+ nodes: GraphNode[];
126
+ branches: GraphBranch[];
127
+ checkpoints: GraphCheckpoint[];
128
+ }
129
+ /**
130
+ * Abstract base class for graph-based context storage.
131
+ *
132
+ * Implementations provide persistence for the message graph, branches,
133
+ * and checkpoints. The graph model enables:
134
+ * - Branching: rewind creates a new branch, original stays intact
135
+ * - Checkpoints: pointers to specific messages for easy restore
136
+ * - No data loss: soft delete only, all history preserved
137
+ */
138
+ export declare abstract class ContextStore {
139
+ /**
140
+ * Create a new chat.
141
+ */
142
+ abstract createChat(chat: ChatData): Promise<void>;
143
+ /**
144
+ * Get a chat by ID.
145
+ */
146
+ abstract getChat(chatId: string): Promise<ChatData | undefined>;
147
+ /**
148
+ * Update chat metadata.
149
+ */
150
+ abstract updateChat(chatId: string, updates: Partial<Pick<ChatData, 'title' | 'metadata' | 'updatedAt'>>): Promise<void>;
151
+ /**
152
+ * List all chats, sorted by updatedAt descending.
153
+ */
154
+ abstract listChats(): Promise<ChatInfo[]>;
155
+ /**
156
+ * Add a message to the graph.
157
+ */
158
+ abstract addMessage(message: MessageData): Promise<void>;
159
+ /**
160
+ * Get a message by ID.
161
+ */
162
+ abstract getMessage(messageId: string): Promise<MessageData | undefined>;
163
+ /**
164
+ * Walk up the parent chain from a head message, returning messages in
165
+ * chronological order (root first). Excludes deleted messages.
166
+ */
167
+ abstract getMessageChain(headId: string): Promise<MessageData[]>;
168
+ /**
169
+ * Soft delete a message (set deleted = true).
170
+ */
171
+ abstract softDeleteMessage(messageId: string): Promise<void>;
172
+ /**
173
+ * Check if a message has children (is a fork point).
174
+ */
175
+ abstract hasChildren(messageId: string): Promise<boolean>;
176
+ /**
177
+ * Create a new branch.
178
+ */
179
+ abstract createBranch(branch: BranchData): Promise<void>;
180
+ /**
181
+ * Get a branch by chat ID and name.
182
+ */
183
+ abstract getBranch(chatId: string, name: string): Promise<BranchData | undefined>;
184
+ /**
185
+ * Get the active branch for a chat.
186
+ */
187
+ abstract getActiveBranch(chatId: string): Promise<BranchData | undefined>;
188
+ /**
189
+ * Set a branch as active (and deactivate others).
190
+ */
191
+ abstract setActiveBranch(chatId: string, branchId: string): Promise<void>;
192
+ /**
193
+ * Update a branch's head message.
194
+ */
195
+ abstract updateBranchHead(branchId: string, messageId: string | null): Promise<void>;
196
+ /**
197
+ * List all branches for a chat.
198
+ */
199
+ abstract listBranches(chatId: string): Promise<BranchInfo[]>;
200
+ /**
201
+ * Create a checkpoint.
202
+ */
203
+ abstract createCheckpoint(checkpoint: CheckpointData): Promise<void>;
204
+ /**
205
+ * Get a checkpoint by chat ID and name.
206
+ */
207
+ abstract getCheckpoint(chatId: string, name: string): Promise<CheckpointData | undefined>;
208
+ /**
209
+ * List all checkpoints for a chat.
210
+ */
211
+ abstract listCheckpoints(chatId: string): Promise<CheckpointInfo[]>;
212
+ /**
213
+ * Delete a checkpoint.
214
+ */
215
+ abstract deleteCheckpoint(chatId: string, name: string): Promise<void>;
216
+ /**
217
+ * Get the complete graph data for a chat.
218
+ * Returns all messages (including deleted), branches, and checkpoints.
219
+ */
220
+ abstract getGraph(chatId: string): Promise<GraphData>;
221
+ }
222
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/store/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { GraphData } from './store/store.ts';
2
+ /**
3
+ * Render a graph as ASCII art.
4
+ *
5
+ * @param data - The graph data to visualize
6
+ * @returns ASCII art representation of the graph
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const graph = await store.getGraph('my-chat');
11
+ * console.log(visualizeGraph(graph));
12
+ * ```
13
+ */
14
+ export declare function visualizeGraph(data: GraphData): string;
15
+ //# sourceMappingURL=visualize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualize.d.ts","sourceRoot":"","sources":["../../src/lib/visualize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAiFtD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepagents/context",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",