@rubytech/create-maxy-code 0.1.158 → 0.1.159

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 (233) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts +1 -1
  3. package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/admin-conversation-purge/dist/index.js +4 -4
  5. package/payload/platform/lib/admin-conversation-purge/dist/index.js.map +1 -1
  6. package/payload/platform/lib/admin-conversation-purge/src/index.ts +5 -5
  7. package/payload/platform/lib/graph-style/dist/index.js +2 -2
  8. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  9. package/payload/platform/lib/graph-style/src/__tests__/parity.test.ts +1 -1
  10. package/payload/platform/lib/graph-style/src/index.ts +2 -2
  11. package/payload/platform/lib/graph-trash/dist/index.js +1 -1
  12. package/payload/platform/lib/graph-trash/dist/index.js.map +1 -1
  13. package/payload/platform/lib/graph-trash/src/index.ts +1 -1
  14. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js +1 -1
  15. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js.map +1 -1
  16. package/payload/platform/lib/graph-write/dist/conversation-provenance.d.ts +3 -3
  17. package/payload/platform/lib/graph-write/dist/conversation-provenance.js +5 -5
  18. package/payload/platform/lib/graph-write/dist/conversation-provenance.js.map +1 -1
  19. package/payload/platform/lib/graph-write/dist/index.js +1 -1
  20. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  21. package/payload/platform/lib/graph-write/src/__tests__/action-provenance-gate.test.ts +1 -1
  22. package/payload/platform/lib/graph-write/src/conversation-provenance.ts +8 -8
  23. package/payload/platform/lib/graph-write/src/index.ts +1 -1
  24. package/payload/platform/neo4j/schema.cypher +30 -13
  25. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  26. package/payload/platform/plugins/admin/PLUGIN.md +8 -4
  27. package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +1 -1
  28. package/payload/platform/plugins/admin/hooks/__tests__/per-turn-graph-pass-gate.test.sh +361 -0
  29. package/payload/platform/plugins/admin/hooks/__tests__/pre-turn-graph-pass.test.sh +13 -13
  30. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +1 -1
  31. package/payload/platform/plugins/admin/hooks/lib/admin-graph-pass-common.sh +102 -0
  32. package/payload/platform/plugins/admin/hooks/per-turn-graph-pass-gate.sh +106 -0
  33. package/payload/platform/plugins/admin/hooks/pre-turn-graph-pass.sh +15 -8
  34. package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +4 -4
  35. package/payload/platform/plugins/admin/mcp/dist/index.js +65 -24
  36. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  37. package/payload/platform/plugins/admin/skills/session-management/SKILL.md +2 -2
  38. package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +5 -5
  39. package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +6 -6
  40. package/payload/platform/plugins/business-assistant/references/profiling.md +1 -1
  41. package/payload/platform/plugins/contacts/PLUGIN.md +1 -1
  42. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +2 -2
  43. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -1
  44. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js +3 -3
  45. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts +1 -1
  46. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js +2 -2
  47. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts +1 -1
  48. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts.map +1 -1
  49. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js +4 -4
  50. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js.map +1 -1
  51. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js +10 -10
  52. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js.map +1 -1
  53. package/payload/platform/plugins/docs/references/admin-session.md +6 -6
  54. package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
  55. package/payload/platform/plugins/docs/references/internals.md +5 -5
  56. package/payload/platform/plugins/docs/references/plugins-guide.md +3 -3
  57. package/payload/platform/plugins/docs/references/troubleshooting.md +1 -1
  58. package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
  59. package/payload/platform/plugins/email/PLUGIN.md +15 -2
  60. package/payload/platform/plugins/email/mcp/dist/index.js +53 -0
  61. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  62. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js +2 -2
  63. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js.map +1 -1
  64. package/payload/platform/plugins/email/mcp/dist/lib/graph.js +1 -1
  65. package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -1
  66. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +1 -1
  67. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts +23 -0
  68. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts.map +1 -0
  69. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js +15 -0
  70. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js.map +1 -0
  71. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts +15 -0
  72. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts.map +1 -0
  73. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js +49 -0
  74. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js.map +1 -0
  75. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts +20 -0
  76. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -0
  77. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +86 -0
  78. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -0
  79. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -1
  80. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +32 -52
  81. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
  82. package/payload/platform/plugins/email/references/email-reference.md +19 -83
  83. package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +87 -0
  84. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  85. package/payload/platform/plugins/memory/mcp/dist/index.js +29 -29
  86. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  87. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js +2 -2
  88. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js.map +1 -1
  89. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts +3 -3
  90. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts.map +1 -1
  91. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js +6 -6
  92. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js.map +1 -1
  93. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +1 -1
  94. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -1
  95. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts +2 -2
  96. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +2 -2
  97. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +1 -1
  98. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -1
  99. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +3 -3
  100. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -1
  101. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js +2 -2
  102. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js.map +1 -1
  103. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js +8 -8
  104. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js.map +1 -1
  105. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js +2 -2
  106. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map +1 -1
  107. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts +1 -1
  108. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts.map +1 -1
  109. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js +2 -2
  110. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js.map +1 -1
  111. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts +2 -2
  112. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts.map +1 -1
  113. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js +4 -4
  114. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js.map +1 -1
  115. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts +1 -1
  116. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +8 -8
  117. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -1
  118. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts +1 -1
  119. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts.map +1 -1
  120. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js +2 -2
  121. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js.map +1 -1
  122. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts +1 -1
  123. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js +1 -1
  124. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +1 -1
  125. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +1 -1
  126. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +2 -2
  127. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +1 -1
  128. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +2 -2
  129. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  130. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +1 -1
  131. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
  132. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +11 -11
  133. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  134. package/payload/platform/plugins/memory/mcp/scripts/backfill-typed-edges.ts +1 -1
  135. package/payload/platform/plugins/memory/mcp/scripts/graph/fixture.cypher +1 -1
  136. package/payload/platform/plugins/memory/references/graph-primitives.md +1 -1
  137. package/payload/platform/plugins/memory/references/schema-base.md +4 -4
  138. package/payload/platform/plugins/memory/skills/conversational-memory/SKILL.md +1 -1
  139. package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -1
  140. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +2 -2
  141. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  142. package/payload/platform/plugins/work/mcp/dist/index.js +2 -2
  143. package/payload/platform/plugins/work/mcp/dist/index.js.map +1 -1
  144. package/payload/platform/plugins/work/mcp/dist/tools/project-create.js +6 -6
  145. package/payload/platform/plugins/work/mcp/dist/tools/project-create.js.map +1 -1
  146. package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts +1 -1
  147. package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts.map +1 -1
  148. package/payload/platform/plugins/work/mcp/dist/tools/session-list.js +1 -1
  149. package/payload/platform/plugins/work/mcp/dist/tools/session-list.js.map +1 -1
  150. package/payload/platform/plugins/x-import/references/archive-shape.md +2 -2
  151. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +3 -3
  152. package/payload/platform/scripts/admin-persist-audit.ts +18 -18
  153. package/payload/platform/scripts/identity-forbidden-token-check.mjs +2 -0
  154. package/payload/platform/scripts/seed-neo4j.sh +1 -0
  155. package/payload/platform/services/claude-session-manager/dist/http-server.js +3 -3
  156. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  157. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +3 -3
  158. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +4 -4
  159. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  160. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  161. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +2 -0
  162. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  163. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  164. package/payload/server/{chunk-AXOL2PPG.js → chunk-3TRIXQSJ.js} +101 -101
  165. package/payload/server/maxy-edge.js +1 -1
  166. package/payload/server/public/assets/{admin-3fLFD5h_.js → admin-Dal5FWaD.js} +2 -2
  167. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Breg9-99.js → architectureDiagram-Q4EWVU46-Do2zYONG.js} +1 -1
  168. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DXf1_673.js → blockDiagram-DXYQGD6D-DpIX_bRu.js} +1 -1
  169. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CSZ36W4-.js → c4Diagram-AHTNJAMY-Cz335ZSY.js} +1 -1
  170. package/payload/server/public/assets/channel-PC4_IjI1.js +1 -0
  171. package/payload/server/public/assets/{chunk-336JU56O-DsrLk2eK.js → chunk-336JU56O-Dmknn3Wo.js} +2 -2
  172. package/payload/server/public/assets/{chunk-426QAEUC-JpNfNf81.js → chunk-426QAEUC-ClfGjizN.js} +1 -1
  173. package/payload/server/public/assets/{chunk-4TB4RGXK-DmClEAD0.js → chunk-4TB4RGXK-BPKctJ5c.js} +1 -1
  174. package/payload/server/public/assets/{chunk-5FUZZQ4R-BI9blW3N.js → chunk-5FUZZQ4R-BWDCO9zw.js} +1 -1
  175. package/payload/server/public/assets/{chunk-5PVQY5BW-BbgttEFO.js → chunk-5PVQY5BW-BE34_Db0.js} +1 -1
  176. package/payload/server/public/assets/{chunk-EDXVE4YY-BX_LCFOx.js → chunk-EDXVE4YY-BysA-_6v.js} +1 -1
  177. package/payload/server/public/assets/{chunk-ENJZ2VHE-Bb7EoD0w.js → chunk-ENJZ2VHE-BMVyMsqA.js} +1 -1
  178. package/payload/server/public/assets/{chunk-ICPOFSXX-DH8uQk-s.js → chunk-ICPOFSXX-C5KRdLV4.js} +1 -1
  179. package/payload/server/public/assets/{chunk-OYMX7WX6-FH5kgXsw.js → chunk-OYMX7WX6-DVZD-AVc.js} +1 -1
  180. package/payload/server/public/assets/{chunk-U2HBQHQK-D_ljlkHr.js → chunk-U2HBQHQK-DYmQdx8x.js} +1 -1
  181. package/payload/server/public/assets/{chunk-X2U36JSP-BX3EmZvm.js → chunk-X2U36JSP-DrZenIl3.js} +1 -1
  182. package/payload/server/public/assets/{chunk-YZCP3GAM-Vu7-E93h.js → chunk-YZCP3GAM-CDuGbvMq.js} +1 -1
  183. package/payload/server/public/assets/{chunk-ZZ45TVLE-CwjhNPX5.js → chunk-ZZ45TVLE-COztbiu5.js} +1 -1
  184. package/payload/server/public/assets/classDiagram-6PBFFD2Q-B_pMa-SX.js +1 -0
  185. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BdBAgF20.js +1 -0
  186. package/payload/server/public/assets/clone-CkNt9L9r.js +1 -0
  187. package/payload/server/public/assets/{dagre-Ce6gsj0C.js → dagre-Cv9Ib2OM.js} +1 -1
  188. package/payload/server/public/assets/{dagre-KV5264BT-BaMGpsoy.js → dagre-KV5264BT-CoEd61KZ.js} +1 -1
  189. package/payload/server/public/assets/{data-BHASh0_Y.js → data-DbSORCl4.js} +1 -1
  190. package/payload/server/public/assets/{diagram-5BDNPKRD-CHEE9rjq.js → diagram-5BDNPKRD-WXNzw3uW.js} +1 -1
  191. package/payload/server/public/assets/{diagram-G4DWMVQ6-C98sZLW1.js → diagram-G4DWMVQ6-C6IuQ2VV.js} +1 -1
  192. package/payload/server/public/assets/{diagram-MMDJMWI5-DNvMGsTZ.js → diagram-MMDJMWI5-CdJdir5A.js} +1 -1
  193. package/payload/server/public/assets/{diagram-TYMM5635-Cdte4IBa.js → diagram-TYMM5635-DxWKQH5T.js} +1 -1
  194. package/payload/server/public/assets/{erDiagram-SMLLAGMA-C9VZsWXK.js → erDiagram-SMLLAGMA-C9fvs33K.js} +1 -1
  195. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-tuP5fzzR.js → flowDiagram-DWJPFMVM-BO7Yrbqv.js} +1 -1
  196. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-SJgRPUwx.js → ganttDiagram-T4ZO3ILL-CQJyWBZq.js} +1 -1
  197. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DU_cI_50.js → gitGraphDiagram-UUTBAWPF-DZfQHrYw.js} +1 -1
  198. package/payload/server/public/assets/{graph-labels-DXlmm1og.js → graph-labels-BBB5jsZk.js} +1 -1
  199. package/payload/server/public/assets/{graph-BhEI09tF.js → graph-ys_joP2o.js} +1 -1
  200. package/payload/server/public/assets/{graphlib-D_nAsvmx.js → graphlib-C40H-Q5E.js} +1 -1
  201. package/payload/server/public/assets/{infoDiagram-42DDH7IO-Cj2Y19m6.js → infoDiagram-42DDH7IO-CakfV5f9.js} +1 -1
  202. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DMc1xq1y.js → ishikawaDiagram-UXIWVN3A-CPuBPyfa.js} +1 -1
  203. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-C4CRAQma.js → journeyDiagram-VCZTEJTY-zpZm2Mmo.js} +1 -1
  204. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-CTr4AldU.js → kanban-definition-6JOO6SKY-DfJduQCo.js} +1 -1
  205. package/payload/server/public/assets/{line-Btlm_IAl.js → line-BpYQqO5R.js} +1 -1
  206. package/payload/server/public/assets/{mermaid-parser.core-DXFdj_y1.js → mermaid-parser.core-C5Mwi14D.js} +1 -1
  207. package/payload/server/public/assets/{mermaid.core-DFBhoCr5.js → mermaid.core-D8qBtvvT.js} +3 -3
  208. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-r9gVQybo.js → mindmap-definition-QFDTVHPH-Bli9JhIN.js} +1 -1
  209. package/payload/server/public/assets/{page-CDWu1Aft.js → page--bl5Y7ZI.js} +2 -2
  210. package/payload/server/public/assets/page-CwmZ76U7.js +1 -0
  211. package/payload/server/public/assets/{pieDiagram-DEJITSTG-CHKZjSaH.js → pieDiagram-DEJITSTG-MsLXTSLg.js} +1 -1
  212. package/payload/server/public/assets/{public-DyGWgfaZ.js → public-DltgEfA9.js} +2 -2
  213. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CSGR1HJr.js → quadrantDiagram-34T5L4WZ-De1sh2K0.js} +1 -1
  214. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DZ6hX9D6.js → requirementDiagram-MS252O5E-D5Sfg1t_.js} +1 -1
  215. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DbZBKh0m.js → sankeyDiagram-XADWPNL6-DHA3LIbv.js} +1 -1
  216. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BHHpb8dt.js → sequenceDiagram-FGHM5R23-BE_QlG1B.js} +1 -1
  217. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-DQ1jiLB4.js → stateDiagram-FHFEXIEX-NIwp3F4u.js} +1 -1
  218. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-pfk2F6st.js +1 -0
  219. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BlGiEU7p.js → timeline-definition-GMOUNBTQ-CPE9jyDF.js} +1 -1
  220. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-DmEH-hsB.js → vennDiagram-DHZGUBPP-CKfoyYmH.js} +1 -1
  221. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-C7KJJ40d.js → wardleyDiagram-NUSXRM2D-B9yJek-o.js} +1 -1
  222. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-JDnusCaa.js → xychartDiagram-5P7HB3ND-DuCcSLqX.js} +1 -1
  223. package/payload/server/public/data.html +3 -3
  224. package/payload/server/public/graph.html +3 -3
  225. package/payload/server/public/index.html +4 -4
  226. package/payload/server/public/public.html +1 -1
  227. package/payload/server/server.js +133 -133
  228. package/payload/server/public/assets/channel-BmZnt3PP.js +0 -1
  229. package/payload/server/public/assets/classDiagram-6PBFFD2Q-kmMLFUpV.js +0 -1
  230. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BV7Ae8ct.js +0 -1
  231. package/payload/server/public/assets/clone-B5eqoN9I.js +0 -1
  232. package/payload/server/public/assets/page-cyvshX4Z.js +0 -1
  233. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CByT2RzF.js +0 -1
