@rubytech/create-maxy-code 0.1.82 → 0.1.84

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 (156) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  3. package/payload/platform/plugins/admin/hooks/__tests__/pre-tool-use-memory-write-revoke.test.sh +142 -24
  4. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +131 -218
  5. package/payload/platform/plugins/admin/hooks/pre-tool-use.sh +85 -17
  6. package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -11
  7. package/payload/platform/plugins/cloudflare/scripts/setup-tunnel.sh +9 -7
  8. package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +20 -10
  9. package/payload/platform/plugins/docs/references/cloudflare.md +10 -9
  10. package/payload/platform/scripts/seed-neo4j.sh +20 -14
  11. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts +6 -0
  12. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts.map +1 -1
  13. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js +21 -0
  14. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js.map +1 -1
  15. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +47 -0
  16. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  17. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +265 -44
  18. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  19. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  20. package/payload/platform/templates/specialists/agents/database-operator.md +8 -10
  21. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/SKILL.md +3 -0
  22. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/template.html +18 -8
  23. package/payload/server/{chunk-TFEIFU7F.js → chunk-BDFOTLPW.js} +1 -1
  24. package/payload/server/{chunk-W33UUYYR.js → chunk-BVDLDM6O.js} +1 -1
  25. package/payload/server/{chunk-VGMVEYX7.js → chunk-JRBCOVA4.js} +64 -5
  26. package/payload/server/{cloudflare-task-tracker-7P355PSD.js → cloudflare-task-tracker-M5ONAGUT.js} +2 -2
  27. package/payload/server/maxy-edge.js +2 -2
  28. package/payload/server/public/assets/Checkbox-B34vplI7.js +1 -0
  29. package/payload/server/public/assets/{admin-Dl273yTS.js → admin-BkTlPuP0.js} +5 -5
  30. package/payload/server/public/assets/{arc-aUiRP9AS.js → arc-DMDAZHAN.js} +1 -1
  31. package/payload/server/public/assets/architecture-YZFGNWBL-COhEvUpo.js +1 -0
  32. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Iyf6H93s.js → architectureDiagram-Q4EWVU46-DQMCKDU2.js} +1 -1
  33. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-e7l5Mhun.js → blockDiagram-DXYQGD6D-CqJNtiQY.js} +1 -1
  34. package/payload/server/public/assets/{brand-CTMGYFDd.css → brand-C_iHnsbT.css} +1 -1
  35. package/payload/server/public/assets/{brand-dPgPNs7n.js → brand-HqTMr1bV.js} +1 -1
  36. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-bDICnX2_.js → c4Diagram-AHTNJAMY-BVAa1YL3.js} +1 -1
  37. package/payload/server/public/assets/channel-CZG4mVkt.js +1 -0
  38. package/payload/server/public/assets/{chunk-2KRD3SAO-BK3470lx.js → chunk-2KRD3SAO-Di4bO8ir.js} +1 -1
  39. package/payload/server/public/assets/chunk-336JU56O-XIsdqKyD.js +2 -0
  40. package/payload/server/public/assets/chunk-426QAEUC-Dw4mcMYK.js +1 -0
  41. package/payload/server/public/assets/{chunk-4BX2VUAB-BOvVdJLf.js → chunk-4BX2VUAB-DyEhFk-Z.js} +1 -1
  42. package/payload/server/public/assets/{chunk-4TB4RGXK-CzvvHuMJ.js → chunk-4TB4RGXK-BvrlG2FS.js} +1 -1
  43. package/payload/server/public/assets/{chunk-55IACEB6-BwZyF7vR.js → chunk-55IACEB6-BRJOZLpU.js} +1 -1
  44. package/payload/server/public/assets/{chunk-5FUZZQ4R-DxqHPDro.js → chunk-5FUZZQ4R-3-UZ9191.js} +1 -1
  45. package/payload/server/public/assets/{chunk-5PVQY5BW-BA6nMu9F.js → chunk-5PVQY5BW-DOeY60Lp.js} +1 -1
  46. package/payload/server/public/assets/{chunk-67CJDMHE-D5bhMrtY.js → chunk-67CJDMHE-BG6-9r6c.js} +1 -1
  47. package/payload/server/public/assets/{chunk-7N4EOEYR-Si7Lgrwc.js → chunk-7N4EOEYR-BvMbitX7.js} +1 -1
  48. package/payload/server/public/assets/{chunk-AA7GKIK3-DMuHtDqO.js → chunk-AA7GKIK3-CE8mGBD5.js} +1 -1
  49. package/payload/server/public/assets/{chunk-BSJP7CBP-L79XKVcb.js → chunk-BSJP7CBP-DP7LTBll.js} +1 -1
  50. package/payload/server/public/assets/{chunk-CIAEETIT-C0O7Upmg.js → chunk-CIAEETIT-VfnIdN-h.js} +1 -1
  51. package/payload/server/public/assets/{chunk-EDXVE4YY-gUSTktie.js → chunk-EDXVE4YY-BSbGSOxN.js} +1 -1
  52. package/payload/server/public/assets/{chunk-ENJZ2VHE-C-wW17kd.js → chunk-ENJZ2VHE-CszgAcWZ.js} +1 -1
  53. package/payload/server/public/assets/{chunk-FMBD7UC4-C_E43NFJ.js → chunk-FMBD7UC4-w-yBZsN2.js} +1 -1
  54. package/payload/server/public/assets/{chunk-FOC6F5B3-D9lWWHAu.js → chunk-FOC6F5B3-f9cFywhd.js} +1 -1
  55. package/payload/server/public/assets/{chunk-ICPOFSXX-zLc9NsO5.js → chunk-ICPOFSXX-rgw1I6pt.js} +2 -2
  56. package/payload/server/public/assets/{chunk-K5T4RW27-DuhsNH4c.js → chunk-K5T4RW27-B_ZUrFUq.js} +1 -1
  57. package/payload/server/public/assets/{chunk-KGLVRYIC-B4-A1Abi.js → chunk-KGLVRYIC-CcWTvRlI.js} +1 -1
  58. package/payload/server/public/assets/{chunk-LIHQZDEY-BxqgHRgT.js → chunk-LIHQZDEY-D-5-peQw.js} +1 -1
  59. package/payload/server/public/assets/{chunk-ORNJ4GCN-DEYQ5WaJ.js → chunk-ORNJ4GCN-B4Z5L25I.js} +1 -1
  60. package/payload/server/public/assets/{chunk-OYMX7WX6-Bt9RJ_rb.js → chunk-OYMX7WX6-DL4v2Nx4.js} +1 -1
  61. package/payload/server/public/assets/chunk-QZHKN3VN-CWh_0JsP.js +1 -0
  62. package/payload/server/public/assets/{chunk-U2HBQHQK-BAM6MO6g.js → chunk-U2HBQHQK-CwMCwyfq.js} +1 -1
  63. package/payload/server/public/assets/{chunk-X2U36JSP-DbOwgg1R.js → chunk-X2U36JSP-CvKfDVvq.js} +1 -1
  64. package/payload/server/public/assets/{chunk-XPW4576I-CBfZXZDB.js → chunk-XPW4576I-m1Y_r88I.js} +1 -1
  65. package/payload/server/public/assets/{chunk-YZCP3GAM-BXUfYLeM.js → chunk-YZCP3GAM-D7vju2_U.js} +1 -1
  66. package/payload/server/public/assets/{chunk-ZZ45TVLE-BBIHnMjI.js → chunk-ZZ45TVLE-sANOwJKn.js} +1 -1
  67. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BoqQ3pHg.js +1 -0
  68. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-FoKuBK7n.js +1 -0
  69. package/payload/server/public/assets/clone-CT8AM-bU.js +1 -0
  70. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Br2gjtEO.js → cose-bilkent-S5V4N54A-BhtgY3T7.js} +1 -1
  71. package/payload/server/public/assets/{dagre-Bv8aHCaJ.js → dagre-CplqWwSs.js} +1 -1
  72. package/payload/server/public/assets/{dagre-KV5264BT-BZ0q7dDA.js → dagre-KV5264BT-DNbl5g9o.js} +1 -1
  73. package/payload/server/public/assets/data-BIDM6J5V.js +1 -0
  74. package/payload/server/public/assets/{device-url-actions-CK6x8-FQ.js → device-url-actions-nxh9PmIH.js} +1 -1
  75. package/payload/server/public/assets/{diagram-5BDNPKRD-Bbzy2KoW.js → diagram-5BDNPKRD-BCdMaYnY.js} +1 -1
  76. package/payload/server/public/assets/{diagram-G4DWMVQ6-CadVHWrV.js → diagram-G4DWMVQ6-8XhDBU0o.js} +1 -1
  77. package/payload/server/public/assets/{diagram-MMDJMWI5-DwJ6fVMv.js → diagram-MMDJMWI5-M-RMQgtx.js} +1 -1
  78. package/payload/server/public/assets/{diagram-TYMM5635-Bh8d1vg-.js → diagram-TYMM5635-BBHPIBvQ.js} +1 -1
  79. package/payload/server/public/assets/{erDiagram-SMLLAGMA-B1oTY2ob.js → erDiagram-SMLLAGMA-D6jOL-9s.js} +1 -1
  80. package/payload/server/public/assets/{flatten-Bo6YRmWl.js → flatten-BsWEYbBB.js} +1 -1
  81. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BZU76iLs.js → flowDiagram-DWJPFMVM-CiyTYRlU.js} +1 -1
  82. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-PjhJx62i.js → ganttDiagram-T4ZO3ILL-DHSIpjfS.js} +1 -1
  83. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DeTNsAO0.js +1 -0
  84. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DLrxzJYi.js → gitGraphDiagram-UUTBAWPF-CEneVF3o.js} +1 -1
  85. package/payload/server/public/assets/graph-Cm-iWFqy.js +1 -0
  86. package/payload/server/public/assets/graph-labels-CFX6KkCz.js +1 -0
  87. package/payload/server/public/assets/{graphlib-D2ExKXiT.js → graphlib-CuF7rLfE.js} +1 -1
  88. package/payload/server/public/assets/info-OMHHGYJF-DJJ9GlS6.js +1 -0
  89. package/payload/server/public/assets/infoDiagram-42DDH7IO-wGl-JoP7.js +2 -0
  90. package/payload/server/public/assets/{isEmpty-D6Kr-M1M.js → isEmpty-BWl67LAZ.js} +1 -1
  91. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-Ed8ANWEq.js → ishikawaDiagram-UXIWVN3A-B3TxFNi_.js} +1 -1
  92. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DF1gG775.js → journeyDiagram-VCZTEJTY-B5n8No7p.js} +1 -1
  93. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-D8VcaKAp.js → kanban-definition-6JOO6SKY-ByGF39_h.js} +1 -1
  94. package/payload/server/public/assets/{line-CgMZIaVM.js → line-Br0FyyFW.js} +1 -1
  95. package/payload/server/public/assets/{linear-DOh_6k2k.js → linear-0O14Y6uf.js} +1 -1
  96. package/payload/server/public/assets/{mermaid-parser.core-ez9lChuL.js → mermaid-parser.core-BUcTjodx.js} +2 -2
  97. package/payload/server/public/assets/{mermaid.core-BiVW_Lka.js → mermaid.core-BKzdtZgG.js} +3 -3
  98. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-C-BlLBbo.js → mindmap-definition-QFDTVHPH-CobGMF9l.js} +1 -1
  99. package/payload/server/public/assets/{ordinal-BDi6f4xk.js → ordinal-krseTxxN.js} +1 -1
  100. package/payload/server/public/assets/packet-4T2RLAQJ-CGbvGkvF.js +1 -0
  101. package/payload/server/public/assets/{page-BQCQwUG5.js → page-B5NRnW0t.js} +1 -1
  102. package/payload/server/public/assets/{page-DStDaJgc.js → page-Ba0BAfpu.js} +2 -2
  103. package/payload/server/public/assets/pie-ZZUOXDRM-BZy8rjFn.js +1 -0
  104. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BK0-LxVl.js → pieDiagram-DEJITSTG-DXFmGcNR.js} +1 -1
  105. package/payload/server/public/assets/{public-DMk9cZKl.js → public-DWfBzf83.js} +5 -5
  106. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-vKAQHu-t.js → quadrantDiagram-34T5L4WZ-BnChStlO.js} +1 -1
  107. package/payload/server/public/assets/radar-PYXPWWZC-DcfWIVXr.js +1 -0
  108. package/payload/server/public/assets/{reduce-CGi9ik8i.js → reduce-tk-xY6Fv.js} +1 -1
  109. package/payload/server/public/assets/{requirementDiagram-MS252O5E-Df9sXR35.js → requirementDiagram-MS252O5E-DdiBKsyO.js} +1 -1
  110. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DG6xirA4.js → sankeyDiagram-XADWPNL6-16-np_56.js} +1 -1
  111. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B1a38KHX.js → sequenceDiagram-FGHM5R23-D67SCRpA.js} +1 -1
  112. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CRiIDR4O.js → stateDiagram-FHFEXIEX-CvNJX0YC.js} +1 -1
  113. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CFw2U4iL.js +1 -0
  114. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CkBOE7Y8.js → timeline-definition-GMOUNBTQ-BJE5YoBa.js} +1 -1
  115. package/payload/server/public/assets/treeView-SZITEDCU-3WugwVdj.js +1 -0
  116. package/payload/server/public/assets/treemap-W4RFUUIX-Cf5mDLlu.js +1 -0
  117. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CwKBydYc.js → vennDiagram-DHZGUBPP-DF17ddXt.js} +1 -1
  118. package/payload/server/public/assets/wardley-RL74JXVD-Bv4md4b3.js +1 -0
  119. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BWXYfzIr.js → wardleyDiagram-NUSXRM2D-xn_2XUOo.js} +1 -1
  120. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-D-4v5Dy_.js → xychartDiagram-5P7HB3ND-DVF8zf3f.js} +1 -1
  121. package/payload/server/public/data.html +5 -5
  122. package/payload/server/public/graph.html +6 -5
  123. package/payload/server/public/index.html +8 -7
  124. package/payload/server/public/public.html +5 -4
  125. package/payload/server/server.js +229 -22
  126. package/payload/server/public/assets/architecture-YZFGNWBL--v-pJPNp.js +0 -1
  127. package/payload/server/public/assets/channel-CkgyfA91.js +0 -1
  128. package/payload/server/public/assets/chunk-336JU56O-CbnUj19H.js +0 -2
  129. package/payload/server/public/assets/chunk-426QAEUC-DxGLqjw5.js +0 -1
  130. package/payload/server/public/assets/chunk-QZHKN3VN-Bd-GrQM6.js +0 -1
  131. package/payload/server/public/assets/classDiagram-6PBFFD2Q-PyvJekA9.js +0 -1
  132. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-6hFNhiTb.js +0 -1
  133. package/payload/server/public/assets/clone-CFIJrRLl.js +0 -1
  134. package/payload/server/public/assets/data-BgADjmk1.js +0 -1
  135. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CI0s_tqn.js +0 -1
  136. package/payload/server/public/assets/graph-B1_erzSo.js +0 -1
  137. package/payload/server/public/assets/graph-labels-CpFvcba2.js +0 -1
  138. package/payload/server/public/assets/info-OMHHGYJF-g3gYW7Qm.js +0 -1
  139. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cn0r9nCK.js +0 -2
  140. package/payload/server/public/assets/packet-4T2RLAQJ-CT0TB9HI.js +0 -1
  141. package/payload/server/public/assets/pie-ZZUOXDRM-CXLe7TFF.js +0 -1
  142. package/payload/server/public/assets/radar-PYXPWWZC-DnPLBl-D.js +0 -1
  143. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C8cVmi_o.js +0 -1
  144. package/payload/server/public/assets/treeView-SZITEDCU-C3cb7Xwe.js +0 -1
  145. package/payload/server/public/assets/treemap-W4RFUUIX-Dc7G3Bgm.js +0 -1
  146. package/payload/server/public/assets/wardley-RL74JXVD-DtgibWAt.js +0 -1
  147. /package/payload/server/public/assets/{_baseFor-Cam2PbSt.js → _baseFor-BHtDrjIo.js} +0 -0
  148. /package/payload/server/public/assets/{array-DYRGGQae.js → array-DetWRiSa.js} +0 -0
  149. /package/payload/server/public/assets/{cytoscape.esm-nWsJMTNI.js → cytoscape.esm-C9yNhe1u.js} +0 -0
  150. /package/payload/server/public/assets/{defaultLocale-Du1XY3Dp.js → defaultLocale-_WRwicXn.js} +0 -0
  151. /package/payload/server/public/assets/{dist-BzAsli7o.js → dist-Bd4S37oi.js} +0 -0
  152. /package/payload/server/public/assets/{init-B5BXBRcm.js → init-sTEcj9YX.js} +0 -0
  153. /package/payload/server/public/assets/{katex-HOUACuRw.js → katex-s61Rgv6l.js} +0 -0
  154. /package/payload/server/public/assets/{path-CNO468J-.js → path-B0Ik7Tu9.js} +0 -0
  155. /package/payload/server/public/assets/{rough.esm-DRO6hWPh.js → rough.esm-DKRO8IF-.js} +0 -0
  156. /package/payload/server/public/assets/{src-CWiyyVfn.js → src-B6XdH6xq.js} +0 -0
