@murphai/gateway-core 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,388 @@
1
+ import { gatewayFetchAttachmentsInputSchema, gatewayConversationSchema, gatewayEventSchema, gatewayGetConversationInputSchema, gatewayListConversationsInputSchema, gatewayListConversationsResultSchema, gatewayPollEventsInputSchema, gatewayPollEventsResultSchema, gatewayPermissionRequestSchema, gatewayProjectionSnapshotSchema, gatewayReadMessagesInputSchema, gatewayReadMessagesResultSchema, } from './contracts.js';
2
+ import { readGatewayAttachmentId, readGatewayConversationSessionToken, readGatewayMessageRouteToken, sameGatewayConversationSession, } from './opaque-ids.js';
3
+ import { createGatewayInvalidRuntimeIdError } from './errors.js';
4
+ export const DEFAULT_GATEWAY_EVENT_RETENTION = 512;
5
+ export function listGatewayConversationsFromSnapshot(snapshot, input) {
6
+ const parsed = gatewayListConversationsInputSchema.parse(input ?? {});
7
+ let conversations = snapshot.conversations.filter((conversation) => {
8
+ if (parsed.channel && conversation.route.channel !== parsed.channel) {
9
+ return false;
10
+ }
11
+ if (!parsed.search) {
12
+ return true;
13
+ }
14
+ return conversationMatchesSearch(snapshot, conversation, parsed.search);
15
+ });
16
+ conversations = conversations
17
+ .map((conversation) => conversationPresentationForRequest(snapshot, conversation, parsed))
18
+ .sort(compareGatewayConversationsDescending);
19
+ return gatewayListConversationsResultSchema.parse({
20
+ conversations: conversations.slice(0, parsed.limit),
21
+ nextCursor: null,
22
+ });
23
+ }
24
+ export function getGatewayConversationFromSnapshot(snapshot, input) {
25
+ const parsed = gatewayGetConversationInputSchema.parse(input);
26
+ const sessionToken = readGatewayConversationSessionTokenOrThrow(parsed.sessionKey);
27
+ const conversation = snapshot.conversations.find((entry) => gatewaySessionKeyMatchesRouteToken(entry.sessionKey, sessionToken));
28
+ return conversation
29
+ ? conversationPresentationForRequest(snapshot, conversation, {
30
+ channel: null,
31
+ includeDerivedTitles: true,
32
+ includeLastMessage: true,
33
+ limit: 1,
34
+ search: null,
35
+ })
36
+ : null;
37
+ }
38
+ export function readGatewayMessagesFromSnapshot(snapshot, input) {
39
+ const parsed = gatewayReadMessagesInputSchema.parse(input);
40
+ const sessionToken = readGatewayConversationSessionTokenOrThrow(parsed.sessionKey);
41
+ if (parsed.afterMessageId) {
42
+ assertGatewayMessageBelongsToRoute(parsed.afterMessageId, sessionToken);
43
+ }
44
+ const messages = snapshot.messages
45
+ .filter((message) => gatewaySessionKeyMatchesRouteToken(message.sessionKey, sessionToken))
46
+ .sort(compareGatewayMessagesAscending);
47
+ const ordered = parsed.oldestFirst ? messages : [...messages].reverse();
48
+ const startIndex = parsed.afterMessageId === null
49
+ ? 0
50
+ : resolveGatewayReadStartIndex(ordered, parsed.afterMessageId);
51
+ const page = ordered.slice(startIndex, startIndex + parsed.limit);
52
+ return gatewayReadMessagesResultSchema.parse({
53
+ messages: page,
54
+ nextCursor: startIndex + parsed.limit < ordered.length
55
+ ? page[page.length - 1]?.messageId ?? null
56
+ : null,
57
+ });
58
+ }
59
+ export function fetchGatewayAttachmentsFromSnapshot(snapshot, input) {
60
+ const parsed = gatewayFetchAttachmentsInputSchema.parse(input);
61
+ const requestedRouteToken = parsed.sessionKey
62
+ ? readGatewayConversationSessionTokenOrThrow(parsed.sessionKey)
63
+ : null;
64
+ if (parsed.attachmentIds.length > 0) {
65
+ const attachments = [];
66
+ for (const attachmentId of parsed.attachmentIds) {
67
+ const envelope = readGatewayAttachmentIdOrThrow(attachmentId);
68
+ if (requestedRouteToken && envelope.routeToken !== requestedRouteToken) {
69
+ throw createGatewayInvalidRuntimeIdError('Gateway attachment id did not belong to the requested session key.');
70
+ }
71
+ const attachment = snapshot.messages
72
+ .flatMap((message) => message.attachments)
73
+ .find((entry) => entry.attachmentId === attachmentId);
74
+ if (attachment) {
75
+ attachments.push(attachment);
76
+ }
77
+ }
78
+ return dedupeGatewayAttachments(attachments);
79
+ }
80
+ if (parsed.messageId) {
81
+ const routeToken = readGatewayMessageRouteTokenOrThrow(parsed.messageId);
82
+ if (requestedRouteToken && requestedRouteToken !== routeToken) {
83
+ throw createGatewayInvalidRuntimeIdError('Gateway message id did not belong to the requested session key.');
84
+ }
85
+ const message = snapshot.messages.find((entry) => entry.messageId === parsed.messageId);
86
+ return dedupeGatewayAttachments(message?.attachments ?? []);
87
+ }
88
+ if (requestedRouteToken) {
89
+ return dedupeGatewayAttachments(snapshot.messages
90
+ .filter((message) => readGatewayConversationSessionTokenOrThrow(message.sessionKey) ===
91
+ requestedRouteToken)
92
+ .flatMap((message) => message.attachments));
93
+ }
94
+ return [];
95
+ }
96
+ export function listGatewayOpenPermissionsFromSnapshot(snapshot, input) {
97
+ const sessionKey = input?.sessionKey ?? null;
98
+ const sessionToken = sessionKey
99
+ ? readGatewayConversationSessionTokenOrThrow(sessionKey)
100
+ : null;
101
+ return snapshot.permissions
102
+ .filter((permission) => permission.status === 'open')
103
+ .filter((permission) => sessionToken === null ||
104
+ (permission.sessionKey !== null &&
105
+ gatewaySessionKeyMatchesRouteToken(permission.sessionKey, sessionToken)))
106
+ .map((permission) => gatewayPermissionRequestSchema.parse(permission))
107
+ .sort((left, right) => left.requestedAt.localeCompare(right.requestedAt) ||
108
+ left.requestId.localeCompare(right.requestId));
109
+ }
110
+ export function diffGatewayProjectionSnapshots(previous, next) {
111
+ if (!previous) {
112
+ return [];
113
+ }
114
+ const emissions = [];
115
+ const previousMessages = new Set(previous.messages.map((message) => message.messageId));
116
+ const previousConversations = new Map(previous.conversations.map((conversation) => [conversation.sessionKey, conversation]));
117
+ const previousPermissions = new Map(previous.permissions.map((permission) => [permission.requestId, permission]));
118
+ for (const message of next.messages) {
119
+ if (previousMessages.has(message.messageId)) {
120
+ continue;
121
+ }
122
+ emissions.push({
123
+ createdAt: message.createdAt,
124
+ kind: 'message.created',
125
+ messageId: message.messageId,
126
+ permissionRequestId: null,
127
+ sessionKey: message.sessionKey,
128
+ summary: deriveLastMessagePreview(message),
129
+ });
130
+ }
131
+ for (const conversation of next.conversations) {
132
+ const previousConversation = previousConversations.get(conversation.sessionKey);
133
+ if (previousConversation &&
134
+ stableStringify(previousConversation) === stableStringify(conversation)) {
135
+ continue;
136
+ }
137
+ emissions.push({
138
+ createdAt: conversation.lastActivityAt ?? next.generatedAt,
139
+ kind: 'conversation.updated',
140
+ messageId: null,
141
+ permissionRequestId: null,
142
+ sessionKey: conversation.sessionKey,
143
+ summary: normalizeNullableString(conversation.title) ??
144
+ normalizeNullableString(conversation.lastMessagePreview) ??
145
+ normalizeNullableString(conversation.route.channel),
146
+ });
147
+ }
148
+ for (const permission of next.permissions) {
149
+ const previousPermission = previousPermissions.get(permission.requestId);
150
+ if (!previousPermission && permission.status === 'open') {
151
+ emissions.push({
152
+ createdAt: permission.requestedAt,
153
+ kind: 'permission.requested',
154
+ messageId: null,
155
+ permissionRequestId: permission.requestId,
156
+ sessionKey: permission.sessionKey,
157
+ summary: normalizeNullableString(permission.description) ?? permission.action,
158
+ });
159
+ continue;
160
+ }
161
+ if (previousPermission?.status === 'open' &&
162
+ permission.status !== 'open') {
163
+ emissions.push({
164
+ createdAt: permission.resolvedAt ?? next.generatedAt,
165
+ kind: 'permission.resolved',
166
+ messageId: null,
167
+ permissionRequestId: permission.requestId,
168
+ sessionKey: permission.sessionKey,
169
+ summary: normalizeNullableString(permission.note) ?? permission.status,
170
+ });
171
+ }
172
+ }
173
+ return emissions.sort(compareGatewayEventEmissionsAscending);
174
+ }
175
+ export function applyGatewayProjectionSnapshotToEventLog(state, snapshot, retention = DEFAULT_GATEWAY_EVENT_RETENTION) {
176
+ const parsedSnapshot = gatewayProjectionSnapshotSchema.parse(snapshot);
177
+ const normalizedRetention = Number.isFinite(retention) && retention > 0
178
+ ? Math.floor(retention)
179
+ : DEFAULT_GATEWAY_EVENT_RETENTION;
180
+ if (state.snapshot &&
181
+ stableGatewayProjectionContentString(state.snapshot) ===
182
+ stableGatewayProjectionContentString(parsedSnapshot)) {
183
+ return state;
184
+ }
185
+ const nextEvents = state.events.map((event) => gatewayEventSchema.parse(event));
186
+ let nextCursor = Number.isFinite(state.nextCursor) && state.nextCursor >= 0
187
+ ? Math.floor(state.nextCursor)
188
+ : 0;
189
+ for (const emission of diffGatewayProjectionSnapshots(state.snapshot, parsedSnapshot)) {
190
+ nextCursor += 1;
191
+ nextEvents.push(gatewayEventSchema.parse({
192
+ schema: 'murph.gateway-event.v1',
193
+ cursor: nextCursor,
194
+ ...emission,
195
+ }));
196
+ }
197
+ if (nextEvents.length > normalizedRetention) {
198
+ nextEvents.splice(0, nextEvents.length - normalizedRetention);
199
+ }
200
+ return {
201
+ events: nextEvents,
202
+ nextCursor,
203
+ snapshot: parsedSnapshot,
204
+ };
205
+ }
206
+ export function pollGatewayEventLogState(state, input) {
207
+ const parsed = gatewayPollEventsInputSchema.parse(input ?? {});
208
+ const events = state.events
209
+ .map((event) => gatewayEventSchema.parse(event))
210
+ .filter((event) => event.cursor > parsed.cursor)
211
+ .filter((event) => parsed.kinds.length === 0 || parsed.kinds.includes(event.kind))
212
+ .filter((event) => parsed.sessionKey === null ||
213
+ (event.sessionKey !== null && sameGatewayConversationSession(event.sessionKey, parsed.sessionKey)))
214
+ .slice(0, parsed.limit);
215
+ return gatewayPollEventsResultSchema.parse({
216
+ events,
217
+ nextCursor: events[events.length - 1]?.cursor ?? Math.max(state.nextCursor, parsed.cursor),
218
+ live: true,
219
+ });
220
+ }
221
+ export function compareGatewayConversationsDescending(left, right) {
222
+ return (compareNullableTimestampsDescending(left.lastActivityAt, right.lastActivityAt) ||
223
+ left.sessionKey.localeCompare(right.sessionKey));
224
+ }
225
+ export function compareGatewayMessagesAscending(left, right) {
226
+ return (left.createdAt.localeCompare(right.createdAt) ||
227
+ left.messageId.localeCompare(right.messageId));
228
+ }
229
+ export function deriveLastMessagePreview(message) {
230
+ if (!message) {
231
+ return null;
232
+ }
233
+ if (normalizeNullableString(message.text)) {
234
+ return message.text;
235
+ }
236
+ return message.attachments[0]?.fileName ?? null;
237
+ }
238
+ function conversationPresentationForRequest(snapshot, conversation, input) {
239
+ const derivedSources = new Set([
240
+ 'participant-display-name',
241
+ 'participant-id',
242
+ 'thread-id',
243
+ 'channel',
244
+ ]);
245
+ return gatewayConversationSchema.parse({
246
+ ...conversation,
247
+ title: input.includeDerivedTitles === false &&
248
+ conversation.titleSource !== null &&
249
+ derivedSources.has(conversation.titleSource)
250
+ ? null
251
+ : deriveGatewayConversationDisplayTitle(snapshot, conversation, input.includeDerivedTitles),
252
+ lastMessagePreview: input.includeLastMessage === false ? null : conversation.lastMessagePreview,
253
+ });
254
+ }
255
+ function deriveGatewayConversationDisplayTitle(snapshot, conversation, includeDerivedTitles) {
256
+ const explicitTitle = normalizeNullableString(conversation.title);
257
+ if (explicitTitle) {
258
+ return explicitTitle;
259
+ }
260
+ if (!includeDerivedTitles) {
261
+ return null;
262
+ }
263
+ const messages = snapshot.messages.filter((message) => message.sessionKey === conversation.sessionKey);
264
+ const latestInboundActorDisplayName = [...messages]
265
+ .reverse()
266
+ .find((message) => message.direction === 'inbound' && normalizeNullableString(message.actorDisplayName))?.actorDisplayName;
267
+ const latestActorDisplayName = [...messages]
268
+ .reverse()
269
+ .find((message) => normalizeNullableString(message.actorDisplayName))?.actorDisplayName;
270
+ return (normalizeNullableString(latestInboundActorDisplayName) ??
271
+ normalizeNullableString(latestActorDisplayName) ??
272
+ normalizeNullableString(conversation.route.participantId) ??
273
+ normalizeNullableString(conversation.route.threadId) ??
274
+ normalizeNullableString(conversation.route.channel));
275
+ }
276
+ function conversationMatchesSearch(snapshot, conversation, search) {
277
+ const needle = search.trim().toLocaleLowerCase();
278
+ if (needle.length === 0) {
279
+ return true;
280
+ }
281
+ const fields = [
282
+ conversation.title,
283
+ conversation.lastMessagePreview,
284
+ conversation.route.channel,
285
+ conversation.route.identityId,
286
+ conversation.route.participantId,
287
+ conversation.route.threadId,
288
+ ];
289
+ if (fields.some((value) => value?.toLocaleLowerCase().includes(needle))) {
290
+ return true;
291
+ }
292
+ return snapshot.messages
293
+ .filter((message) => message.sessionKey === conversation.sessionKey)
294
+ .some((message) => [
295
+ message.text,
296
+ message.actorDisplayName,
297
+ ...message.attachments.flatMap((attachment) => [
298
+ attachment.fileName,
299
+ attachment.extractedText,
300
+ attachment.transcriptText,
301
+ ]),
302
+ ].some((value) => value?.toLocaleLowerCase().includes(needle)));
303
+ }
304
+ function compareGatewayEventEmissionsAscending(left, right) {
305
+ return (left.createdAt.localeCompare(right.createdAt) ||
306
+ left.kind.localeCompare(right.kind) ||
307
+ (left.sessionKey ?? '').localeCompare(right.sessionKey ?? '') ||
308
+ (left.messageId ?? '').localeCompare(right.messageId ?? '') ||
309
+ (left.permissionRequestId ?? '').localeCompare(right.permissionRequestId ?? ''));
310
+ }
311
+ function compareNullableTimestampsDescending(left, right) {
312
+ if (left === right) {
313
+ return 0;
314
+ }
315
+ if (left === null) {
316
+ return 1;
317
+ }
318
+ if (right === null) {
319
+ return -1;
320
+ }
321
+ return right.localeCompare(left);
322
+ }
323
+ function resolveGatewayReadStartIndex(messages, afterMessageId) {
324
+ const index = messages.findIndex((message) => message.messageId === afterMessageId);
325
+ if (index === -1) {
326
+ throw createGatewayInvalidRuntimeIdError('Gateway message cursor did not match any message in the requested session.');
327
+ }
328
+ return index + 1;
329
+ }
330
+ function dedupeGatewayAttachments(attachments) {
331
+ const deduped = new Map();
332
+ for (const attachment of attachments) {
333
+ deduped.set(attachment.attachmentId, attachment);
334
+ }
335
+ return Array.from(deduped.values());
336
+ }
337
+ function assertGatewayMessageBelongsToRoute(messageId, routeToken) {
338
+ const messageRouteToken = readGatewayMessageRouteTokenOrThrow(messageId);
339
+ if (messageRouteToken !== routeToken) {
340
+ throw createGatewayInvalidRuntimeIdError('Gateway message id did not belong to the requested session key.');
341
+ }
342
+ }
343
+ function gatewaySessionKeyMatchesRouteToken(sessionKey, routeToken) {
344
+ return readGatewayConversationSessionTokenOrThrow(sessionKey) === routeToken;
345
+ }
346
+ function readGatewayConversationSessionTokenOrThrow(sessionKey) {
347
+ try {
348
+ return readGatewayConversationSessionToken(sessionKey);
349
+ }
350
+ catch (error) {
351
+ throw createGatewayInvalidRuntimeIdError(error instanceof Error ? error.message : 'Gateway session key is invalid.');
352
+ }
353
+ }
354
+ function readGatewayMessageRouteTokenOrThrow(messageId) {
355
+ try {
356
+ return readGatewayMessageRouteToken(messageId);
357
+ }
358
+ catch (error) {
359
+ throw createGatewayInvalidRuntimeIdError(error instanceof Error ? error.message : 'Gateway message id is invalid.');
360
+ }
361
+ }
362
+ function readGatewayAttachmentIdOrThrow(attachmentId) {
363
+ try {
364
+ return readGatewayAttachmentId(attachmentId);
365
+ }
366
+ catch (error) {
367
+ throw createGatewayInvalidRuntimeIdError(error instanceof Error ? error.message : 'Gateway attachment id is invalid.');
368
+ }
369
+ }
370
+ function normalizeNullableString(value) {
371
+ if (typeof value !== 'string') {
372
+ return null;
373
+ }
374
+ const normalized = value.trim();
375
+ return normalized.length > 0 ? normalized : null;
376
+ }
377
+ function stableStringify(value) {
378
+ return JSON.stringify(value);
379
+ }
380
+ function stableGatewayProjectionContentString(snapshot) {
381
+ return stableStringify({
382
+ conversations: snapshot.conversations,
383
+ messages: snapshot.messages,
384
+ permissions: snapshot.permissions,
385
+ schema: snapshot.schema,
386
+ });
387
+ }
388
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@murphai/gateway-core",
3
+ "version": "0.1.1",
4
+ "private": false,
5
+ "type": "module",
6
+ "license": "GPL-3.0-only",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/cobuildwithus/murph"
13
+ },
14
+ "main": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "default": "./dist/index.js"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "README.md"
25
+ ],
26
+ "engines": {
27
+ "node": ">=22.16.0"
28
+ },
29
+ "dependencies": {
30
+ "incur": "0.3.13"
31
+ },
32
+ "scripts": {
33
+ "build": "node ../../scripts/rm-paths.mjs dist && tsc -b tsconfig.json",
34
+ "typecheck": "tsc -p tsconfig.json --noEmit --pretty false"
35
+ }
36
+ }