@rubytech/create-sitedesk-code 0.1.529 → 0.1.531

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 (341) hide show
  1. package/dist/index.js +13 -0
  2. package/package.json +1 -1
  3. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/graph-write/dist/index.js +4 -0
  5. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  6. package/payload/platform/lib/graph-write/src/index.ts +4 -0
  7. package/payload/platform/lib/learning-constants/dist/index.d.ts +35 -0
  8. package/payload/platform/lib/learning-constants/dist/index.d.ts.map +1 -0
  9. package/payload/platform/lib/learning-constants/dist/index.js +50 -0
  10. package/payload/platform/lib/learning-constants/dist/index.js.map +1 -0
  11. package/payload/platform/lib/learning-constants/package.json +7 -0
  12. package/payload/platform/lib/learning-constants/src/index.test.ts +47 -0
  13. package/payload/platform/lib/learning-constants/src/index.ts +57 -0
  14. package/payload/platform/lib/learning-constants/tsconfig.json +9 -0
  15. package/payload/platform/lib/routine-templates/dist/index.d.ts +19 -3
  16. package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -1
  17. package/payload/platform/lib/routine-templates/dist/index.js +22 -4
  18. package/payload/platform/lib/routine-templates/dist/index.js.map +1 -1
  19. package/payload/platform/lib/routine-templates/dist/roster.d.ts +19 -6
  20. package/payload/platform/lib/routine-templates/dist/roster.d.ts.map +1 -1
  21. package/payload/platform/lib/routine-templates/dist/roster.js +127 -17
  22. package/payload/platform/lib/routine-templates/dist/roster.js.map +1 -1
  23. package/payload/platform/lib/routine-templates/src/__tests__/roster.test.ts +46 -3
  24. package/payload/platform/lib/routine-templates/src/__tests__/seed.test.ts +52 -10
  25. package/payload/platform/lib/routine-templates/src/index.ts +30 -4
  26. package/payload/platform/lib/routine-templates/src/roster.ts +147 -17
  27. package/payload/platform/neo4j/schema.cypher +24 -0
  28. package/payload/platform/package.json +1 -1
  29. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  30. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  31. package/payload/platform/plugins/admin/mcp/dist/index.js +2 -2
  32. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  33. package/payload/platform/plugins/admin/skills/insight/SKILL.md +1 -1
  34. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +64 -12
  35. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +13 -0
  36. package/payload/platform/plugins/docs/references/admin-ui.md +6 -2
  37. package/payload/platform/plugins/docs/references/linkedin-extension.md +18 -9
  38. package/payload/platform/plugins/docs/references/session-retrospective.md +39 -0
  39. package/payload/platform/plugins/linkedin-extension/.claude-plugin/plugin.json +1 -1
  40. package/payload/platform/plugins/linkedin-extension/PLUGIN.md +7 -10
  41. package/payload/platform/plugins/linkedin-extension/extension/README.md +20 -17
  42. package/payload/platform/plugins/linkedin-extension/extension/background/sw.js +96 -13
  43. package/payload/platform/plugins/linkedin-extension/extension/manifest.json +3 -18
  44. package/payload/platform/plugins/linkedin-extension/extension/options/options.html +2 -2
  45. package/payload/platform/plugins/linkedin-extension/extension/options/options.js +1 -1
  46. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  47. package/payload/platform/plugins/memory/PLUGIN.md +15 -1
  48. package/payload/platform/plugins/memory/mcp/dist/index.js +169 -0
  49. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  50. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.d.ts +2 -0
  51. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.d.ts.map +1 -0
  52. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.js +95 -0
  53. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.js.map +1 -0
  54. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.d.ts +60 -0
  55. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.d.ts.map +1 -0
  56. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.js +153 -0
  57. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.js.map +1 -0
  58. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.js +6 -4
  59. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.js.map +1 -1
  60. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.d.ts +2 -0
  61. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.d.ts.map +1 -0
  62. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.js +160 -0
  63. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.js.map +1 -0
  64. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.d.ts +2 -0
  65. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.d.ts.map +1 -0
  66. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.js +64 -0
  67. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.js.map +1 -0
  68. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.d.ts +2 -0
  69. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.d.ts.map +1 -0
  70. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.js +78 -0
  71. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.js.map +1 -0
  72. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.d.ts +41 -0
  73. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.d.ts.map +1 -0
  74. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.js +225 -0
  75. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.js.map +1 -0
  76. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.d.ts +31 -0
  77. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.d.ts.map +1 -0
  78. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.js +67 -0
  79. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.js.map +1 -0
  80. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.d.ts +40 -0
  81. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.d.ts.map +1 -0
  82. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.js +55 -0
  83. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.js.map +1 -0
  84. package/payload/platform/plugins/memory/references/schema-base.md +3 -0
  85. package/payload/platform/plugins/memory/skills/learnings-recall/SKILL.md +27 -0
  86. package/payload/platform/plugins/scheduling/PLUGIN.md +2 -0
  87. package/payload/platform/plugins/scheduling/mcp/dist/index.js +5 -0
  88. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  89. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts +2 -0
  90. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts.map +1 -0
  91. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js +100 -0
  92. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js.map +1 -0
  93. package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.d.ts +36 -0
  94. package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.d.ts.map +1 -0
  95. package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.js +82 -0
  96. package/payload/platform/plugins/scheduling/mcp/dist/lib/dispatcher-env.js.map +1 -0
  97. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +31 -0
  98. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -1
  99. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +99 -0
  100. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -1
  101. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +12 -12
  102. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  103. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.d.ts +2 -0
  104. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.d.ts.map +1 -0
  105. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.js +79 -0
  106. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/converge-startdate-utc.test.js.map +1 -0
  107. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.d.ts +2 -0
  108. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.d.ts.map +1 -0
  109. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.js +23 -0
  110. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/dispatch-lateness.test.js.map +1 -0
  111. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +61 -1
  112. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -1
  113. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +33 -1
  114. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  115. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +96 -7
  116. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  117. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +21 -69
  118. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  119. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts +24 -0
  120. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts.map +1 -0
  121. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js +87 -0
  122. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js.map +1 -0
  123. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.d.ts +2 -0
  124. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.d.ts.map +1 -0
  125. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.js +123 -0
  126. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-startdate.test.js.map +1 -0
  127. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.d.ts +2 -0
  128. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.d.ts.map +1 -0
  129. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.js +71 -0
  130. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-startdate.test.js.map +1 -0
  131. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +14 -3
  132. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -1
  133. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +9 -0
  134. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  135. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +19 -3
  136. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  137. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  138. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +24 -9
  139. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  140. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +4 -4
  141. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  142. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +3 -3
  143. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +6 -2
  144. package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +5 -1
  145. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  146. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +3 -0
  147. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  148. package/payload/platform/services/claude-session-manager/dist/learning-index.d.ts +28 -0
  149. package/payload/platform/services/claude-session-manager/dist/learning-index.d.ts.map +1 -0
  150. package/payload/platform/services/claude-session-manager/dist/learning-index.js +70 -0
  151. package/payload/platform/services/claude-session-manager/dist/learning-index.js.map +1 -0
  152. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  153. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +18 -0
  154. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  155. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +6 -0
  156. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  157. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +17 -0
  158. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  159. package/payload/platform/templates/specialists/agents/librarian.md +1 -1
  160. package/payload/server/{chunk-UTIHI6KV.js → chunk-SVB5NZ64.js} +53 -42
  161. package/payload/server/{manager-B4LRDZKC.js → manager-4Q3DTLXO.js} +5 -1
  162. package/payload/server/package.json +1 -1
  163. package/payload/server/public/activity.html +5 -5
  164. package/payload/server/public/agents.html +4 -4
  165. package/payload/server/public/assets/{AdminLoginScreens-zfexKfbT.js → AdminLoginScreens-7Czw3MAC.js} +1 -1
  166. package/payload/server/public/assets/AdminLoginScreens-7Czw3MAC.js.br +0 -0
  167. package/payload/server/public/assets/AdminLoginScreens-7Czw3MAC.js.gz +0 -0
  168. package/payload/server/public/assets/{AdminShell-Cbk0TL1B.js → AdminShell-D5GApZ_n.js} +1 -1
  169. package/payload/server/public/assets/AdminShell-D5GApZ_n.js.br +0 -0
  170. package/payload/server/public/assets/AdminShell-D5GApZ_n.js.gz +0 -0
  171. package/payload/server/public/assets/{CdpScreencastSurface-CLSQHh4e.js → CdpScreencastSurface-BbekDUFw.js} +1 -1
  172. package/payload/server/public/assets/CdpScreencastSurface-BbekDUFw.js.br +0 -0
  173. package/payload/server/public/assets/CdpScreencastSurface-BbekDUFw.js.gz +0 -0
  174. package/payload/server/public/assets/{activity-u275Oc-u.js → activity-ClI-RgJu.js} +1 -1
  175. package/payload/server/public/assets/activity-ClI-RgJu.js.br +0 -0
  176. package/payload/server/public/assets/activity-ClI-RgJu.js.gz +0 -0
  177. package/payload/server/public/assets/{admin-Du1nR_hP.js → admin-svtCmBPk.js} +1 -1
  178. package/payload/server/public/assets/admin-svtCmBPk.js.br +0 -0
  179. package/payload/server/public/assets/admin-svtCmBPk.js.gz +0 -0
  180. package/payload/server/public/assets/{agents-DJTxRLLU.js → agents-BO8YBj8d.js} +1 -1
  181. package/payload/server/public/assets/agents-BO8YBj8d.js.br +0 -0
  182. package/payload/server/public/assets/agents-BO8YBj8d.js.gz +0 -0
  183. package/payload/server/public/assets/{browser-Bft6zVkX.js → browser-Bj8oTG5R.js} +1 -1
  184. package/payload/server/public/assets/browser-Bj8oTG5R.js.br +0 -0
  185. package/payload/server/public/assets/browser-Bj8oTG5R.js.gz +0 -0
  186. package/payload/server/public/assets/{calendar-Ct-DCCqY.js → calendar-CrkSY8U7.js} +1 -1
  187. package/payload/server/public/assets/calendar-CrkSY8U7.js.br +0 -0
  188. package/payload/server/public/assets/calendar-CrkSY8U7.js.gz +0 -0
  189. package/payload/server/public/assets/chat-Bvxoni2e.js +1 -0
  190. package/payload/server/public/assets/chat-Bvxoni2e.js.br +0 -0
  191. package/payload/server/public/assets/chat-Bvxoni2e.js.gz +0 -0
  192. package/payload/server/public/assets/chevron-left-CdUzxzeB.js +1 -0
  193. package/payload/server/public/assets/chevron-left-CdUzxzeB.js.br +0 -0
  194. package/payload/server/public/assets/chevron-right-CKGwd-M0.js +1 -0
  195. package/payload/server/public/assets/chevron-right-CKGwd-M0.js.br +0 -0
  196. package/payload/server/public/assets/clock-Cf8Oe9qi.js +1 -0
  197. package/payload/server/public/assets/clock-Cf8Oe9qi.js.br +0 -0
  198. package/payload/server/public/assets/clock-Cf8Oe9qi.js.gz +0 -0
  199. package/payload/server/public/assets/data-DF0Pstdp.js +1 -0
  200. package/payload/server/public/assets/data-DF0Pstdp.js.br +1 -0
  201. package/payload/server/public/assets/data-DF0Pstdp.js.gz +0 -0
  202. package/payload/server/public/assets/{file-download-C_fSe4dm.js → file-download-Di_s0_4w.js} +1 -1
  203. package/payload/server/public/assets/file-download-Di_s0_4w.js.br +0 -0
  204. package/payload/server/public/assets/file-download-Di_s0_4w.js.gz +0 -0
  205. package/payload/server/public/assets/{file-text-D7GbEcqj.js → file-text-CP1KIrJV.js} +1 -1
  206. package/payload/server/public/assets/file-text-CP1KIrJV.js.br +1 -0
  207. package/payload/server/public/assets/file-text-CP1KIrJV.js.gz +0 -0
  208. package/payload/server/public/assets/{graph-yl5qU1kO.js → graph-BCMscnCV.js} +1 -1
  209. package/payload/server/public/assets/graph-BCMscnCV.js.br +0 -0
  210. package/payload/server/public/assets/graph-BCMscnCV.js.gz +0 -0
  211. package/payload/server/public/assets/{graph-labels-Dlcb6cW7.js → graph-labels-CgP17xHK.js} +1 -1
  212. package/payload/server/public/assets/graph-labels-CgP17xHK.js.br +0 -0
  213. package/payload/server/public/assets/graph-labels-CgP17xHK.js.gz +0 -0
  214. package/payload/server/public/assets/{maximize-2-BS689r4W.js → maximize-2-DkQzDv-g.js} +1 -1
  215. package/payload/server/public/assets/maximize-2-DkQzDv-g.js.br +0 -0
  216. package/payload/server/public/assets/maximize-2-DkQzDv-g.js.gz +0 -0
  217. package/payload/server/public/assets/{operator-CvapnpIW.js → operator-CLbCar9e.js} +1 -1
  218. package/payload/server/public/assets/operator-CLbCar9e.js.br +0 -0
  219. package/payload/server/public/assets/operator-CLbCar9e.js.gz +0 -0
  220. package/payload/server/public/assets/{page-DWkUH4Z_.js → page-CNJl3tWT.js} +1 -1
  221. package/payload/server/public/assets/page-CNJl3tWT.js.br +0 -0
  222. package/payload/server/public/assets/page-CNJl3tWT.js.gz +0 -0
  223. package/payload/server/public/assets/{page-987y4JbQ.js → page-CPVUAwb8.js} +1 -1
  224. package/payload/server/public/assets/page-CPVUAwb8.js.br +0 -0
  225. package/payload/server/public/assets/page-CPVUAwb8.js.gz +0 -0
  226. package/payload/server/public/assets/{public-D5pi-VFn.js → public-DQea3Ybz.js} +1 -1
  227. package/payload/server/public/assets/public-DQea3Ybz.js.br +0 -0
  228. package/payload/server/public/assets/public-DQea3Ybz.js.gz +0 -0
  229. package/payload/server/public/assets/{rotate-ccw-zNxnK36R.js → rotate-ccw-DPw0vXC0.js} +1 -1
  230. package/payload/server/public/assets/rotate-ccw-DPw0vXC0.js.br +0 -0
  231. package/payload/server/public/assets/rotate-ccw-DPw0vXC0.js.gz +0 -0
  232. package/payload/server/public/assets/{routines-mZzrGA5y.js → routines-CwiiYpfK.js} +2 -2
  233. package/payload/server/public/assets/routines-CwiiYpfK.js.br +0 -0
  234. package/payload/server/public/assets/routines-CwiiYpfK.js.gz +0 -0
  235. package/payload/server/public/assets/{skills-5A8PockT.js → skills-0FOjKUM-.js} +1 -1
  236. package/payload/server/public/assets/skills-0FOjKUM-.js.br +0 -0
  237. package/payload/server/public/assets/skills-0FOjKUM-.js.gz +0 -0
  238. package/payload/server/public/assets/{tasks-B1_2wc6L.js → tasks-BUVsPEGm.js} +1 -1
  239. package/payload/server/public/assets/tasks-BUVsPEGm.js.br +0 -0
  240. package/payload/server/public/assets/tasks-BUVsPEGm.js.gz +0 -0
  241. package/payload/server/public/assets/{time-entry-format-CJ2FSSQt.js → time-entry-format-B6fX_19a.js} +1 -1
  242. package/payload/server/public/assets/time-entry-format-B6fX_19a.js.br +0 -0
  243. package/payload/server/public/assets/time-entry-format-B6fX_19a.js.gz +0 -0
  244. package/payload/server/public/assets/{triangle-alert-CedsrgME.js → triangle-alert-vAaSDhVq.js} +1 -1
  245. package/payload/server/public/assets/triangle-alert-vAaSDhVq.js.br +0 -0
  246. package/payload/server/public/assets/triangle-alert-vAaSDhVq.js.gz +0 -0
  247. package/payload/server/public/assets/{useCopyFeedback-zjZZUC2-.js → useCopyFeedback-BvIRgs7W.js} +1 -1
  248. package/payload/server/public/assets/useCopyFeedback-BvIRgs7W.js.br +0 -0
  249. package/payload/server/public/assets/useCopyFeedback-BvIRgs7W.js.gz +0 -0
  250. package/payload/server/public/assets/{useSubAccountSwitcher-72THldvm.css → useSubAccountSwitcher-DM5Y9eio.css} +1 -1
  251. package/payload/server/public/assets/useSubAccountSwitcher-DM5Y9eio.css.br +0 -0
  252. package/payload/server/public/assets/{useSubAccountSwitcher-72THldvm.css.gz → useSubAccountSwitcher-DM5Y9eio.css.gz} +0 -0
  253. package/payload/server/public/assets/{useVoiceRecorder-CJecnefX.js → useVoiceRecorder-CiDOh8PG.js} +1 -1
  254. package/payload/server/public/assets/useVoiceRecorder-CiDOh8PG.js.br +0 -0
  255. package/payload/server/public/assets/useVoiceRecorder-CiDOh8PG.js.gz +0 -0
  256. package/payload/server/public/assets/{wrench-D8BH20W8.js → wrench-BNBtwT2p.js} +1 -1
  257. package/payload/server/public/assets/wrench-BNBtwT2p.js.br +0 -0
  258. package/payload/server/public/assets/wrench-BNBtwT2p.js.gz +0 -0
  259. package/payload/server/public/browser.html +5 -5
  260. package/payload/server/public/calendar.html +7 -7
  261. package/payload/server/public/chat.html +13 -13
  262. package/payload/server/public/data.html +12 -12
  263. package/payload/server/public/graph.html +9 -9
  264. package/payload/server/public/index.html +16 -16
  265. package/payload/server/public/operator.html +15 -15
  266. package/payload/server/public/public.html +13 -13
  267. package/payload/server/public/routines.html +7 -7
  268. package/payload/server/public/skills.html +5 -5
  269. package/payload/server/public/tasks.html +6 -6
  270. package/payload/server/server.js +73 -19
  271. package/payload/platform/plugins/linkedin-extension/extension/assets/pill.css +0 -52
  272. package/payload/platform/plugins/linkedin-extension/extension/content/profile.js +0 -100
  273. package/payload/platform/plugins/linkedin-extension/extension/content/thread.js +0 -102
  274. package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js.br +0 -0
  275. package/payload/server/public/assets/AdminLoginScreens-zfexKfbT.js.gz +0 -0
  276. package/payload/server/public/assets/AdminShell-Cbk0TL1B.js.br +0 -0
  277. package/payload/server/public/assets/AdminShell-Cbk0TL1B.js.gz +0 -0
  278. package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js.br +0 -0
  279. package/payload/server/public/assets/CdpScreencastSurface-CLSQHh4e.js.gz +0 -0
  280. package/payload/server/public/assets/activity-u275Oc-u.js.br +0 -0
  281. package/payload/server/public/assets/activity-u275Oc-u.js.gz +0 -0
  282. package/payload/server/public/assets/admin-Du1nR_hP.js.br +0 -0
  283. package/payload/server/public/assets/admin-Du1nR_hP.js.gz +0 -0
  284. package/payload/server/public/assets/agents-DJTxRLLU.js.br +0 -0
  285. package/payload/server/public/assets/agents-DJTxRLLU.js.gz +0 -0
  286. package/payload/server/public/assets/browser-Bft6zVkX.js.br +0 -0
  287. package/payload/server/public/assets/browser-Bft6zVkX.js.gz +0 -0
  288. package/payload/server/public/assets/calendar-Ct-DCCqY.js.br +0 -0
  289. package/payload/server/public/assets/calendar-Ct-DCCqY.js.gz +0 -0
  290. package/payload/server/public/assets/chat-pqasbAg8.js +0 -1
  291. package/payload/server/public/assets/chat-pqasbAg8.js.br +0 -0
  292. package/payload/server/public/assets/chat-pqasbAg8.js.gz +0 -0
  293. package/payload/server/public/assets/chevron-left-C8LTc7lb.js +0 -1
  294. package/payload/server/public/assets/chevron-right-Lz9t7Hed.js +0 -1
  295. package/payload/server/public/assets/chevron-right-Lz9t7Hed.js.br +0 -0
  296. package/payload/server/public/assets/clock-D6QQFHwJ.js +0 -1
  297. package/payload/server/public/assets/clock-D6QQFHwJ.js.br +0 -0
  298. package/payload/server/public/assets/clock-D6QQFHwJ.js.gz +0 -0
  299. package/payload/server/public/assets/data-B1JJ3Y1T.js +0 -1
  300. package/payload/server/public/assets/data-B1JJ3Y1T.js.br +0 -0
  301. package/payload/server/public/assets/data-B1JJ3Y1T.js.gz +0 -0
  302. package/payload/server/public/assets/file-download-C_fSe4dm.js.br +0 -0
  303. package/payload/server/public/assets/file-download-C_fSe4dm.js.gz +0 -0
  304. package/payload/server/public/assets/file-text-D7GbEcqj.js.br +0 -0
  305. package/payload/server/public/assets/file-text-D7GbEcqj.js.gz +0 -0
  306. package/payload/server/public/assets/graph-labels-Dlcb6cW7.js.br +0 -0
  307. package/payload/server/public/assets/graph-labels-Dlcb6cW7.js.gz +0 -0
  308. package/payload/server/public/assets/graph-yl5qU1kO.js.br +0 -0
  309. package/payload/server/public/assets/graph-yl5qU1kO.js.gz +0 -0
  310. package/payload/server/public/assets/maximize-2-BS689r4W.js.br +0 -0
  311. package/payload/server/public/assets/maximize-2-BS689r4W.js.gz +0 -0
  312. package/payload/server/public/assets/operator-CvapnpIW.js.br +0 -0
  313. package/payload/server/public/assets/operator-CvapnpIW.js.gz +0 -0
  314. package/payload/server/public/assets/page-987y4JbQ.js.br +0 -0
  315. package/payload/server/public/assets/page-987y4JbQ.js.gz +0 -0
  316. package/payload/server/public/assets/page-DWkUH4Z_.js.br +0 -0
  317. package/payload/server/public/assets/page-DWkUH4Z_.js.gz +0 -0
  318. package/payload/server/public/assets/public-D5pi-VFn.js.br +0 -0
  319. package/payload/server/public/assets/public-D5pi-VFn.js.gz +0 -0
  320. package/payload/server/public/assets/rotate-ccw-zNxnK36R.js.br +0 -0
  321. package/payload/server/public/assets/rotate-ccw-zNxnK36R.js.gz +0 -0
  322. package/payload/server/public/assets/routines-mZzrGA5y.js.br +0 -0
  323. package/payload/server/public/assets/routines-mZzrGA5y.js.gz +0 -0
  324. package/payload/server/public/assets/skills-5A8PockT.js.br +0 -0
  325. package/payload/server/public/assets/skills-5A8PockT.js.gz +0 -0
  326. package/payload/server/public/assets/tasks-B1_2wc6L.js.br +0 -0
  327. package/payload/server/public/assets/tasks-B1_2wc6L.js.gz +0 -0
  328. package/payload/server/public/assets/time-entry-format-CJ2FSSQt.js.br +0 -0
  329. package/payload/server/public/assets/time-entry-format-CJ2FSSQt.js.gz +0 -0
  330. package/payload/server/public/assets/triangle-alert-CedsrgME.js.br +0 -0
  331. package/payload/server/public/assets/triangle-alert-CedsrgME.js.gz +0 -0
  332. package/payload/server/public/assets/useCopyFeedback-zjZZUC2-.js.br +0 -0
  333. package/payload/server/public/assets/useCopyFeedback-zjZZUC2-.js.gz +0 -0
  334. package/payload/server/public/assets/useSubAccountSwitcher-72THldvm.css.br +0 -0
  335. package/payload/server/public/assets/useVoiceRecorder-CJecnefX.js.br +0 -0
  336. package/payload/server/public/assets/useVoiceRecorder-CJecnefX.js.gz +0 -0
  337. package/payload/server/public/assets/wrench-D8BH20W8.js.br +0 -0
  338. package/payload/server/public/assets/wrench-D8BH20W8.js.gz +0 -0
  339. /package/payload/server/public/assets/{useSubAccountSwitcher-HjQZjJBr.js → useSubAccountSwitcher-BEwQMRMo.js} +0 -0
  340. /package/payload/server/public/assets/{useSubAccountSwitcher-HjQZjJBr.js.br → useSubAccountSwitcher-BEwQMRMo.js.br} +0 -0
  341. /package/payload/server/public/assets/{useSubAccountSwitcher-HjQZjJBr.js.gz → useSubAccountSwitcher-BEwQMRMo.js.gz} +0 -0