@@ -136,14 +136,24 @@
136
136
  pointer-events: none;
137
137
  }
138
138
  .folio > span {
139
- background: rgba(252, 251, 248, 0.92);
140
- backdrop-filter: blur(10px) saturate(1.2);
141
- -webkit-backdrop-filter: blur(10px) saturate(1.2);
142
- padding: 5px 10px;
143
- border-radius: 2px;
144
- box-shadow: 0 1px 0 rgba(6,68,68,0.04);
139
+ /* Folio chrome stripped — folio is plain text on whitespace. Pages that
140
+ have full-bleed imagery at the bottom must hide the folio entirely
141
+ (see "Full-bleed pages suppress the folio" rule below); pages that
142
+ leave clean whitespace below their content (most editorial spreads)
143
+ render the folio as readable plain text in --teal-900. */
145
144
  white-space: nowrap;
146
145
  }
146
+
147
+ /* Full-bleed pages suppress the folio.
148
+ If a page's bottom area is covered by a full-bleed image (.cover, .intermission,
149
+ .folio-dark chapter intros, or the .feature-page photo+panel layout where the
150
+ photo bleeds to the page bottom), the folio is hidden entirely. The folio is
151
+ never made readable over photography via background chrome — see SKILL.md
152
+ "Folio is plain text on whitespace or absent". */
153
+ .page.cover > .folio,
154
+ .page.intermission > .folio,
155
+ .page.folio-dark > .folio,
156
+ .page:has(.feature-page) > .folio { display: none; }
147
157
  .folio .folio-mid { letter-spacing: 0.4em; }
