@rubytech/create-maxy 1.0.771 → 1.0.773

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 (196) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +2 -1
  3. package/payload/platform/plugins/admin/mcp/dist/index.js +131 -20
  4. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  5. package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +5 -6
  6. package/payload/platform/plugins/admin/skills/onboarding/SKILL.md +5 -6
  7. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -1
  8. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +21 -6
  9. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -1
  10. package/payload/platform/templates/agents/admin/IDENTITY.md +3 -2
  11. package/payload/server/{chunk-TKYZ7AEB.js → chunk-2HBD6IRL.js} +105 -5
  12. package/payload/server/{chunk-IO2WQEY4.js → chunk-PIMJJCOQ.js} +2 -1
  13. package/payload/server/{client-pool-5V5GX3UT.js → client-pool-U3A5YUO7.js} +1 -1
  14. package/payload/server/maxy-edge.js +2 -2
  15. package/payload/server/public/assets/{admin-CaXX8wc3.js → admin-C4CTVtBu.js} +6 -6
  16. package/payload/server/public/index.html +1 -1
  17. package/payload/server/server.js +81 -15
  18. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts +0 -61
  19. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts.map +0 -1
  20. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js +0 -266
  21. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js.map +0 -1
  22. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/index.d.ts +0 -2
  23. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/index.d.ts.map +0 -1
  24. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/index.js +0 -293
  25. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/index.js.map +0 -1
  26. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/crypto.d.ts +0 -10
  27. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/crypto.d.ts.map +0 -1
  28. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/crypto.js +0 -88
  29. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/crypto.js.map +0 -1
  30. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/loop-api.d.ts +0 -80
  31. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
  32. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/loop-api.js +0 -355
  33. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/loop-api.js.map +0 -1
  34. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/neo4j.d.ts +0 -5
  35. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
  36. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/neo4j.js +0 -34
  37. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/lib/neo4j.js.map +0 -1
  38. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
  39. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
  40. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/customer-preferences.js +0 -24
  41. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/customer-preferences.js.map +0 -1
  42. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback-list.d.ts +0 -6
  43. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback-list.d.ts.map +0 -1
  44. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback-list.js +0 -18
  45. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback-list.js.map +0 -1
  46. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback.d.ts +0 -16
  47. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback.d.ts.map +0 -1
  48. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback.js +0 -35
  49. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/feedback.js.map +0 -1
  50. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-deregister.d.ts +0 -5
  51. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  52. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-deregister.js +0 -19
  53. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-deregister.js.map +0 -1
  54. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-list.d.ts +0 -4
  55. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-list.d.ts.map +0 -1
  56. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-list.js +0 -14
  57. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-list.js.map +0 -1
  58. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-register.d.ts +0 -9
  59. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-register.d.ts.map +0 -1
  60. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-register.js +0 -60
  61. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/key-register.js.map +0 -1
  62. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -13
  63. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
  64. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-enquiry.js +0 -41
  65. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
  66. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
  67. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
  68. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-batch.js +0 -16
  69. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
  70. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
  71. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
  72. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-request.js +0 -11
  73. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
  74. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match.d.ts +0 -10
  75. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
  76. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match.js +0 -39
  77. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/marketing-match.js.map +0 -1
  78. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-detail.d.ts +0 -9
  79. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
  80. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-detail.js +0 -125
  81. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-detail.js.map +0 -1
  82. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-list.d.ts +0 -7
  83. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-list.d.ts.map +0 -1
  84. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-list.js +0 -16
  85. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-list.js.map +0 -1
  86. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-search.d.ts +0 -18
  87. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-search.d.ts.map +0 -1
  88. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-search.js +0 -87
  89. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/people-search.js.map +0 -1
  90. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/properties-list.d.ts +0 -7
  91. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/properties-list.d.ts.map +0 -1
  92. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/properties-list.js +0 -19
  93. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/properties-list.js.map +0 -1
  94. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-detail.d.ts +0 -10
  95. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
  96. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-detail.js +0 -82
  97. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-detail.js.map +0 -1
  98. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-listed.d.ts +0 -12
  99. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
  100. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-listed.js +0 -32
  101. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-listed.js.map +0 -1
  102. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-request.d.ts +0 -15
  103. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-request.d.ts.map +0 -1
  104. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-request.js +0 -11
  105. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-request.js.map +0 -1
  106. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-search.d.ts +0 -16
  107. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-search.d.ts.map +0 -1
  108. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-search.js +0 -41
  109. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/property-search.js.map +0 -1
  110. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/supplier.d.ts +0 -13
  111. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/supplier.d.ts.map +0 -1
  112. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/supplier.js +0 -49
  113. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/supplier.js.map +0 -1
  114. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-availability.d.ts +0 -7
  115. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
  116. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-availability.js +0 -19
  117. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-availability.js.map +0 -1
  118. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-info.d.ts +0 -5
  119. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-info.d.ts.map +0 -1
  120. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-info.js +0 -32
  121. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/team-info.js.map +0 -1
  122. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-create.d.ts +0 -14
  123. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
  124. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-create.js +0 -11
  125. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-create.js.map +0 -1
  126. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
  127. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
  128. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-detail.js +0 -85
  129. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-detail.js.map +0 -1
  130. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-search.d.ts +0 -13
  131. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
  132. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-search.js +0 -44
  133. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-search.js.map +0 -1
  134. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-update.d.ts +0 -14
  135. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
  136. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-update.js +0 -18
  137. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewing-update.js.map +0 -1
  138. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewings-list.d.ts +0 -9
  139. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewings-list.d.ts.map +0 -1
  140. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewings-list.js +0 -25
  141. package/payload/premium-plugins/real-agency/plugins/real-agency-loop/mcp/dist/tools/viewings-list.js.map +0 -1
  142. package/payload/server/chunk-26QT2HEQ.js +0 -9483
  143. package/payload/server/chunk-2T4RRIJK.js +0 -9462
  144. package/payload/server/chunk-2W7O63CK.js +0 -3052
  145. package/payload/server/chunk-32ZHQJNX.js +0 -11395
  146. package/payload/server/chunk-3KDVGWPQ.js +0 -2920
  147. package/payload/server/chunk-3RBKKDHC.js +0 -783
  148. package/payload/server/chunk-3VVHVJK2.js +0 -11405
  149. package/payload/server/chunk-43JK6WNK.js +0 -3057
  150. package/payload/server/chunk-5YIXIF6C.js +0 -726
  151. package/payload/server/chunk-7ODDM7L4.js +0 -12370
  152. package/payload/server/chunk-A5K3CFMI.js +0 -12297
  153. package/payload/server/chunk-AIWWYOBH.js +0 -9439
  154. package/payload/server/chunk-B54KBAK4.js +0 -72
  155. package/payload/server/chunk-BIOIXN5A.js +0 -12165
  156. package/payload/server/chunk-D53LK5YC.js +0 -12171
  157. package/payload/server/chunk-EIQT6QDH.js +0 -9562
  158. package/payload/server/chunk-FM5JMRED.js +0 -12033
  159. package/payload/server/chunk-HPU24BXP.js +0 -12173
  160. package/payload/server/chunk-HU5FSQYA.js +0 -12186
  161. package/payload/server/chunk-IAIGB5WN.js +0 -11406
  162. package/payload/server/chunk-JDT3MGUY.js +0 -12165
  163. package/payload/server/chunk-JLVVVQN7.js +0 -9447
  164. package/payload/server/chunk-K7GQ5RMN.js +0 -12172
  165. package/payload/server/chunk-LQ5GSMEW.js +0 -12036
  166. package/payload/server/chunk-MPWGVFU2.js +0 -12340
  167. package/payload/server/chunk-O2FWENOD.js +0 -11530
  168. package/payload/server/chunk-PE76FPYP.js +0 -12040
  169. package/payload/server/chunk-PQ6LDXZ4.js +0 -2997
  170. package/payload/server/chunk-Q6NDXCM6.js +0 -11448
  171. package/payload/server/chunk-QXAUMZXQ.js +0 -9512
  172. package/payload/server/chunk-S3M2NZMA.js +0 -3136
  173. package/payload/server/chunk-SGBNY4NP.js +0 -9540
  174. package/payload/server/chunk-SKXO42T6.js +0 -2934
  175. package/payload/server/chunk-SPTD7L7Z.js +0 -9474
  176. package/payload/server/chunk-TXPEEAV6.js +0 -2997
  177. package/payload/server/chunk-U3W5YIXU.js +0 -11450
  178. package/payload/server/chunk-U5JPRUYZ.js +0 -12298
  179. package/payload/server/chunk-UFLV7I6N.js +0 -11678
  180. package/payload/server/chunk-ULVR2RRY.js +0 -9439
  181. package/payload/server/chunk-VOD2IZ6J.js +0 -2934
  182. package/payload/server/chunk-VS7CRH4M.js +0 -9439
  183. package/payload/server/chunk-W6ZUNLLS.js +0 -9446
  184. package/payload/server/chunk-WW464F23.js +0 -9512
  185. package/payload/server/chunk-Y57ACANQ.js +0 -12292
  186. package/payload/server/chunk-ZK3VNR7Y.js +0 -9510
  187. package/payload/server/chunk-ZL2A4ROK.js +0 -11416
  188. package/payload/server/client-pool-67NUIL7H.js +0 -28
  189. package/payload/server/client-pool-CX2MFW75.js +0 -28
  190. package/payload/server/client-pool-DQBHSKAF.js +0 -28
  191. package/payload/server/client-pool-I5TCP7WI.js +0 -28
  192. package/payload/server/client-pool-ISMYJXCU.js +0 -28
  193. package/payload/server/client-pool-SGPHSYLK.js +0 -28
  194. package/payload/server/client-pool-TCKGDZLE.js +0 -28
  195. package/payload/server/client-pool-TULUIO6M.js +0 -28
  196. package/payload/server/upgrade-progress-server.js +0 -83
