@jungjaehoon/mama-os 0.64.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.
Files changed (119) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +14 -13
  3. package/dist/api/help-actions.js +1 -1
  4. package/dist/api/help-actions.js.map +1 -1
  5. package/dist/api/owner-message-actions.d.ts +1 -3
  6. package/dist/api/owner-message-actions.d.ts.map +1 -1
  7. package/dist/api/owner-message-actions.js +1 -6
  8. package/dist/api/owner-message-actions.js.map +1 -1
  9. package/dist/api/owner-policy-actions.d.ts +8 -0
  10. package/dist/api/owner-policy-actions.d.ts.map +1 -0
  11. package/dist/api/owner-policy-actions.js +160 -0
  12. package/dist/api/owner-policy-actions.js.map +1 -0
  13. package/dist/api/report-source-actions.d.ts.map +1 -1
  14. package/dist/api/report-source-actions.js +3 -1
  15. package/dist/api/report-source-actions.js.map +1 -1
  16. package/dist/api/wiki-actions.js +3 -3
  17. package/dist/api/wiki-actions.js.map +1 -1
  18. package/dist/api/work-actions.d.ts.map +1 -1
  19. package/dist/api/work-actions.js +9 -2
  20. package/dist/api/work-actions.js.map +1 -1
  21. package/dist/backfill/format.d.ts +2 -0
  22. package/dist/backfill/format.d.ts.map +1 -1
  23. package/dist/backfill/format.js +8 -3
  24. package/dist/backfill/format.js.map +1 -1
  25. package/dist/backfill/push.d.ts.map +1 -1
  26. package/dist/backfill/push.js +1 -0
  27. package/dist/backfill/push.js.map +1 -1
  28. package/dist/cli/commands/daemon.d.ts +0 -1
  29. package/dist/cli/commands/daemon.d.ts.map +1 -1
  30. package/dist/cli/commands/daemon.js +1 -1
  31. package/dist/cli/commands/daemon.js.map +1 -1
  32. package/dist/gateways/discord.d.ts +0 -1
  33. package/dist/gateways/discord.d.ts.map +1 -1
  34. package/dist/gateways/discord.js +23 -4
  35. package/dist/gateways/discord.js.map +1 -1
  36. package/dist/gateways/slack.d.ts +0 -1
  37. package/dist/gateways/slack.d.ts.map +1 -1
  38. package/dist/gateways/slack.js +23 -4
  39. package/dist/gateways/slack.js.map +1 -1
  40. package/dist/gateways/telegram-format.d.ts +0 -13
  41. package/dist/gateways/telegram-format.d.ts.map +1 -1
  42. package/dist/gateways/telegram-format.js +1 -42
  43. package/dist/gateways/telegram-format.js.map +1 -1
  44. package/dist/gateways/telegram-message-ledger.d.ts +3 -2
  45. package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
  46. package/dist/gateways/telegram-message-ledger.js +10 -9
  47. package/dist/gateways/telegram-message-ledger.js.map +1 -1
  48. package/dist/gateways/telegram-response-presenter.d.ts +6 -14
  49. package/dist/gateways/telegram-response-presenter.d.ts.map +1 -1
  50. package/dist/gateways/telegram-response-presenter.js +13 -98
  51. package/dist/gateways/telegram-response-presenter.js.map +1 -1
  52. package/dist/gateways/telegram.d.ts +0 -1
  53. package/dist/gateways/telegram.d.ts.map +1 -1
  54. package/dist/gateways/telegram.js +17 -5
  55. package/dist/gateways/telegram.js.map +1 -1
  56. package/dist/gateways/turn-contract.d.ts +8 -0
  57. package/dist/gateways/turn-contract.d.ts.map +1 -1
  58. package/dist/replay/import-manifest.d.ts +2 -2
  59. package/dist/replay/import-manifest.d.ts.map +1 -1
  60. package/dist/replay/import-manifest.js.map +1 -1
  61. package/dist/replay/replay-source-catalog.d.ts.map +1 -1
  62. package/dist/replay/replay-source-catalog.js +1 -0
  63. package/dist/replay/replay-source-catalog.js.map +1 -1
  64. package/dist/runtime/action-surface.d.ts +2 -1
  65. package/dist/runtime/action-surface.d.ts.map +1 -1
  66. package/dist/runtime/action-surface.js +32 -3
  67. package/dist/runtime/action-surface.js.map +1 -1
  68. package/dist/runtime/native-session.d.ts +1 -0
  69. package/dist/runtime/native-session.d.ts.map +1 -1
  70. package/dist/runtime/native-session.js +3 -0
  71. package/dist/runtime/native-session.js.map +1 -1
  72. package/dist/runtime/owner-authority.d.ts +4 -2
  73. package/dist/runtime/owner-authority.d.ts.map +1 -1
  74. package/dist/runtime/owner-authority.js +23 -3
  75. package/dist/runtime/owner-authority.js.map +1 -1
  76. package/dist/runtime/owner-policy.d.ts +3 -0
  77. package/dist/runtime/owner-policy.d.ts.map +1 -1
  78. package/dist/runtime/owner-policy.js +16 -3
  79. package/dist/runtime/owner-policy.js.map +1 -1
  80. package/dist/runtime/owner-runtime.d.ts +2 -3
  81. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  82. package/dist/runtime/owner-runtime.js +15 -23
  83. package/dist/runtime/owner-runtime.js.map +1 -1
  84. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  85. package/dist/runtime/owner-system-prompt.js +6 -5
  86. package/dist/runtime/owner-system-prompt.js.map +1 -1
  87. package/dist/runtime/session-start-context.d.ts +3 -22
  88. package/dist/runtime/session-start-context.d.ts.map +1 -1
  89. package/dist/runtime/session-start-context.js +1 -58
  90. package/dist/runtime/session-start-context.js.map +1 -1
  91. package/dist/runtime/stimulus-delivery.d.ts +4 -1
  92. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  93. package/dist/runtime/stimulus-delivery.js +18 -10
  94. package/dist/runtime/stimulus-delivery.js.map +1 -1
  95. package/dist/runtime/timezone.d.ts +6 -0
  96. package/dist/runtime/timezone.d.ts.map +1 -1
  97. package/dist/runtime/timezone.js +11 -0
  98. package/dist/runtime/timezone.js.map +1 -1
  99. package/dist/runtime/turn-orders.d.ts +5 -0
  100. package/dist/runtime/turn-orders.d.ts.map +1 -1
  101. package/dist/runtime/turn-orders.js +12 -9
  102. package/dist/runtime/turn-orders.js.map +1 -1
  103. package/dist/storage/chat-sources.d.ts +21 -0
  104. package/dist/storage/chat-sources.d.ts.map +1 -0
  105. package/dist/storage/chat-sources.js +119 -0
  106. package/dist/storage/chat-sources.js.map +1 -0
  107. package/dist/wiki-artifacts/normalization.d.ts +1 -1
  108. package/dist/wiki-artifacts/normalization.d.ts.map +1 -1
  109. package/dist/wiki-artifacts/normalization.js +1 -4
  110. package/dist/wiki-artifacts/normalization.js.map +1 -1
  111. package/package.json +2 -2
  112. package/dist/gateways/conversation-record.d.ts +0 -52
  113. package/dist/gateways/conversation-record.d.ts.map +0 -1
  114. package/dist/gateways/conversation-record.js +0 -220
  115. package/dist/gateways/conversation-record.js.map +0 -1
  116. package/dist/gateways/session-store.d.ts +0 -120
  117. package/dist/gateways/session-store.d.ts.map +0 -1
  118. package/dist/gateways/session-store.js +0 -581
  119. package/dist/gateways/session-store.js.map +0 -1
@@ -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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"}