148
158
  .folio em { font-style: normal; color: var(--gold-700); font-weight: 500; }
149
159
 
@@ -966,7 +976,7 @@
966
976
  SPREAD 08 — MATERIAL INFORMATION
967
977
  Editorial directory style
968
978
  ═══════════════════════════════════════════════════ */
969
- .mi-page { padding: 18mm 14mm; height: 100%; display: flex; flex-direction: column; }
979
+ .mi-page { padding: 18mm 14mm 22mm; height: 100%; display: flex; flex-direction: column; }
970
980
  .mi-head { display: grid; grid-template-columns: 2fr 3fr; column-gap: 24px; align-items: end; margin-bottom: 14px; }
971
981
  .mi-intro {
972
982
  font-family: var(--serif);
@@ -1051,7 +1061,7 @@
1051
1061
  .backpage-inner {
1052
1062
  position: relative; z-index: 2;
1053
1063
  height: 100%;
1054
- padding: 22mm 28mm 18mm;
1064
+ padding: 22mm 28mm 42mm; /* bottom 42mm reserves clearance for absolute .back-disclaimer at bottom 16mm + up to 5 lines of wrapped text */
1055
1065
  display: flex; flex-direction: column;
1056
1066
  align-items: center; justify-content: center;
1057
1067
  text-align: center;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getSession
3
- } from "./chunk-VGMVEYX7.js";
3
+ } from "./chunk-JRBCOVA4.js";
4
4
  import {
5
5
  __commonJS,
6
6
  __toESM
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConversationOwner
3
- } from "./chunk-VGMVEYX7.js";
3
+ } from "./chunk-JRBCOVA4.js";
4
4
 