@@ -10,13 +10,14 @@ export async function profileRead(params) {
10
10
  const result = await session.run(`
11
11
  OPTIONAL MATCH (up:UserProfile {accountId: $accountId, userId: $userId})
12
12
  WHERE ${notTrashed("up")}
13
+ OPTIONAL MATCH (au:AdminUser {userId: $userId})-[:OWNS]->(p:Person {accountId: $accountId})
13
14
  OPTIONAL MATCH (up)-[:HAS_PREFERENCE]->(pref:Preference)
14
15
  WHERE pref.confidence >= $threshold AND ${notTrashed("pref")}
15
- WITH up, pref
16
+ WITH up, p, pref
16
17
  ORDER BY pref.confidence DESC
17
- WITH up, collect(pref) AS allPrefs
18
- WITH up, allPrefs[0..$limit] AS prefs
19
- RETURN up, prefs
18
+ WITH up, p, collect(pref) AS allPrefs
19
+ WITH up, p, allPrefs[0..$limit] AS prefs
20
+ RETURN up, p AS person, prefs
20
21
  `, {
21
22
  accountId,
22
23
  userId,
@@ -38,6 +39,14 @@ export async function profileRead(params) {
38
39
  const upNode = record.get("up");
39
40
  const profileProps = { ...upNode.properties };
40
41
  delete profileProps.embedding;
42
+ const personNode = record.get("person");
43
+ if (personNode?.properties) {
44
+ // Person fields are the canonical source for human-readable name (Task 829).
45
+ if (personNode.properties.givenName !== undefined)
46
+ profileProps.givenName = personNode.properties.givenName;
47
+ if (personNode.properties.familyName !== undefined)
48
+ profileProps.familyName = personNode.properties.familyName;
49
+ }
41
50
  const prefNodes = record.get("prefs");
42
51
  const preferences = prefNodes.map((p) => ({
43
52
  preferenceId: p.properties.preferenceId,
@@ -98,7 +107,10 @@ const CATEGORY_LABELS = {
98
107
  // Profile summary format — also implemented in neo4j-store.ts (loadUserProfile).
99
108
  // Changes here must be reflected there and vice versa.
100
109
  export function formatProfileSummary(profile, preferences) {
101
- const name = profile.givenName || "Owner";
110
+ const givenName = typeof profile.givenName === "string" ? profile.givenName.trim() : "";
111
+ const familyName = typeof profile.familyName === "string" ? profile.familyName.trim() : "";
112
+ const joined = familyName ? `${givenName} ${familyName}` : givenName;
113
+ const name = joined || "Owner";
102
114
  const role = profile.role ? ` (${profile.role})` : "";
103
115
  const tz = profile.timezone ? ` — ${profile.timezone}` : "";
104
116
  const locale = profile.locale ? `, ${profile.locale}` : "";
@@ -141,7 +153,10 @@ export function formatProfileSummary(profile, preferences) {
141
153
  // Detailed summary for "what do you know about me?" — includes confidence,
142
154
  // source, and evidence trail per preference.
143
155
  function formatDetailedSummary(profile, preferences, stats) {
144
- const name = profile.givenName || "Owner";
156
+ const givenName = typeof profile.givenName === "string" ? profile.givenName.trim() : "";
157
+ const familyName = typeof profile.familyName === "string" ? profile.familyName.trim() : "";
158
+ const joined = familyName ? `${givenName} ${familyName}` : givenName;
159
+ const name = joined || "Owner";
145
160
  const role = profile.role ? ` (${profile.role})` : "";
146
161
  const tz = profile.timezone ? ` — ${profile.timezone}` : "";
147
162
  const locale = profile.locale ? `, ${profile.locale}` : "";
@@ -1 +1 @@
1
- {"version":3,"file":"profile-read.js","sourceRoot":"","sources":["../../src/tools/profile-read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-read.js","sourceRoot":"","sources":["../../src/tools/profile-read.ts"],"names":[],"mappings":"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"}
@@ -193,11 +193,12 @@ Any request to create, edit, clone, list, preview, or delete a public agent must
193
193
 
194
194
  ## Admin User Management
195
195
 
196
- The owner can manage who has admin access to this account through conversation. Three tools are available:
196
+ The owner can manage who has admin access to this account through conversation. Four tools are available:
197
197
 
198
- - **`admin-add`** — Add a new admin to this account. Requires a name; optionally accepts a specific PIN. If no PIN is provided, a unique 4-digit PIN is generated. The tool returns the PIN so the owner can share it with the new admin. PINs must be unique across all users on the device.
198
+ - **`admin-add`** — Add a new admin to this account. Requires a name; optionally accepts a specific PIN. PIN must be at least 4 digits. If no PIN is provided, a unique 4-digit PIN is generated. The tool returns the PIN so the owner can share it with the new admin. PINs must be unique across all users on the device.
199
199
  - **`admin-remove`** — Remove an admin from this account. Requires the userId (use `admin-list` to find it). The last admin on the account cannot be removed. The user's device-level entry is retained — they may still administer other accounts.
200
200
  - **`admin-list`** — List all admins for this account with their names and roles.
201
+ - **`admin-update-pin`** — Update an admin's PIN without removing them. Defaults to the calling admin if no userId is given. PIN must be at least 4 digits and unique across all users on the device.
201
202
 
202
203
  Only the owner (or any current admin) can manage admins. Role is a label only — "owner" marks the original creator, "admin" marks subsequent additions. No capability differences are enforced.
203
204
 
@@ -1467,6 +1467,95 @@ async function getUserTimezone(accountId, userId) {
1467
1467
  await session.close();
1468
1468
  }
1469
1469
  }
1470
+ async function loadAdminUserName(accountId, userId) {
1471
+ const session = getSession();
1472
+ try {
1473
+ const result = await session.run(
1474
+ `MATCH (au:AdminUser {userId: $userId})-[:OWNS]->(p:Person {accountId: $accountId})
1475
+ RETURN p.givenName AS givenName, p.familyName AS familyName
1476
+ LIMIT 1`,
1477
+ { accountId, userId }
1478
+ );
1479
+ if (result.records.length === 0) {
1480
+ return { source: "fallback", reason: "no-person-node" };
1481
+ }
1482
+ const givenName = result.records[0].get("givenName");
1483
+ const familyName = result.records[0].get("familyName");
1484
+ if (!givenName || givenName.trim().length === 0) {
1485
+ return { source: "fallback", reason: "no-givenName" };
1486
+ }
1487
+ const trimmedFamily = familyName && familyName.trim().length > 0 ? familyName.trim() : null;
1488
+ const joined = trimmedFamily ? `${givenName.trim()} ${trimmedFamily}` : givenName.trim();
1489
+ return { source: "neo4j", joined, givenName: givenName.trim(), familyName: trimmedFamily };
1490
+ } catch (err) {
1491
+ console.error(`[admin-identity] loadAdminUserName failed: ${err instanceof Error ? err.message : String(err)}`);
1492
+ return { source: "fallback", reason: "neo4j-unreachable" };
1493
+ } finally {
1494
+ await session.close();
1495
+ }
1496
+ }
1497
+ async function writeAdminUserAndPerson(params) {
1498
+ const { userId, fullName, accountId } = params;
1499
+ const trimmed = fullName.trim();
1500
+ if (!trimmed) {
1501
+ throw new Error("writeAdminUserAndPerson: fullName cannot be empty");
1502
+ }
1503
+ const firstSpace = trimmed.search(/\s/);
1504
+ const givenName = firstSpace === -1 ? trimmed : trimmed.slice(0, firstSpace).trim();
1505
+ const familyName = firstSpace === -1 ? null : trimmed.slice(firstSpace + 1).trim() || null;
1506
+ const now = (/* @__PURE__ */ new Date()).toISOString();
1507
+ const session = getSession();
1508
+ try {
1509
+ const result = await session.run(
1510
+ `MERGE (au:AdminUser {userId: $userId})
1511
+ ON CREATE SET au.name = $fullName, au.createdAt = $now
1512
+ ON MATCH SET au.name = $fullName, au.updatedAt = $now
1513
+ WITH au
1514
+
1515
+ // Case-insensitive Person reuse: same accountId, same givenName, same familyName
1516
+ // (null/empty familyName collapsed to '' so 'Joel' does NOT match 'Joel Smalley').
1517
+ OPTIONAL MATCH (existingPerson:Person {accountId: $accountId})
1518
+ WHERE toLower(existingPerson.givenName) = toLower($givenName)
1519
+ AND coalesce(toLower(existingPerson.familyName), '') = coalesce(toLower($familyName), '')
1520
+ WITH au, existingPerson
1521
+
1522
+ CALL {
1523
+ WITH au, existingPerson
1524
+ WITH au, existingPerson WHERE existingPerson IS NOT NULL
1525
+ MERGE (au)-[:OWNS]->(existingPerson)
1526
+ RETURN existingPerson AS p, true AS reused
1527
+ UNION
1528
+ WITH au, existingPerson
1529
+ WITH au WHERE existingPerson IS NULL
1530
+ CREATE (newPerson:Person {
1531
+ accountId: $accountId,
1532
+ givenName: $givenName,
1533
+ familyName: $familyName,
1534
+ role: 'admin-personal',
1535
+ scope: 'admin',
1536
+ createdAt: $now
1537
+ })
1538
+ MERGE (au)-[:OWNS]->(newPerson)
1539
+ RETURN newPerson AS p, false AS reused
1540
+ }
1541
+ RETURN reused, elementId(p) AS personElementId,
1542
+ p.givenName AS givenName, p.familyName AS familyName`,
1543
+ { userId, fullName: trimmed, accountId, givenName, familyName, now }
1544
+ );
1545
+ if (result.records.length === 0) {
1546
+ throw new Error("writeAdminUserAndPerson: no record returned");
1547
+ }
1548
+ const record = result.records[0];
1549
+ return {
1550
+ personReused: record.get("reused"),
1551
+ personElementId: record.get("personElementId"),
1552
+ givenName: record.get("givenName"),
1553
+ familyName: record.get("familyName")
1554
+ };
1555
+ } finally {
1556
+ await session.close();
1557
+ }
1558
+ }
1470
1559
  async function loadUserProfile(accountId, userId) {
1471
1560
  const session = getSession();
1472
1561
  try {
@@ -1528,13 +1617,14 @@ async function loadUserProfile(accountId, userId) {
1528
1617
  }
1529
1618
  const result = await session.run(
1530
1619
  `MATCH (up:UserProfile {accountId: $accountId, userId: $userId})
1620
+ OPTIONAL MATCH (au:AdminUser {userId: $userId})-[:OWNS]->(p:Person {accountId: $accountId})
1531
1621
  OPTIONAL MATCH (up)-[:HAS_PREFERENCE]->(pref:Preference)
1532
1622
  WHERE pref.confidence >= $threshold
1533
- WITH up, pref
1623
+ WITH up, p, pref
1534
1624
  ORDER BY pref.confidence DESC
1535
- WITH up, collect(pref) AS allPrefs
1536
- WITH up, allPrefs[0..$limit] AS prefs
1537
- RETURN up, prefs`,
1625
+ WITH up, p, collect(pref) AS allPrefs
1626
+ WITH up, p, allPrefs[0..$limit] AS prefs
1627
+ RETURN up, p AS person, prefs`,
1538
1628
  { accountId, userId, threshold: INJECTION_THRESHOLD, limit: MAX_SUMMARY_PREFERENCES }
1539
1629
  );
1540
1630
  if (result.records.length === 0 || !result.records[0].get("up")) {
@@ -1542,6 +1632,11 @@ async function loadUserProfile(accountId, userId) {
1542
1632
  }
1543
1633
  const upNode = result.records[0].get("up");
1544
1634
  const profileProps = { ...upNode.properties };
1635
+ const personNode = result.records[0].get("person");
1636
+ if (personNode?.properties) {
1637
+ if (personNode.properties.givenName !== void 0) profileProps.givenName = personNode.properties.givenName;
1638
+ if (personNode.properties.familyName !== void 0) profileProps.familyName = personNode.properties.familyName;
1639
+ }
1545
1640
  const prefNodes = result.records[0].get("prefs");
1546
1641
  const preferences = prefNodes.map((p) => ({
1547
1642
  preferenceId: p.properties.preferenceId,
@@ -1565,7 +1660,10 @@ async function loadUserProfile(accountId, userId) {
1565
1660
  }
1566
1661
  }
1567
1662
  function formatProfileSummary(profile, preferences) {
1568
- const name = profile.givenName || "Owner";
1663
+ const givenName = typeof profile.givenName === "string" ? profile.givenName.trim() : "";
1664
+ const familyName = typeof profile.familyName === "string" ? profile.familyName.trim() : "";
1665
+ const joined = familyName ? `${givenName} ${familyName}` : givenName;
1666
+ const name = joined || "Owner";
1569
1667
  const role = profile.role ? ` (${profile.role})` : "";
1570
1668
  const tz = profile.timezone ? ` \u2014 ${profile.timezone}` : "";
1571
1669
  const locale = profile.locale ? `, ${profile.locale}` : "";
@@ -3074,6 +3172,8 @@ export {
3074
3172
  autoLabelSession,
3075
3173
  renameConversation,
3076
3174
  getUserTimezone,
3175
+ loadAdminUserName,
3176
+ writeAdminUserAndPerson,
3077
3177
  loadUserProfile,
3078
3178
  loadSessionContext,
3079
3179
  loadOnboardingStep,
@@ -63,7 +63,7 @@ import {
63
63
  teeProcStderrToStreamLog,
64
64
  validateSession,
65
65
  writeReflectionPreferences
66
- } from "./chunk-TKYZ7AEB.js";
66
+ } from "./chunk-2HBD6IRL.js";
67
67
 
68
68
  // ../lib/models/dist/index.js
69
69
  var require_dist = __commonJS({
@@ -4987,6 +4987,7 @@ var ADMIN_CORE_TOOLS = [
4987
4987
  "mcp__admin__admin-add",
4988
4988
  "mcp__admin__admin-remove",
4989
4989
  "mcp__admin__admin-list",
4990
+ "mcp__admin__admin-update-pin",
4990
4991
  "mcp__admin__anthropic-setup",
4991
4992
  "mcp__admin__api-key-store",
4992
4993
  "mcp__admin__api-key-verify",
@@ -11,7 +11,7 @@ import {
11
11
  setInflight,
12
12
  startIdleEvictTick,
13
13
  stopIdleEvictTick
14
- } from "./chunk-S3M2NZMA.js";
14
+ } from "./chunk-2HBD6IRL.js";
15
15
  export {
16
16
  _evictAllForTest,
17
17
  _poolSnapshotForTest,
@@ -16,8 +16,8 @@ import {
16
16
  sanitizeClientCorrId,
17
17
  streamActionEvents,
18
18
  vncLog
19
- } from "./chunk-IO2WQEY4.js";
20
- import "./chunk-TKYZ7AEB.js";
19
+ } from "./chunk-PIMJJCOQ.js";
20
+ import "./chunk-2HBD6IRL.js";
21
21
 
22
22
  // server/edge.ts
23
23
  import { createServer, request as httpRequest } from "http";