@jungjaehoon/mama-os 0.48.4 → 0.49.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/agent/agent-loop.d.ts +6 -7
  2. package/dist/agent/agent-loop.d.ts.map +1 -1
  3. package/dist/agent/agent-loop.js +106 -80
  4. package/dist/agent/agent-loop.js.map +1 -1
  5. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  6. package/dist/agent/code-act/host-bridge.js +7 -9
  7. package/dist/agent/code-act/host-bridge.js.map +1 -1
  8. package/dist/agent/codex-home.d.ts.map +1 -1
  9. package/dist/agent/codex-home.js +3 -1
  10. package/dist/agent/codex-home.js.map +1 -1
  11. package/dist/agent/gateway-tool-executor.d.ts +0 -16
  12. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  13. package/dist/agent/gateway-tool-executor.js +0 -51
  14. package/dist/agent/gateway-tool-executor.js.map +1 -1
  15. package/dist/agent/gateway-tools.md +1 -2
  16. package/dist/agent/os-agent-capabilities.md +14 -34
  17. package/dist/agent/role-manager.d.ts.map +1 -1
  18. package/dist/agent/role-manager.js +6 -3
  19. package/dist/agent/role-manager.js.map +1 -1
  20. package/dist/agent/tool-registry.d.ts.map +1 -1
  21. package/dist/agent/tool-registry.js +27 -8
  22. package/dist/agent/tool-registry.js.map +1 -1
  23. package/dist/agent/types.d.ts +20 -6
  24. package/dist/agent/types.d.ts.map +1 -1
  25. package/dist/agent/types.js.map +1 -1
  26. package/dist/api/graph-api-types.d.ts +0 -18
  27. package/dist/api/graph-api-types.d.ts.map +1 -1
  28. package/dist/api/graph-api.d.ts.map +1 -1
  29. package/dist/api/graph-api.js +9 -81
  30. package/dist/api/graph-api.js.map +1 -1
  31. package/dist/cli/commands/start.d.ts +7 -16
  32. package/dist/cli/commands/start.d.ts.map +1 -1
  33. package/dist/cli/commands/start.js +188 -189
  34. package/dist/cli/commands/start.js.map +1 -1
  35. package/dist/cli/config/types.d.ts.map +1 -1
  36. package/dist/cli/config/types.js +11 -4
  37. package/dist/cli/config/types.js.map +1 -1
  38. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  39. package/dist/cli/runtime/agent-loop-init.js +31 -11
  40. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  41. package/dist/cli/runtime/api-routes-init.d.ts +0 -2
  42. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  43. package/dist/cli/runtime/api-routes-init.js +9 -95
  44. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  45. package/dist/cli/runtime/api-server-init.d.ts +2 -2
  46. package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
  47. package/dist/cli/runtime/api-server-init.js +2 -2
  48. package/dist/cli/runtime/api-server-init.js.map +1 -1
  49. package/dist/cli/runtime/scheduler-init.d.ts +3 -4
  50. package/dist/cli/runtime/scheduler-init.d.ts.map +1 -1
  51. package/dist/cli/runtime/scheduler-init.js +6 -16
  52. package/dist/cli/runtime/scheduler-init.js.map +1 -1
  53. package/dist/cli/runtime/shutdown.d.ts +0 -1
  54. package/dist/cli/runtime/shutdown.d.ts.map +1 -1
  55. package/dist/cli/runtime/shutdown.js +1 -1
  56. package/dist/cli/runtime/shutdown.js.map +1 -1
  57. package/dist/cli/runtime/types.d.ts +0 -5
  58. package/dist/cli/runtime/types.d.ts.map +1 -1
  59. package/dist/concurrency/lane-manager.d.ts +1 -1
  60. package/dist/concurrency/lane-manager.d.ts.map +1 -1
  61. package/dist/concurrency/lane-manager.js +4 -2
  62. package/dist/concurrency/lane-manager.js.map +1 -1
  63. package/dist/concurrency/types.d.ts +4 -0
  64. package/dist/concurrency/types.d.ts.map +1 -1
  65. package/dist/concurrency/types.js.map +1 -1
  66. package/dist/envelope/types.d.ts +1 -1
  67. package/dist/envelope/types.d.ts.map +1 -1
  68. package/dist/envelope/types.js.map +1 -1
  69. package/dist/gateways/message-router.d.ts +15 -71
  70. package/dist/gateways/message-router.d.ts.map +1 -1
  71. package/dist/gateways/message-router.js +124 -493
  72. package/dist/gateways/message-router.js.map +1 -1
  73. package/dist/gateways/session-store.d.ts +3 -23
  74. package/dist/gateways/session-store.d.ts.map +1 -1
  75. package/dist/gateways/session-store.js +2 -64
  76. package/dist/gateways/session-store.js.map +1 -1
  77. package/dist/gateways/telegram-report-context-store.d.ts +4 -66
  78. package/dist/gateways/telegram-report-context-store.d.ts.map +1 -1
  79. package/dist/gateways/telegram-report-context-store.js +11 -235
  80. package/dist/gateways/telegram-report-context-store.js.map +1 -1
  81. package/dist/gateways/turn-contract.d.ts +7 -3
  82. package/dist/gateways/turn-contract.d.ts.map +1 -1
  83. package/dist/operator/operator-trigger-loop.d.ts +1 -12
  84. package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
  85. package/dist/operator/operator-trigger-loop.js +6 -40
  86. package/dist/operator/operator-trigger-loop.js.map +1 -1
  87. package/dist/operator/owner-event-loop.d.ts +9 -8
  88. package/dist/operator/owner-event-loop.d.ts.map +1 -1
  89. package/dist/operator/owner-event-loop.js +8 -22
  90. package/dist/operator/owner-event-loop.js.map +1 -1
  91. package/dist/operator/owner-event-policy.d.ts.map +1 -1
  92. package/dist/operator/owner-event-policy.js +0 -2
  93. package/dist/operator/owner-event-policy.js.map +1 -1
  94. package/dist/operator/owner-event-prompt.d.ts +0 -2
  95. package/dist/operator/owner-event-prompt.d.ts.map +1 -1
  96. package/dist/operator/owner-event-prompt.js +1 -8
  97. package/dist/operator/owner-event-prompt.js.map +1 -1
  98. package/dist/operator/owner-runtime-journal.d.ts +21 -0
  99. package/dist/operator/owner-runtime-journal.d.ts.map +1 -0
  100. package/dist/operator/owner-runtime-journal.js +131 -0
  101. package/dist/operator/owner-runtime-journal.js.map +1 -0
  102. package/dist/operator/owner-runtime.d.ts +32 -0
  103. package/dist/operator/owner-runtime.d.ts.map +1 -0
  104. package/dist/operator/owner-runtime.js +31 -0
  105. package/dist/operator/owner-runtime.js.map +1 -0
  106. package/dist/operator/pending-report-store.d.ts +2 -2
  107. package/dist/operator/pending-report-store.d.ts.map +1 -1
  108. package/dist/operator/pending-report-store.js +4 -1
  109. package/dist/operator/pending-report-store.js.map +1 -1
  110. package/dist/operator/report-run.d.ts +7 -10
  111. package/dist/operator/report-run.d.ts.map +1 -1
  112. package/dist/operator/report-run.js +5 -26
  113. package/dist/operator/report-run.js.map +1 -1
  114. package/dist/operator/situation-report.d.ts +25 -6
  115. package/dist/operator/situation-report.d.ts.map +1 -1
  116. package/dist/operator/situation-report.js +28 -37
  117. package/dist/operator/situation-report.js.map +1 -1
  118. package/dist/operator/task-ledger.d.ts +8 -1
  119. package/dist/operator/task-ledger.d.ts.map +1 -1
  120. package/dist/operator/task-ledger.js +51 -16
  121. package/dist/operator/task-ledger.js.map +1 -1
  122. package/dist/operator/task-list-views.d.ts.map +1 -1
  123. package/dist/operator/task-list-views.js +45 -24
  124. package/dist/operator/task-list-views.js.map +1 -1
  125. package/dist/operator/task-temporal.d.ts +3 -0
  126. package/dist/operator/task-temporal.d.ts.map +1 -1
  127. package/dist/operator/task-temporal.js +12 -0
  128. package/dist/operator/task-temporal.js.map +1 -1
  129. package/dist/operator/trigger-author.d.ts +0 -45
  130. package/dist/operator/trigger-author.d.ts.map +1 -1
  131. package/dist/operator/trigger-author.js +0 -122
  132. package/dist/operator/trigger-author.js.map +1 -1
  133. package/dist/operator/worker-run.d.ts +9 -23
  134. package/dist/operator/worker-run.d.ts.map +1 -1
  135. package/dist/operator/worker-run.js +18 -74
  136. package/dist/operator/worker-run.js.map +1 -1
  137. package/dist/operator/workorder-consumer.d.ts.map +1 -1
  138. package/dist/operator/workorder-consumer.js +7 -0
  139. package/dist/operator/workorder-consumer.js.map +1 -1
  140. package/dist/scheduler/cron-worker.d.ts +0 -3
  141. package/dist/scheduler/cron-worker.d.ts.map +1 -1
  142. package/dist/scheduler/cron-worker.js +2 -13
  143. package/dist/scheduler/cron-worker.js.map +1 -1
  144. package/dist/scheduler/heartbeat.d.ts +3 -1
  145. package/dist/scheduler/heartbeat.d.ts.map +1 -1
  146. package/dist/scheduler/heartbeat.js +13 -4
  147. package/dist/scheduler/heartbeat.js.map +1 -1
  148. package/dist/validation/types.d.ts +1 -1
  149. package/dist/validation/types.js +1 -1
  150. package/package.json +1 -1
  151. package/dist/cli/runtime/memory-agent-init.d.ts +0 -37
  152. package/dist/cli/runtime/memory-agent-init.d.ts.map +0 -1
  153. package/dist/cli/runtime/memory-agent-init.js +0 -202
  154. package/dist/cli/runtime/memory-agent-init.js.map +0 -1
  155. package/dist/gateways/owner-report-inbox.d.ts +0 -40
  156. package/dist/gateways/owner-report-inbox.d.ts.map +0 -1
  157. package/dist/gateways/owner-report-inbox.js +0 -128
  158. package/dist/gateways/owner-report-inbox.js.map +0 -1
  159. package/dist/multi-agent/memory-agent-persona.d.ts +0 -11
  160. package/dist/multi-agent/memory-agent-persona.d.ts.map +0 -1
  161. package/dist/multi-agent/memory-agent-persona.js +0 -175
  162. package/dist/multi-agent/memory-agent-persona.js.map +0 -1
  163. package/dist/operator/report-context.d.ts +0 -184
  164. package/dist/operator/report-context.d.ts.map +0 -1
  165. package/dist/operator/report-context.js +0 -1052
  166. package/dist/operator/report-context.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"graph-api.d.ts","sourceRoot":"","sources":["../../src/api/graph-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsDH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EAET,cAAc,EACd,mBAAmB,EAGnB,cAAc,EACf,MAAM,sBAAsB,CAAC;AA8C9B,QAAA,MAAM,cAAc,QAAO,MAAwD,CAAC;AACpF,QAAA,MAAM,aAAa,QAAO,MAAuD,CAAC;AAclF,QAAA,MAAM,mBAAmB,MAAM,CAAC;AA8DhC,iBAAS,4BAA4B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA4ErF;AAqFD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,iBAAS,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,CASnE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CASnC;AAED,iBAAe,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmBtE;AAqDD,iBAAe,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CA0BjD;AAWD,iBAAe,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiC5D;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAGrD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAE1E;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAG/E;AAgsBD,iBAAS,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,CAgyC7E;AAguBD,iBAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAmGnE;AAm3BD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,4BAA4B,EAC5B,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,CAAC;AAEF,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"graph-api.d.ts","sourceRoot":"","sources":["../../src/api/graph-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsDH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EAET,cAAc,EACd,mBAAmB,EAGnB,cAAc,EACf,MAAM,sBAAsB,CAAC;AA8C9B,QAAA,MAAM,cAAc,QAAO,MAAwD,CAAC;AACpF,QAAA,MAAM,aAAa,QAAO,MAAuD,CAAC;AAclF,QAAA,MAAM,mBAAmB,MAAM,CAAC;AA8DhC,iBAAS,4BAA4B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA4ErF;AAqFD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,iBAAS,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,CASnE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CASnC;AAED,iBAAe,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmBtE;AAqDD,iBAAe,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CA0BjD;AAWD,iBAAe,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiC5D;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAGrD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAE1E;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAG/E;AAgsBD,iBAAS,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,CAitC7E;AAguBD,iBAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAmGnE;AAm3BD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,4BAA4B,EAC5B,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,CAAC;AAEF,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
@@ -1290,87 +1290,15 @@ function createGraphHandler(options = {}) {
1290
1290
  }
1291
1291
  return true;
1292
1292
  }
