@jungjaehoon/mama-os 0.65.0 → 0.66.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/CHANGELOG.md +36 -0
- package/README.md +2 -2
- package/dist/api/help-actions.d.ts +0 -2
- package/dist/api/help-actions.d.ts.map +1 -1
- package/dist/api/help-actions.js +0 -3
- package/dist/api/help-actions.js.map +1 -1
- package/dist/api/owner-message-actions.d.ts +1 -3
- package/dist/api/owner-message-actions.d.ts.map +1 -1
- package/dist/api/owner-message-actions.js +1 -6
- package/dist/api/owner-message-actions.js.map +1 -1
- package/dist/api/owner-policy-actions.d.ts +8 -0
- package/dist/api/owner-policy-actions.d.ts.map +1 -0
- package/dist/api/owner-policy-actions.js +160 -0
- package/dist/api/owner-policy-actions.js.map +1 -0
- package/dist/api/report-source-actions.d.ts.map +1 -1
- package/dist/api/report-source-actions.js +3 -1
- package/dist/api/report-source-actions.js.map +1 -1
- package/dist/api/wiki-actions.js +3 -3
- package/dist/api/wiki-actions.js.map +1 -1
- package/dist/backfill/format.d.ts +2 -0
- package/dist/backfill/format.d.ts.map +1 -1
- package/dist/backfill/format.js +8 -3
- package/dist/backfill/format.js.map +1 -1
- package/dist/backfill/push.d.ts.map +1 -1
- package/dist/backfill/push.js +1 -0
- package/dist/backfill/push.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +0 -1
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +1 -1
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/gateways/discord.d.ts +0 -1
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +23 -4
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/slack.d.ts +0 -1
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +23 -4
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram-format.d.ts +0 -13
- package/dist/gateways/telegram-format.d.ts.map +1 -1
- package/dist/gateways/telegram-format.js +1 -42
- package/dist/gateways/telegram-format.js.map +1 -1
- package/dist/gateways/telegram-message-ledger.d.ts +3 -2
- package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
- package/dist/gateways/telegram-message-ledger.js +10 -9
- package/dist/gateways/telegram-message-ledger.js.map +1 -1
- package/dist/gateways/telegram-response-presenter.d.ts +6 -14
- package/dist/gateways/telegram-response-presenter.d.ts.map +1 -1
- package/dist/gateways/telegram-response-presenter.js +13 -98
- package/dist/gateways/telegram-response-presenter.js.map +1 -1
- package/dist/gateways/telegram.d.ts +0 -1
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +17 -5
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/turn-contract.d.ts +8 -0
- package/dist/gateways/turn-contract.d.ts.map +1 -1
- package/dist/replay/import-manifest.d.ts +2 -2
- package/dist/replay/import-manifest.d.ts.map +1 -1
- package/dist/replay/import-manifest.js.map +1 -1
- package/dist/replay/replay-source-catalog.d.ts.map +1 -1
- package/dist/replay/replay-source-catalog.js +1 -0
- package/dist/replay/replay-source-catalog.js.map +1 -1
- package/dist/runtime/action-surface.d.ts +2 -3
- package/dist/runtime/action-surface.d.ts.map +1 -1
- package/dist/runtime/action-surface.js +32 -4
- package/dist/runtime/action-surface.js.map +1 -1
- package/dist/runtime/native-session.d.ts +1 -0
- package/dist/runtime/native-session.d.ts.map +1 -1
- package/dist/runtime/native-session.js +3 -0
- package/dist/runtime/native-session.js.map +1 -1
- package/dist/runtime/owner-authority.d.ts +4 -2
- package/dist/runtime/owner-authority.d.ts.map +1 -1
- package/dist/runtime/owner-authority.js +23 -3
- package/dist/runtime/owner-authority.js.map +1 -1
- package/dist/runtime/owner-policy.d.ts +3 -0
- package/dist/runtime/owner-policy.d.ts.map +1 -1
- package/dist/runtime/owner-policy.js +16 -3
- package/dist/runtime/owner-policy.js.map +1 -1
- package/dist/runtime/owner-runtime.d.ts +2 -11
- package/dist/runtime/owner-runtime.d.ts.map +1 -1
- package/dist/runtime/owner-runtime.js +15 -48
- package/dist/runtime/owner-runtime.js.map +1 -1
- package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
- package/dist/runtime/owner-system-prompt.js +4 -3
- package/dist/runtime/owner-system-prompt.js.map +1 -1
- package/dist/runtime/session-start-context.d.ts +3 -22
- package/dist/runtime/session-start-context.d.ts.map +1 -1
- package/dist/runtime/session-start-context.js +1 -58
- package/dist/runtime/session-start-context.js.map +1 -1
- package/dist/runtime/stimulus-delivery.d.ts +5 -4
- package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
- package/dist/runtime/stimulus-delivery.js +23 -23
- package/dist/runtime/stimulus-delivery.js.map +1 -1
- package/dist/runtime/turn-orders.d.ts +0 -18
- package/dist/runtime/turn-orders.d.ts.map +1 -1
- package/dist/runtime/turn-orders.js +1 -21
- package/dist/runtime/turn-orders.js.map +1 -1
- package/dist/storage/chat-sources.d.ts +21 -0
- package/dist/storage/chat-sources.d.ts.map +1 -0
- package/dist/storage/chat-sources.js +119 -0
- package/dist/storage/chat-sources.js.map +1 -0
- package/dist/wiki-artifacts/normalization.d.ts +1 -1
- package/dist/wiki-artifacts/normalization.d.ts.map +1 -1
- package/dist/wiki-artifacts/normalization.js +1 -4
- package/dist/wiki-artifacts/normalization.js.map +1 -1
- package/package.json +2 -2
- package/dist/gateways/conversation-record.d.ts +0 -52
- package/dist/gateways/conversation-record.d.ts.map +0 -1
- package/dist/gateways/conversation-record.js +0 -220
- package/dist/gateways/conversation-record.js.map +0 -1
- package/dist/gateways/session-store.d.ts +0 -120
- package/dist/gateways/session-store.d.ts.map +0 -1
- package/dist/gateways/session-store.js +0 -581
- package/dist/gateways/session-store.js.map +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatSources = void 0;
|
|
4
|
+
exports.ownerMessageItem = ownerMessageItem;
|
|
5
|
+
exports.ownerReplyItem = ownerReplyItem;
|
|
6
|
+
const import_manifest_js_1 = require("../replay/import-manifest.js");
|
|
7
|
+
function ownerMessageItem(input, principalId) {
|
|
8
|
+
return {
|
|
9
|
+
source: 'chat',
|
|
10
|
+
sourceId: input.id,
|
|
11
|
+
channel: `${input.id.split(':')[0]}:${input.channelKey}`,
|
|
12
|
+
author: principalId,
|
|
13
|
+
content: input.text,
|
|
14
|
+
timestamp: new Date(input.occurredAt),
|
|
15
|
+
type: 'message',
|
|
16
|
+
memoryScopeKind: 'user',
|
|
17
|
+
memoryScopeId: principalId,
|
|
18
|
+
metadata: {
|
|
19
|
+
kind: 'owner_message',
|
|
20
|
+
messageRef: input.id,
|
|
21
|
+
replyTo: input.replyTo ?? null,
|
|
22
|
+
input: input.payload ?? null,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function ownerReplyItem(input, principalId, agentId, channel) {
|
|
27
|
+
return {
|
|
28
|
+
source: 'chat',
|
|
29
|
+
sourceId: `${input.messageRef}:reply`,
|
|
30
|
+
channel,
|
|
31
|
+
author: input.author === 'host' ? 'host' : agentId,
|
|
32
|
+
content: input.text,
|
|
33
|
+
timestamp: new Date(input.occurredAt),
|
|
34
|
+
type: 'message',
|
|
35
|
+
memoryScopeKind: 'user',
|
|
36
|
+
memoryScopeId: principalId,
|
|
37
|
+
metadata: {
|
|
38
|
+
kind: 'reply',
|
|
39
|
+
messageRef: input.messageRef,
|
|
40
|
+
deliveryVerified: input.deliveryVerified,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
class ChatSources {
|
|
45
|
+
rawStore;
|
|
46
|
+
adapter;
|
|
47
|
+
principalId;
|
|
48
|
+
agentId;
|
|
49
|
+
constructor(rawStore, adapter, principalId, agentId) {
|
|
50
|
+
this.rawStore = rawStore;
|
|
51
|
+
this.adapter = adapter;
|
|
52
|
+
this.principalId = principalId;
|
|
53
|
+
this.agentId = agentId;
|
|
54
|
+
}
|
|
55
|
+
saveOwnerMessage(input) {
|
|
56
|
+
return this.save(ownerMessageItem(input, this.principalId));
|
|
57
|
+
}
|
|
58
|
+
saveReply(input) {
|
|
59
|
+
const message = this.adapter
|
|
60
|
+
.prepare("SELECT channel FROM connector_event_index WHERE source_connector = 'chat' AND source_id = ? AND json_extract(metadata_json, '$.kind') = 'owner_message'")
|
|
61
|
+
.get(input.messageRef);
|
|
62
|
+
if (!message)
|
|
63
|
+
throw new Error(`Owner message is not stored: ${input.messageRef}`);
|
|
64
|
+
this.save(ownerReplyItem(input, this.principalId, this.agentId, message.channel));
|
|
65
|
+
}
|
|
66
|
+
save(item) {
|
|
67
|
+
const [saved] = this.rawStore.save('chat', [item], { collectOnly: true });
|
|
68
|
+
// Intake cannot proceed without exactly one raw item and its projection.
|
|
69
|
+
if (!saved)
|
|
70
|
+
throw new Error('Chat raw save omitted its item');
|
|
71
|
+
// Redelivery of an acknowledged item must reuse its observation, not create another version.
|
|
72
|
+
if (saved.pendingProjectionId === undefined) {
|
|
73
|
+
const row = this.adapter
|
|
74
|
+
.prepare("SELECT current_observation_id FROM connector_event_index WHERE source_connector = 'chat' AND source_id = ?")
|
|
75
|
+
.get(saved.sourceId);
|
|
76
|
+
// An acknowledged raw item without its index is a broken storage contract.
|
|
77
|
+
if (!row?.current_observation_id)
|
|
78
|
+
throw new Error('Saved chat item has no indexed observation');
|
|
79
|
+
return row.current_observation_id;
|
|
80
|
+
}
|
|
81
|
+
const [projection] = (0, import_manifest_js_1.createCoreRawIndexSink)(this.adapter)('chat', [saved]);
|
|
82
|
+
if (!projection || projection.sourceId !== saved.sourceId)
|
|
83
|
+
throw new Error('Chat projection omitted its source identity');
|
|
84
|
+
this.rawStore.acknowledgeProjection('chat', saved.sourceId, saved.pendingProjectionId);
|
|
85
|
+
return projection.observationRef;
|
|
86
|
+
}
|
|
87
|
+
exchanges(since, before) {
|
|
88
|
+
return this.readExchanges('AND m.source_timestamp_ms >= ? AND m.source_timestamp_ms < ?', [since, before], 'ASC');
|
|
89
|
+
}
|
|
90
|
+
recentExchanges(currentMessageRef) {
|
|
91
|
+
return this.readExchanges('AND m.source_id != ? AND r.source_id IS NOT NULL', [currentMessageRef], 'DESC', 10)
|
|
92
|
+
.reverse()
|
|
93
|
+
.map(({ at, owner, reply }) => ({
|
|
94
|
+
at,
|
|
95
|
+
owner,
|
|
96
|
+
answer: reply,
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
readExchanges(filter, params, order, limit) {
|
|
100
|
+
// Backfilled model output is not a delivery receipt.
|
|
101
|
+
return this.adapter
|
|
102
|
+
.prepare(`SELECT m.source_timestamp_ms AS at, m.content AS owner, r.content AS reply
|
|
103
|
+
FROM connector_event_index m
|
|
104
|
+
LEFT JOIN connector_event_index r ON r.source_connector = 'chat'
|
|
105
|
+
AND r.source_id = (
|
|
106
|
+
SELECT reply.source_id FROM connector_event_index reply
|
|
107
|
+
WHERE reply.source_connector = 'chat' AND reply.source_entity_id = m.source_entity_id || ':reply'
|
|
108
|
+
AND reply.memory_scope_kind = 'user' AND reply.memory_scope_id = m.memory_scope_id
|
|
109
|
+
AND json_extract(reply.metadata_json, '$.deliveryVerified') = 1
|
|
110
|
+
ORDER BY reply.source_timestamp_ms DESC, reply.rowid DESC LIMIT 1
|
|
111
|
+
)
|
|
112
|
+
WHERE m.source_connector = 'chat' AND m.memory_scope_kind = 'user' AND m.memory_scope_id = ?
|
|
113
|
+
AND json_extract(m.metadata_json, '$.kind') = 'owner_message' ${filter}
|
|
114
|
+
ORDER BY m.source_timestamp_ms ${order}, m.source_id ${order} ${limit === undefined ? '' : 'LIMIT ?'}`)
|
|
115
|
+
.all(this.principalId, ...params, ...(limit === undefined ? [] : [limit]));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.ChatSources = ChatSources;
|
|
119
|
+
//# sourceMappingURL=chat-sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-sources.js","sourceRoot":"","sources":["../../src/storage/chat-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { type WikiPage, type WikiPageType } from '../wiki/types.js';
|
|
|
2
2
|
import { normalizeWikiPagePath } from '../wiki/path-safety.js';
|
|
3
3
|
export type WikiArtifactConfidence = WikiPage['confidence'];
|
|
4
4
|
export declare function requiredWikiString(value: unknown, field: string, prefix: string): string;
|
|
5
|
-
export declare function normalizeWikiPageType(value: string | undefined, prefix: string
|
|
5
|
+
export declare function normalizeWikiPageType(value: string | undefined, prefix: string): WikiPageType;
|
|
6
6
|
export declare function normalizeWikiConfidence(value: string | undefined, prefix: string, defaultConfidence?: WikiArtifactConfidence): WikiArtifactConfidence;
|
|
7
7
|
export { normalizeWikiPagePath };
|
|
8
8
|
//# sourceMappingURL=normalization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalization.d.ts","sourceRoot":"","sources":["../../src/wiki-artifacts/normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAI5D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CASxF;AAED,wBAAgB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"normalization.d.ts","sourceRoot":"","sources":["../../src/wiki-artifacts/normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAI5D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CASxF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAM7F;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,EACd,iBAAiB,GAAE,sBAAiC,GACnD,sBAAsB,CASxB;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -18,10 +18,7 @@ function requiredWikiString(value, field, prefix) {
|
|
|
18
18
|
}
|
|
19
19
|
return trimmed;
|
|
20
20
|
}
|
|
21
|
-
function normalizeWikiPageType(value, prefix
|
|
22
|
-
if (value === undefined || value.trim().length === 0) {
|
|
23
|
-
return defaultType;
|
|
24
|
-
}
|
|
21
|
+
function normalizeWikiPageType(value, prefix) {
|
|
25
22
|
const normalized = requiredWikiString(value, 'type', prefix);
|
|
26
23
|
if (!(0, types_js_1.isValidPageType)(normalized)) {
|
|
27
24
|
throw new Error(`${prefix} type is not supported: ${normalized}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/wiki-artifacts/normalization.ts"],"names":[],"mappings":";;;AAOA,gDASC;AAED,
|
|
1
|
+
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/wiki-artifacts/normalization.ts"],"names":[],"mappings":";;;AAOA,gDASC;AAED,sDAMC;AAED,0DAaC;AAvCD,+CAAqF;AACrF,2DAA+D;AAwCtD,sGAxCA,sCAAqB,OAwCA;AApC9B,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAErE,SAAgB,kBAAkB,CAAC,KAAc,EAAE,KAAa,EAAE,MAAc;IAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,KAAK,mBAAmB,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,KAAK,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAyB,EAAE,MAAc;IAC7E,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAA,0BAAe,EAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,2BAA2B,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,uBAAuB,CACrC,KAAyB,EACzB,MAAc,EACd,oBAA4C,QAAQ;IAEpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,iCAAiC,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,UAAoC,CAAC;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jungjaehoon/mama-os",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.66.0",
|
|
4
4
|
"description": "MAMA OS - The local work agent behind your messenger.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@slack/web-api": "^7.13.0",
|
|
53
53
|
"@slack/socket-mode": "^2.0.5",
|
|
54
54
|
"discord.js": "^14.25.1",
|
|
55
|
-
"@jungjaehoon/mama-core": "^6.
|
|
55
|
+
"@jungjaehoon/mama-core": "^6.1.0",
|
|
56
56
|
"better-sqlite3": "^12.8.0",
|
|
57
57
|
"express": "^5.2.1",
|
|
58
58
|
"grammy": "^1.42.0",
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { SessionStore } from './session-store.js';
|
|
2
|
-
import type { NormalizedMessage } from './types.js';
|
|
3
|
-
import type { NativeTurnResultRecord } from '@jungjaehoon/mama-core/runtime/native-input-journal';
|
|
4
|
-
import type { CompletedTurn, SharedReplyTurn } from './turn-contract.js';
|
|
5
|
-
export interface InlineObservationInput {
|
|
6
|
-
source: string;
|
|
7
|
-
sourceId: string;
|
|
8
|
-
body: string;
|
|
9
|
-
author: string | null;
|
|
10
|
-
observedAt: number;
|
|
11
|
-
metadata: Record<string, unknown>;
|
|
12
|
-
scope: Record<string, unknown>;
|
|
13
|
-
}
|
|
14
|
-
export interface ConversationObservationPorts {
|
|
15
|
-
recordInlineObservation?: (input: InlineObservationInput) => string;
|
|
16
|
-
readInlineObservationByIdentity?: (input: {
|
|
17
|
-
source: string;
|
|
18
|
-
sourceId: string;
|
|
19
|
-
producerVersionId: string;
|
|
20
|
-
}) => {
|
|
21
|
-
observationRef: string;
|
|
22
|
-
body: string;
|
|
23
|
-
} | null;
|
|
24
|
-
}
|
|
25
|
-
export type ConversationRecord = {
|
|
26
|
-
resolved: CompletedTurn | SharedReplyTurn;
|
|
27
|
-
} | {
|
|
28
|
-
resolved: null;
|
|
29
|
-
sourceObservationRef?: string;
|
|
30
|
-
appendInput(content: string): void;
|
|
31
|
-
stageResponse(body: string): void;
|
|
32
|
-
abandon(): void;
|
|
33
|
-
commitResult(body: string): void;
|
|
34
|
-
commitShared(replySourceMessageRef: string): void;
|
|
35
|
-
};
|
|
36
|
-
export declare function sourceMessageIdentity(message: NormalizedMessage): {
|
|
37
|
-
sourceTurnId: string;
|
|
38
|
-
sourceMessageRef: string;
|
|
39
|
-
};
|
|
40
|
-
export declare function openConversationRecord(input: {
|
|
41
|
-
sessionStore: SessionStore;
|
|
42
|
-
sessionId: string;
|
|
43
|
-
message: NormalizedMessage;
|
|
44
|
-
sourceTurnId: string;
|
|
45
|
-
sourceMessageRef: string;
|
|
46
|
-
ownerConsole: boolean;
|
|
47
|
-
recoveryOnly: boolean;
|
|
48
|
-
recoveredNativeResult?: NativeTurnResultRecord;
|
|
49
|
-
startedAt: number;
|
|
50
|
-
observations: ConversationObservationPorts;
|
|
51
|
-
}): ConversationRecord;
|
|
52
|
-
//# sourceMappingURL=conversation-record.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-record.d.ts","sourceRoot":"","sources":["../../src/gateways/conversation-record.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,MAAM,CAAC;IACpE,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE;QACxC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,KAAK;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,EAAE,aAAa,GAAG,eAAe,CAAA;CAAE,GAC7C;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC;IAChB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnD,CAAC;AAEN,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAMA;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,4BAA4B,CAAC;CAC5C,GAAG,kBAAkB,CAqQrB"}
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sourceMessageIdentity = sourceMessageIdentity;
|
|
4
|
-
exports.openConversationRecord = openConversationRecord;
|
|
5
|
-
/** Durable messenger turn facts and crash recovery; this module never runs a model. */
|
|
6
|
-
const node_crypto_1 = require("node:crypto");
|
|
7
|
-
function agentIdForPrincipalClass(principalClass) {
|
|
8
|
-
return principalClass === 'owner' ? 'mama-owner' : 'unsigned-local';
|
|
9
|
-
}
|
|
10
|
-
function sourceMessageIdentity(message) {
|
|
11
|
-
const sourceTurnId = message.metadata?.messageId ?? `generated:${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`;
|
|
12
|
-
return {
|
|
13
|
-
sourceTurnId,
|
|
14
|
-
sourceMessageRef: [message.source, message.channelId, sourceTurnId].filter(Boolean).join(':'),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
function openConversationRecord(input) {
|
|
18
|
-
const { sessionStore, sessionId, message, sourceTurnId, sourceMessageRef, ownerConsole, recoveryOnly, recoveredNativeResult, startedAt, observations, } = input;
|
|
19
|
-
const existing = sessionStore.findTurnBySourceMessageRef(sessionId, sourceMessageRef);
|
|
20
|
-
const scope = {
|
|
21
|
-
visibility: 'owner',
|
|
22
|
-
agentId: agentIdForPrincipalClass(message.principal?.class),
|
|
23
|
-
channel: message.channelId,
|
|
24
|
-
principalId: message.principal?.principalId ?? null,
|
|
25
|
-
};
|
|
26
|
-
const inputObservation = () => ({
|
|
27
|
-
source: `owner-message:${message.source}`,
|
|
28
|
-
sourceId: sourceMessageRef,
|
|
29
|
-
body: message.text,
|
|
30
|
-
author: message.userId,
|
|
31
|
-
observedAt: Date.now(),
|
|
32
|
-
metadata: { messageId: sourceTurnId },
|
|
33
|
-
scope,
|
|
34
|
-
});
|
|
35
|
-
const resultObservation = (body) => ({
|
|
36
|
-
source: `owner-result:${message.source}`,
|
|
37
|
-
sourceId: `${sourceMessageRef}:result`,
|
|
38
|
-
body,
|
|
39
|
-
author: 'mama',
|
|
40
|
-
observedAt: Date.now(),
|
|
41
|
-
metadata: { sourceMessageRef },
|
|
42
|
-
scope,
|
|
43
|
-
});
|
|
44
|
-
const recordResult = (body) => ownerConsole ? observations.recordInlineObservation?.(resultObservation(body)) : undefined;
|
|
45
|
-
const validateStoredObservation = (storedRef, observation) => {
|
|
46
|
-
if (!observations.recordInlineObservation) {
|
|
47
|
-
throw new Error('Stored owner observation cannot be revalidated');
|
|
48
|
-
}
|
|
49
|
-
let returnedRef;
|
|
50
|
-
try {
|
|
51
|
-
returnedRef = observations.recordInlineObservation(observation);
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
const reason = error instanceof Error ? error.message : String(error);
|
|
55
|
-
if (reason.startsWith('Observation replay conflict for ')) {
|
|
56
|
-
throw new Error('Owner message replay conflicts with persisted immutable input', {
|
|
57
|
-
cause: error,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
throw new Error('Owner observation replay validation failed', { cause: error });
|
|
61
|
-
}
|
|
62
|
-
if (returnedRef !== storedRef) {
|
|
63
|
-
throw new Error('Owner message replay conflicts with persisted immutable input');
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
const sharedTarget = recoveredNativeResult &&
|
|
67
|
-
recoveredNativeResult.primaryStimulusId !== sourceMessageRef &&
|
|
68
|
-
(recoveredNativeResult.primaryKind === 'owner_message' ||
|
|
69
|
-
(existing?.state === 'shared' &&
|
|
70
|
-
existing.sharedReplyRef === recoveredNativeResult.primaryStimulusId))
|
|
71
|
-
? recoveredNativeResult.primaryStimulusId
|
|
72
|
-
: null;
|
|
73
|
-
const shared = (replySourceMessageRef) => ({
|
|
74
|
-
outcome: 'shared_reply',
|
|
75
|
-
response: '',
|
|
76
|
-
sessionId,
|
|
77
|
-
duration: Date.now() - startedAt,
|
|
78
|
-
sourceTurnId,
|
|
79
|
-
sourceMessageRef,
|
|
80
|
-
replySourceMessageRef,
|
|
81
|
-
});
|
|
82
|
-
const completed = (response) => {
|
|
83
|
-
if (sharedTarget || (recoveredNativeResult && response !== recoveredNativeResult.response)) {
|
|
84
|
-
throw new Error('Committed owner response conflicts with native turn result');
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
outcome: 'completed',
|
|
88
|
-
response,
|
|
89
|
-
sessionId,
|
|
90
|
-
duration: Date.now() - startedAt,
|
|
91
|
-
provenance: recoveredNativeResult?.modelRunId
|
|
92
|
-
? { status: 'available', modelRunId: recoveredNativeResult.modelRunId }
|
|
93
|
-
: {
|
|
94
|
-
status: 'unavailable',
|
|
95
|
-
reason: recoveredNativeResult?.modelRunProvenance === 'commit_failed'
|
|
96
|
-
? 'commit_failed'
|
|
97
|
-
: 'backend_no_run',
|
|
98
|
-
},
|
|
99
|
-
sourceTurnId,
|
|
100
|
-
sourceMessageRef,
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
if (existing?.state === 'shared') {
|
|
104
|
-
if (!existing.sharedReplyRef ||
|
|
105
|
-
(sharedTarget && existing.sharedReplyRef !== sharedTarget) ||
|
|
106
|
-
(recoveredNativeResult && !sharedTarget)) {
|
|
107
|
-
throw new Error('Shared owner response conflicts with native turn result');
|
|
108
|
-
}
|
|
109
|
-
if (existing.sourceObservationRef) {
|
|
110
|
-
validateStoredObservation(existing.sourceObservationRef, inputObservation());
|
|
111
|
-
}
|
|
112
|
-
return { resolved: shared(existing.sharedReplyRef) };
|
|
113
|
-
}
|
|
114
|
-
if (existing?.state === 'final') {
|
|
115
|
-
if (sharedTarget)
|
|
116
|
-
throw new Error('Final owner response conflicts with shared native turn');
|
|
117
|
-
if (existing.sourceObservationRef) {
|
|
118
|
-
validateStoredObservation(existing.sourceObservationRef, inputObservation());
|
|
119
|
-
}
|
|
120
|
-
if (existing.resultObservationRef) {
|
|
121
|
-
validateStoredObservation(existing.resultObservationRef, resultObservation(existing.bot));
|
|
122
|
-
}
|
|
123
|
-
return { resolved: completed(existing.bot) };
|
|
124
|
-
}
|
|
125
|
-
const sourceObservationRef = existing?.sourceObservationRef ??
|
|
126
|
-
(ownerConsole ? observations.recordInlineObservation?.(inputObservation()) : undefined);
|
|
127
|
-
const recoveredResult = !existing?.resultObservationRef && ownerConsole
|
|
128
|
-
? observations.readInlineObservationByIdentity?.({
|
|
129
|
-
source: `owner-result:${message.source}`,
|
|
130
|
-
sourceId: `${sourceMessageRef}:result`,
|
|
131
|
-
producerVersionId: `${sourceMessageRef}:result`,
|
|
132
|
-
})
|
|
133
|
-
: null;
|
|
134
|
-
if (recoveredResult) {
|
|
135
|
-
validateStoredObservation(sourceObservationRef, inputObservation());
|
|
136
|
-
validateStoredObservation(recoveredResult.observationRef, resultObservation(recoveredResult.body));
|
|
137
|
-
if (existing &&
|
|
138
|
-
(!sessionStore.flushStreamingResponse(sessionId, recoveredResult.body, recoveredResult.observationRef, sourceMessageRef) ||
|
|
139
|
-
!sessionStore.finalizeTurn(sessionId, sourceMessageRef, recoveredResult.body, recoveredResult.observationRef))) {
|
|
140
|
-
throw new Error('Unable to recover committed result observation');
|
|
141
|
-
}
|
|
142
|
-
return { resolved: completed(recoveredResult.body) };
|
|
143
|
-
}
|
|
144
|
-
if (existing?.resultObservationRef && existing.bot.trim().length > 0 && ownerConsole) {
|
|
145
|
-
validateStoredObservation(existing.sourceObservationRef, inputObservation());
|
|
146
|
-
validateStoredObservation(existing.resultObservationRef, resultObservation(existing.bot));
|
|
147
|
-
if (!sessionStore.finalizeTurn(sessionId, sourceMessageRef, existing.bot, existing.resultObservationRef)) {
|
|
148
|
-
throw new Error('Unable to recover final assistant response');
|
|
149
|
-
}
|
|
150
|
-
return { resolved: completed(existing.bot) };
|
|
151
|
-
}
|
|
152
|
-
if (recoveryOnly) {
|
|
153
|
-
if (recoveredNativeResult &&
|
|
154
|
-
(recoveredNativeResult.primaryKind === null ||
|
|
155
|
-
recoveredNativeResult.primaryKind === undefined)) {
|
|
156
|
-
throw new Error('Native result primary kind is unknown; reply ownership requires reconciliation');
|
|
157
|
-
}
|
|
158
|
-
if (sharedTarget) {
|
|
159
|
-
if (!ownerConsole || !existing || !sourceObservationRef) {
|
|
160
|
-
throw new Error('Shared native input has no recoverable owner record');
|
|
161
|
-
}
|
|
162
|
-
validateStoredObservation(sourceObservationRef, inputObservation());
|
|
163
|
-
if (!sessionStore.finalizeSharedTurn(sessionId, sourceMessageRef, sharedTarget)) {
|
|
164
|
-
throw new Error('Unable to recover shared native reply');
|
|
165
|
-
}
|
|
166
|
-
return { resolved: shared(sharedTarget) };
|
|
167
|
-
}
|
|
168
|
-
if (recoveredNativeResult) {
|
|
169
|
-
if (!ownerConsole || !existing || !sourceObservationRef) {
|
|
170
|
-
throw new Error('Native result has no recoverable owner input record');
|
|
171
|
-
}
|
|
172
|
-
validateStoredObservation(sourceObservationRef, inputObservation());
|
|
173
|
-
const response = recoveredNativeResult.response;
|
|
174
|
-
const resultObservationRef = recordResult(response);
|
|
175
|
-
if (!resultObservationRef ||
|
|
176
|
-
!sessionStore.flushStreamingResponse(sessionId, response, resultObservationRef, sourceMessageRef) ||
|
|
177
|
-
!sessionStore.finalizeTurn(sessionId, sourceMessageRef, response, resultObservationRef)) {
|
|
178
|
-
throw new Error('Unable to recover accepted native result');
|
|
179
|
-
}
|
|
180
|
-
return { resolved: completed(response) };
|
|
181
|
-
}
|
|
182
|
-
throw new Error('Native input outcome is unresolved; no committed response was found');
|
|
183
|
-
}
|
|
184
|
-
const stageResponse = (body, resultObservationRef) => {
|
|
185
|
-
if (!sessionStore.flushStreamingResponse(sessionId, body, resultObservationRef, sourceMessageRef)) {
|
|
186
|
-
throw new Error('Unable to stage assistant response');
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
return {
|
|
190
|
-
resolved: null,
|
|
191
|
-
sourceObservationRef,
|
|
192
|
-
appendInput(content) {
|
|
193
|
-
if (!sessionStore.appendMessage(sessionId, { role: 'user', content, timestamp: Date.now() }, { sourceMessageRef, sourceObservationRef })) {
|
|
194
|
-
throw new Error('Unable to persist user message');
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
stageResponse,
|
|
198
|
-
abandon() {
|
|
199
|
-
if (!sessionStore.discardIncompleteTurn(sessionId, sourceMessageRef)) {
|
|
200
|
-
throw new Error('Unable to discard failed source message');
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
commitResult(body) {
|
|
204
|
-
const resultObservationRef = recordResult(body);
|
|
205
|
-
stageResponse(body, resultObservationRef);
|
|
206
|
-
if (!sessionStore.finalizeTurn(sessionId, sourceMessageRef, body, resultObservationRef)) {
|
|
207
|
-
throw new Error('Unable to persist final assistant response');
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
commitShared(replySourceMessageRef) {
|
|
211
|
-
if (!ownerConsole || !sourceObservationRef) {
|
|
212
|
-
throw new Error('Shared native reply requires an owner observation');
|
|
213
|
-
}
|
|
214
|
-
if (!sessionStore.finalizeSharedTurn(sessionId, sourceMessageRef, replySourceMessageRef)) {
|
|
215
|
-
throw new Error('Unable to persist shared native reply');
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=conversation-record.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-record.js","sourceRoot":"","sources":["../../src/gateways/conversation-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session store for messenger conversations
|
|
3
|
-
*
|
|
4
|
-
* Manages conversation sessions with rolling context (history)
|
|
5
|
-
* for cross-platform messenger integration.
|
|
6
|
-
*/
|
|
7
|
-
import type { SQLiteDatabase } from '../sqlite.js';
|
|
8
|
-
import type { Session, MessageSource, ConversationTurn } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* SQLite-backed session store for messenger conversations
|
|
11
|
-
*/
|
|
12
|
-
export declare class SessionStore {
|
|
13
|
-
private db;
|
|
14
|
-
private maxTurns;
|
|
15
|
-
constructor(db: SQLiteDatabase, options?: {
|
|
16
|
-
maxTurns?: number;
|
|
17
|
-
});
|
|
18
|
-
/**
|
|
19
|
-
* Run database migration
|
|
20
|
-
*/
|
|
21
|
-
private runMigration;
|
|
22
|
-
/**
|
|
23
|
-
* Get existing session or create new one
|
|
24
|
-
*/
|
|
25
|
-
getOrCreate(source: MessageSource, channelId: string, userId?: string, channelName?: string): Session;
|
|
26
|
-
/**
|
|
27
|
-
* Get session by ID
|
|
28
|
-
*/
|
|
29
|
-
getById(sessionId: string): Session | null;
|
|
30
|
-
/**
|
|
31
|
-
* Update session with new conversation turn
|
|
32
|
-
*/
|
|
33
|
-
updateSession(sessionId: string, userMessage: string, botResponse: string): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Append a single message (user or assistant) to session history.
|
|
36
|
-
* - role='user': creates a new turn with empty bot
|
|
37
|
-
* - role='assistant': fills bot field of last incomplete turn, or creates new turn
|
|
38
|
-
*/
|
|
39
|
-
appendMessage(sessionId: string, msg: {
|
|
40
|
-
role: 'user' | 'assistant';
|
|
41
|
-
content: string;
|
|
42
|
-
timestamp: number;
|
|
43
|
-
}, opts?: {
|
|
44
|
-
sourceMessageRef?: string;
|
|
45
|
-
sourceObservationRef?: string;
|
|
46
|
-
resultObservationRef?: string;
|
|
47
|
-
}): boolean;
|
|
48
|
-
findTurnBySourceMessageRef(sessionId: string, sourceMessageRef: string): ConversationTurn | null;
|
|
49
|
-
finalizeTurn(sessionId: string, sourceMessageRef: string, response: string, resultObservationRef?: string): boolean;
|
|
50
|
-
/** Preserve a later user input while linking it to the one reply owner. */
|
|
51
|
-
finalizeSharedTurn(sessionId: string, sourceMessageRef: string, replySourceMessageRef: string): boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Flush streaming response to the last incomplete turn.
|
|
54
|
-
* Called periodically during streaming to persist partial assistant responses.
|
|
55
|
-
*/
|
|
56
|
-
flushStreamingResponse(sessionId: string, accumulatedText: string, resultObservationRef?: string, sourceMessageRef?: string): boolean;
|
|
57
|
-
/** Remove only the failed turn; legacy callers without a source ref use the last turn. */
|
|
58
|
-
discardIncompleteTurn(sessionId: string, sourceMessageRef?: string): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Get conversation history for a session by ID
|
|
61
|
-
*/
|
|
62
|
-
getHistory(sessionId: string): ConversationTurn[];
|
|
63
|
-
/**
|
|
64
|
-
* Get conversation history by source and channel
|
|
65
|
-
* Used by messenger and runtime session consumers
|
|
66
|
-
*/
|
|
67
|
-
getHistoryByChannel(source: MessageSource, channelId: string): ConversationTurn[];
|
|
68
|
-
/**
|
|
69
|
-
* Clear session context (start fresh)
|
|
70
|
-
*/
|
|
71
|
-
clearContext(sessionId: string): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Delete a session
|
|
74
|
-
*/
|
|
75
|
-
deleteSession(sessionId: string): boolean;
|
|
76
|
-
/**
|
|
77
|
-
* List all sessions for a source
|
|
78
|
-
*/
|
|
79
|
-
/**
|
|
80
|
-
* What this store holds, as the dashboard asks it: how many sessions per
|
|
81
|
-
* source, and the ten most recently active channels.
|
|
82
|
-
*
|
|
83
|
-
* The viewer used to open a second connection to this database by path and
|
|
84
|
-
* run these two queries itself. The store that owns the table answers them.
|
|
85
|
-
*/
|
|
86
|
-
stats(): {
|
|
87
|
-
total: number;
|
|
88
|
-
bySource: Record<string, number>;
|
|
89
|
-
channels: Array<{
|
|
90
|
-
source: string;
|
|
91
|
-
channelId: string;
|
|
92
|
-
channelName: string | null;
|
|
93
|
-
lastActive: number;
|
|
94
|
-
messageCount: number;
|
|
95
|
-
}>;
|
|
96
|
-
};
|
|
97
|
-
listSessions(source?: MessageSource): Session[];
|
|
98
|
-
/**
|
|
99
|
-
* Update channel name for a session by source and channel ID
|
|
100
|
-
* Used to backfill channel names when gateway connects
|
|
101
|
-
*/
|
|
102
|
-
updateChannelName(source: MessageSource, channelId: string, channelName: string): boolean;
|
|
103
|
-
/**
|
|
104
|
-
* Delete inactive sessions older than specified age
|
|
105
|
-
*/
|
|
106
|
-
cleanupInactiveSessions(maxAgeMs: number): number;
|
|
107
|
-
/**
|
|
108
|
-
* Get the most recently active session for a specific source
|
|
109
|
-
*/
|
|
110
|
-
getLastActiveSession(source?: MessageSource): Session | null;
|
|
111
|
-
/**
|
|
112
|
-
* Convert database row to Session object
|
|
113
|
-
*/
|
|
114
|
-
private rowToSession;
|
|
115
|
-
/**
|
|
116
|
-
* Close database connection
|
|
117
|
-
*/
|
|
118
|
-
close(): void;
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/gateways/session-store.ts"],"names":[],"mappings":"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"}
|