@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.
Files changed (114) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +2 -2
  3. package/dist/api/help-actions.d.ts +0 -2
  4. package/dist/api/help-actions.d.ts.map +1 -1
  5. package/dist/api/help-actions.js +0 -3
  6. package/dist/api/help-actions.js.map +1 -1
  7. package/dist/api/owner-message-actions.d.ts +1 -3
  8. package/dist/api/owner-message-actions.d.ts.map +1 -1
  9. package/dist/api/owner-message-actions.js +1 -6
  10. package/dist/api/owner-message-actions.js.map +1 -1
  11. package/dist/api/owner-policy-actions.d.ts +8 -0
  12. package/dist/api/owner-policy-actions.d.ts.map +1 -0
  13. package/dist/api/owner-policy-actions.js +160 -0
  14. package/dist/api/owner-policy-actions.js.map +1 -0
  15. package/dist/api/report-source-actions.d.ts.map +1 -1
  16. package/dist/api/report-source-actions.js +3 -1
  17. package/dist/api/report-source-actions.js.map +1 -1
  18. package/dist/api/wiki-actions.js +3 -3
  19. package/dist/api/wiki-actions.js.map +1 -1
  20. package/dist/backfill/format.d.ts +2 -0
  21. package/dist/backfill/format.d.ts.map +1 -1
  22. package/dist/backfill/format.js +8 -3
  23. package/dist/backfill/format.js.map +1 -1
  24. package/dist/backfill/push.d.ts.map +1 -1
  25. package/dist/backfill/push.js +1 -0
  26. package/dist/backfill/push.js.map +1 -1
  27. package/dist/cli/commands/daemon.d.ts +0 -1
  28. package/dist/cli/commands/daemon.d.ts.map +1 -1
  29. package/dist/cli/commands/daemon.js +1 -1
  30. package/dist/cli/commands/daemon.js.map +1 -1
  31. package/dist/gateways/discord.d.ts +0 -1
  32. package/dist/gateways/discord.d.ts.map +1 -1
  33. package/dist/gateways/discord.js +23 -4
  34. package/dist/gateways/discord.js.map +1 -1
  35. package/dist/gateways/slack.d.ts +0 -1
  36. package/dist/gateways/slack.d.ts.map +1 -1
  37. package/dist/gateways/slack.js +23 -4
  38. package/dist/gateways/slack.js.map +1 -1
  39. package/dist/gateways/telegram-format.d.ts +0 -13
  40. package/dist/gateways/telegram-format.d.ts.map +1 -1
  41. package/dist/gateways/telegram-format.js +1 -42
  42. package/dist/gateways/telegram-format.js.map +1 -1
  43. package/dist/gateways/telegram-message-ledger.d.ts +3 -2
  44. package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
  45. package/dist/gateways/telegram-message-ledger.js +10 -9
  46. package/dist/gateways/telegram-message-ledger.js.map +1 -1
  47. package/dist/gateways/telegram-response-presenter.d.ts +6 -14
  48. package/dist/gateways/telegram-response-presenter.d.ts.map +1 -1
  49. package/dist/gateways/telegram-response-presenter.js +13 -98
  50. package/dist/gateways/telegram-response-presenter.js.map +1 -1
  51. package/dist/gateways/telegram.d.ts +0 -1
  52. package/dist/gateways/telegram.d.ts.map +1 -1
  53. package/dist/gateways/telegram.js +17 -5
  54. package/dist/gateways/telegram.js.map +1 -1
  55. package/dist/gateways/turn-contract.d.ts +8 -0
  56. package/dist/gateways/turn-contract.d.ts.map +1 -1
  57. package/dist/replay/import-manifest.d.ts +2 -2
  58. package/dist/replay/import-manifest.d.ts.map +1 -1
  59. package/dist/replay/import-manifest.js.map +1 -1
  60. package/dist/replay/replay-source-catalog.d.ts.map +1 -1
  61. package/dist/replay/replay-source-catalog.js +1 -0
  62. package/dist/replay/replay-source-catalog.js.map +1 -1
  63. package/dist/runtime/action-surface.d.ts +2 -3
  64. package/dist/runtime/action-surface.d.ts.map +1 -1
  65. package/dist/runtime/action-surface.js +32 -4
  66. package/dist/runtime/action-surface.js.map +1 -1
  67. package/dist/runtime/native-session.d.ts +1 -0
  68. package/dist/runtime/native-session.d.ts.map +1 -1
  69. package/dist/runtime/native-session.js +3 -0
  70. package/dist/runtime/native-session.js.map +1 -1
  71. package/dist/runtime/owner-authority.d.ts +4 -2
  72. package/dist/runtime/owner-authority.d.ts.map +1 -1
  73. package/dist/runtime/owner-authority.js +23 -3
  74. package/dist/runtime/owner-authority.js.map +1 -1
  75. package/dist/runtime/owner-policy.d.ts +3 -0
  76. package/dist/runtime/owner-policy.d.ts.map +1 -1
  77. package/dist/runtime/owner-policy.js +16 -3
  78. package/dist/runtime/owner-policy.js.map +1 -1
  79. package/dist/runtime/owner-runtime.d.ts +2 -11
  80. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  81. package/dist/runtime/owner-runtime.js +15 -48
  82. package/dist/runtime/owner-runtime.js.map +1 -1
  83. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  84. package/dist/runtime/owner-system-prompt.js +4 -3
  85. package/dist/runtime/owner-system-prompt.js.map +1 -1
  86. package/dist/runtime/session-start-context.d.ts +3 -22
  87. package/dist/runtime/session-start-context.d.ts.map +1 -1
  88. package/dist/runtime/session-start-context.js +1 -58
  89. package/dist/runtime/session-start-context.js.map +1 -1
  90. package/dist/runtime/stimulus-delivery.d.ts +5 -4
  91. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  92. package/dist/runtime/stimulus-delivery.js +23 -23
  93. package/dist/runtime/stimulus-delivery.js.map +1 -1
  94. package/dist/runtime/turn-orders.d.ts +0 -18
  95. package/dist/runtime/turn-orders.d.ts.map +1 -1
  96. package/dist/runtime/turn-orders.js +1 -21
  97. package/dist/runtime/turn-orders.js.map +1 -1
  98. package/dist/storage/chat-sources.d.ts +21 -0
  99. package/dist/storage/chat-sources.d.ts.map +1 -0
  100. package/dist/storage/chat-sources.js +119 -0
  101. package/dist/storage/chat-sources.js.map +1 -0
  102. package/dist/wiki-artifacts/normalization.d.ts +1 -1
  103. package/dist/wiki-artifacts/normalization.d.ts.map +1 -1
  104. package/dist/wiki-artifacts/normalization.js +1 -4
  105. package/dist/wiki-artifacts/normalization.js.map +1 -1
  106. package/package.json +2 -2
  107. package/dist/gateways/conversation-record.d.ts +0 -52
  108. package/dist/gateways/conversation-record.d.ts.map +0 -1
  109. package/dist/gateways/conversation-record.js +0 -220
  110. package/dist/gateways/conversation-record.js.map +0 -1
  111. package/dist/gateways/session-store.d.ts +0 -120
  112. package/dist/gateways/session-store.d.ts.map +0 -1
  113. package/dist/gateways/session-store.js +0 -581
  114. 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, defaultType?: WikiPageType): WikiPageType;
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,CACnC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,YAAuB,GACnC,YAAY,CASd;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"}
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, defaultType = 'entity') {
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,sDAaC;AAED,0DAaC;AA9CD,+CAAqF;AACrF,2DAA+D;AA+CtD,sGA/CA,sCAAqB,OA+CA;AA3C9B,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,CACnC,KAAyB,EACzB,MAAc,EACd,cAA4B,QAAQ;IAEpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,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"}
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.65.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.0.0",
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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"}