@@ -3790,13 +3790,13 @@ function getUserNameForSession(cacheKey2) {
3790
3790
  function getRoleForSession(cacheKey2) {
3791
3791
  return sessionStore.get(cacheKey2)?.role;
3792
3792
  }
3793
- function getConversationIdForSession(cacheKey2) {
3794
- return sessionStore.get(cacheKey2)?.conversationId;
3793
+ function getSessionIdForSession(cacheKey2) {
3794
+ return sessionStore.get(cacheKey2)?.sessionId;
3795
3795
  }
3796
- function setConversationIdForSession(cacheKey2, conversationId) {
3796
+ function setSessionIdForSession(cacheKey2, sessionId) {
3797
3797
  const session = sessionStore.get(cacheKey2);
3798
3798
  if (!session) return false;
3799
- session.conversationId = conversationId;
3799
+ session.sessionId = sessionId;
3800
3800
  return true;
3801
3801
  }
3802
3802
  function setWantsPriorConversation(cacheKey2) {
@@ -3806,7 +3806,7 @@ function setWantsPriorConversation(cacheKey2) {
3806
3806
  function unregisterSession(cacheKey2) {
3807
3807
  return sessionStore.delete(cacheKey2);
3808
3808
  }
3809
- function getSessionKeyByConversationId(_conversationId) {
3809
+ function getSessionKeyBySessionId(_sessionId) {
3810
3810
  return void 0;
3811
3811
  }
3812
3812
 
@@ -4127,35 +4127,35 @@ async function embed(text) {
4127
4127
  return data.embeddings[0];
4128
4128
  }
4129
4129
  var sessionStoreRef = null;
4130
- function getCachedConversationId(cacheKey2) {
4131
- return sessionStoreRef?.get(cacheKey2)?.conversationId;
4130
+ function getCachedSessionId(cacheKey2) {
4131
+ return sessionStoreRef?.get(cacheKey2)?.sessionId;
4132
4132
  }
4133
- function cacheConversationId(cacheKey2, conversationId) {
4133
+ function cacheSessionId(cacheKey2, sessionId) {
4134
4134
  const session = sessionStoreRef?.get(cacheKey2);
4135
4135
  if (session) {
4136
- session.conversationId = conversationId;
4136
+ session.sessionId = sessionId;
4137
4137
  }
4138
4138
  }
4139
4139
  var GREETING_DIRECTIVE = "[New session. Greet the visitor.]";
4140
4140
  async function ensureConversation(accountId, agentType, cacheKey2, visitorId, agentSlug, userId, channelOverride, channelAddressOverride) {
4141
- const cached = getCachedConversationId(cacheKey2);
4142
- if (cached) return { conversationId: cached, created: false };
4143
- const conversationId = randomUUID();
4141
+ const cached = getCachedSessionId(cacheKey2);
4142
+ if (cached) return { sessionId: cached, created: false };
4143
+ const sessionId = randomUUID();
4144
4144
  const channel = channelOverride ?? (cacheKey2.startsWith("whatsapp:") ? "whatsapp" : cacheKey2.startsWith("telegram:") ? "telegram" : "webchat");
4145
- const channelAddress = channelAddressOverride ?? (cacheKey2.startsWith("whatsapp:") ? cacheKey2.slice("whatsapp:".length) : cacheKey2.startsWith("telegram:") ? cacheKey2.slice("telegram:".length) : conversationId);
4145
+ const channelAddress = channelAddressOverride ?? (cacheKey2.startsWith("whatsapp:") ? cacheKey2.slice("whatsapp:".length) : cacheKey2.startsWith("telegram:") ? cacheKey2.slice("telegram:".length) : sessionId);
4146
4146
  const conversationSublabel = agentType === "admin" ? "AdminConversation" : "PublicConversation";
4147
4147
  const handlerSlug = agentSlug ?? (agentType === "admin" ? "admin" : null);
4148
4148
  const wantsHandledByEdge = !!handlerSlug;
4149
4149
  const handledByClause = wantsHandledByEdge ? `WITH c, created
4150
4150
  OPTIONAL MATCH (a:Agent {accountId: $accountId, slug: $handlerSlug})
4151
4151
  FOREACH (_ IN CASE WHEN a IS NULL THEN [] ELSE [1] END | MERGE (c)-[:HANDLED_BY]->(a))
4152
- RETURN c.conversationId AS conversationId, created AS created, a IS NOT NULL AS handledBy` : `RETURN c.conversationId AS conversationId, created AS created, false AS handledBy`;
4152
+ RETURN c.sessionId AS sessionId, created AS created, a IS NOT NULL AS handledBy` : `RETURN c.sessionId AS sessionId, created AS created, false AS handledBy`;
4153
4153
  const session = getSession();
4154
4154
  try {
4155
4155
  const result = await session.run(
4156
4156
  `OPTIONAL MATCH (prior:Conversation {accountId: $accountId, channel: $channel, channelAddress: $channelAddress})
4157
- WITH prior, coalesce(prior.conversationId, $conversationId) AS finalConvId, prior IS NULL AS created
4158
- MERGE (c:Conversation {conversationId: finalConvId})
4157
+ WITH prior, coalesce(prior.sessionId, $sessionId) AS finalConvId, prior IS NULL AS created
4158
+ MERGE (c:Conversation {sessionId: finalConvId})
4159
4159
  ON CREATE SET
4160
4160
  c:${conversationSublabel},
4161
4161
  c.accountId = $accountId,
@@ -4171,7 +4171,7 @@ async function ensureConversation(accountId, agentType, cacheKey2, visitorId, ag
4171
4171
  c.updatedAt = datetime()
4172
4172
  ${handledByClause}`,
4173
4173
  {
4174
- conversationId,
4174
+ sessionId,
4175
4175
  accountId,
4176
4176
  agentType,
4177
4177
  channel,
@@ -4182,25 +4182,25 @@ async function ensureConversation(accountId, agentType, cacheKey2, visitorId, ag
4182
4182
  ...userId ? { userId } : {}
4183
4183
  }
4184
4184
  );
4185
- const id = result.records[0]?.get("conversationId");
4185
+ const id = result.records[0]?.get("sessionId");
4186
4186
  const created = result.records[0]?.get("created") === true;
4187
4187
  if (id) {
4188
- cacheConversationId(cacheKey2, id);
4189
- console.error(`[session] ${(/* @__PURE__ */ new Date()).toISOString()} conversation attributed: conversationId=${id.slice(0, 8)}\u2026 userId=${userId ?? "none"} ${agentType}/${accountId.slice(0, 8)}\u2026 sublabel=${conversationSublabel}`);
4188
+ cacheSessionId(cacheKey2, id);
4189
+ console.error(`[session] ${(/* @__PURE__ */ new Date()).toISOString()} conversation attributed: sessionId=${id.slice(0, 8)}\u2026 userId=${userId ?? "none"} ${agentType}/${accountId.slice(0, 8)}\u2026 sublabel=${conversationSublabel}`);
4190
4190
  if (wantsHandledByEdge) {
4191
4191
  const handled = result.records[0]?.get("handledBy");
4192
4192
  const id8 = id.slice(0, 8);
4193
4193
  if (handled === true) {
4194
- console.error(`[agent-graph] handled-by-write conversationId=${id8} slug=${handlerSlug}`);
4194
+ console.error(`[agent-graph] handled-by-write sessionId=${id8} slug=${handlerSlug}`);
4195
4195
  } else {
4196
- console.error(`[agent-graph] handled-by-skip reason=no-agent-node conversationId=${id8} slug=${handlerSlug}`);
4196
+ console.error(`[agent-graph] handled-by-skip reason=no-agent-node sessionId=${id8} slug=${handlerSlug}`);
4197
4197
  }
4198
4198
  }
4199
4199
  }
4200
- return { conversationId: id ?? null, created };
4200
+ return { sessionId: id ?? null, created };
4201
4201
  } catch (err) {
4202
4202
  console.error(`[persist] ensureConversation failed: ${err instanceof Error ? err.message : String(err)}`);
4203
- return { conversationId: null, created: false };
4203
+ return { sessionId: null, created: false };
4204
4204
  } finally {
4205
4205
  await session.close();
4206
4206
  }
@@ -4253,7 +4253,7 @@ async function fetchBranding(accountId) {
4253
4253
  }
4254
4254
  var SUMMARY_MAX_LEN = 200;
4255
4255
  var persistMessageLocks = /* @__PURE__ */ new Map();
4256
- async function persistMessage(conversationId, role, content, accountId, tokens, createdAt, sender, components, attachments) {
4256
+ async function persistMessage(sessionId, role, content, accountId, tokens, createdAt, sender, components, attachments) {
4257
4257
  if (!content) return null;
4258
4258
  const messageId = randomUUID();
4259
4259
  const summary = role === "user" ? content.slice(0, SUMMARY_MAX_LEN).trim() : "";
@@ -4263,19 +4263,19 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4263
4263
  } catch (err) {
4264
4264
  console.error(`[persist] Embedding failed, storing without: ${err instanceof Error ? err.message : String(err)}`);
4265
4265
  }
4266
- const prev = persistMessageLocks.get(conversationId);
4266
+ const prev = persistMessageLocks.get(sessionId);
4267
4267
  const waited = prev !== void 0;
4268
4268
  let release;
4269
4269
  const mine = new Promise((resolve6) => {
4270
4270
  release = resolve6;
4271
4271
  });
4272
4272
  const chained = (prev ?? Promise.resolve()).then(() => mine);
4273
- persistMessageLocks.set(conversationId, chained);
4273
+ persistMessageLocks.set(sessionId, chained);
4274
4274
  await prev;
4275
4275
  const session = getSession();
4276
4276
  try {
4277
4277
  const result = await session.run(
4278
- `MATCH (c:Conversation {conversationId: $conversationId})
4278
+ `MATCH (c:Conversation {sessionId: $sessionId})
4279
4279
  OPTIONAL MATCH (tail:Message)-[:PART_OF]->(c)
4280
4280
  WHERE NOT (tail)-[:NEXT]->(:Message)
4281
4281
  AND (tail:UserMessage OR tail:AssistantMessage)
@@ -4294,7 +4294,7 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4294
4294
  WITH c, tail, (c.summary IS NULL AND $role = 'user' AND $summary <> '') AS summarySetThisWrite
4295
4295
  CREATE (m:Message:${role === "user" ? "UserMessage" : "AssistantMessage"} {
4296
4296
  messageId: $messageId,
4297
- conversationId: $conversationId,
4297
+ sessionId: $sessionId,
4298
4298
  accountId: $accountId,
4299
4299
  role: $role,
4300
4300
  content: $content,
@@ -4317,7 +4317,7 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4317
4317
  FOREACH (comp IN $components |
4318
4318
  CREATE (m)-[:HAS_COMPONENT]->(:Component {
4319
4319
  componentId: comp.componentId,
4320
- conversationId: $conversationId,
4320
+ sessionId: $sessionId,
4321
4321
  accountId: $accountId,
4322
4322
  messageId: $messageId,
4323
4323
  name: comp.name,
@@ -4361,7 +4361,7 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4361
4361
  FOREACH (att IN $attachments |
4362
4362
  CREATE (m)-[:HAS_ATTACHMENT]->(:Attachment {
4363
4363
  attachmentId: att.attachmentId,
4364
- conversationId: $conversationId,
4364
+ sessionId: $sessionId,
4365
4365
  accountId: $accountId,
4366
4366
  messageId: $messageId,
4367
4367
  filename: att.filename,
@@ -4377,7 +4377,7 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4377
4377
  size([(m2:Message)-[:PART_OF]->(c) | m2]) AS chainLen`,
4378
4378
  {
4379
4379
  messageId,
4380
- conversationId,
4380
+ sessionId,
4381
4381
  accountId,
4382
4382
  role,
4383
4383
  content,
@@ -4422,7 +4422,7 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4422
4422
  }
4423
4423
  );
4424
4424
  if (result.records.length === 0) {
4425
- console.error(`[persist] Neo4j write skipped \u2014 conversation not found: ${conversationId.slice(0, 8)}\u2026`);
4425
+ console.error(`[persist] Neo4j write skipped \u2014 conversation not found: ${sessionId.slice(0, 8)}\u2026`);
4426
4426
  return null;
4427
4427
  }
4428
4428
  const record = result.records[0];
@@ -4431,9 +4431,9 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4431
4431
  const chainLenRaw = record.get("chainLen");
4432
4432
  const chainLen = typeof chainLenRaw === "bigint" ? Number(chainLenRaw) : typeof chainLenRaw?.toNumber === "function" ? chainLenRaw.toNumber() : Number(chainLenRaw ?? 0);
4433
4433
  const messageSublabel = role === "user" ? "UserMessage" : "AssistantMessage";
4434
- console.error(`[neo4j-store] append-message conversationId=${conversationId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 prev=${prevMessageId ? prevMessageId.slice(0, 8) + "\u2026" : "null"} chainLen=${chainLen} waited=${waited} sublabel=${messageSublabel}`);
4434
+ console.error(`[neo4j-store] append-message sessionId=${sessionId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 prev=${prevMessageId ? prevMessageId.slice(0, 8) + "\u2026" : "null"} chainLen=${chainLen} waited=${waited} sublabel=${messageSublabel}`);
4435
4435
  if (summarySetThisWrite) {
4436
- console.error(`[neo4j-store] conversation-summary-set conversationId=${conversationId.slice(0, 8)}\u2026 len=${summary.length}`);
4436
+ console.error(`[neo4j-store] conversation-summary-set sessionId=${sessionId.slice(0, 8)}\u2026 len=${summary.length}`);
4437
4437
  }
4438
4438
  const componentList = components ?? [];
4439
4439
  if (componentList.length > 0) {
@@ -4441,10 +4441,10 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4441
4441
  const expectedComponentEdges = componentList.length;
4442
4442
  const baseEdges = relsCreated - expectedComponentEdges;
4443
4443
  if (baseEdges < 1) {
4444
- console.error(`[neo4j-store] persist-component WARN conversationId=${conversationId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 relsCreated=${relsCreated} expected\u2265${1 + expectedComponentEdges} \u2014 component edges may not have been created`);
4444
+ console.error(`[neo4j-store] persist-component WARN sessionId=${sessionId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 relsCreated=${relsCreated} expected\u2265${1 + expectedComponentEdges} \u2014 component edges may not have been created`);
4445
4445
  }
4446
4446
  for (const comp of componentList) {
4447
- console.error(`[neo4j-store] persist-component conversationId=${conversationId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 componentId=${comp.componentId.slice(0, 8)}\u2026 name=${comp.name} dataLen=${comp.data.length} ordinal=${comp.ordinal} textOffset=${comp.textOffset}`);
4447
+ console.error(`[neo4j-store] persist-component sessionId=${sessionId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 componentId=${comp.componentId.slice(0, 8)}\u2026 name=${comp.name} dataLen=${comp.data.length} ordinal=${comp.ordinal} textOffset=${comp.textOffset}`);
4448
4448
  }
4449
4449
  }
4450
4450
  const attachmentList = attachments ?? [];
@@ -4454,51 +4454,51 @@ async function persistMessage(conversationId, role, content, accountId, tokens,
4454
4454
  const expectedComponentEdges = (components ?? []).length;
4455
4455
  const baseEdges = relsCreated - expectedComponentEdges - expectedAttachmentEdges;
4456
4456
  if (baseEdges < 1) {
4457
- console.error(`[neo4j-store] persist-attachment WARN conversationId=${conversationId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 relsCreated=${relsCreated} expected\u2265${1 + expectedComponentEdges + expectedAttachmentEdges} \u2014 attachment edges may not have been created`);
4457
+ console.error(`[neo4j-store] persist-attachment WARN sessionId=${sessionId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 relsCreated=${relsCreated} expected\u2265${1 + expectedComponentEdges + expectedAttachmentEdges} \u2014 attachment edges may not have been created`);
4458
4458
  }
4459
4459
  for (const att of attachmentList) {
4460
- console.error(`[neo4j-store] persist-attachment conversationId=${conversationId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 attachmentId=${att.attachmentId.slice(0, 8)}\u2026 filename=${att.filename} mimeType=${att.mimeType} sizeBytes=${att.sizeBytes} ordinal=${att.ordinal}`);
4460
+ console.error(`[neo4j-store] persist-attachment sessionId=${sessionId.slice(0, 8)}\u2026 messageId=${messageId.slice(0, 8)}\u2026 attachmentId=${att.attachmentId.slice(0, 8)}\u2026 filename=${att.filename} mimeType=${att.mimeType} sizeBytes=${att.sizeBytes} ordinal=${att.ordinal}`);
4461
4461
  }
4462
4462
  }
4463
- console.error(`[persist] ${(/* @__PURE__ */ new Date()).toISOString()} conversationId=${conversationId.slice(0, 8)}\u2026 role=${role} len=${content.length}${sender ? ` sender=${sender.displayName}` : ""}`);
4463
+ console.error(`[persist] ${(/* @__PURE__ */ new Date()).toISOString()} sessionId=${sessionId.slice(0, 8)}\u2026 role=${role} len=${content.length}${sender ? ` sender=${sender.displayName}` : ""}`);
4464
4464
  return messageId;
4465
4465
  } catch (err) {
4466
4466
  console.error(`[persist] Neo4j write failed: ${err instanceof Error ? err.message : String(err)}`);
4467
4467
  return null;
4468
4468
  } finally {
4469
4469
  release();
4470
- if (persistMessageLocks.get(conversationId) === chained) {
4471
- persistMessageLocks.delete(conversationId);
4470
+ if (persistMessageLocks.get(sessionId) === chained) {
4471
+ persistMessageLocks.delete(sessionId);
4472
4472
  }
4473
4473
  await session.close();
4474
4474
  }
4475
4475
  }
4476
- async function getAgentSessionIdForConversation(conversationId) {
4476
+ async function getAgentSessionIdForConversation(sessionId) {
4477
4477
  const session = getSession();
4478
4478
  try {
4479
4479
  const result = await session.run(
4480
- `MATCH (c:Conversation {conversationId: $conversationId})
4480
+ `MATCH (c:Conversation {sessionId: $sessionId})
4481
4481
  RETURN c.agentSessionId AS agentSessionId`,
4482
- { conversationId }
4482
+ { sessionId }
4483
4483
  );
4484
4484
  const value = result.records[0]?.get("agentSessionId");
4485
4485
  return typeof value === "string" && value.length > 0 ? value : null;
4486
4486
  } catch (err) {
4487
- console.error(`[persist] agent-session-id read failed convId=${conversationId.slice(0, 8)}\u2026 error=${err instanceof Error ? err.message : String(err)}`);
4487
+ console.error(`[persist] agent-session-id read failed convId=${sessionId.slice(0, 8)}\u2026 error=${err instanceof Error ? err.message : String(err)}`);
4488
4488
  return null;
4489
4489
  } finally {
4490
4490
  await session.close();
4491
4491
  }
4492
4492
  }
4493
- async function getRecentMessages(conversationId, limit = 50) {
4493
+ async function getRecentMessages(sessionId, limit = 50) {
4494
4494
  const session = getSession();
4495
4495
  try {
4496
4496
  const result = await session.run(
4497
- `MATCH (tail:Message {conversationId: $conversationId})
4497
+ `MATCH (tail:Message {sessionId: $sessionId})
4498
4498
  WHERE NOT (tail)-[:NEXT]->(:Message)
4499
4499
  WITH tail ORDER BY tail.createdAt DESC LIMIT 1
4500
4500
  MATCH path = (m:Message)-[:NEXT*0..]->(tail)
4501
- WHERE m.conversationId = $conversationId
4501
+ WHERE m.sessionId = $sessionId
4502
4502
  AND length(path) < $limit
4503
4503
  WITH m, length(path) AS depthFromTail
4504
4504
  OPTIONAL MATCH (m)-[:HAS_COMPONENT]->(c:Component)
@@ -4512,7 +4512,7 @@ async function getRecentMessages(conversationId, limit = 50) {
4512
4512
  RETURN m.messageId AS messageId, m.role AS role, m.content AS content,
4513
4513
  m.createdAt AS createdAt, components, attachments
4514
4514
  ORDER BY depthFromTail DESC`,
4515
- { conversationId, limit: neo4j.int(limit) }
4515
+ { sessionId, limit: neo4j.int(limit) }
4516
4516
  );
4517
4517
  return result.records.map((r) => {
4518
4518
  const rawComponents = r.get("components") ?? [];
@@ -4555,13 +4555,13 @@ async function getRecentMessages(conversationId, limit = 50) {
4555
4555
  await session.close();
4556
4556
  }
4557
4557
  }
4558
- async function verifyConversationOwnership(conversationId, accountId) {
4558
+ async function verifyConversationOwnership(sessionId, accountId) {
4559
4559
  const session = getSession();
4560
4560
  try {
4561
4561
  const result = await session.run(
4562
- `MATCH (c:Conversation {conversationId: $conversationId, accountId: $accountId})
4563
- RETURN c.conversationId AS id LIMIT 1`,
4564
- { conversationId, accountId }
4562
+ `MATCH (c:Conversation {sessionId: $sessionId, accountId: $accountId})
4563
+ RETURN c.sessionId AS id LIMIT 1`,
4564
+ { sessionId, accountId }
4565
4565
  );
4566
4566
  return result.records.length > 0;
4567
4567
  } catch (err) {
@@ -4571,13 +4571,13 @@ async function verifyConversationOwnership(conversationId, accountId) {
4571
4571
  await session.close();
4572
4572
  }
4573
4573
  }
4574
- async function getConversationOwner(conversationId) {
4574
+ async function getConversationOwner(sessionId) {
4575
4575
  const session = getSession();
4576
4576
  try {
4577
4577
  const result = await session.run(
4578
- `MATCH (c:Conversation {conversationId: $conversationId})
4578
+ `MATCH (c:Conversation {sessionId: $sessionId})
4579
4579
  RETURN c.accountId AS accountId, c.userId AS userId LIMIT 1`,
4580
- { conversationId }
4580
+ { sessionId }
4581
4581
  );
4582
4582
  const record = result.records[0];
4583
4583
  if (!record) return null;
@@ -4592,13 +4592,13 @@ async function getConversationOwner(conversationId) {
4592
4592
  await session.close();
4593
4593
  }
4594
4594
  }
4595
- async function verifyAndGetConversationUpdatedAt(conversationId, accountId) {
4595
+ async function verifyAndGetConversationUpdatedAt(sessionId, accountId) {
4596
4596
  const session = getSession();
4597
4597
  try {
4598
4598
  const result = await session.run(
4599
- `MATCH (c:Conversation {conversationId: $conversationId, accountId: $accountId})
4599
+ `MATCH (c:Conversation {sessionId: $sessionId, accountId: $accountId})
4600
4600
  RETURN toString(c.updatedAt) AS updatedAt LIMIT 1`,
4601
- { conversationId, accountId }
4601
+ { sessionId, accountId }
4602
4602
  );
4603
4603
  const record = result.records[0];
4604
4604
  return record ? record.get("updatedAt") : null;
@@ -4615,7 +4615,7 @@ async function listAdminSessions(accountId, userId, limit = 20) {
4615
4615
  const result = await session.run(
4616
4616
  `MATCH (c:Conversation {accountId: $accountId, agentType: 'admin', userId: $userId})
4617
4617
  WHERE NOT c:Trashed
4618
- RETURN c.conversationId AS conversationId,
4618
+ RETURN c.sessionId AS sessionId,
4619
4619
  c.name AS name,
4620
4620
  c.updatedAt AS updatedAt,
4621
4621
  c.channel AS channel
@@ -4624,7 +4624,7 @@ async function listAdminSessions(accountId, userId, limit = 20) {
4624
4624
  { accountId, userId, limit: neo4j.int(limit) }
4625
4625
  );
4626
4626
  return result.records.map((r) => ({
4627
- conversationId: r.get("conversationId"),
4627
+ sessionId: r.get("sessionId"),
4628
4628
  name: r.get("name"),
4629
4629
  updatedAt: String(r.get("updatedAt")),
4630
4630
  channel: r.get("channel")
@@ -4636,86 +4636,86 @@ async function listAdminSessions(accountId, userId, limit = 20) {
4636
4636
  await session.close();
4637
4637
  }
4638
4638
  }
4639
- async function deleteConversation(conversationId) {
4639
+ async function deleteConversation(sessionId) {
4640
4640
  const session = getSession();
4641
4641
  try {
4642
4642
  const result = await session.run(
4643
- `MATCH (c:Conversation {conversationId: $conversationId})
4643
+ `MATCH (c:Conversation {sessionId: $sessionId})
4644
4644
  OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
4645
4645
  OPTIONAL MATCH (m)-[:HAS_COMPONENT]->(comp:Component)
4646
4646
  OPTIONAL MATCH (m)-[:HAS_ATTACHMENT]->(att:Attachment)
4647
4647
  OPTIONAL MATCH (c)-[:HAS_TRANSCRIPT]->(t:ClaudeSession)
4648
4648
  DETACH DELETE att, comp, m, t, c
4649
4649
  RETURN count(c) AS deleted`,
4650
- { conversationId }
4650
+ { sessionId }
4651
4651
  );
4652
4652
  const deleted = result.records[0]?.get("deleted");
4653
4653
  const count = typeof deleted === "object" && deleted !== null ? Number(deleted) : Number(deleted ?? 0);
4654
4654
  const found = count > 0;
4655
- console.error(`[persist] deleteConversation ${conversationId.slice(0, 8)}\u2026: ${found ? "deleted" : "not found"}`);
4655
+ console.error(`[persist] deleteConversation ${sessionId.slice(0, 8)}\u2026: ${found ? "deleted" : "not found"}`);
4656
4656
  return { found };
4657
4657
  } finally {
4658
4658
  await session.close();
4659
4659
  }
4660
4660
  }
4661
- async function linkConversationTranscript(conversationId, claudeSessionId, accountId) {
4662
- if (!conversationId || !claudeSessionId || !accountId) {
4663
- console.error(`[transcript-link] schema-violation conversationId=${conversationId ? "set" : "EMPTY"} claudeSessionId=${claudeSessionId ? "set" : "EMPTY"} accountId=${accountId ? "set" : "EMPTY"}`);
4661
+ async function linkConversationTranscript(sessionId, claudeSessionId, accountId) {
4662
+ if (!sessionId || !claudeSessionId || !accountId) {
4663
+ console.error(`[transcript-link] schema-violation sessionId=${sessionId ? "set" : "EMPTY"} claudeSessionId=${claudeSessionId ? "set" : "EMPTY"} accountId=${accountId ? "set" : "EMPTY"}`);
4664
4664
  return { linked: false };
4665
4665
  }
4666
4666
  const session = getSession();
4667
4667
  try {
4668
4668
  const result = await session.run(
4669
- `MATCH (c:Conversation {conversationId: $conversationId, accountId: $accountId})
4669
+ `MATCH (c:Conversation {sessionId: $sessionId, accountId: $accountId})
4670
4670
  MERGE (c)-[:HAS_TRANSCRIPT]->(t:ClaudeSession {claudeSessionId: $claudeSessionId})
4671
4671
  ON CREATE SET
4672
4672
  t.accountId = $accountId,
4673
4673
  t.createdAt = datetime()
4674
4674
  RETURN count(t) AS linked`,
4675
- { conversationId, claudeSessionId, accountId }
4675
+ { sessionId, claudeSessionId, accountId }
4676
4676
  );
4677
4677
  const linked = Number(result.records[0]?.get("linked") ?? 0) > 0;
4678
4678
  if (!linked) {
4679
- console.error(`[transcript-link] convId=${conversationId.slice(0, 8)}\u2026 claudeSessionId=${claudeSessionId.slice(0, 8)}\u2026 status=skipped reason=conversation-not-found`);
4679
+ console.error(`[transcript-link] convId=${sessionId.slice(0, 8)}\u2026 claudeSessionId=${claudeSessionId.slice(0, 8)}\u2026 status=skipped reason=conversation-not-found`);
4680
4680
  }
4681
4681
  return { linked };
4682
4682
  } catch (err) {
4683
- console.error(`[transcript-link] convId=${conversationId.slice(0, 8)}\u2026 claudeSessionId=${claudeSessionId.slice(0, 8)}\u2026 status=failed error=${err instanceof Error ? err.message : String(err)}`);
4683
+ console.error(`[transcript-link] convId=${sessionId.slice(0, 8)}\u2026 claudeSessionId=${claudeSessionId.slice(0, 8)}\u2026 status=failed error=${err instanceof Error ? err.message : String(err)}`);
4684
4684
  return { linked: false };
4685
4685
  } finally {
4686
4686
  await session.close();
4687
4687
  }
4688
4688
  }
4689
- async function getConversationClaudeSessionIds(conversationId, accountId) {
4689
+ async function getConversationClaudeSessionIds(sessionId, accountId) {
4690
4690
  const session = getSession();
4691
4691
  try {
4692
4692
  const result = await session.run(
4693
- `MATCH (c:Conversation {conversationId: $conversationId, accountId: $accountId})-[:HAS_TRANSCRIPT]->(t:ClaudeSession)
4693
+ `MATCH (c:Conversation {sessionId: $sessionId, accountId: $accountId})-[:HAS_TRANSCRIPT]->(t:ClaudeSession)
4694
4694
  RETURN t.claudeSessionId AS claudeSessionId
4695
4695
  ORDER BY t.createdAt ASC`,
4696
- { conversationId, accountId }
4696
+ { sessionId, accountId }
4697
4697
  );
4698
4698
  return result.records.map((r) => r.get("claudeSessionId")).filter((v) => typeof v === "string" && v.length > 0);
4699
4699
  } finally {
4700
4700
  await session.close();
4701
4701
  }
4702
4702
  }
4703
- async function getConversationIdByClaudeSessionId(claudeSessionId, accountId) {
4703
+ async function getSessionIdByClaudeSessionId(claudeSessionId, accountId) {
4704
4704
  const session = getSession();
4705
4705
  try {
4706
4706
  const result = await session.run(
4707
4707
  `MATCH (c:Conversation {accountId: $accountId})-[:HAS_TRANSCRIPT]->(t:ClaudeSession {claudeSessionId: $claudeSessionId})
4708
- RETURN c.conversationId AS conversationId
4708
+ RETURN c.sessionId AS sessionId
4709
4709
  LIMIT 1`,
4710
4710
  { claudeSessionId, accountId }
4711
4711
  );
4712
- const value = result.records[0]?.get("conversationId");
4712
+ const value = result.records[0]?.get("sessionId");
4713
4713
  return typeof value === "string" && value.length > 0 ? value : null;
4714
4714
  } finally {
4715
4715
  await session.close();
4716
4716
  }
4717
4717
  }
4718
- async function renameConversation(conversationId, label) {
4718
+ async function renameConversation(sessionId, label) {
4719
4719
  let embedding = null;
4720
4720
  try {
4721
4721
  embedding = await embed(label);
@@ -4725,12 +4725,12 @@ async function renameConversation(conversationId, label) {
4725
4725
  const session = getSession();
4726
4726
  try {
4727
4727
  await session.run(
4728
- `MATCH (c:Conversation {conversationId: $conversationId})
4728
+ `MATCH (c:Conversation {sessionId: $sessionId})
4729
4729
  SET c.name = $label, c.updatedAt = datetime()
4730
4730
  ${embedding ? ", c.embedding = $embedding" : ""}`,
4731
- { conversationId, label, ...embedding ? { embedding } : {} }
4731
+ { sessionId, label, ...embedding ? { embedding } : {} }
4732
4732
  );
4733
- console.error(`[persist] manual-label: renamed ${conversationId} to "${label}"${embedding ? " (embedded)" : ""}`);
4733
+ console.error(`[persist] manual-label: renamed ${sessionId} to "${label}"${embedding ? " (embedded)" : ""}`);
4734
4734
  } finally {
4735
4735
  await session.close();
4736
4736
  }
@@ -4982,9 +4982,9 @@ function loadEnabledPluginProfileKeys(accountId) {
4982
4982
  return out;
4983
4983
  }
4984
4984
  var sparseStateLogged = /* @__PURE__ */ new Set();
4985
- async function loadUserProfile(accountId, userId, conversationId) {
4985
+ async function loadUserProfile(accountId, userId, sessionId) {
4986
4986
  console.error(
4987
- `[profile] loadUserProfile entry accountId=${accountId.slice(0, 8)}\u2026 userId=${userId} conversationId=${conversationId ? `${conversationId.slice(0, 8)}\u2026` : "<none>"}`
4987
+ `[profile] loadUserProfile entry accountId=${accountId.slice(0, 8)}\u2026 userId=${userId} sessionId=${sessionId ? `${sessionId.slice(0, 8)}\u2026` : "<none>"}`
4988
4988
  );
4989
4989
  const session = getSession();
4990
4990
  try {
@@ -5108,14 +5108,14 @@ async function loadUserProfile(accountId, userId, conversationId) {
5108
5108
  return typeof v !== "string" || v.trim().length === 0;
5109
5109
  });
5110
5110
  const sparseFired = absentCategories.length > 0 || absentFields.length > 0 || absentIdentity.length > 0;
5111
- if (conversationId && sparseFired) {
5112
- const dedupeKey = `${accountId}:${userId}:${conversationId}`;
5111
+ if (sessionId && sparseFired) {
5112
+ const dedupeKey = `${accountId}:${userId}:${sessionId}`;
5113
5113
  if (!sparseStateLogged.has(dedupeKey)) {
5114
5114
  sparseStateLogged.add(dedupeKey);
5115
5115
  const FIELDS_LOG_CAP = 10;
5116
5116
  const absentFieldsTruncated = absentFields.length <= FIELDS_LOG_CAP ? absentFields.join(",") : `${absentFields.slice(0, FIELDS_LOG_CAP).join(",")}+${absentFields.length - FIELDS_LOG_CAP} more`;
5117
5117
  console.error(
5118
- `[profile] sparse-state injected accountId=${accountId.slice(0, 8)}\u2026 userId=${userId} conversationId=${conversationId.slice(0, 8)}\u2026 absentCategories=${absentCategories.join(",")} absentFields=${absentFieldsTruncated || "none"} absentIdentity=${absentIdentity.map((k) => k.token).join(",") || "none"}`
5118
+ `[profile] sparse-state injected accountId=${accountId.slice(0, 8)}\u2026 userId=${userId} sessionId=${sessionId.slice(0, 8)}\u2026 absentCategories=${absentCategories.join(",")} absentFields=${absentFieldsTruncated || "none"} absentIdentity=${absentIdentity.map((k) => k.token).join(",") || "none"}`
5119
5119
  );
5120
5120
  }
5121
5121
  }
@@ -5395,10 +5395,10 @@ var requireAdminSession = async (c, next) => {
5395
5395
  console.log(`[admin-auth] outcome=accept path=${c.req.path} cacheKey=${fingerprint.slice(0, 8)}\u2026`);
5396
5396
  await next();
5397
5397
  };
5398
- async function tryCookieBridgeForConversation(c, cacheKey2, conversationId) {
5398
+ async function tryCookieBridgeForConversation(c, cacheKey2, sessionId) {
5399
5399
  const path = c.req.path;
5400
5400
  const sk8 = cacheKey2.slice(0, 8);
5401
- const cid8 = conversationId.slice(0, 8);
5401
+ const cid8 = sessionId.slice(0, 8);
5402
5402
  const client = resolveClientIp(
5403
5403
  c.env?.incoming?.socket?.remoteAddress,
5404
5404
  c.req.header("x-forwarded-for")
@@ -5406,31 +5406,31 @@ async function tryCookieBridgeForConversation(c, cacheKey2, conversationId) {
5406
5406
  if (client.kind === "external") {
5407
5407
  const cookieToken = parseCookieValue(c.req.header("cookie"), "__remote_session");
5408
5408
  if (!cookieToken) {
5409
- console.error(`[session] cookie-bridge-rejected reason=no-cookie path=${path} cacheKey=${sk8}\u2026 conversationId=${cid8}\u2026`);
5409
+ console.error(`[session] cookie-bridge-rejected reason=no-cookie path=${path} cacheKey=${sk8}\u2026 sessionId=${cid8}\u2026`);
5410
5410
  return { ok: false, reason: "no-cookie" };
5411
5411
  }
5412
5412
  const desc = describeRemoteSession(cookieToken);
5413
5413
  if (!desc.present) {
5414
- console.error(`[session] cookie-bridge-rejected reason=cookie-invalid path=${path} cacheKey=${sk8}\u2026 conversationId=${cid8}\u2026`);
5414
+ console.error(`[session] cookie-bridge-rejected reason=cookie-invalid path=${path} cacheKey=${sk8}\u2026 sessionId=${cid8}\u2026`);
5415
5415
  return { ok: false, reason: "cookie-invalid" };
5416
5416
  }
5417
5417
  if (desc.expired) {
5418
- console.error(`[session] cookie-bridge-rejected reason=cookie-expired path=${path} cacheKey=${sk8}\u2026 conversationId=${cid8}\u2026`);
5418
+ console.error(`[session] cookie-bridge-rejected reason=cookie-expired path=${path} cacheKey=${sk8}\u2026 sessionId=${cid8}\u2026`);
5419
5419
  return { ok: false, reason: "cookie-expired" };
5420
5420
  }
5421
5421
  }
5422
- const owner = await getConversationOwner(conversationId);
5422
+ const owner = await getConversationOwner(sessionId);
5423
5423
  if (!owner) {
5424
- console.error(`[session] cookie-bridge-rejected reason=conversation-not-found path=${path} cacheKey=${sk8}\u2026 conversationId=${cid8}\u2026`);
5424
+ console.error(`[session] cookie-bridge-rejected reason=conversation-not-found path=${path} cacheKey=${sk8}\u2026 sessionId=${cid8}\u2026`);
5425
5425
  return { ok: false, reason: "conversation-not-found" };
5426
5426
  }
5427
5427
  const deviceAccount = resolveAccount();
5428
5428
  if (!deviceAccount || owner.accountId !== deviceAccount.accountId) {
5429
- console.error(`[session] cookie-bridge-rejected reason=account-mismatch path=${path} cacheKey=${sk8}\u2026 conversationId=${cid8}\u2026 conversationAccountId=${owner.accountId.slice(0, 8)}\u2026 deviceAccountId=${(deviceAccount?.accountId ?? "none").slice(0, 8)}\u2026`);
5429
+ console.error(`[session] cookie-bridge-rejected reason=account-mismatch path=${path} cacheKey=${sk8}\u2026 sessionId=${cid8}\u2026 conversationAccountId=${owner.accountId.slice(0, 8)}\u2026 deviceAccountId=${(deviceAccount?.accountId ?? "none").slice(0, 8)}\u2026`);
5430
5430
  return { ok: false, reason: "account-mismatch" };
5431
5431
  }
5432
5432
  registerSession(cacheKey2, "admin", owner.accountId, void 0, owner.userId ?? void 0);
5433
- console.log(`[session] cookie-bridge accountId=${owner.accountId.slice(0, 8)}\u2026 cacheKey=${sk8}\u2026 conversationId=${cid8}\u2026 path=${path}`);
5433
+ console.log(`[session] cookie-bridge accountId=${owner.accountId.slice(0, 8)}\u2026 cacheKey=${sk8}\u2026 sessionId=${cid8}\u2026 path=${path}`);
5434
5434
  return { ok: true };
5435
5435
  }
5436
5436
  function requireAdminCookie(isPublicHost) {
@@ -5514,11 +5514,11 @@ export {
5514
5514
  getUserIdForSession,
5515
5515
  getUserNameForSession,
5516
5516
  getRoleForSession,
5517
- getConversationIdForSession,
5518
- setConversationIdForSession,
5517
+ getSessionIdForSession,
5518
+ setSessionIdForSession,
5519
5519
  setWantsPriorConversation,
5520
5520
  unregisterSession,
5521
- getSessionKeyByConversationId,
5521
+ getSessionKeyBySessionId,
5522
5522
  findMissingPlugins,
5523
5523
  walkPremiumBundles,
5524
5524
  autoDeliverPremiumPlugins,
@@ -5542,7 +5542,7 @@ export {
5542
5542
  deleteConversation,
5543
5543
  linkConversationTranscript,
5544
5544
  getConversationClaudeSessionIds,
5545
- getConversationIdByClaudeSessionId,
5545
+ getSessionIdByClaudeSessionId,
5546
5546
  renameConversation,
5547
5547
  getUserTimezone,
5548
5548
  loadAdminUserName,
@@ -14,7 +14,7 @@ import {
14
14
  sanitizeClientCorrId,
15
15
  vncLog,
16
16
  websockifyLog
17
- } from "./chunk-AXOL2PPG.js";
17
+ } from "./chunk-3TRIXQSJ.js";
18
18
  import "./chunk-PFF6I7KP.js";
19
19
 
20
20
  // server/edge.ts