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,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unwrapSdkResponse = unwrapSdkResponse;
4
+ exports.extractSdkMessages = extractSdkMessages;
5
+ exports.extractSdkProviders = extractSdkProviders;
6
+ exports.normalizeEpisode = normalizeEpisode;
7
+ /**
8
+ * Normalize an SDK response that may be wrapped in `{ data: … }` or returned
9
+ * directly. Returns the inner value cast to `T`, or `undefined` when the
10
+ * response is absent.
11
+ *
12
+ * This replaces the repeated `"data" in response ? (response as
13
+ * { data?: … }).data : response` pattern found in session.ts and
14
+ * context-limit.ts.
15
+ */
16
+ function unwrapSdkResponse(response) {
17
+ if (response == null)
18
+ return undefined;
19
+ if (typeof response === "object" && "data" in response) {
20
+ return response.data;
21
+ }
22
+ return response;
23
+ }
24
+ /**
25
+ * Extract the messages array from a raw `session.messages()` response.
26
+ * Returns an empty array when the response is missing or malformed.
27
+ */
28
+ function extractSdkMessages(response) {
29
+ const payload = unwrapSdkResponse(response);
30
+ return Array.isArray(payload) ? payload : [];
31
+ }
32
+ function extractSdkProviders(response) {
33
+ // provider.list() may return `{ providers: [...] }` directly (no data wrap).
34
+ if (response != null && typeof response === "object") {
35
+ const obj = response;
36
+ if (Array.isArray(obj["providers"])) {
37
+ return obj["providers"];
38
+ }
39
+ if ("data" in obj) {
40
+ const data = obj["data"];
41
+ if (data != null && typeof data === "object") {
42
+ const dataObj = data;
43
+ if (Array.isArray(dataObj["providers"])) {
44
+ return dataObj["providers"];
45
+ }
46
+ }
47
+ if (Array.isArray(data))
48
+ return data;
49
+ }
50
+ }
51
+ return [];
52
+ }
53
+ /**
54
+ * Normalize a raw Graphiti episode object so that `sourceDescription` is
55
+ * always the canonical field regardless of whether the payload used
56
+ * camelCase (`sourceDescription`) or snake_case (`source_description`).
57
+ *
58
+ * Call this at the API boundary (e.g. inside `GraphitiClient.getEpisodes`)
59
+ * so all downstream consumers only need to read `episode.sourceDescription`.
60
+ */
61
+ function normalizeEpisode(raw) {
62
+ const { source_description, ...rest } = raw;
63
+ return {
64
+ ...rest,
65
+ sourceDescription: rest.sourceDescription ?? source_description,
66
+ };
67
+ }
@@ -0,0 +1,74 @@
1
+ import type { OpencodeClient } from "@opencode-ai/sdk";
2
+ import { type RedisCacheService } from "./services/redis-cache.js";
3
+ import type { RedisEventsService } from "./services/redis-events.js";
4
+ import type { RedisSnapshotService } from "./services/redis-snapshot.js";
5
+ import { type PreparedSessionMemory } from "./types/index.js";
6
+ export type SessionState = {
7
+ groupId: string;
8
+ userGroupId: string;
9
+ injectedMemories: boolean;
10
+ messageCount: number;
11
+ contextLimit: number;
12
+ isMain: boolean;
13
+ hotTierReady: boolean;
14
+ latestUserRequest?: string;
15
+ latestRefreshQuery?: string;
16
+ pendingInjection?: PreparedSessionMemory;
17
+ pendingInjectionGeneration: number;
18
+ };
19
+ type TimerHandle = ReturnType<typeof setTimeout> | number;
20
+ export interface SessionManagerOptions {
21
+ idleRetentionMs?: number;
22
+ setTimer?: (callback: () => void, delayMs: number) => TimerHandle;
23
+ clearTimer?: (timer: TimerHandle) => void;
24
+ }
25
+ export declare class SessionManager {
26
+ private readonly defaultGroupId;
27
+ private readonly defaultUserGroupId;
28
+ private readonly sdkClient;
29
+ private readonly redisEvents;
30
+ private readonly redisSnapshot;
31
+ private readonly redisCache;
32
+ private sessions;
33
+ private parentIdCache;
34
+ private canonicalSessionIdCache;
35
+ private temporaryRootSessionIds;
36
+ private pendingAssistantMessages;
37
+ private pendingAssistantCompletions;
38
+ private bufferedAssistantMessageIds;
39
+ private sessionLifecycles;
40
+ private readonly idleRetentionMs;
41
+ private readonly setTimerImpl;
42
+ private readonly clearTimerImpl;
43
+ constructor(defaultGroupId: string, defaultUserGroupId: string, sdkClient: OpencodeClient, redisEvents: RedisEventsService, redisSnapshot: RedisSnapshotService, redisCache: RedisCacheService, options?: SessionManagerOptions);
44
+ createDefaultState(groupId: string, userGroupId: string): SessionState;
45
+ getState(sessionId: string): SessionState | undefined;
46
+ setState(sessionId: string, state: SessionState): void;
47
+ markSessionActive(sessionId: string): void;
48
+ markResolvedSessionActive(sessionId: string, canonicalSessionId?: string): void;
49
+ private markLifecycleActive;
50
+ captureIdleCleanupGeneration(sessionId: string): number | null;
51
+ scheduleIdleSessionCleanup(sessionId: string, expectedActivityGeneration?: number): void;
52
+ setParentId(sessionId: string, parentId: string | null): void;
53
+ private mergeSessionState;
54
+ private migrateTemporaryRootRuntimeState;
55
+ resolveParentId(sessionId: string): Promise<string | null | undefined>;
56
+ resolveCanonicalSessionId(sessionId: string, visited?: Set<string>): Promise<string | undefined>;
57
+ resolveSessionState(sessionId: string): Promise<{
58
+ state: SessionState | null;
59
+ resolved: boolean;
60
+ canonicalSessionId?: string;
61
+ }>;
62
+ bufferAssistantPart(sessionId: string, messageId: string, text: string, sourceSessionId?: string): void;
63
+ isAssistantBuffered(sessionId: string, messageId: string): boolean;
64
+ hasPendingAssistantCompletion(sessionId: string, messageId: string): boolean;
65
+ finalizeAssistantMessage(_state: SessionState, sessionId: string, messageId: string, source: string): string | null;
66
+ deletePendingAssistant(sessionId: string, messageId: string): void;
67
+ clearPendingInjection(state: SessionState, prepared?: PreparedSessionMemory | null): void;
68
+ purgeAssistantBufferSource(sourceSessionId: string): void;
69
+ prepareInjection(sessionId: string, lastRequest?: string): Promise<PreparedSessionMemory | null>;
70
+ deleteSession(sessionId: string): void;
71
+ private getLifecycle;
72
+ }
73
+ export {};
74
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/src/session.ts"],"names":[],"mappings":"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"}