5
5
  // node_modules/hono/dist/compose.js
6
6
  var compose = (middleware, onError, onNotFound) => {
@@ -580,17 +580,73 @@ async function deleteConversation(conversationId) {
580
580
  OPTIONAL MATCH (m:Message)-[:PART_OF]->(c)
581
581
  OPTIONAL MATCH (m)-[:HAS_COMPONENT]->(comp:Component)
582
582
  OPTIONAL MATCH (m)-[:HAS_ATTACHMENT]->(att:Attachment)
583
- DETACH DELETE att, comp, m, c
583
+ OPTIONAL MATCH (c)-[:HAS_TRANSCRIPT]->(t:ClaudeSession)
584
+ DETACH DELETE att, comp, m, t, c
584
585
  RETURN count(c) AS deleted`,
585
586
  { conversationId }
586
587
  );
587
588
  const deleted = result.records[0]?.get("deleted");
588
589
  const count = typeof deleted === "object" && deleted !== null ? Number(deleted) : Number(deleted ?? 0);
589
- console.error(`[persist] deleteConversation ${conversationId.slice(0, 8)}\u2026: ${count > 0 ? "deleted" : "not found"}`);
590
- return count > 0;
590
+ const found = count > 0;
591
+ console.error(`[persist] deleteConversation ${conversationId.slice(0, 8)}\u2026: ${found ? "deleted" : "not found"}`);
592
+ return { found };
593
+ } finally {
594
+ await session.close();
595
+ }
596
+ }
597
+ async function linkConversationTranscript(conversationId, claudeSessionId, accountId) {
598
+ if (!conversationId || !claudeSessionId || !accountId) {
599
+ console.error(`[transcript-link] schema-violation conversationId=${conversationId ? "set" : "EMPTY"} claudeSessionId=${claudeSessionId ? "set" : "EMPTY"} accountId=${accountId ? "set" : "EMPTY"}`);
600
+ return { linked: false };
601
+ }
602
+ const session = getSession();
603
+ try {
604
+ const result = await session.run(
605
+ `MATCH (c:Conversation {conversationId: $conversationId, accountId: $accountId})
606
+ MERGE (c)-[:HAS_TRANSCRIPT]->(t:ClaudeSession {claudeSessionId: $claudeSessionId})
607
+ ON CREATE SET
608
+ t.accountId = $accountId,
609
+ t.createdAt = datetime()
610
+ RETURN count(t) AS linked`,
611
+ { conversationId, claudeSessionId, accountId }
612
+ );
613
+ const linked = Number(result.records[0]?.get("linked") ?? 0) > 0;
614
+ if (!linked) {
615
+ console.error(`[transcript-link] convId=${conversationId.slice(0, 8)}\u2026 claudeSessionId=${claudeSessionId.slice(0, 8)}\u2026 status=skipped reason=conversation-not-found`);
616
+ }
617
+ return { linked };
591
618
  } catch (err) {
592
- console.error(`[persist] deleteConversation failed: ${err instanceof Error ? err.message : String(err)}`);
593
- return false;
619
+ 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)}`);
620
+ return { linked: false };
621
+ } finally {
622
+ await session.close();
623
+ }
624
+ }
625
+ async function getConversationClaudeSessionIds(conversationId, accountId) {
626
+ const session = getSession();
627
+ try {
628
+ const result = await session.run(
629
+ `MATCH (c:Conversation {conversationId: $conversationId, accountId: $accountId})-[:HAS_TRANSCRIPT]->(t:ClaudeSession)
630
+ RETURN t.claudeSessionId AS claudeSessionId
631
+ ORDER BY t.createdAt ASC`,
632
+ { conversationId, accountId }
633
+ );
634
+ return result.records.map((r) => r.get("claudeSessionId")).filter((v) => typeof v === "string" && v.length > 0);
635
+ } finally {
636
+ await session.close();
637
+ }
638
+ }
639
+ async function getConversationIdByClaudeSessionId(claudeSessionId, accountId) {
640
+ const session = getSession();
641
+ try {
642
+ const result = await session.run(
643
+ `MATCH (c:Conversation {accountId: $accountId})-[:HAS_TRANSCRIPT]->(t:ClaudeSession {claudeSessionId: $claudeSessionId})
644
+ RETURN c.conversationId AS conversationId
645
+ LIMIT 1`,
646
+ { claudeSessionId, accountId }
647
+ );
648
+ const value = result.records[0]?.get("conversationId");
649
+ return typeof value === "string" && value.length > 0 ? value : null;
594
650
  } finally {
595
651
  await session.close();
596
652
  }
@@ -1236,6 +1292,9 @@ export {
1236
1292
  verifyAndGetConversationUpdatedAt,
1237
1293
  listAdminSessions,
1238
1294
  deleteConversation,
1295
+ linkConversationTranscript,
1296
+ getConversationClaudeSessionIds,
1297
+ getConversationIdByClaudeSessionId,
1239
1298
  renameConversation,
1240
1299
  getUserTimezone,
1241
1300
  loadAdminUserName,
@@ -7,8 +7,8 @@ import {
7
7
  readTunnelState,
8
8
  recoverRunningCloudflareTasks,
9
9
  resolveUnitGoneVerdict
10
- } from "./chunk-TFEIFU7F.js";
11
- import "./chunk-VGMVEYX7.js";
10
+ } from "./chunk-BDFOTLPW.js";
11
+ import "./chunk-JRBCOVA4.js";
12
12
  import "./chunk-JSBRDJBE.js";
13
13
  export {
14
14
  CLOUDFLARE_TASK_DIAGNOSTICS,
@@ -19,8 +19,8 @@ import {
19
19
  streamActionEvents,
20
20
  vncLog,
21
21
  websockifyLog
22
- } from "./chunk-W33UUYYR.js";
23
- import "./chunk-VGMVEYX7.js";
22
+ } from "./chunk-BVDLDM6O.js";
23
+ import "./chunk-JRBCOVA4.js";
24
24
  import "./chunk-JSBRDJBE.js";
25
25
 
26
26
  // server/edge.ts
@@ -0,0 +1 @@
1
+ import{a as e}from"./brand-HqTMr1bV.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};