@@ -124,6 +124,7 @@ import {
124
124
  isUserJid,
125
125
  isWithinOwnAccountPartition,
126
126
  jidToE164,
127
+ listConnectionAccountStamps,
127
128
  listConnectionPlatformAccountIds,
128
129
  listConnections,
129
130
  listLedgerAccounts,
@@ -183,7 +184,7 @@ import {
183
184
  waitForConnection,
184
185
  warnNonUuidAccount,
185
186
  writeChatMetadataMerged
186
- } from "./chunk-UTIHI6KV.js";
187
+ } from "./chunk-SVB5NZ64.js";
187
188
  import {
188
189
  ACCOUNTS_DIR,
189
190
  BIN_DIR,
@@ -1586,7 +1587,11 @@ var require_dist5 = __commonJS({
1586
1587
  "Risk",
1587
1588
  "Source",
1588
1589
  "Finding",
1589
- "Hypothesis"
1590
+ "Hypothesis",
1591
+ // Task 2220 — :Learning carries learning_embedding, which learnings-derive
1592
+ // queries by name to reconcile a claim against an existing learning. Without
1593
+ // it here the chokepoint cannot detect a null-embedding Learning write.
1594
+ "Learning"
1590
1595
  ]);
1591
1596
  exports.DOCUMENT_ARCHIVE_LABELS = /* @__PURE__ */ new Set([
1592
1597
  "KnowledgeDocument",
@@ -4999,7 +5004,7 @@ async function defaultHttpGet(url) {
4999
5004
  }
5000
5005
  }
5001
5006
  async function defaultResolve(accountId) {
5002
- const { resolveSocket: resolveSocket2 } = await import("./manager-B4LRDZKC.js");
5007
+ const { resolveSocket: resolveSocket2 } = await import("./manager-4Q3DTLXO.js");
5003
5008
  return resolveSocket2(accountId);
5004
5009
  }
5005
5010
  async function fetchAvatar(accountId, jid, deps = {}) {
@@ -6144,6 +6149,15 @@ function reconcileMessageStoreAccountKeys(input) {
6144
6149
  return { ok: orphanLiveKeys.length === 0, orphanLiveKeys };
6145
6150
  }
6146
6151
 
6152
+ // app/lib/whatsapp/connection-account-reconcile.ts
6153
+ function reconcileConnectionAccountStamps(input) {
6154
+ const registered = new Set(input.registeredAccountIds);
6155
+ const mismatches = input.connections.filter(
6156
+ (c) => registered.has(c.accountId) && c.platformAccountId !== c.accountId
6157
+ );
6158
+ return { ok: mismatches.length === 0, mismatches };
6159
+ }
6160
+
6147
6161
  // app/lib/whatsapp/outbound/send-document.ts
6148
6162
  import { realpathSync } from "fs";
6149
6163
  import { readFile as readFile3, stat as stat2 } from "fs/promises";
@@ -6513,20 +6527,39 @@ function houseSocketScopeDenial(c, op) {
6513
6527
  console.error(`${TAG14} op=authz-deny route=${op} caller=${callerAccountId ?? "none"} houseAdmin=${houseAdminScope ? "y" : "n"}`);
6514
6528
  return c.json({ ok: false, error: "Not authorized. The WhatsApp connection and its settings are house-scoped; this session may only act on its own account." }, 403);
6515
6529
  }
6516
- function selfOrHouseScopeDenial(c, targetAccountId, op) {
6530
+ function selfOrHouseScopeDenial(c, targetAccountId, op, targetSource = "explicit") {
6517
6531
  const { decision, callerAccountId, houseAdminScope } = evaluateCallerScope(c, targetAccountId);
6532
+ const tail = `target=${targetAccountId} targetSource=${targetSource} caller=${callerAccountId ?? "none"} houseAdmin=${houseAdminScope ? "y" : "n"}`;
6518
6533
  if (decision.authorized) {
6519
- console.error(`${TAG14} op=authz-ok route=${op} target=${targetAccountId} caller=${callerAccountId ?? "none"} houseAdmin=${houseAdminScope ? "y" : "n"}`);
6534
+ console.error(`${TAG14} op=authz-ok route=${op} ${tail}`);
6520
6535
  return null;
6521
6536
  }
6522
- console.error(`${TAG14} op=authz-deny route=${op} target=${targetAccountId} caller=${callerAccountId ?? "none"} houseAdmin=${houseAdminScope ? "y" : "n"}`);
6537
+ console.error(`${TAG14} op=authz-deny route=${op} ${tail}`);
6523
6538
  return c.json({ ok: false, error: "Not authorized. This session may only pair or manage its own account." }, 403);
6524
6539
  }
6540
+ function resolveLifecycleAccountId(c, raw) {
6541
+ if (typeof raw === "string" && raw.trim().length > 0) {
6542
+ return { accountId: validateAccountId(raw), targetSource: "explicit" };
6543
+ }
6544
+ const callerAccountId = c.req.header("x-maxy-caller-account")?.trim() || null;
6545
+ const houseAdminScope = c.req.header("x-maxy-house-admin-scope")?.trim() || null;
6546
+ const houseAccountId = resolveAccount()?.accountId ?? "";
6547
+ const callerIsHouse = !!houseAdminScope || !!callerAccountId && callerAccountId === houseAccountId;
6548
+ if (callerIsHouse || !callerAccountId) {
6549
+ return { accountId: "default", targetSource: "house-default" };
6550
+ }
6551
+ return { accountId: validateAccountId(callerAccountId), targetSource: "caller-default" };
6552
+ }
6525
6553
  var app3 = new Hono();
6526
6554
  app3.get("/status", (c) => {
6527
6555
  try {
6528
- const denial = houseSocketScopeDenial(c, "status");
6529
- if (denial) return denial;
6556
+ const houseAccountId = resolveAccount()?.accountId ?? "";
6557
+ const { decision, callerAccountId, houseAdminScope } = evaluateCallerScope(c, houseAccountId);
6558
+ const houseScoped = decision.authorized;
6559
+ if (!houseScoped && !callerAccountId) {
6560
+ console.error(`${TAG14} op=authz-deny route=status caller=none houseAdmin=${houseAdminScope ? "y" : "n"}`);
6561
+ return c.json({ ok: false, error: "Not authorized. The WhatsApp connection and its settings are house-scoped; this session may only act on its own account." }, 403);
6562
+ }
6530
6563
  const live = getStatus();
6531
6564
  const liveIds = new Set(live.map((a) => a.accountId));
6532
6565
  const activeLoginIds = new Set(listActiveLoginAccountIds());
@@ -6540,6 +6573,11 @@ app3.get("/status", (c) => {
6540
6573
  }));
6541
6574
  const summary = accounts.map((a) => `${a.accountId}:${a.connected ? "up" : a.linkedUnconfigured ? "linked-unconfigured" : "down"}:${a.dispatchInbound ? "dispatch" : "observe"}`).join(", ");
6542
6575
  console.error(`${TAG14} status accounts=${accounts.length} [${summary}]`);
6576
+ if (!houseScoped) {
6577
+ const own = accounts.filter((a) => a.accountId === callerAccountId);
6578
+ console.error(`${TAG14} op=status-projection caller=${callerAccountId.slice(0, 8)} scope=self rows=${own.length}`);
6579
+ return c.json({ accounts: own });
6580
+ }
6543
6581
  const reachableAccountIds = [
6544
6582
  .../* @__PURE__ */ new Set([...listStoredAccountIds(), ...listConnectionPlatformAccountIds()])
6545
6583
  ];
@@ -6550,7 +6588,16 @@ app3.get("/status", (c) => {
6550
6588
  if (!storeKeyReconcile.ok) {
6551
6589
  console.warn(`${TAG14} store-key-drift orphanLiveKeys=[${storeKeyReconcile.orphanLiveKeys.join(",")}] \u2014 in-memory cache keyed by a value with no disk account; read tools will miss`);
6552
6590
  }
6553
- return c.json({ accounts, storeKeyReconcile });
6591
+ const connectionAccountReconcile = reconcileConnectionAccountStamps({
6592
+ connections: listConnectionAccountStamps(),
6593
+ registeredAccountIds: listValidAccounts().map((a) => a.accountId)
6594
+ });
6595
+ if (!connectionAccountReconcile.ok) {
6596
+ const pairs = connectionAccountReconcile.mismatches.map((m) => `${m.accountId}:${m.platformAccountId}`).join(",");
6597
+ console.warn(`${TAG14} connection-account-drift mismatches=[${pairs}] \u2014 a socket keyed by a registered account is stamping a different one; its messages persist and read under that account`);
6598
+ }
6599
+ console.error(`${TAG14} op=status-projection caller=${callerAccountId?.slice(0, 8) ?? "none"} scope=house rows=${accounts.length}`);
6600
+ return c.json({ accounts, storeKeyReconcile, connectionAccountReconcile });
6554
6601
  } catch (err) {
6555
6602
  console.error(`${TAG14} status error: ${String(err)}`);
6556
6603
  return c.json({ error: String(err) }, 500);
@@ -6559,8 +6606,8 @@ app3.get("/status", (c) => {
6559
6606
  app3.post("/login/start", async (c) => {
6560
6607
  try {
6561
6608
  const body = await c.req.json().catch(() => ({}));
6562
- const accountId = validateAccountId(body.accountId);
6563
- const denial = selfOrHouseScopeDenial(c, accountId, "login/start");
6609
+ const { accountId, targetSource } = resolveLifecycleAccountId(c, body.accountId);
6610
+ const denial = selfOrHouseScopeDenial(c, accountId, "login/start", targetSource);
6564
6611
  if (denial) return denial;
6565
6612
  const force = body.force ?? false;
6566
6613
  const phone = typeof body.phone === "string" ? body.phone.trim() : "";
@@ -6580,8 +6627,8 @@ app3.post("/login/start", async (c) => {
6580
6627
  app3.post("/login/wait", async (c) => {
6581
6628
  try {
6582
6629
  const body = await c.req.json().catch(() => ({}));
6583
- const accountId = validateAccountId(body.accountId);
6584
- const denial = selfOrHouseScopeDenial(c, accountId, "login/wait");
6630
+ const { accountId, targetSource } = resolveLifecycleAccountId(c, body.accountId);
6631
+ const denial = selfOrHouseScopeDenial(c, accountId, "login/wait", targetSource);
6585
6632
  if (denial) return denial;
6586
6633
  const timeoutMs = body.timeoutMs ?? 6e4;
6587
6634
  const result = await waitForLogin({ accountId, timeoutMs });
@@ -6600,8 +6647,8 @@ app3.post("/login/wait", async (c) => {
6600
6647
  app3.post("/disconnect", async (c) => {
6601
6648
  try {
6602
6649
  const body = await c.req.json().catch(() => ({}));
6603
- const accountId = validateAccountId(body.accountId);
6604
- const denial = selfOrHouseScopeDenial(c, accountId, "disconnect");
6650
+ const { accountId, targetSource } = resolveLifecycleAccountId(c, body.accountId);
6651
+ const denial = selfOrHouseScopeDenial(c, accountId, "disconnect", targetSource);
6605
6652
  if (denial) return denial;
6606
6653
  await stopConnection(accountId);
6607
6654
  return c.json({ disconnected: true, accountId });
@@ -6614,8 +6661,9 @@ app3.post("/reconnect", async (c) => {
6614
6661
  let accountId = "(unresolved)";
6615
6662
  try {
6616
6663
  const body = await c.req.json().catch(() => ({}));
6617
- accountId = validateAccountId(body.accountId);
6618
- const denial = selfOrHouseScopeDenial(c, accountId, "reconnect");
6664
+ const resolved = resolveLifecycleAccountId(c, body.accountId);
6665
+ accountId = resolved.accountId;
6666
+ const denial = selfOrHouseScopeDenial(c, accountId, "reconnect", resolved.targetSource);
6619
6667
  if (denial) return denial;
6620
6668
  await startConnection(accountId);
6621
6669
  console.error(
@@ -22720,7 +22768,8 @@ var ROUTINE_COLS = `e.eventId AS eventId, e.name AS name, e.eventStatus AS event
22720
22768
  e.timezone AS timezone, e.startDate AS startDate,
22721
22769
  e.agentChannel AS agentChannel, e.agentDestination AS agentDestination, e.agentPrompt AS agentPrompt,
22722
22770
  e.actionPlugin AS actionPlugin, e.actionTool AS actionTool, e.actionArgs AS actionArgs,
22723
- e.notes AS notes, e.lastDispatchResult AS lastDispatchResult, e.lastDispatchAt AS lastDispatchAt,
22771
+ e.notes AS notes, e.routineDescription AS routineDescription,
22772
+ e.lastDispatchResult AS lastDispatchResult, e.lastDispatchAt AS lastDispatchAt,
22724
22773
  e.suspendedInBulk AS suspendedInBulk`;
22725
22774
  function mapRoutine(r) {
22726
22775
  const g = (k) => r.get(k) ?? null;
@@ -22740,11 +22789,16 @@ function mapRoutine(r) {
22740
22789
  actionTool: g("actionTool"),
22741
22790
  actionArgs: g("actionArgs"),
22742
22791
  notes: g("notes"),
22792
+ // Task 2214 — read-only on the wire. Deliberately absent from the PATCH
22793
+ // field set below: the roster is its only writer, so a PATCH that accepted
22794
+ // it would be discarded by the next seed, and silently accepting an edit
22795
+ // that the next upgrade throws away is worse than refusing it.
22796
+ routineDescription: g("routineDescription"),
22743
22797
  lastDispatchResult: g("lastDispatchResult"),
22744
22798
  lastDispatchAt: g("lastDispatchAt"),
22745
22799
  // Task 2106 — on the wire so the page can gate Resume all on the set the
22746
22800
  // server will actually act on. Without it the control reads `suspended`,
22747
- // which includes the ten seeded roster rows on every fresh install, and
22801
+ // which includes the thirteen seeded roster rows on every fresh install, and
22748
22802
  // pressing it reports restoring nothing.
22749
22803
  suspendedInBulk: r.get("suspendedInBulk") === true
22750
22804
  };
@@ -1,52 +0,0 @@
1
- /* "Add to SiteDesk" pill injected into LinkedIn profile and DM thread pages. */
2
-
3
- #maxy-linkedin-pill.maxy-pill {
4
- position: relative;
5
- z-index: 9999;
6
- display: inline-flex;
7
- align-items: center;
8
- gap: 6px;
9
- margin: 12px;
10
- padding: 6px 14px;
11
- border: 1px solid #0a66c2;
12
- border-radius: 999px;
13
- background: #ffffff;
14
- color: #0a66c2;
15
- font: 600 13px/1.2 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
16
- cursor: pointer;
17
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
18
- transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
19
- }
20
-
21
- #maxy-linkedin-pill.maxy-pill:hover {
22
- background: #0a66c2;
23
- color: #ffffff;
24
- }
25
-
26
- #maxy-linkedin-pill.maxy-pill[data-state="busy"] {
27
- background: #f4f7fb;
28
- border-color: #a3b6c9;
29
- color: #46596d;
30
- cursor: progress;
31
- }
32
-
33
- #maxy-linkedin-pill.maxy-pill[data-state="ok"] {
34
- background: #e6f4ea;
35
- border-color: #2e7d32;
36
- color: #2e7d32;
37
- cursor: default;
38
- }
39
-
40
- #maxy-linkedin-pill.maxy-pill[data-state="error"] {
41
- background: #fdecea;
42
- border-color: #b00020;
43
- color: #b00020;
44
- cursor: pointer;
45
- }
46
-
47
- #maxy-linkedin-pill.maxy-pill[data-state="auth"] {
48
- background: #fff7e0;
49
- border-color: #b8860b;
50
- color: #b8860b;
51
- cursor: pointer;
52
- }
@@ -1,100 +0,0 @@
1
- // Profile content script. Runs on linkedin.com/in/*.
2
- // Manifest concatenates extractors.js + this file, so MaxyLinkedinExtractors
3
- // is in scope. One click → scrape → post to the service worker → pill state.
4
-
5
- ;(function () {
6
- const TAG_MOUNT = '[linkedin-ext-mount]'
7
- const TAG_SCRAPE = '[linkedin-ext-scrape]'
8
- const TAG_ERROR = '[linkedin-ext-error]'
9
- const PILL_ID = 'maxy-linkedin-pill'
10
-
11
- function setState(pill, state, label) {
12
- pill.dataset.state = state
13
- if (label) pill.textContent = label
14
- }
15
-
16
- async function onClick(pill) {
17
- const dispatchId = crypto.randomUUID()
18
- setState(pill, 'busy', 'Capturing…')
19
-
20
- const result = globalThis.MaxyLinkedinExtractors.extractProfile(document)
21
- if (!result.ok) {
22
- console.error(TAG_SCRAPE + ' page=profile ok=false missing=' + result.missing.join(','))
23
- setState(pill, 'error', 'Missing: ' + result.missing.join(', '))
24
- return
25
- }
26
- console.log(TAG_SCRAPE + ' page=profile ok=true fields=' + Object.keys(result.payload).join(','))
27
-
28
- const envelope = {
29
- source: 'linkedin',
30
- kind: 'profile',
31
- capturedAt: new Date().toISOString(),
32
- pageUrl: location.href.split('?')[0].split('#')[0],
33
- dispatchId: dispatchId,
34
- profile: result.payload,
35
- }
36
-
37
- let reply
38
- try {
39
- reply = await chrome.runtime.sendMessage({ type: 'linkedin-ingest', envelope: envelope })
40
- } catch (err) {
41
- console.error(TAG_ERROR + ' reason=worker-unreachable detail=' + (err && err.message ? err.message : String(err)))
42
- setState(pill, 'error', 'Capture failed')
43
- return
44
- }
45
-
46
- if (!reply || !reply.ok) {
47
- // `worker-unreachable` is the extension's OWN service worker failing to
48
- // answer. It is not `unreachable`, which means the admin host did not
49
- // answer — blaming SiteDesk here sends the operator to check a tunnel that
50
- // was never involved.
51
- const reason = (reply && reply.reason) || 'worker-unreachable'
52
- const detail = (reply && reply.detail) || ''
53
- console.error(TAG_ERROR + ' reason=' + reason + ' detail=' + detail)
54
- // Task 2208 — the ingest token is missing or was refused. There is no
55
- // sign-in to perform: the operator asks the SiteDesk agent for the token and
56
- // pastes it on the options page.
57
- if (reason === 'auth') {
58
- setState(pill, 'auth', 'Paste SiteDesk token')
59
- pill.onclick = function () { chrome.runtime.openOptionsPage() }
60
- return
61
- }
62
- // Task 2185 — the admin host was never granted, so the POST never left
63
- // the browser. Sending the operator to the options page is the fix.
64
- if (reason === 'permission') {
65
- setState(pill, 'auth', 'Grant access')
66
- pill.onclick = function () { chrome.runtime.openOptionsPage() }
67
- return
68
- }
69
- if (reason === 'unreachable') {
70
- setState(pill, 'error', 'SiteDesk unreachable')
71
- return
72
- }
73
- setState(pill, 'error', 'Capture failed')
74
- return
75
- }
76
-
77
- setState(pill, 'ok', 'Captured ✓')
78
- }
79
-
80
- function mount() {
81
- if (document.getElementById(PILL_ID)) return
82
- const anchor = document.querySelector('section.top-card-layout, main') || document.body
83
- if (!anchor) return
84
- const pill = document.createElement('button')
85
- pill.id = PILL_ID
86
- pill.className = 'maxy-pill'
87
- pill.type = 'button'
88
- pill.textContent = 'Add to SiteDesk'
89
- pill.dataset.state = 'idle'
90
- pill.addEventListener('click', function () { onClick(pill) })
91
- anchor.prepend(pill)
92
- console.log(TAG_MOUNT + ' page=profile url=' + location.href)
93
- }
94
-
95
- if (document.readyState === 'loading') {
96
- document.addEventListener('DOMContentLoaded', mount, { once: true })
97
- } else {
98
- mount()
99
- }
100
- })()
@@ -1,102 +0,0 @@
1
- // Thread content script. Runs on linkedin.com/messaging/thread/*.
2
- // Manifest concatenates extractors.js + this file.
3
-
4
- ;(function () {
5
- const TAG_MOUNT = '[linkedin-ext-mount]'
6
- const TAG_SCRAPE = '[linkedin-ext-scrape]'
7
- const TAG_ERROR = '[linkedin-ext-error]'
8
- const PILL_ID = 'maxy-linkedin-pill'
9
-
10
- function setState(pill, state, label) {
11
- pill.dataset.state = state
12
- if (label) pill.textContent = label
13
- }
14
-
15
- async function onClick(pill) {
16
- const dispatchId = crypto.randomUUID()
17
- setState(pill, 'busy', 'Capturing…')
18
-
19
- const result = globalThis.MaxyLinkedinExtractors.extractThread(document)
20
- if (!result.ok) {
21
- console.error(TAG_SCRAPE + ' page=thread ok=false missing=' + result.missing.join(','))
22
- setState(pill, 'error', 'Missing: ' + result.missing.join(', '))
23
- return
24
- }
25
- console.log(
26
- TAG_SCRAPE + ' page=thread ok=true fields=participants,bodyText participantCount=' +
27
- result.payload.participants.length,
28
- )
29
-
30
- const envelope = {
31
- source: 'linkedin',
32
- kind: 'thread',
33
- capturedAt: new Date().toISOString(),
34
- pageUrl: location.href.split('?')[0].split('#')[0],
35
- dispatchId: dispatchId,
36
- thread: result.payload,
37
- }
38
-
39
- let reply
40
- try {
41
- reply = await chrome.runtime.sendMessage({ type: 'linkedin-ingest', envelope: envelope })
42
- } catch (err) {
43
- console.error(TAG_ERROR + ' reason=worker-unreachable detail=' + (err && err.message ? err.message : String(err)))
44
- setState(pill, 'error', 'Capture failed')
45
- return
46
- }
47
-
48
- if (!reply || !reply.ok) {
49
- // `worker-unreachable` is the extension's OWN service worker failing to
50
- // answer. It is not `unreachable`, which means the admin host did not
51
- // answer — blaming SiteDesk here sends the operator to check a tunnel that
52
- // was never involved.
53
- const reason = (reply && reply.reason) || 'worker-unreachable'
54
- const detail = (reply && reply.detail) || ''
55
- console.error(TAG_ERROR + ' reason=' + reason + ' detail=' + detail)
56
- // Task 2208 — the ingest token is missing or was refused. There is no
57
- // sign-in to perform: the operator asks the SiteDesk agent for the token and
58
- // pastes it on the options page.
59
- if (reason === 'auth') {
60
- setState(pill, 'auth', 'Paste SiteDesk token')
61
- pill.onclick = function () { chrome.runtime.openOptionsPage() }
62
- return
63
- }
64
- // Task 2185 — the admin host was never granted, so the POST never left
65
- // the browser. Sending the operator to the options page is the fix.
66
- if (reason === 'permission') {
67
- setState(pill, 'auth', 'Grant access')
68
- pill.onclick = function () { chrome.runtime.openOptionsPage() }
69
- return
70
- }
71
- if (reason === 'unreachable') {
72
- setState(pill, 'error', 'SiteDesk unreachable')
73
- return
74
- }
75
- setState(pill, 'error', 'Capture failed')
76
- return
77
- }
78
-
79
- setState(pill, 'ok', 'Captured ✓')
80
- }
81
-
82
- function mount() {
83
- if (document.getElementById(PILL_ID)) return
84
- const anchor = document.querySelector('.msg-thread, header.msg-overlay-bubble-header, main') || document.body
85
- if (!anchor) return
86
- const pill = document.createElement('button')
87
- pill.id = PILL_ID
88
- pill.className = 'maxy-pill'
89
- pill.type = 'button'
90
- pill.textContent = 'Add to SiteDesk'
91
- pill.dataset.state = 'idle'
92
- pill.addEventListener('click', function () { onClick(pill) })
93
- anchor.prepend(pill)
94
- console.log(TAG_MOUNT + ' page=thread url=' + location.href)
95
- }
96
-
97
- if (document.readyState === 'loading') {
98
- document.addEventListener('DOMContentLoaded', mount, { once: true })
99
- } else {
100
- mount()
101
- }
102
- })()
@@ -1 +0,0 @@
1
- import{H as e,K as t}from"./useSubAccountSwitcher-HjQZjJBr.js";import"./useVoiceRecorder-CJecnefX.js";import"./AdminShell-Cbk0TL1B.js";import{n}from"./page-987y4JbQ.js";import"./useCopyFeedback-zjZZUC2-.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
@@ -1 +0,0 @@
1
- import{L as e}from"./useSubAccountSwitcher-HjQZjJBr.js";var t=e(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{t};
@@ -1 +0,0 @@
1
- import{L as e}from"./useSubAccountSwitcher-HjQZjJBr.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};
@@ -1 +0,0 @@
1
- import{L as e}from"./useSubAccountSwitcher-HjQZjJBr.js";var t=e(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]);export{t};
@@ -1 +0,0 @@
1
- import{H as e,K as t}from"./useSubAccountSwitcher-HjQZjJBr.js";import"./useVoiceRecorder-CJecnefX.js";import{t as n}from"./page-DWkUH4Z_.js";import"./graph-labels-Dlcb6cW7.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));