1293
- // Route: POST /api/memory-agent/ingest - plugin-compat alias for audit-conversation
1294
- // Claude Code plugin posts hook events here; forward async with 202 accepted.
1295
- if (pathname === '/api/memory-agent/ingest' && req.method === 'POST') {
1296
- try {
1297
- const body = req.body ?? (await readBody(req));
1298
- if (!Array.isArray(body.messages) || body.messages.length === 0) {
1299
- res.writeHead(400, { 'Content-Type': 'application/json' });
1300
- res.end(JSON.stringify({ error: true, message: 'messages must be a non-empty array' }));
1301
- return true;
1302
- }
1303
- if (!options.auditConversation) {
1304
- res.writeHead(501, { 'Content-Type': 'application/json' });
1305
- res.end(JSON.stringify({ error: true, message: 'Audit conversation not available' }));
1306
- return true;
1307
- }
1308
- // Cast to unknown[] first for safe per-element validation (user-supplied HTTP input)
1309
- const rawMessages = body.messages;
1310
- const messages = rawMessages.filter((m) => m !== null &&
1311
- typeof m === 'object' &&
1312
- 'role' in m &&
1313
- typeof m.role === 'string' &&
1314
- 'content' in m &&
1315
- typeof m.content === 'string');
1316
- if (messages.length === 0) {
1317
- res.writeHead(400, { 'Content-Type': 'application/json' });
1318
- res.end(JSON.stringify({ error: true, message: 'No valid messages after filtering' }));
1319
- return true;
1320
- }
1321
- const conversation = messages.map((m) => `${m.role}: ${m.content}`).join('\n');
1322
- const scopes = (body.scopes || []);
1323
- // Fire-and-forget so hook returns quickly
1324
- options
1325
- .auditConversation({ conversation, scopes })
1326
- .catch((err) => logger.error('[MemoryAgent] ingest failed', err));
1327
- res.writeHead(202, { 'Content-Type': 'application/json' });
1328
- res.end(JSON.stringify({ accepted: true, queued: messages.length }));
1329
- }
1330
- catch (error) {
1331
- const message = error instanceof Error ? error.message : String(error);
1332
- res.writeHead(500, { 'Content-Type': 'application/json' });
1333
- res.end(JSON.stringify({ error: true, message }));
1334
- }
1335
- return true;
1336
- }
1337
- // Route: POST /api/mama/audit-conversation - ingest via memory agent (creates edges)
1338
- if (pathname === '/api/mama/audit-conversation' && req.method === 'POST') {
1339
- try {
1340
- // Express may have already parsed the body; use req.body if available
1341
- const body = req.body ?? (await readBody(req));
1342
- if (!options.auditConversation) {
1343
- res.writeHead(501, { 'Content-Type': 'application/json' });
1344
- res.end(JSON.stringify({ error: true, message: 'Audit conversation not available' }));
1345
- return true;
1346
- }
1347
- const messages = (body.messages || []);
1348
- const conversation = messages.map((m) => `${m.role}: ${m.content}`).join('\n');
1349
- const scopes = (body.scopes || []);
1350
- const candidates = body.candidates;
1351
- const ack = await options.auditConversation({ conversation, scopes, candidates });
1352
- if (!ack || (typeof ack === 'object' && ack.error)) {
1353
- const errMsg = (typeof ack === 'object' && ack.message) ||
1354
- 'Audit conversation failed';
1355
- res.writeHead(500, { 'Content-Type': 'application/json' });
1356
- res.end(JSON.stringify({ success: false, error: String(errMsg) }));
1357
- }
1358
- else if (typeof ack === 'object' &&
1359
- ack.status === 'failed') {
1360
- const reason = ack.reason || 'Audit agent returned failed status';
1361
- res.writeHead(502, { 'Content-Type': 'application/json' });
1362
- res.end(JSON.stringify({ success: false, error: String(reason), ack }));
1363
- }
1364
- else {
1365
- res.writeHead(200, { 'Content-Type': 'application/json' });
1366
- res.end(JSON.stringify({ success: true, ack }));
1367
- }
1368
- }
1369
- catch (error) {
1370
- const message = error instanceof Error ? error.message : String(error);
1371
- res.writeHead(500, { 'Content-Type': 'application/json' });
1372
- res.end(JSON.stringify({ error: true, message }));
1373
- }
1293
+ // Retired model-as-function endpoints fail explicitly. Conversation memory
1294
+ // is handled by the standing owner through mama_save, not a hidden agent.
1295
+ if ((pathname === '/api/memory-agent/ingest' || pathname === '/api/mama/audit-conversation') &&
1296
+ req.method === 'POST') {
1297
+ res.writeHead(410, { 'Content-Type': 'application/json' });
1298
+ res.end(JSON.stringify({
1299
+ error: true,
1300
+ message: 'Separate memory-agent ingestion was retired; use the One MAMA owner runtime',
1301
+ }));
1374
1302
  return true;
1375
1303
  }
1376
1304
  // Alias: POST /api/update -> /graph/update