opencode-graphiti 0.0.0-development

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.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +358 -0
  3. package/esm/_dnt.polyfills.d.ts +166 -0
  4. package/esm/_dnt.polyfills.d.ts.map +1 -0
  5. package/esm/_dnt.polyfills.js +177 -0
  6. package/esm/_dnt.shims.d.ts +6 -0
  7. package/esm/_dnt.shims.d.ts.map +1 -0
  8. package/esm/_dnt.shims.js +61 -0
  9. package/esm/deno.d.ts +45 -0
  10. package/esm/deno.d.ts.map +1 -0
  11. package/esm/deno.js +39 -0
  12. package/esm/mod.d.ts +3 -0
  13. package/esm/mod.d.ts.map +1 -0
  14. package/esm/mod.js +2 -0
  15. package/esm/package.json +3 -0
  16. package/esm/src/config.d.ts +20 -0
  17. package/esm/src/config.d.ts.map +1 -0
  18. package/esm/src/config.js +246 -0
  19. package/esm/src/handlers/chat.d.ts +14 -0
  20. package/esm/src/handlers/chat.d.ts.map +1 -0
  21. package/esm/src/handlers/chat.js +60 -0
  22. package/esm/src/handlers/compacting.d.ts +9 -0
  23. package/esm/src/handlers/compacting.d.ts.map +1 -0
  24. package/esm/src/handlers/compacting.js +30 -0
  25. package/esm/src/handlers/event.d.ts +22 -0
  26. package/esm/src/handlers/event.d.ts.map +1 -0
  27. package/esm/src/handlers/event.js +287 -0
  28. package/esm/src/handlers/messages.d.ts +9 -0
  29. package/esm/src/handlers/messages.d.ts.map +1 -0
  30. package/esm/src/handlers/messages.js +93 -0
  31. package/esm/src/index.d.ts +5 -0
  32. package/esm/src/index.d.ts.map +1 -0
  33. package/esm/src/index.js +153 -0
  34. package/esm/src/services/batch-drain.d.ts +23 -0
  35. package/esm/src/services/batch-drain.d.ts.map +1 -0
  36. package/esm/src/services/batch-drain.js +217 -0
  37. package/esm/src/services/connection-manager.d.ts +104 -0
  38. package/esm/src/services/connection-manager.d.ts.map +1 -0
  39. package/esm/src/services/connection-manager.js +621 -0
  40. package/esm/src/services/constants.d.ts +7 -0
  41. package/esm/src/services/constants.d.ts.map +1 -0
  42. package/esm/src/services/constants.js +6 -0
  43. package/esm/src/services/context-limit.d.ts +3 -0
  44. package/esm/src/services/context-limit.d.ts.map +1 -0
  45. package/esm/src/services/context-limit.js +44 -0
  46. package/esm/src/services/event-extractor.d.ts +29 -0
  47. package/esm/src/services/event-extractor.d.ts.map +1 -0
  48. package/esm/src/services/event-extractor.js +659 -0
  49. package/esm/src/services/graphiti-async.d.ts +22 -0
  50. package/esm/src/services/graphiti-async.d.ts.map +1 -0
  51. package/esm/src/services/graphiti-async.js +219 -0
  52. package/esm/src/services/graphiti-mcp.d.ts +57 -0
  53. package/esm/src/services/graphiti-mcp.d.ts.map +1 -0
  54. package/esm/src/services/graphiti-mcp.js +194 -0
  55. package/esm/src/services/logger.d.ts +9 -0
  56. package/esm/src/services/logger.d.ts.map +1 -0
  57. package/esm/src/services/logger.js +104 -0
  58. package/esm/src/services/opencode-warning.d.ts +8 -0
  59. package/esm/src/services/opencode-warning.d.ts.map +1 -0
  60. package/esm/src/services/opencode-warning.js +104 -0
  61. package/esm/src/services/redis-cache.d.ts +27 -0
  62. package/esm/src/services/redis-cache.d.ts.map +1 -0
  63. package/esm/src/services/redis-cache.js +215 -0
  64. package/esm/src/services/redis-client.d.ts +89 -0
  65. package/esm/src/services/redis-client.d.ts.map +1 -0
  66. package/esm/src/services/redis-client.js +906 -0
  67. package/esm/src/services/redis-events.d.ts +46 -0
  68. package/esm/src/services/redis-events.d.ts.map +1 -0
  69. package/esm/src/services/redis-events.js +517 -0
  70. package/esm/src/services/redis-snapshot.d.ts +16 -0
  71. package/esm/src/services/redis-snapshot.d.ts.map +1 -0
  72. package/esm/src/services/redis-snapshot.js +184 -0
  73. package/esm/src/services/render-utils.d.ts +23 -0
  74. package/esm/src/services/render-utils.d.ts.map +1 -0
  75. package/esm/src/services/render-utils.js +149 -0
  76. package/esm/src/services/runtime-teardown.d.ts +23 -0
  77. package/esm/src/services/runtime-teardown.d.ts.map +1 -0
  78. package/esm/src/services/runtime-teardown.js +119 -0
  79. package/esm/src/services/sdk-normalize.d.ts +55 -0
  80. package/esm/src/services/sdk-normalize.d.ts.map +1 -0
  81. package/esm/src/services/sdk-normalize.js +61 -0
  82. package/esm/src/session.d.ts +74 -0
  83. package/esm/src/session.d.ts.map +1 -0
  84. package/esm/src/session.js +694 -0
  85. package/esm/src/types/index.d.ts +120 -0
  86. package/esm/src/types/index.d.ts.map +1 -0
  87. package/esm/src/types/index.js +28 -0
  88. package/esm/src/utils.d.ts +27 -0
  89. package/esm/src/utils.d.ts.map +1 -0
  90. package/esm/src/utils.js +76 -0
  91. package/package.json +59 -0
  92. package/script/_dnt.polyfills.d.ts +166 -0
  93. package/script/_dnt.polyfills.d.ts.map +1 -0
  94. package/script/_dnt.polyfills.js +180 -0
  95. package/script/_dnt.shims.d.ts +6 -0
  96. package/script/_dnt.shims.d.ts.map +1 -0
  97. package/script/_dnt.shims.js +65 -0
  98. package/script/deno.d.ts +45 -0
  99. package/script/deno.d.ts.map +1 -0
  100. package/script/deno.js +41 -0
  101. package/script/mod.d.ts +3 -0
  102. package/script/mod.d.ts.map +1 -0
  103. package/script/mod.js +6 -0
  104. package/script/package.json +3 -0
  105. package/script/src/config.d.ts +20 -0
  106. package/script/src/config.d.ts.map +1 -0
  107. package/script/src/config.js +256 -0
  108. package/script/src/handlers/chat.d.ts +14 -0
  109. package/script/src/handlers/chat.d.ts.map +1 -0
  110. package/script/src/handlers/chat.js +63 -0
  111. package/script/src/handlers/compacting.d.ts +9 -0
  112. package/script/src/handlers/compacting.d.ts.map +1 -0
  113. package/script/src/handlers/compacting.js +33 -0
  114. package/script/src/handlers/event.d.ts +22 -0
  115. package/script/src/handlers/event.d.ts.map +1 -0
  116. package/script/src/handlers/event.js +290 -0
  117. package/script/src/handlers/messages.d.ts +9 -0
  118. package/script/src/handlers/messages.d.ts.map +1 -0
  119. package/script/src/handlers/messages.js +96 -0
  120. package/script/src/index.d.ts +5 -0
  121. package/script/src/index.d.ts.map +1 -0
  122. package/script/src/index.js +159 -0
  123. package/script/src/services/batch-drain.d.ts +23 -0
  124. package/script/src/services/batch-drain.d.ts.map +1 -0
  125. package/script/src/services/batch-drain.js +221 -0
  126. package/script/src/services/connection-manager.d.ts +104 -0
  127. package/script/src/services/connection-manager.d.ts.map +1 -0
  128. package/script/src/services/connection-manager.js +635 -0
  129. package/script/src/services/constants.d.ts +7 -0
  130. package/script/src/services/constants.d.ts.map +1 -0
  131. package/script/src/services/constants.js +9 -0
  132. package/script/src/services/context-limit.d.ts +3 -0
  133. package/script/src/services/context-limit.d.ts.map +1 -0
  134. package/script/src/services/context-limit.js +47 -0
  135. package/script/src/services/event-extractor.d.ts +29 -0
  136. package/script/src/services/event-extractor.d.ts.map +1 -0
  137. package/script/src/services/event-extractor.js +669 -0
  138. package/script/src/services/graphiti-async.d.ts +22 -0
  139. package/script/src/services/graphiti-async.d.ts.map +1 -0
  140. package/script/src/services/graphiti-async.js +223 -0
  141. package/script/src/services/graphiti-mcp.d.ts +57 -0
  142. package/script/src/services/graphiti-mcp.d.ts.map +1 -0
  143. package/script/src/services/graphiti-mcp.js +198 -0
  144. package/script/src/services/logger.d.ts +9 -0
  145. package/script/src/services/logger.d.ts.map +1 -0
  146. package/script/src/services/logger.js +142 -0
  147. package/script/src/services/opencode-warning.d.ts +8 -0
  148. package/script/src/services/opencode-warning.d.ts.map +1 -0
  149. package/script/src/services/opencode-warning.js +114 -0
  150. package/script/src/services/redis-cache.d.ts +27 -0
  151. package/script/src/services/redis-cache.d.ts.map +1 -0
  152. package/script/src/services/redis-cache.js +219 -0
  153. package/script/src/services/redis-client.d.ts +89 -0
  154. package/script/src/services/redis-client.d.ts.map +1 -0
  155. package/script/src/services/redis-client.js +943 -0
  156. package/script/src/services/redis-events.d.ts +46 -0
  157. package/script/src/services/redis-events.d.ts.map +1 -0
  158. package/script/src/services/redis-events.js +535 -0
  159. package/script/src/services/redis-snapshot.d.ts +16 -0
  160. package/script/src/services/redis-snapshot.d.ts.map +1 -0
  161. package/script/src/services/redis-snapshot.js +189 -0
  162. package/script/src/services/render-utils.d.ts +23 -0
  163. package/script/src/services/render-utils.d.ts.map +1 -0
  164. package/script/src/services/render-utils.js +165 -0
  165. package/script/src/services/runtime-teardown.d.ts +23 -0
  166. package/script/src/services/runtime-teardown.d.ts.map +1 -0
  167. package/script/src/services/runtime-teardown.js +155 -0
  168. package/script/src/services/sdk-normalize.d.ts +55 -0
  169. package/script/src/services/sdk-normalize.d.ts.map +1 -0
  170. package/script/src/services/sdk-normalize.js +67 -0
  171. package/script/src/session.d.ts +74 -0
  172. package/script/src/session.d.ts.map +1 -0
  173. package/script/src/session.js +698 -0
  174. package/script/src/types/index.d.ts +120 -0
  175. package/script/src/types/index.d.ts.map +1 -0
  176. package/script/src/types/index.js +33 -0
  177. package/script/src/utils.d.ts +27 -0
  178. package/script/src/utils.d.ts.map +1 -0
  179. package/script/src/utils.js +87 -0
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchDrainService = void 0;
4
+ const index_js_1 = require("../types/index.js");
5
+ const logger_js_1 = require("./logger.js");
6
+ const redis_events_js_1 = require("./redis-events.js");
7
+ const render_utils_js_1 = require("./render-utils.js");
8
+ class DrainClaimLostError extends Error {
9
+ constructor() {
10
+ super("Drain claim lease lost during batch processing");
11
+ this.name = "DrainClaimLostError";
12
+ }
13
+ }
14
+ const makeBatchKey = (entries) => `${entries[0]?.event.id ?? "empty"}:${entries.at(-1)?.event.id ?? "empty"}`;
15
+ const shouldDrainEntry = (entry) => {
16
+ const text = (0, render_utils_js_1.sanitizeMemoryInput)((0, index_js_1.getSessionEventRecallText)(entry.event));
17
+ if (!text)
18
+ return false;
19
+ if ((0, render_utils_js_1.looksLikeToolTranscript)(text))
20
+ return false;
21
+ if ((0, render_utils_js_1.looksLikeOperationalChatter)(text))
22
+ return false;
23
+ if ((0, render_utils_js_1.looksTranscriptHeavy)(text))
24
+ return false;
25
+ if (entry.event.role === "assistant" && entry.event.category !== "discovery") {
26
+ return false;
27
+ }
28
+ if (entry.event.category === "message" && entry.event.role !== "user") {
29
+ return false;
30
+ }
31
+ return true;
32
+ };
33
+ class BatchDrainService {
34
+ constructor(redis, events, options) {
35
+ Object.defineProperty(this, "redis", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: redis
40
+ });
41
+ Object.defineProperty(this, "events", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: events
46
+ });
47
+ Object.defineProperty(this, "options", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: options
52
+ });
53
+ }
54
+ getClaimHeartbeatIntervalMs(lockTtlSeconds) {
55
+ const ttlMs = Math.max(1_000, Math.floor(lockTtlSeconds * 1000));
56
+ const defaultIntervalMs = Math.max(250, Math.floor(ttlMs / 3));
57
+ const configuredIntervalMs = this.options.claimHeartbeatIntervalMs;
58
+ const requestedIntervalMs = configuredIntervalMs ?? defaultIntervalMs;
59
+ const minSafeIntervalMs = 250;
60
+ const maxSafeIntervalMs = Math.max(250, Math.floor(ttlMs / 2));
61
+ if (requestedIntervalMs < minSafeIntervalMs) {
62
+ if (configuredIntervalMs !== undefined) {
63
+ logger_js_1.logger.warn("Clamped drain heartbeat interval to a safe minimum", {
64
+ claimLockTtlSeconds: lockTtlSeconds,
65
+ requestedHeartbeatIntervalMs: requestedIntervalMs,
66
+ effectiveHeartbeatIntervalMs: minSafeIntervalMs,
67
+ configuredHeartbeatIntervalMs: configuredIntervalMs,
68
+ });
69
+ }
70
+ return minSafeIntervalMs;
71
+ }
72
+ if (requestedIntervalMs <= maxSafeIntervalMs) {
73
+ return requestedIntervalMs;
74
+ }
75
+ logger_js_1.logger.warn("Clamped drain heartbeat interval to stay below claim TTL", {
76
+ claimLockTtlSeconds: lockTtlSeconds,
77
+ requestedHeartbeatIntervalMs: requestedIntervalMs,
78
+ effectiveHeartbeatIntervalMs: maxSafeIntervalMs,
79
+ configuredHeartbeatIntervalMs: configuredIntervalMs,
80
+ });
81
+ return maxSafeIntervalMs;
82
+ }
83
+ async getRetryState(groupId, batchKey) {
84
+ const raw = await this.redis.getString((0, redis_events_js_1.drainRetryKey)(groupId, batchKey));
85
+ if (!raw)
86
+ return null;
87
+ try {
88
+ return JSON.parse(raw);
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ async setRetryState(groupId, batchKey, state) {
95
+ await this.redis.setString((0, redis_events_js_1.drainRetryKey)(groupId, batchKey), JSON.stringify(state), 7 * 24 * 60 * 60);
96
+ }
97
+ async drainGroup(groupId, graphiti) {
98
+ const claimed = await this.events.getPendingBatch(groupId, this.options.batchSize, this.options.batchMaxBytes);
99
+ if (!claimed || claimed.entries.length === 0) {
100
+ return { status: "empty", drained: 0 };
101
+ }
102
+ const batch = claimed.entries;
103
+ const batchKey = makeBatchKey(batch);
104
+ const semanticBatch = batch.filter(shouldDrainEntry);
105
+ if (semanticBatch.length === 0) {
106
+ await this.events.markBatchSuccess(groupId, claimed.claimToken, batch);
107
+ await this.redis.deleteKey((0, redis_events_js_1.drainRetryKey)(groupId, batchKey));
108
+ return { status: "success", drained: 0 };
109
+ }
110
+ const retryState = await this.getRetryState(groupId, batchKey);
111
+ if (retryState && retryState.nextAttemptAt > Date.now()) {
112
+ await this.events.releaseClaim(groupId, claimed.claimToken);
113
+ return { status: "backoff", drained: 0 };
114
+ }
115
+ let lostClaim = false;
116
+ const refreshClaimHeartbeat = async () => {
117
+ try {
118
+ const refreshed = await this.events.refreshClaimLease(groupId, claimed.claimToken, claimed.lockTtlSeconds);
119
+ if (!refreshed)
120
+ lostClaim = true;
121
+ }
122
+ catch {
123
+ lostClaim = true;
124
+ }
125
+ };
126
+ const confirmClaimOwnership = async () => {
127
+ if (lostClaim)
128
+ return false;
129
+ try {
130
+ const refreshed = await this.events.refreshClaimLease(groupId, claimed.claimToken, claimed.lockTtlSeconds);
131
+ if (!refreshed)
132
+ lostClaim = true;
133
+ }
134
+ catch {
135
+ lostClaim = true;
136
+ }
137
+ return !lostClaim;
138
+ };
139
+ const assertClaimOwnership = async () => {
140
+ if (!await confirmClaimOwnership()) {
141
+ throw new DrainClaimLostError();
142
+ }
143
+ };
144
+ const heartbeatInterval = setInterval(() => {
145
+ void refreshClaimHeartbeat();
146
+ }, this.getClaimHeartbeatIntervalMs(claimed.lockTtlSeconds));
147
+ const usePerEntryCheckpointing = semanticBatch.length !== 0;
148
+ let checkpointedCount = 0;
149
+ try {
150
+ for (const entry of batch) {
151
+ await assertClaimOwnership();
152
+ if (shouldDrainEntry(entry)) {
153
+ await graphiti.addMemory({
154
+ name: `${entry.event.category}:${entry.event.id}`,
155
+ episodeBody: (0, redis_events_js_1.buildDrainEpisodeBody)(entry),
156
+ groupId,
157
+ source: "text",
158
+ sourceDescription: `session-event:${entry.event.category}`,
159
+ });
160
+ }
161
+ if (usePerEntryCheckpointing) {
162
+ await assertClaimOwnership();
163
+ await this.events.markClaimEntrySuccess(groupId, claimed.claimToken, entry);
164
+ checkpointedCount += 1;
165
+ }
166
+ }
167
+ clearInterval(heartbeatInterval);
168
+ await assertClaimOwnership();
169
+ await this.events.markBatchSuccess(groupId, claimed.claimToken, batch);
170
+ await this.redis.deleteKey((0, redis_events_js_1.drainRetryKey)(groupId, batchKey));
171
+ return { status: "success", drained: semanticBatch.length };
172
+ }
173
+ catch (err) {
174
+ const lostOwnership = err instanceof DrainClaimLostError;
175
+ if (lostOwnership) {
176
+ logger_js_1.logger.warn("Drain claim heartbeat lost ownership", {
177
+ groupId,
178
+ eventIds: batch.map((entry) => entry.event.id),
179
+ });
180
+ }
181
+ const attempts = (retryState?.attempts ?? 0) + 1;
182
+ const stillOwnClaim = await confirmClaimOwnership();
183
+ if (!stillOwnClaim) {
184
+ if (!lostOwnership) {
185
+ logger_js_1.logger.warn("Drain claim heartbeat lost ownership", {
186
+ groupId,
187
+ eventIds: batch.map((entry) => entry.event.id),
188
+ });
189
+ }
190
+ await this.redis.deleteKey((0, redis_events_js_1.drainRetryKey)(groupId, batchKey));
191
+ logger_js_1.logger.warn("Drain batch failed after claim loss; waiting for recovery", {
192
+ groupId,
193
+ err,
194
+ });
195
+ return { status: "retry", drained: 0 };
196
+ }
197
+ if (attempts >= this.options.drainRetryMax) {
198
+ const remainingEntries = batch.slice(checkpointedCount);
199
+ logger_js_1.logger.warn("Moving drain batch to dead-letter", {
200
+ groupId,
201
+ eventIds: remainingEntries.map((entry) => entry.event.id),
202
+ });
203
+ await this.events.moveBatchToDeadLetter(groupId, remainingEntries);
204
+ await this.events.markBatchSuccess(groupId, claimed.claimToken, batch);
205
+ await this.redis.deleteKey((0, redis_events_js_1.drainRetryKey)(groupId, batchKey));
206
+ return { status: "dead-letter", drained: remainingEntries.length };
207
+ }
208
+ await this.events.releaseClaim(groupId, claimed.claimToken);
209
+ await this.setRetryState(groupId, batchKey, {
210
+ attempts,
211
+ nextAttemptAt: Date.now() + 1_000 * (2 ** (attempts - 1)),
212
+ });
213
+ logger_js_1.logger.warn("Drain batch failed; will retry later", { groupId, err });
214
+ return { status: "retry", drained: 0 };
215
+ }
216
+ finally {
217
+ clearInterval(heartbeatInterval);
218
+ }
219
+ }
220
+ }
221
+ exports.BatchDrainService = BatchDrainService;
@@ -0,0 +1,104 @@
1
+ export type GraphitiConnectionState = "connecting" | "connected" | "offline" | "closing" | "stopped";
2
+ type TimerHandle = ReturnType<typeof setTimeout> | number;
3
+ export declare class GraphitiOfflineError extends Error {
4
+ readonly state: "offline" | "closing" | "stopped";
5
+ readonly kind = "offline";
6
+ constructor(state: "offline" | "closing" | "stopped", message?: string);
7
+ }
8
+ export declare class GraphitiQueueTimeoutError extends Error {
9
+ readonly kind = "queue-timeout";
10
+ constructor(message?: string);
11
+ }
12
+ export declare class GraphitiRequestTimeoutError extends Error {
13
+ readonly kind = "request-timeout";
14
+ constructor(message?: string);
15
+ }
16
+ export declare class GraphitiTransportError extends Error {
17
+ readonly kind = "transport-failure";
18
+ constructor(message?: string);
19
+ }
20
+ export declare class GraphitiSessionExpiredError extends Error {
21
+ readonly kind = "session-expired";
22
+ constructor(message?: string);
23
+ }
24
+ export declare function isGraphitiOfflineError(err: unknown): err is GraphitiOfflineError;
25
+ export declare function isGraphitiTimeoutError(err: unknown): err is GraphitiQueueTimeoutError | GraphitiRequestTimeoutError;
26
+ export type GraphitiToolRequest = {
27
+ name: string;
28
+ arguments?: Record<string, unknown>;
29
+ };
30
+ export interface GraphitiConnection {
31
+ connect(): Promise<void>;
32
+ close(): Promise<void>;
33
+ callTool(request: GraphitiToolRequest): Promise<unknown>;
34
+ }
35
+ export interface GraphitiToolCaller {
36
+ start(): void;
37
+ stop(): Promise<void>;
38
+ ready(timeoutMs?: number): Promise<boolean>;
39
+ callTool(name: string, args: Record<string, unknown>, deadlineMs?: number): Promise<unknown>;
40
+ }
41
+ type ConnectionFactory = (endpoint: string) => GraphitiConnection;
42
+ type GraphitiConnectionManagerOptions = {
43
+ endpoint: string;
44
+ requestDeadlineMs?: number;
45
+ queueCapacity?: number;
46
+ startupTimeoutMs?: number;
47
+ reconnectInitialDelayMs?: number;
48
+ reconnectMaxDelayMs?: number;
49
+ reconnectMultiplier?: number;
50
+ reconnectJitter?: number;
51
+ connectionFactory?: ConnectionFactory;
52
+ random?: () => number;
53
+ now?: () => number;
54
+ setTimer?: (callback: () => void, delayMs: number) => TimerHandle;
55
+ clearTimer?: (timer: TimerHandle) => void;
56
+ };
57
+ export declare class GraphitiConnectionManager implements GraphitiToolCaller {
58
+ private readonly endpoint;
59
+ private readonly requestDeadlineMs;
60
+ private readonly queueCapacity;
61
+ private readonly startupTimeoutMs;
62
+ private readonly reconnectInitialDelayMs;
63
+ private readonly reconnectMaxDelayMs;
64
+ private readonly reconnectMultiplier;
65
+ private readonly reconnectJitter;
66
+ private readonly connectionFactory;
67
+ private readonly random;
68
+ private readonly now;
69
+ private readonly setTimerImpl;
70
+ private readonly clearTimerImpl;
71
+ private state;
72
+ private connection;
73
+ private connectPromise;
74
+ private reconnectTimer;
75
+ private pendingRequests;
76
+ private readyWaiters;
77
+ private reconnectDelayMs;
78
+ private started;
79
+ private flushingQueue;
80
+ private stopPromise;
81
+ constructor(options: GraphitiConnectionManagerOptions);
82
+ getState(): GraphitiConnectionState;
83
+ start(): void;
84
+ stop(): Promise<void>;
85
+ ready(timeoutMs?: number): Promise<boolean>;
86
+ callTool(name: string, args: Record<string, unknown>, deadlineMs?: number): Promise<unknown>;
87
+ reconnect(): Promise<boolean>;
88
+ private performReconnect;
89
+ private executeConnectedCall;
90
+ private executeConnectedCallWithinDeadline;
91
+ private getRemainingDeadlineMs;
92
+ private reconnectWithinDeadline;
93
+ private runWithRequestDeadline;
94
+ private enqueueRequest;
95
+ private flushPendingQueue;
96
+ private removePendingRequest;
97
+ private clearPendingTimer;
98
+ private rejectAllPending;
99
+ private scheduleReconnect;
100
+ private cancelReconnectTimer;
101
+ private resolveReadyWaiters;
102
+ }
103
+ export {};
104
+ //# sourceMappingURL=connection-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/src/services/connection-manager.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,uBAAuB,GAC/B,YAAY,GACZ,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,MAAM,CAAC;AAE1D,qBAAa,oBAAqB,SAAQ,KAAK;IAI3C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAHnD,QAAQ,CAAC,IAAI,aAAa;gBAGf,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACjD,OAAO,CAAC,EAAE,MAAM;CAYnB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,mBAAmB;gBAG9B,OAAO,SAA4D;CAKtE;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,qBAAqB;gBAEtB,OAAO,SAA+B;CAInD;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,uBAAuB;gBAExB,OAAO,SAA+B;CAInD;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,qBAAqB;gBAEtB,OAAO,SAA6B;CAIjD;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,oBAAoB,CAE7B;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,yBAAyB,GAAG,2BAA2B,CAGhE;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAWD,KAAK,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,CAAC;AAWlE,KAAK,gCAAgC,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,WAAW,CAAC;IAClE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC3C,CAAC;AAsEF,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGZ;IACjB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAE9D,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAA8B;gBAErC,OAAO,EAAE,gCAAgC;IAmBrD,QAAQ,IAAI,uBAAuB;IAInC,KAAK,IAAI,IAAI;IAcP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCrB,KAAK,CAAC,SAAS,SAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB1D,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,SAAyB,GAClC,OAAO,CAAC,OAAO,CAAC;IA0Bb,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;YAerB,gBAAgB;YAoDhB,oBAAoB;YAYpB,kCAAkC;IAuEhD,OAAO,CAAC,sBAAsB;YAIhB,uBAAuB;IASrC,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,cAAc;YAyCR,iBAAiB;IAgC/B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;CAO5B"}