@rubytech/create-maxy-code 0.1.573 → 0.1.575

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 (1001) hide show
  1. package/dist/index.js +14 -0
  2. package/package.json +1 -1
  3. package/payload/platform/lib/admins-write/__tests__/index.test.ts +97 -0
  4. package/payload/platform/lib/admins-write/dist/index.d.ts +12 -0
  5. package/payload/platform/lib/admins-write/dist/index.d.ts.map +1 -1
  6. package/payload/platform/lib/admins-write/dist/index.js +27 -5
  7. package/payload/platform/lib/admins-write/dist/index.js.map +1 -1
  8. package/payload/platform/lib/admins-write/src/index.ts +35 -5
  9. package/payload/platform/lib/admins-write/vitest.config.ts +14 -0
  10. package/payload/platform/lib/canonical-instant/dist/index.d.ts +57 -0
  11. package/payload/platform/lib/canonical-instant/dist/index.d.ts.map +1 -0
  12. package/payload/platform/lib/canonical-instant/dist/index.js +139 -0
  13. package/payload/platform/lib/canonical-instant/dist/index.js.map +1 -0
  14. package/payload/platform/lib/canonical-instant/src/__tests__/normalise-instant.test.ts +158 -0
  15. package/payload/platform/lib/canonical-instant/src/index.ts +147 -0
  16. package/payload/platform/lib/canonical-instant/tsconfig.json +9 -0
  17. package/payload/platform/lib/canonical-instant/vitest.config.ts +9 -0
  18. package/payload/platform/lib/dispatch-read/dist/geo.d.ts +34 -0
  19. package/payload/platform/lib/dispatch-read/dist/geo.d.ts.map +1 -0
  20. package/payload/platform/lib/dispatch-read/dist/geo.js +27 -0
  21. package/payload/platform/lib/dispatch-read/dist/geo.js.map +1 -0
  22. package/payload/platform/lib/dispatch-read/dist/index.d.ts +6 -2
  23. package/payload/platform/lib/dispatch-read/dist/index.d.ts.map +1 -1
  24. package/payload/platform/lib/dispatch-read/dist/index.js +21 -1
  25. package/payload/platform/lib/dispatch-read/dist/index.js.map +1 -1
  26. package/payload/platform/lib/dispatch-read/dist/keyboard.d.ts +66 -0
  27. package/payload/platform/lib/dispatch-read/dist/keyboard.d.ts.map +1 -0
  28. package/payload/platform/lib/dispatch-read/dist/keyboard.js +64 -0
  29. package/payload/platform/lib/dispatch-read/dist/keyboard.js.map +1 -0
  30. package/payload/platform/lib/dispatch-read/dist/read.d.ts +144 -9
  31. package/payload/platform/lib/dispatch-read/dist/read.d.ts.map +1 -1
  32. package/payload/platform/lib/dispatch-read/dist/read.js +437 -118
  33. package/payload/platform/lib/dispatch-read/dist/read.js.map +1 -1
  34. package/payload/platform/lib/dispatch-read/dist/session.d.ts.map +1 -1
  35. package/payload/platform/lib/dispatch-read/dist/session.js +19 -4
  36. package/payload/platform/lib/dispatch-read/dist/session.js.map +1 -1
  37. package/payload/platform/lib/dispatch-read/dist/types.d.ts +80 -11
  38. package/payload/platform/lib/dispatch-read/dist/types.d.ts.map +1 -1
  39. package/payload/platform/lib/dispatch-read/src/__tests__/geo.test.ts +86 -0
  40. package/payload/platform/lib/dispatch-read/src/__tests__/keyboard.test.ts +124 -0
  41. package/payload/platform/lib/dispatch-read/src/__tests__/previous-visit.test.ts +98 -0
  42. package/payload/platform/lib/dispatch-read/src/__tests__/read.test.ts +107 -8
  43. package/payload/platform/lib/dispatch-read/src/__tests__/session.test.ts +91 -0
  44. package/payload/platform/lib/dispatch-read/src/__tests__/worker-day.test.ts +215 -10
  45. package/payload/platform/lib/dispatch-read/src/geo.ts +56 -0
  46. package/payload/platform/lib/dispatch-read/src/index.ts +25 -1
  47. package/payload/platform/lib/dispatch-read/src/keyboard.ts +98 -0
  48. package/payload/platform/lib/dispatch-read/src/read.ts +522 -119
  49. package/payload/platform/lib/dispatch-read/src/session.ts +25 -6
  50. package/payload/platform/lib/dispatch-read/src/types.ts +83 -11
  51. package/payload/platform/lib/dispatch-write/dist/write.d.ts +14 -0
  52. package/payload/platform/lib/dispatch-write/dist/write.d.ts.map +1 -1
  53. package/payload/platform/lib/dispatch-write/dist/write.js +50 -11
  54. package/payload/platform/lib/dispatch-write/dist/write.js.map +1 -1
  55. package/payload/platform/lib/dispatch-write/src/__tests__/write.test.ts +72 -2
  56. package/payload/platform/lib/dispatch-write/src/write.ts +79 -14
  57. package/payload/platform/neo4j/schema.cypher +66 -1
  58. package/payload/platform/package.json +2 -2
  59. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  60. package/payload/platform/plugins/admin/PLUGIN.md +11 -3
  61. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard-bash.test.sh +106 -0
  62. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +66 -0
  63. package/payload/platform/plugins/admin/hooks/__tests__/html-structure-gate.test.sh +264 -0
  64. package/payload/platform/plugins/admin/hooks/__tests__/quote-render-pdf-conformance.test.sh +122 -24
  65. package/payload/platform/plugins/admin/hooks/__tests__/specialist-dispatch-gate.test.sh +158 -0
  66. package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-post.sh +85 -12
  67. package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +18 -0
  68. package/payload/platform/plugins/admin/hooks/html-structure-gate.sh +165 -0
  69. package/payload/platform/plugins/admin/hooks/quote-render-pdf-conformance.sh +111 -19
  70. package/payload/platform/plugins/admin/hooks/specialist-dispatch-gate.sh +159 -0
  71. package/payload/platform/plugins/admin/mcp/dist/admin-bind-classify.d.ts +27 -0
  72. package/payload/platform/plugins/admin/mcp/dist/admin-bind-classify.d.ts.map +1 -0
  73. package/payload/platform/plugins/admin/mcp/dist/admin-bind-classify.js +29 -0
  74. package/payload/platform/plugins/admin/mcp/dist/admin-bind-classify.js.map +1 -0
  75. package/payload/platform/plugins/admin/mcp/dist/binding-validate.d.ts +11 -0
  76. package/payload/platform/plugins/admin/mcp/dist/binding-validate.d.ts.map +1 -0
  77. package/payload/platform/plugins/admin/mcp/dist/binding-validate.js +20 -0
  78. package/payload/platform/plugins/admin/mcp/dist/binding-validate.js.map +1 -0
  79. package/payload/platform/plugins/admin/mcp/dist/index.js +133 -1
  80. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  81. package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +31 -2
  82. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +242 -61
  83. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +16 -0
  84. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visits-scope.test.ts +130 -1
  85. package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +63 -0
  86. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visits.ts +104 -3
  87. package/payload/platform/plugins/dispatch/.claude-plugin/plugin.json +1 -1
  88. package/payload/platform/plugins/dispatch/PLUGIN.md +49 -6
  89. package/payload/platform/plugins/dispatch/mcp/dist/index.js +200 -2
  90. package/payload/platform/plugins/dispatch/mcp/dist/index.js.map +1 -1
  91. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts +22 -4
  92. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts.map +1 -1
  93. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js +4 -0
  94. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js.map +1 -1
  95. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.d.ts +10 -0
  96. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.d.ts.map +1 -0
  97. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.js +47 -0
  98. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.js.map +1 -0
  99. package/payload/platform/plugins/dispatch/mcp/dist/lib/config.d.ts.map +1 -1
  100. package/payload/platform/plugins/dispatch/mcp/dist/lib/config.js +12 -0
  101. package/payload/platform/plugins/dispatch/mcp/dist/lib/config.js.map +1 -1
  102. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.d.ts +1 -0
  103. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.d.ts.map +1 -1
  104. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.js +1 -0
  105. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.js.map +1 -1
  106. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.d.ts +36 -0
  107. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.d.ts.map +1 -0
  108. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.js +36 -0
  109. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.js.map +1 -0
  110. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.d.ts +11 -0
  111. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.d.ts.map +1 -0
  112. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.js +10 -0
  113. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.js.map +1 -0
  114. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.d.ts +2 -2
  115. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.d.ts.map +1 -1
  116. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.js +9 -1
  117. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.js.map +1 -1
  118. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.d.ts +43 -0
  119. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.d.ts.map +1 -0
  120. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.js +53 -0
  121. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.js.map +1 -0
  122. package/payload/platform/plugins/dispatch/mcp/dist/lib/types.d.ts +13 -2
  123. package/payload/platform/plugins/dispatch/mcp/dist/lib/types.d.ts.map +1 -1
  124. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts +6 -0
  125. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts.map +1 -0
  126. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js +102 -0
  127. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js.map +1 -0
  128. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.d.ts +18 -0
  129. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.d.ts.map +1 -1
  130. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.js +251 -40
  131. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.js.map +1 -1
  132. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.d.ts +75 -0
  133. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.d.ts.map +1 -0
  134. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.js +194 -0
  135. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.js.map +1 -0
  136. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.d.ts +61 -0
  137. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.d.ts.map +1 -0
  138. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.js +130 -0
  139. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.js.map +1 -0
  140. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.d.ts +28 -0
  141. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.d.ts.map +1 -0
  142. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.js +44 -0
  143. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.js.map +1 -0
  144. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.d.ts +43 -0
  145. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.d.ts.map +1 -0
  146. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.js +139 -0
  147. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.js.map +1 -0
  148. package/payload/platform/plugins/dispatch/skills/dispatch-page/SKILL.md +85 -0
  149. package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.css +97 -0
  150. package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.html +59 -0
  151. package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.js +343 -0
  152. package/payload/platform/plugins/dispatch/skills/dispatch-setup/SKILL.md +9 -4
  153. package/payload/platform/plugins/docs/references/admin-ui.md +71 -31
  154. package/payload/platform/plugins/docs/references/channel-wake-and-prompt.md +29 -13
  155. package/payload/platform/plugins/docs/references/dispatch.md +94 -15
  156. package/payload/platform/plugins/docs/references/internals.md +6 -0
  157. package/payload/platform/plugins/docs/references/outlook-guide.md +31 -1
  158. package/payload/platform/plugins/docs/references/troubleshooting.md +10 -0
  159. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/dispatch-vertical-coverage.test.js +4 -1
  160. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/dispatch-vertical-coverage.test.js.map +1 -1
  161. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +24 -1
  162. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -1
  163. package/payload/platform/plugins/memory/references/schema-dispatch.md +70 -4
  164. package/payload/platform/plugins/outlook/PLUGIN.md +3 -1
  165. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger-write-sites.test.d.ts +2 -0
  166. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger-write-sites.test.d.ts.map +1 -0
  167. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger-write-sites.test.js +177 -0
  168. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger-write-sites.test.js.map +1 -0
  169. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger.test.d.ts +2 -0
  170. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger.test.d.ts.map +1 -0
  171. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger.test.js +130 -0
  172. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-ledger.test.js.map +1 -0
  173. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-reconcile.test.d.ts +2 -0
  174. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-reconcile.test.d.ts.map +1 -0
  175. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-reconcile.test.js +162 -0
  176. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-reconcile.test.js.map +1 -0
  177. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-state-fields.test.d.ts +2 -0
  178. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-state-fields.test.d.ts.map +1 -0
  179. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-state-fields.test.js +168 -0
  180. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-state-fields.test.js.map +1 -0
  181. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-ledger.d.ts +64 -0
  182. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-ledger.d.ts.map +1 -0
  183. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-ledger.js +110 -0
  184. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-ledger.js.map +1 -0
  185. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-reconcile.d.ts +119 -0
  186. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-reconcile.d.ts.map +1 -0
  187. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-reconcile.js +0 -0
  188. package/payload/platform/plugins/outlook/mcp/dist/lib/draft-reconcile.js.map +1 -0
  189. package/payload/platform/plugins/outlook/mcp/dist/scripts/draft-reconcile.d.ts +8 -0
  190. package/payload/platform/plugins/outlook/mcp/dist/scripts/draft-reconcile.d.ts.map +1 -0
  191. package/payload/platform/plugins/outlook/mcp/dist/scripts/draft-reconcile.js +247 -0
  192. package/payload/platform/plugins/outlook/mcp/dist/scripts/draft-reconcile.js.map +1 -0
  193. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-send.d.ts.map +1 -1
  194. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-send.js +10 -0
  195. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-send.js.map +1 -1
  196. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts.map +1 -1
  197. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js +21 -0
  198. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js.map +1 -1
  199. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.d.ts +16 -0
  200. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.d.ts.map +1 -1
  201. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.js +5 -1
  202. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.js.map +1 -1
  203. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts +4 -0
  204. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts.map +1 -1
  205. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js +2 -1
  206. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js.map +1 -1
  207. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.d.ts.map +1 -1
  208. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.js +24 -0
  209. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.js.map +1 -1
  210. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -1
  211. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +2 -1
  212. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -1
  213. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.d.ts.map +1 -1
  214. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.js +29 -0
  215. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.js.map +1 -1
  216. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/draft-reconcile-throttle.test.d.ts +2 -0
  217. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/draft-reconcile-throttle.test.d.ts.map +1 -0
  218. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/draft-reconcile-throttle.test.js +21 -0
  219. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/draft-reconcile-throttle.test.js.map +1 -0
  220. package/payload/platform/plugins/scheduling/mcp/dist/lib/draft-reconcile-throttle.d.ts +13 -0
  221. package/payload/platform/plugins/scheduling/mcp/dist/lib/draft-reconcile-throttle.d.ts.map +1 -0
  222. package/payload/platform/plugins/scheduling/mcp/dist/lib/draft-reconcile-throttle.js +10 -0
  223. package/payload/platform/plugins/scheduling/mcp/dist/lib/draft-reconcile-throttle.js.map +1 -0
  224. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +2 -35
  225. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -1
  226. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +6 -114
  227. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -1
  228. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +54 -0
  229. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  230. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts +1 -1
  231. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js +3 -3
  232. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js.map +1 -1
  233. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +2 -2
  234. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  235. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +3 -3
  236. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  237. package/payload/platform/services/claude-session-manager/dist/authored-specialist-tools.d.ts +32 -0
  238. package/payload/platform/services/claude-session-manager/dist/authored-specialist-tools.d.ts.map +1 -0
  239. package/payload/platform/services/claude-session-manager/dist/authored-specialist-tools.js +144 -0
  240. package/payload/platform/services/claude-session-manager/dist/authored-specialist-tools.js.map +1 -0
  241. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.d.ts +40 -6
  242. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.d.ts.map +1 -1
  243. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.js +116 -15
  244. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.js.map +1 -1
  245. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  246. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +7 -0
  247. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  248. package/payload/platform/services/claude-session-manager/dist/html-structure-census.d.ts +44 -0
  249. package/payload/platform/services/claude-session-manager/dist/html-structure-census.d.ts.map +1 -0
  250. package/payload/platform/services/claude-session-manager/dist/html-structure-census.js +185 -0
  251. package/payload/platform/services/claude-session-manager/dist/html-structure-census.js.map +1 -0
  252. package/payload/platform/services/claude-session-manager/dist/index.js +125 -0
  253. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  254. package/payload/platform/services/claude-session-manager/dist/quote-delivery-reconcile.d.ts.map +1 -1
  255. package/payload/platform/services/claude-session-manager/dist/quote-delivery-reconcile.js +7 -0
  256. package/payload/platform/services/claude-session-manager/dist/quote-delivery-reconcile.js.map +1 -1
  257. package/payload/platform/services/claude-session-manager/dist/quote-print-census.d.ts +42 -0
  258. package/payload/platform/services/claude-session-manager/dist/quote-print-census.d.ts.map +1 -0
  259. package/payload/platform/services/claude-session-manager/dist/quote-print-census.js +254 -0
  260. package/payload/platform/services/claude-session-manager/dist/quote-print-census.js.map +1 -0
  261. package/payload/platform/services/claude-session-manager/dist/specialist-census.d.ts +92 -0
  262. package/payload/platform/services/claude-session-manager/dist/specialist-census.d.ts.map +1 -0
  263. package/payload/platform/services/claude-session-manager/dist/specialist-census.js +227 -0
  264. package/payload/platform/services/claude-session-manager/dist/specialist-census.js.map +1 -0
  265. package/payload/platform/services/telegram-channel/dist/notification.d.ts +0 -12
  266. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  267. package/payload/platform/services/telegram-channel/dist/notification.js +8 -29
  268. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  269. package/payload/platform/services/telegram-channel/dist/server.d.ts.map +1 -1
  270. package/payload/platform/services/telegram-channel/dist/server.js +8 -11
  271. package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
  272. package/payload/platform/templates/account-settings.json +8 -4
  273. package/payload/server/public/activity.html +7 -7
  274. package/payload/server/public/agents.html +6 -6
  275. package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js +1 -0
  276. package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js.br +0 -0
  277. package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js.gz +0 -0
  278. package/payload/server/public/assets/AdminShell-C_M7YE5Z.js +3 -0
  279. package/payload/server/public/assets/AdminShell-C_M7YE5Z.js.br +0 -0
  280. package/payload/server/public/assets/AdminShell-C_M7YE5Z.js.gz +0 -0
  281. package/payload/server/public/assets/activity-BL6qbB9a.js +1 -0
  282. package/payload/server/public/assets/activity-BL6qbB9a.js.br +0 -0
  283. package/payload/server/public/assets/activity-BL6qbB9a.js.gz +0 -0
  284. package/payload/server/public/assets/admin-jnJ3P2u4.js +1 -0
  285. package/payload/server/public/assets/admin-jnJ3P2u4.js.br +0 -0
  286. package/payload/server/public/assets/admin-jnJ3P2u4.js.gz +0 -0
  287. package/payload/server/public/assets/agents-BzhfKZDN.js +1 -0
  288. package/payload/server/public/assets/agents-BzhfKZDN.js.br +0 -0
  289. package/payload/server/public/assets/agents-BzhfKZDN.js.gz +0 -0
  290. package/payload/server/public/assets/arc-Bge2fWf4.js +1 -0
  291. package/payload/server/public/assets/arc-Bge2fWf4.js.br +0 -0
  292. package/payload/server/public/assets/arc-Bge2fWf4.js.gz +0 -0
  293. package/payload/server/public/assets/architecture-YZFGNWBL-B9jqFTbw.js +1 -0
  294. package/payload/server/public/assets/architecture-YZFGNWBL-B9jqFTbw.js.br +0 -0
  295. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js +36 -0
  296. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js.br +0 -0
  297. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js.gz +0 -0
  298. package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js +132 -0
  299. package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js.br +0 -0
  300. package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js.gz +0 -0
  301. package/payload/server/public/assets/browser-C-6io2B9.js +1 -0
  302. package/payload/server/public/assets/browser-C-6io2B9.js.br +0 -0
  303. package/payload/server/public/assets/browser-C-6io2B9.js.gz +0 -0
  304. package/payload/server/public/assets/c4Diagram-AHTNJAMY-CV9gKsKo.js +10 -0
  305. package/payload/server/public/assets/c4Diagram-AHTNJAMY-CV9gKsKo.js.br +0 -0
  306. package/payload/server/public/assets/c4Diagram-AHTNJAMY-CV9gKsKo.js.gz +0 -0
  307. package/payload/server/public/assets/calendar-Dt3gS88s.js +1 -0
  308. package/payload/server/public/assets/calendar-Dt3gS88s.js.br +0 -0
  309. package/payload/server/public/assets/calendar-Dt3gS88s.js.gz +0 -0
  310. package/payload/server/public/assets/channel-DUwJcjZw.js +1 -0
  311. package/payload/server/public/assets/channel-DUwJcjZw.js.br +0 -0
  312. package/payload/server/public/assets/chat-IUOvVkL-.js +1 -0
  313. package/payload/server/public/assets/chat-IUOvVkL-.js.br +1 -0
  314. package/payload/server/public/assets/chat-IUOvVkL-.js.gz +0 -0
  315. package/payload/server/public/assets/chevron-left-DSzR9zR7.js +1 -0
  316. package/payload/server/public/assets/chevron-left-DSzR9zR7.js.br +0 -0
  317. package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js +1 -0
  318. package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js.br +0 -0
  319. package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js.gz +0 -0
  320. package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js +2 -0
  321. package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js.br +0 -0
  322. package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js.gz +0 -0
  323. package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js +1 -0
  324. package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js.br +0 -0
  325. package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js.gz +0 -0
  326. package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js +1 -0
  327. package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js.br +0 -0
  328. package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js.gz +0 -0
  329. package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js +206 -0
  330. package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js.br +0 -0
  331. package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js.gz +0 -0
  332. package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js +1 -0
  333. package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js.br +0 -0
  334. package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js.gz +0 -0
  335. package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js +62 -0
  336. package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js.br +0 -0
  337. package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js.gz +0 -0
  338. package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js +2 -0
  339. package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js.br +0 -0
  340. package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js.gz +0 -0
  341. package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js +1 -0
  342. package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js.br +0 -0
  343. package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js.gz +0 -0
  344. package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js +1 -0
  345. package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js.br +0 -0
  346. package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js.gz +0 -0
  347. package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js +1 -0
  348. package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js.br +0 -0
  349. package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js.gz +0 -0
  350. package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js +1 -0
  351. package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js.br +0 -0
  352. package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js.gz +0 -0
  353. package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js +1 -0
  354. package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js.br +0 -0
  355. package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js.gz +0 -0
  356. package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js +1 -0
  357. package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js.br +0 -0
  358. package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js.gz +0 -0
  359. package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js +10 -0
  360. package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js.br +0 -0
  361. package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js.gz +0 -0
  362. package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js +15 -0
  363. package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js.br +0 -0
  364. package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js.gz +0 -0
  365. package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js +1 -0
  366. package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js.br +0 -0
  367. package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js.gz +0 -0
  368. package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js +122 -0
  369. package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js.br +0 -0
  370. package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js.gz +0 -0
  371. package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js +94 -0
  372. package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js.br +0 -0
  373. package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js.gz +0 -0
  374. package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js +1 -0
  375. package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js.br +2 -0
  376. package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js.gz +0 -0
  377. package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js +1 -0
  378. package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js.br +0 -0
  379. package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js.gz +0 -0
  380. package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js +1 -0
  381. package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js.br +0 -0
  382. package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js.gz +0 -0
  383. package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js +231 -0
  384. package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js.br +0 -0
  385. package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js.gz +0 -0
  386. package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js +1 -0
  387. package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js.br +0 -0
  388. package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js.gz +0 -0
  389. package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js +70 -0
  390. package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js.br +0 -0
  391. package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js.gz +0 -0
  392. package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js +1 -0
  393. package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js.br +0 -0
  394. package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js.gz +0 -0
  395. package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js +32 -0
  396. package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js.br +0 -0
  397. package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js.gz +0 -0
  398. package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js +1 -0
  399. package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js.br +0 -0
  400. package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js.gz +0 -0
  401. package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js +1 -0
  402. package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js.br +0 -0
  403. package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js.gz +0 -0
  404. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js +1 -0
  405. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js.br +0 -0
  406. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js.gz +0 -0
  407. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js +1 -0
  408. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js.br +0 -0
  409. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js.gz +0 -0
  410. package/payload/server/public/assets/clock-C5xE5p2I.js +1 -0
  411. package/payload/server/public/assets/clock-C5xE5p2I.js.br +0 -0
  412. package/payload/server/public/assets/clone-BORhq8On.js +1 -0
  413. package/payload/server/public/assets/clone-BORhq8On.js.br +0 -0
  414. package/payload/server/public/assets/copy-TkPJgllS.js +1 -0
  415. package/payload/server/public/assets/copy-TkPJgllS.js.br +0 -0
  416. package/payload/server/public/assets/copy-TkPJgllS.js.gz +0 -0
  417. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js +1 -0
  418. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js.br +0 -0
  419. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js.gz +0 -0
  420. package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js +4 -0
  421. package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js.br +0 -0
  422. package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js.gz +0 -0
  423. package/payload/server/public/assets/dagre-ZzXkSDir.js +1 -0
  424. package/payload/server/public/assets/dagre-ZzXkSDir.js.br +0 -0
  425. package/payload/server/public/assets/dagre-ZzXkSDir.js.gz +0 -0
  426. package/payload/server/public/assets/data-Bhv0Pvfl.js +1 -0
  427. package/payload/server/public/assets/data-Bhv0Pvfl.js.br +0 -0
  428. package/payload/server/public/assets/data-Bhv0Pvfl.js.gz +0 -0
  429. package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js +10 -0
  430. package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js.br +0 -0
  431. package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js.gz +0 -0
  432. package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js +24 -0
  433. package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js.br +0 -0
  434. package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js.gz +0 -0
  435. package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js +43 -0
  436. package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js.br +0 -0
  437. package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js.gz +0 -0
  438. package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js +24 -0
  439. package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js.br +0 -0
  440. package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js.gz +0 -0
  441. package/payload/server/public/assets/dist-DjYA4E4S.js +1 -0
  442. package/payload/server/public/assets/dist-DjYA4E4S.js.br +0 -0
  443. package/payload/server/public/assets/dist-DjYA4E4S.js.gz +0 -0
  444. package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js +85 -0
  445. package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js.br +0 -0
  446. package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js.gz +0 -0
  447. package/payload/server/public/assets/field-B490-evJ.js +1 -0
  448. package/payload/server/public/assets/field-B490-evJ.js.br +0 -0
  449. package/payload/server/public/assets/field-B490-evJ.js.gz +0 -0
  450. package/payload/server/public/assets/file-text-DyAL2DCh.js +1 -0
  451. package/payload/server/public/assets/file-text-DyAL2DCh.js.br +0 -0
  452. package/payload/server/public/assets/file-text-DyAL2DCh.js.gz +0 -0
  453. package/payload/server/public/assets/flatten-UdUTbm8v.js +1 -0
  454. package/payload/server/public/assets/flatten-UdUTbm8v.js.br +0 -0
  455. package/payload/server/public/assets/flatten-UdUTbm8v.js.gz +0 -0
  456. package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js +162 -0
  457. package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js.br +0 -0
  458. package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js.gz +0 -0
  459. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js +292 -0
  460. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js.br +0 -0
  461. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js.gz +0 -0
  462. package/payload/server/public/assets/gitGraph-7Q5UKJZL-Ua2z-DNt.js +1 -0
  463. package/payload/server/public/assets/gitGraph-7Q5UKJZL-Ua2z-DNt.js.br +0 -0
  464. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js +106 -0
  465. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js.br +0 -0
  466. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js.gz +0 -0
  467. package/payload/server/public/assets/graph-PiNIcCfX.js +51 -0
  468. package/payload/server/public/assets/graph-PiNIcCfX.js.br +0 -0
  469. package/payload/server/public/assets/graph-PiNIcCfX.js.gz +0 -0
  470. package/payload/server/public/assets/graph-labels-8jKFrLHn.js +1 -0
  471. package/payload/server/public/assets/graph-labels-8jKFrLHn.js.br +0 -0
  472. package/payload/server/public/assets/graph-labels-8jKFrLHn.js.gz +0 -0
  473. package/payload/server/public/assets/graphlib-SOh92ucm.js +1 -0
  474. package/payload/server/public/assets/graphlib-SOh92ucm.js.br +0 -0
  475. package/payload/server/public/assets/graphlib-SOh92ucm.js.gz +0 -0
  476. package/payload/server/public/assets/info-OMHHGYJF-CNYp42iX.js +1 -0
  477. package/payload/server/public/assets/info-OMHHGYJF-CNYp42iX.js.br +0 -0
  478. package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js +2 -0
  479. package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js.br +0 -0
  480. package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js.gz +0 -0
  481. package/payload/server/public/assets/isEmpty-DY_Xp9Na.js +1 -0
  482. package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.br +0 -0
  483. package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.gz +0 -0
  484. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js +70 -0
  485. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js.br +0 -0
  486. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js.gz +0 -0
  487. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js +139 -0
  488. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js.br +0 -0
  489. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js.gz +0 -0
  490. package/payload/server/public/assets/jsx-runtime-ChVh0xOm.css +1 -0
  491. package/payload/server/public/assets/jsx-runtime-ChVh0xOm.css.br +0 -0
  492. package/payload/server/public/assets/jsx-runtime-ChVh0xOm.css.gz +0 -0
  493. package/payload/server/public/assets/jsx-runtime-YcUntiud.js +9 -0
  494. package/payload/server/public/assets/jsx-runtime-YcUntiud.js.br +0 -0
  495. package/payload/server/public/assets/jsx-runtime-YcUntiud.js.gz +0 -0
  496. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js +89 -0
  497. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js.br +0 -0
  498. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js.gz +0 -0
  499. package/payload/server/public/assets/line-K8229GLG.js +1 -0
  500. package/payload/server/public/assets/line-K8229GLG.js.br +0 -0
  501. package/payload/server/public/assets/line-K8229GLG.js.gz +0 -0
  502. package/payload/server/public/assets/linear-DeX7Wdt6.js +1 -0
  503. package/payload/server/public/assets/linear-DeX7Wdt6.js.br +0 -0
  504. package/payload/server/public/assets/linear-DeX7Wdt6.js.gz +0 -0
  505. package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js +4 -0
  506. package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js.br +0 -0
  507. package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js.gz +0 -0
  508. package/payload/server/public/assets/mermaid.core-DA-Gezeo.js +11 -0
  509. package/payload/server/public/assets/mermaid.core-DA-Gezeo.js.br +0 -0
  510. package/payload/server/public/assets/mermaid.core-DA-Gezeo.js.gz +0 -0
  511. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js +96 -0
  512. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js.br +0 -0
  513. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js.gz +0 -0
  514. package/payload/server/public/assets/operator-DKGKGzrb.js +1 -0
  515. package/payload/server/public/assets/operator-DKGKGzrb.js.br +0 -0
  516. package/payload/server/public/assets/operator-DKGKGzrb.js.gz +0 -0
  517. package/payload/server/public/assets/ordinal-gnpqfIHn.js +1 -0
  518. package/payload/server/public/assets/ordinal-gnpqfIHn.js.br +0 -0
  519. package/payload/server/public/assets/ordinal-gnpqfIHn.js.gz +0 -0
  520. package/payload/server/public/assets/packet-4T2RLAQJ-B3ZAElsg.js +1 -0
  521. package/payload/server/public/assets/packet-4T2RLAQJ-B3ZAElsg.js.br +0 -0
  522. package/payload/server/public/assets/page-BU5vlY9Y.js +1 -0
  523. package/payload/server/public/assets/page-BU5vlY9Y.js.br +0 -0
  524. package/payload/server/public/assets/page-BU5vlY9Y.js.gz +0 -0
  525. package/payload/server/public/assets/page-DXz_K10G.js +32 -0
  526. package/payload/server/public/assets/page-DXz_K10G.js.br +0 -0
  527. package/payload/server/public/assets/page-DXz_K10G.js.gz +0 -0
  528. package/payload/server/public/assets/pdf-render-B5af7vu1.js +11 -0
  529. package/payload/server/public/assets/pdf-render-B5af7vu1.js.br +0 -0
  530. package/payload/server/public/assets/pdf-render-B5af7vu1.js.gz +0 -0
  531. package/payload/server/public/assets/pie-ZZUOXDRM-BWsRCj8p.js +1 -0
  532. package/payload/server/public/assets/pie-ZZUOXDRM-BWsRCj8p.js.br +0 -0
  533. package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js +30 -0
  534. package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js.br +0 -0
  535. package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js.gz +0 -0
  536. package/payload/server/public/assets/play-CmSyYrB6.js +1 -0
  537. package/payload/server/public/assets/play-CmSyYrB6.js.br +0 -0
  538. package/payload/server/public/assets/play-CmSyYrB6.js.gz +0 -0
  539. package/payload/server/public/assets/public-BmA3-jLj.js +1 -0
  540. package/payload/server/public/assets/public-BmA3-jLj.js.br +0 -0
  541. package/payload/server/public/assets/public-BmA3-jLj.js.gz +0 -0
  542. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js +7 -0
  543. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js.br +0 -0
  544. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js.gz +0 -0
  545. package/payload/server/public/assets/radar-PYXPWWZC-Gxbt2rGT.js +1 -0
  546. package/payload/server/public/assets/radar-PYXPWWZC-Gxbt2rGT.js.br +0 -0
  547. package/payload/server/public/assets/reduce-BvezuHIe.js +1 -0
  548. package/payload/server/public/assets/reduce-BvezuHIe.js.br +0 -0
  549. package/payload/server/public/assets/reduce-BvezuHIe.js.gz +0 -0
  550. package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js +84 -0
  551. package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js.br +0 -0
  552. package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js.gz +0 -0
  553. package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js +1 -0
  554. package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js.br +0 -0
  555. package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js.gz +0 -0
  556. package/payload/server/public/assets/routines-BeFrmkls.js +2 -0
  557. package/payload/server/public/assets/routines-BeFrmkls.js.br +0 -0
  558. package/payload/server/public/assets/routines-BeFrmkls.js.gz +0 -0
  559. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js +10 -0
  560. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js.br +0 -0
  561. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js.gz +0 -0
  562. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js +157 -0
  563. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js.br +0 -0
  564. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js.gz +0 -0
  565. package/payload/server/public/assets/skills-mjls5HBa.js +1 -0
  566. package/payload/server/public/assets/skills-mjls5HBa.js.br +0 -0
  567. package/payload/server/public/assets/skills-mjls5HBa.js.gz +0 -0
  568. package/payload/server/public/assets/src-BvINb2fL.js +1 -0
  569. package/payload/server/public/assets/src-BvINb2fL.js.br +0 -0
  570. package/payload/server/public/assets/src-BvINb2fL.js.gz +0 -0
  571. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js +1 -0
  572. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js.br +0 -0
  573. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js.gz +0 -0
  574. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js +1 -0
  575. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js.br +0 -0
  576. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js.gz +0 -0
  577. package/payload/server/public/assets/tasks-p6puHHD0.js +3 -0
  578. package/payload/server/public/assets/tasks-p6puHHD0.js.br +0 -0
  579. package/payload/server/public/assets/tasks-p6puHHD0.js.gz +0 -0
  580. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js +120 -0
  581. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js.br +0 -0
  582. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js.gz +0 -0
  583. package/payload/server/public/assets/treeView-SZITEDCU-Bl-aPmE3.js +1 -0
  584. package/payload/server/public/assets/treeView-SZITEDCU-Bl-aPmE3.js.br +0 -0
  585. package/payload/server/public/assets/treemap-W4RFUUIX-CUxE8Ofg.js +1 -0
  586. package/payload/server/public/assets/treemap-W4RFUUIX-CUxE8Ofg.js.br +0 -0
  587. package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js +1 -0
  588. package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js.br +0 -0
  589. package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js.gz +0 -0
  590. package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js +1 -0
  591. package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js.br +0 -0
  592. package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js.gz +0 -0
  593. package/payload/server/public/assets/useMediaQuery-BmG090FR.js +6 -0
  594. package/payload/server/public/assets/useMediaQuery-BmG090FR.js.br +0 -0
  595. package/payload/server/public/assets/useMediaQuery-BmG090FR.js.gz +0 -0
  596. package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js +2 -0
  597. package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js.br +0 -0
  598. package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js.gz +0 -0
  599. package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js +34 -0
  600. package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js.br +0 -0
  601. package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js.gz +0 -0
  602. package/payload/server/public/assets/wardley-RL74JXVD-DPB13D22.js +1 -0
  603. package/payload/server/public/assets/wardley-RL74JXVD-DPB13D22.js.br +0 -0
  604. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js +20 -0
  605. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js.br +0 -0
  606. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js.gz +0 -0
  607. package/payload/server/public/assets/wrench-k4GYG5rc.js +1 -0
  608. package/payload/server/public/assets/wrench-k4GYG5rc.js.br +0 -0
  609. package/payload/server/public/assets/wrench-k4GYG5rc.js.gz +0 -0
  610. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js +7 -0
  611. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js.br +0 -0
  612. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js.gz +0 -0
  613. package/payload/server/public/browser.html +6 -6
  614. package/payload/server/public/calendar.html +9 -9
  615. package/payload/server/public/chat.html +16 -16
  616. package/payload/server/public/data.html +15 -15
  617. package/payload/server/public/field.html +4 -4
  618. package/payload/server/public/graph.html +11 -11
  619. package/payload/server/public/index.html +17 -17
  620. package/payload/server/public/operator.html +18 -18
  621. package/payload/server/public/public.html +16 -16
  622. package/payload/server/public/routines.html +10 -10
  623. package/payload/server/public/skills.html +7 -7
  624. package/payload/server/public/tasks.html +8 -8
  625. package/payload/server/server.js +2894 -1985
  626. package/payload/platform/lib/dispatch-read/src/config.d.ts +0 -26
  627. package/payload/platform/lib/dispatch-read/src/types.d.ts +0 -143
  628. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js +0 -1
  629. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.br +0 -0
  630. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.gz +0 -0
  631. package/payload/server/public/assets/AdminShell-D-wB90c3.js +0 -3
  632. package/payload/server/public/assets/AdminShell-D-wB90c3.js.br +0 -0
  633. package/payload/server/public/assets/AdminShell-D-wB90c3.js.gz +0 -0
  634. package/payload/server/public/assets/activity-BJxhblz-.js +0 -1
  635. package/payload/server/public/assets/activity-BJxhblz-.js.br +0 -0
  636. package/payload/server/public/assets/activity-BJxhblz-.js.gz +0 -0
  637. package/payload/server/public/assets/admin-DzEi8shs.js +0 -1
  638. package/payload/server/public/assets/admin-DzEi8shs.js.br +0 -0
  639. package/payload/server/public/assets/admin-DzEi8shs.js.gz +0 -0
  640. package/payload/server/public/assets/agents-DTL8kjfD.js +0 -1
  641. package/payload/server/public/assets/agents-DTL8kjfD.js.br +0 -0
  642. package/payload/server/public/assets/agents-DTL8kjfD.js.gz +0 -0
  643. package/payload/server/public/assets/arc-CWXBKNZd.js +0 -1
  644. package/payload/server/public/assets/arc-CWXBKNZd.js.br +0 -0
  645. package/payload/server/public/assets/arc-CWXBKNZd.js.gz +0 -0
  646. package/payload/server/public/assets/architecture-YZFGNWBL-CIL4I0fc.js +0 -1
  647. package/payload/server/public/assets/architecture-YZFGNWBL-CIL4I0fc.js.br +0 -0
  648. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js +0 -36
  649. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js.br +0 -0
  650. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js.gz +0 -0
  651. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js +0 -132
  652. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js.br +0 -0
  653. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js.gz +0 -0
  654. package/payload/server/public/assets/browser-UZp75zhx.js +0 -1
  655. package/payload/server/public/assets/browser-UZp75zhx.js.br +0 -0
  656. package/payload/server/public/assets/browser-UZp75zhx.js.gz +0 -0
  657. package/payload/server/public/assets/c4Diagram-AHTNJAMY-EYW4kdlx.js +0 -10
  658. package/payload/server/public/assets/c4Diagram-AHTNJAMY-EYW4kdlx.js.br +0 -0
  659. package/payload/server/public/assets/c4Diagram-AHTNJAMY-EYW4kdlx.js.gz +0 -0
  660. package/payload/server/public/assets/calendar-Dfo0O2K_.js +0 -1
  661. package/payload/server/public/assets/calendar-Dfo0O2K_.js.br +0 -0
  662. package/payload/server/public/assets/calendar-Dfo0O2K_.js.gz +0 -0
  663. package/payload/server/public/assets/channel-CbHmRjy_.js +0 -1
  664. package/payload/server/public/assets/channel-CbHmRjy_.js.br +0 -0
  665. package/payload/server/public/assets/chat-ByJAvEWZ.js +0 -1
  666. package/payload/server/public/assets/chat-ByJAvEWZ.js.br +0 -0
  667. package/payload/server/public/assets/chat-ByJAvEWZ.js.gz +0 -0
  668. package/payload/server/public/assets/chevron-left-iG7sYNm7.js +0 -1
  669. package/payload/server/public/assets/chevron-left-iG7sYNm7.js.br +0 -0
  670. package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js +0 -1
  671. package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js.br +0 -0
  672. package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js.gz +0 -0
  673. package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js +0 -2
  674. package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js.br +0 -0
  675. package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js.gz +0 -0
  676. package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js +0 -1
  677. package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js.br +0 -0
  678. package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js.gz +0 -0
  679. package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js +0 -1
  680. package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js.br +0 -0
  681. package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js.gz +0 -0
  682. package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js +0 -206
  683. package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js.br +0 -0
  684. package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js.gz +0 -0
  685. package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js +0 -1
  686. package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js.br +0 -0
  687. package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js.gz +0 -0
  688. package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js +0 -62
  689. package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js.br +0 -0
  690. package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js.gz +0 -0
  691. package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js +0 -2
  692. package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js.br +0 -0
  693. package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js.gz +0 -0
  694. package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js +0 -1
  695. package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js.br +0 -0
  696. package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js.gz +0 -0
  697. package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js +0 -1
  698. package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js.br +0 -0
  699. package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js.gz +0 -0
  700. package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js +0 -1
  701. package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js.br +0 -3
  702. package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js.gz +0 -0
  703. package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js +0 -1
  704. package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js.br +0 -0
  705. package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js.gz +0 -0
  706. package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js +0 -1
  707. package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js.br +0 -0
  708. package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js.gz +0 -0
  709. package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js +0 -1
  710. package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js.br +0 -0
  711. package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js.gz +0 -0
  712. package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js +0 -10
  713. package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js.br +0 -0
  714. package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js.gz +0 -0
  715. package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js +0 -15
  716. package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js.br +0 -0
  717. package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js.gz +0 -0
  718. package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js +0 -1
  719. package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js.br +0 -0
  720. package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js.gz +0 -0
  721. package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js +0 -122
  722. package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js.br +0 -0
  723. package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js.gz +0 -0
  724. package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js +0 -94
  725. package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js.br +0 -0
  726. package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js.gz +0 -0
  727. package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js +0 -1
  728. package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js.br +0 -1
  729. package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js.gz +0 -0
  730. package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js +0 -1
  731. package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js.br +0 -0
  732. package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js.gz +0 -0
  733. package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js +0 -1
  734. package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js.br +0 -0
  735. package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js.gz +0 -0
  736. package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js +0 -231
  737. package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js.br +0 -0
  738. package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js.gz +0 -0
  739. package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js +0 -1
  740. package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js.br +0 -0
  741. package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js.gz +0 -0
  742. package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js +0 -70
  743. package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js.br +0 -0
  744. package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js.gz +0 -0
  745. package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js +0 -1
  746. package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js.br +0 -0
  747. package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js.gz +0 -0
  748. package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js +0 -32
  749. package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js.br +0 -0
  750. package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js.gz +0 -0
  751. package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js +0 -1
  752. package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js.br +0 -0
  753. package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js.gz +0 -0
  754. package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js +0 -1
  755. package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js.br +0 -0
  756. package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js.gz +0 -0
  757. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js +0 -1
  758. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js.br +0 -0
  759. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js.gz +0 -0
  760. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js +0 -1
  761. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js.br +0 -0
  762. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js.gz +0 -0
  763. package/payload/server/public/assets/clock-xSs0UF10.js +0 -1
  764. package/payload/server/public/assets/clock-xSs0UF10.js.br +0 -0
  765. package/payload/server/public/assets/clock-xSs0UF10.js.gz +0 -0
  766. package/payload/server/public/assets/clone-QdOE5SXR.js +0 -1
  767. package/payload/server/public/assets/copy-CGI2jioK.js +0 -1
  768. package/payload/server/public/assets/copy-CGI2jioK.js.br +0 -0
  769. package/payload/server/public/assets/copy-CGI2jioK.js.gz +0 -0
  770. package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js +0 -1
  771. package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js.br +0 -0
  772. package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js.gz +0 -0
  773. package/payload/server/public/assets/dagre-DOtq9kYX.js +0 -1
  774. package/payload/server/public/assets/dagre-DOtq9kYX.js.br +0 -0
  775. package/payload/server/public/assets/dagre-DOtq9kYX.js.gz +0 -0
  776. package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js +0 -4
  777. package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js.br +0 -0
  778. package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js.gz +0 -0
  779. package/payload/server/public/assets/data-dvwK4BcP.js +0 -1
  780. package/payload/server/public/assets/data-dvwK4BcP.js.br +0 -0
  781. package/payload/server/public/assets/data-dvwK4BcP.js.gz +0 -0
  782. package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js +0 -10
  783. package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js.br +0 -0
  784. package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js.gz +0 -0
  785. package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js +0 -24
  786. package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js.br +0 -0
  787. package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js.gz +0 -0
  788. package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js +0 -43
  789. package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js.br +0 -0
  790. package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js.gz +0 -0
  791. package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js +0 -24
  792. package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js.br +0 -0
  793. package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js.gz +0 -0
  794. package/payload/server/public/assets/dispatch-Dx9-ty1K.js +0 -1
  795. package/payload/server/public/assets/dispatch-Dx9-ty1K.js.br +0 -0
  796. package/payload/server/public/assets/dispatch-Dx9-ty1K.js.gz +0 -0
  797. package/payload/server/public/assets/dist-9RiN6lky.js +0 -1
  798. package/payload/server/public/assets/dist-9RiN6lky.js.br +0 -0
  799. package/payload/server/public/assets/dist-9RiN6lky.js.gz +0 -0
  800. package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js +0 -85
  801. package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js.br +0 -0
  802. package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js.gz +0 -0
  803. package/payload/server/public/assets/field-D-P6CsWA.js +0 -1
  804. package/payload/server/public/assets/field-D-P6CsWA.js.br +0 -0
  805. package/payload/server/public/assets/field-D-P6CsWA.js.gz +0 -0
  806. package/payload/server/public/assets/file-text-RWintp9q.js +0 -1
  807. package/payload/server/public/assets/file-text-RWintp9q.js.br +0 -0
  808. package/payload/server/public/assets/file-text-RWintp9q.js.gz +0 -0
  809. package/payload/server/public/assets/flatten-BurGKeIy.js +0 -1
  810. package/payload/server/public/assets/flatten-BurGKeIy.js.br +0 -0
  811. package/payload/server/public/assets/flatten-BurGKeIy.js.gz +0 -0
  812. package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js +0 -162
  813. package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js.br +0 -0
  814. package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js.gz +0 -0
  815. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js +0 -292
  816. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js.br +0 -0
  817. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js.gz +0 -0
  818. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DdbK59od.js +0 -1
  819. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DdbK59od.js.br +0 -0
  820. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js +0 -106
  821. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js.br +0 -0
  822. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js.gz +0 -0
  823. package/payload/server/public/assets/graph-CpBlfYrJ.js +0 -51
  824. package/payload/server/public/assets/graph-CpBlfYrJ.js.br +0 -0
  825. package/payload/server/public/assets/graph-CpBlfYrJ.js.gz +0 -0
  826. package/payload/server/public/assets/graph-labels-BOMyPppX.js +0 -1
  827. package/payload/server/public/assets/graph-labels-BOMyPppX.js.br +0 -0
  828. package/payload/server/public/assets/graph-labels-BOMyPppX.js.gz +0 -0
  829. package/payload/server/public/assets/graphlib-DT4h6-4N.js +0 -1
  830. package/payload/server/public/assets/graphlib-DT4h6-4N.js.br +0 -0
  831. package/payload/server/public/assets/graphlib-DT4h6-4N.js.gz +0 -0
  832. package/payload/server/public/assets/info-OMHHGYJF-BR8gm0wj.js +0 -1
  833. package/payload/server/public/assets/info-OMHHGYJF-BR8gm0wj.js.br +0 -0
  834. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js +0 -2
  835. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js.br +0 -0
  836. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js.gz +0 -0
  837. package/payload/server/public/assets/isEmpty-C5v0-EY7.js +0 -1
  838. package/payload/server/public/assets/isEmpty-C5v0-EY7.js.br +0 -0
  839. package/payload/server/public/assets/isEmpty-C5v0-EY7.js.gz +0 -0
  840. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js +0 -70
  841. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js.br +0 -0
  842. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js.gz +0 -0
  843. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js +0 -139
  844. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js.br +0 -0
  845. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js.gz +0 -0
  846. package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js +0 -9
  847. package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js.br +0 -0
  848. package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js.gz +0 -0
  849. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css +0 -1
  850. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css.br +0 -0
  851. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css.gz +0 -0
  852. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js +0 -89
  853. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js.br +0 -0
  854. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js.gz +0 -0
  855. package/payload/server/public/assets/line-BkI5icOY.js +0 -1
  856. package/payload/server/public/assets/line-BkI5icOY.js.br +0 -0
  857. package/payload/server/public/assets/line-BkI5icOY.js.gz +0 -0
  858. package/payload/server/public/assets/linear-B64ANRVs.js +0 -1
  859. package/payload/server/public/assets/linear-B64ANRVs.js.br +0 -0
  860. package/payload/server/public/assets/linear-B64ANRVs.js.gz +0 -0
  861. package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js +0 -4
  862. package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js.br +0 -0
  863. package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js.gz +0 -0
  864. package/payload/server/public/assets/mermaid.core-BMsz65Wy.js +0 -11
  865. package/payload/server/public/assets/mermaid.core-BMsz65Wy.js.br +0 -0
  866. package/payload/server/public/assets/mermaid.core-BMsz65Wy.js.gz +0 -0
  867. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js +0 -96
  868. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js.br +0 -0
  869. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js.gz +0 -0
  870. package/payload/server/public/assets/operator-DFgW6GiH.js +0 -1
  871. package/payload/server/public/assets/operator-DFgW6GiH.js.br +0 -0
  872. package/payload/server/public/assets/operator-DFgW6GiH.js.gz +0 -0
  873. package/payload/server/public/assets/ordinal-CJ_pL32Z.js +0 -1
  874. package/payload/server/public/assets/ordinal-CJ_pL32Z.js.br +0 -0
  875. package/payload/server/public/assets/ordinal-CJ_pL32Z.js.gz +0 -0
  876. package/payload/server/public/assets/packet-4T2RLAQJ-B31PbAeA.js +0 -1
  877. package/payload/server/public/assets/packet-4T2RLAQJ-B31PbAeA.js.br +0 -0
  878. package/payload/server/public/assets/page-BRShHSH0.js +0 -1
  879. package/payload/server/public/assets/page-BRShHSH0.js.br +0 -0
  880. package/payload/server/public/assets/page-BRShHSH0.js.gz +0 -0
  881. package/payload/server/public/assets/page-BbBCu9iP.js +0 -32
  882. package/payload/server/public/assets/page-BbBCu9iP.js.br +0 -0
  883. package/payload/server/public/assets/page-BbBCu9iP.js.gz +0 -0
  884. package/payload/server/public/assets/pdf-render-ynIPXfRA.js +0 -11
  885. package/payload/server/public/assets/pdf-render-ynIPXfRA.js.br +0 -0
  886. package/payload/server/public/assets/pdf-render-ynIPXfRA.js.gz +0 -0
  887. package/payload/server/public/assets/pie-ZZUOXDRM-BbSc1VXl.js +0 -1
  888. package/payload/server/public/assets/pie-ZZUOXDRM-BbSc1VXl.js.br +0 -0
  889. package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js +0 -30
  890. package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js.br +0 -0
  891. package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js.gz +0 -0
  892. package/payload/server/public/assets/play-BJxUaf6-.js +0 -1
  893. package/payload/server/public/assets/play-BJxUaf6-.js.br +0 -0
  894. package/payload/server/public/assets/play-BJxUaf6-.js.gz +0 -0
  895. package/payload/server/public/assets/public-DkObqkzL.js +0 -1
  896. package/payload/server/public/assets/public-DkObqkzL.js.br +0 -0
  897. package/payload/server/public/assets/public-DkObqkzL.js.gz +0 -0
  898. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js +0 -7
  899. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js.br +0 -0
  900. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js.gz +0 -0
  901. package/payload/server/public/assets/radar-PYXPWWZC-B0La8_mZ.js +0 -1
  902. package/payload/server/public/assets/radar-PYXPWWZC-B0La8_mZ.js.br +0 -0
  903. package/payload/server/public/assets/reduce-CfkEiHc9.js +0 -1
  904. package/payload/server/public/assets/reduce-CfkEiHc9.js.br +0 -0
  905. package/payload/server/public/assets/reduce-CfkEiHc9.js.gz +0 -0
  906. package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js +0 -84
  907. package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js.br +0 -0
  908. package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js.gz +0 -0
  909. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js +0 -1
  910. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.br +0 -0
  911. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.gz +0 -0
  912. package/payload/server/public/assets/routines-D9kvg_Xu.js +0 -2
  913. package/payload/server/public/assets/routines-D9kvg_Xu.js.br +0 -0
  914. package/payload/server/public/assets/routines-D9kvg_Xu.js.gz +0 -0
  915. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js +0 -10
  916. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js.br +0 -0
  917. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js.gz +0 -0
  918. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js +0 -157
  919. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js.br +0 -0
  920. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js.gz +0 -0
  921. package/payload/server/public/assets/skills-l5I9HZ3D.js +0 -1
  922. package/payload/server/public/assets/skills-l5I9HZ3D.js.br +0 -0
  923. package/payload/server/public/assets/skills-l5I9HZ3D.js.gz +0 -0
  924. package/payload/server/public/assets/src-BrAT6wKv.js +0 -1
  925. package/payload/server/public/assets/src-BrAT6wKv.js.br +0 -0
  926. package/payload/server/public/assets/src-BrAT6wKv.js.gz +0 -0
  927. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js +0 -1
  928. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js.br +0 -0
  929. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js.gz +0 -0
  930. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js +0 -1
  931. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js.br +0 -0
  932. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js.gz +0 -0
  933. package/payload/server/public/assets/tasks-C2qJMv6i.js +0 -3
  934. package/payload/server/public/assets/tasks-C2qJMv6i.js.br +0 -0
  935. package/payload/server/public/assets/tasks-C2qJMv6i.js.gz +0 -0
  936. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js +0 -120
  937. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js.br +0 -0
  938. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js.gz +0 -0
  939. package/payload/server/public/assets/treeView-SZITEDCU-BBR3hu9P.js +0 -1
  940. package/payload/server/public/assets/treeView-SZITEDCU-BBR3hu9P.js.br +0 -0
  941. package/payload/server/public/assets/treemap-W4RFUUIX-wSQMuzBT.js +0 -1
  942. package/payload/server/public/assets/treemap-W4RFUUIX-wSQMuzBT.js.br +0 -0
  943. package/payload/server/public/assets/triangle-alert-BnC67uSs.js +0 -1
  944. package/payload/server/public/assets/triangle-alert-BnC67uSs.js.br +0 -0
  945. package/payload/server/public/assets/triangle-alert-BnC67uSs.js.gz +0 -0
  946. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js +0 -1
  947. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.br +0 -0
  948. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.gz +0 -0
  949. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js +0 -6
  950. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.br +0 -0
  951. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.gz +0 -0
  952. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js +0 -2
  953. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.br +0 -0
  954. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.gz +0 -0
  955. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js +0 -34
  956. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js.br +0 -0
  957. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js.gz +0 -0
  958. package/payload/server/public/assets/wardley-RL74JXVD-3QaECtQN.js +0 -1
  959. package/payload/server/public/assets/wardley-RL74JXVD-3QaECtQN.js.br +0 -0
  960. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js +0 -20
  961. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js.br +0 -0
  962. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js.gz +0 -0
  963. package/payload/server/public/assets/wrench-D4ufQG6C.js +0 -1
  964. package/payload/server/public/assets/wrench-D4ufQG6C.js.br +0 -0
  965. package/payload/server/public/assets/wrench-D4ufQG6C.js.gz +0 -0
  966. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js +0 -7
  967. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js.br +0 -0
  968. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js.gz +0 -0
  969. package/payload/server/public/dispatch.html +0 -20
  970. /package/payload/server/public/assets/{_baseFor-D1duyODO.js → _baseFor-BApe6Tla.js} +0 -0
  971. /package/payload/server/public/assets/{_baseFor-D1duyODO.js.br → _baseFor-BApe6Tla.js.br} +0 -0
  972. /package/payload/server/public/assets/{_baseFor-D1duyODO.js.gz → _baseFor-BApe6Tla.js.gz} +0 -0
  973. /package/payload/server/public/assets/{array-j7Xa9Fap.js → array-eiH4WfvY.js} +0 -0
  974. /package/payload/server/public/assets/{array-j7Xa9Fap.js.br → array-eiH4WfvY.js.br} +0 -0
  975. /package/payload/server/public/assets/{chunk-DlZTsV_O.js → chunk-BycB0eMI.js} +0 -0
  976. /package/payload/server/public/assets/{chunk-DlZTsV_O.js.br → chunk-BycB0eMI.js.br} +0 -0
  977. /package/payload/server/public/assets/{chunk-DlZTsV_O.js.gz → chunk-BycB0eMI.js.gz} +0 -0
  978. /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js → cytoscape.esm-BZ6NYo0w.js} +0 -0
  979. /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js.br → cytoscape.esm-BZ6NYo0w.js.br} +0 -0
  980. /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js.gz → cytoscape.esm-BZ6NYo0w.js.gz} +0 -0
  981. /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js → defaultLocale-DWHqsa6O.js} +0 -0
  982. /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js.br → defaultLocale-DWHqsa6O.js.br} +0 -0
  983. /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js.gz → defaultLocale-DWHqsa6O.js.gz} +0 -0
  984. /package/payload/server/public/assets/{file-download-CN4H4Eih.js → file-download-B7zwa78w.js} +0 -0
  985. /package/payload/server/public/assets/{file-download-CN4H4Eih.js.br → file-download-B7zwa78w.js.br} +0 -0
  986. /package/payload/server/public/assets/{file-download-CN4H4Eih.js.gz → file-download-B7zwa78w.js.gz} +0 -0
  987. /package/payload/server/public/assets/{init-ve51bpJo.js → init-BdkYWjJJ.js} +0 -0
  988. /package/payload/server/public/assets/{init-ve51bpJo.js.br → init-BdkYWjJJ.js.br} +0 -0
  989. /package/payload/server/public/assets/{init-ve51bpJo.js.gz → init-BdkYWjJJ.js.gz} +0 -0
  990. /package/payload/server/public/assets/{katex-CJNaolDQ.js → katex-BCzoGtFh.js} +0 -0
  991. /package/payload/server/public/assets/{katex-CJNaolDQ.js.br → katex-BCzoGtFh.js.br} +0 -0
  992. /package/payload/server/public/assets/{katex-CJNaolDQ.js.gz → katex-BCzoGtFh.js.gz} +0 -0
  993. /package/payload/server/public/assets/{path-B4emajHp.js → path-DY2qBuPM.js} +0 -0
  994. /package/payload/server/public/assets/{path-B4emajHp.js.br → path-DY2qBuPM.js.br} +0 -0
  995. /package/payload/server/public/assets/{path-B4emajHp.js.gz → path-DY2qBuPM.js.gz} +0 -0
  996. /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js → preload-helper-eAV8hweq.js} +0 -0
  997. /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.br → preload-helper-eAV8hweq.js.br} +0 -0
  998. /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
  999. /package/payload/server/public/assets/{rough.esm-zabqYs6f.js → rough.esm-ec8xsRC7.js} +0 -0
  1000. /package/payload/server/public/assets/{rough.esm-zabqYs6f.js.br → rough.esm-ec8xsRC7.js.br} +0 -0
  1001. /package/payload/server/public/assets/{rough.esm-zabqYs6f.js.gz → rough.esm-ec8xsRC7.js.gz} +0 -0
@@ -1,4 +1,5 @@
1
- import { existsSync, readFileSync } from "node:fs";
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
2
3
  import neo4j, { type Driver, type Session } from "neo4j-driver";
3
4
 
4
5
  /**
@@ -13,11 +14,29 @@ let driver: Driver | null = null;
13
14
 
14
15
  function password(): string {
15
16
  if (process.env.NEO4J_PASSWORD) return process.env.NEO4J_PASSWORD;
16
- const file = process.env.NEO4J_PASSWORD_FILE;
17
- if (file && existsSync(file)) return readFileSync(file, "utf-8").trim();
18
- throw new Error(
19
- "[dispatch-read] Neo4j password not found in NEO4J_PASSWORD or NEO4J_PASSWORD_FILE",
20
- );
17
+ // The platform root from env, never a path computed from this file. The
18
+ // correct segment count differs between src and dist, and this package is
19
+ // loaded from src by the admin server and from dist by the dispatch MCP.
20
+ // The two processes also disagree on the variable name, so both are read.
21
+ const root = process.env.MAXY_PLATFORM_ROOT ?? process.env.PLATFORM_ROOT;
22
+ if (!root) {
23
+ throw new Error(
24
+ "[dispatch-read] neither MAXY_PLATFORM_ROOT nor PLATFORM_ROOT is set — cannot locate config/.neo4j-password",
25
+ );
26
+ }
27
+ const passwordFile = resolve(root, "config/.neo4j-password");
28
+ try {
29
+ return readFileSync(passwordFile, "utf-8").trim();
30
+ } catch (err) {
31
+ // The cause is carried, not swallowed. A permissions failure reported as
32
+ // "not found" sends the reader to a path where the file is plainly
33
+ // present, which is the misdirection this package's own outage was.
34
+ throw new Error(
35
+ `[dispatch-read] Neo4j password not found. Expected at ${passwordFile}, or in NEO4J_PASSWORD. Read failed: ${
36
+ err instanceof Error ? err.message : String(err)
37
+ }`,
38
+ );
39
+ }
21
40
  }
22
41
 
23
42
  function getDriver(): Driver {
@@ -117,6 +117,28 @@ export interface JobRow {
117
117
  createdAt: string | null;
118
118
  }
119
119
 
120
+ /**
121
+ * One worker's attendance of one visit (Task 2512).
122
+ *
123
+ * Arrival is a property of the ATTENDANCE, not of the visit. Two workers sent to
124
+ * one job arrive separately, so a single set of arrival times on the `:Visit`
125
+ * can only describe one of them — and a second `ATTENDED_BY` edge multiplied the
126
+ * visit into two rows sharing one set of times, which reads as two separate
127
+ * visits. Both failures are the reason this type exists.
128
+ */
129
+ export interface Attendance {
130
+ readonly workerId: string;
131
+ /**
132
+ * What somebody said, and what was measured. Separate properties written by
133
+ * separate clauses: recording either never clears the other. A single
134
+ * `arrivedAt` cannot show a worker closing Monday's jobs on Tuesday; two that
135
+ * disagree can.
136
+ */
137
+ readonly arrivedPressedAt: string | null;
138
+ readonly arrivedObservedAt: string | null;
139
+ readonly arrivedObservedDistanceM: number | null;
140
+ }
141
+
120
142
  export interface VisitRow {
121
143
  visitId: string;
122
144
  /** Null when the visit is not linked to a job. Log fields render `none`. */
@@ -125,18 +147,41 @@ export interface VisitRow {
125
147
  startDate: string | null;
126
148
  endDate: string | null;
127
149
  purpose: string | null;
128
- workerId: string | null;
129
150
  /**
130
- * What somebody said, and what was measured. Separate properties written by
131
- * separate clauses: recording either never clears the other. A single
132
- * `arrivedAt` cannot show a worker closing Monday's jobs on Tuesday; two that
133
- * disagree can.
151
+ * Every worker on this visit, ordered by `workerId` so two reads of one visit
152
+ * cannot differ. Empty when the visit is unallocated.
134
153
  */
154
+ attendances: readonly Attendance[];
155
+ /**
156
+ * The sole attendee, and null whenever there is not exactly one — zero, or
157
+ * two, both answer "which single worker?" with nothing. A single-worker visit
158
+ * therefore projects exactly as it did before Task 2512, which is what lets
159
+ * every existing caller keep reading this field; a two-worker visit reads
160
+ * `attendances` or it reads nothing, and cannot silently get one of the two.
161
+ */
162
+ workerId: string | null;
163
+ /** The sole attendee's arrival, on the same exactly-one rule as `workerId`. */
135
164
  arrivedPressedAt: string | null;
136
165
  arrivedObservedAt: string | null;
137
166
  arrivedObservedDistanceM: number | null;
138
167
  }
139
168
 
169
+ /**
170
+ * A site's position and its own geofence radius (Task 2510).
171
+ *
172
+ * `:Site` carried neither before this task, so a worker's shared live location
173
+ * had nothing to be measured against and the geofence could never fire. All
174
+ * three are nullable because most sites still carry none, and a zero would read
175
+ * as a site at the equator with a zero-metre fence.
176
+ */
177
+ export interface SiteLocation {
178
+ siteId: string;
179
+ latitude: number | null;
180
+ longitude: number | null;
181
+ /** Metres. Null falls back to `vehicles.defaultGeofenceRadiusM`. */
182
+ geofenceRadiusM: number | null;
183
+ }
184
+
140
185
  /** A visit with the fields a planner card needs beyond the plain visit row. */
141
186
  export interface PlannerVisit extends VisitRow {
142
187
  siteName: string | null;
@@ -145,25 +190,52 @@ export interface PlannerVisit extends VisitRow {
145
190
  jobType: string | null;
146
191
  }
147
192
 
193
+ /**
194
+ * A site's postal address, as one unit (Task 2514).
195
+ *
196
+ * One nested object rather than three sibling keys, so a card is addressed or
197
+ * it is not. Three independent optional properties would let a card render a
198
+ * postcode with no street while `sitesVisitedTodayWithoutAddress` counted the
199
+ * site addressed, and the card and the census would be describing different
200
+ * things.
201
+ */
202
+ export interface SiteAddress {
203
+ streetAddress: string | null;
204
+ addressLocality: string | null;
205
+ postalCode: string | null;
206
+ }
207
+
148
208
  /**
149
209
  * The field job sheet's card (Task 2502).
150
210
  *
151
211
  * Wider than `PlannerVisit` on contact detail, because a worker on a doorstep
152
212
  * needs a name and a telephone and the office grid does not.
153
213
  *
154
- * It carries **no address and no postcode**, and that absence is the design.
155
- * `:Site` declares neither, and the only `PostalAddress` edge in the ontology
156
- * belongs to the logistics vertical. An always-null column would read as a
157
- * site with no address rather than a product that does not store one. Task
158
- * 2514 adds the edge; `sitesVisitedTodayWithoutAddress` on
159
- * `[dispatch-field-census]` counts what it costs until then.
214
+ * `address` is **absent** when the site has no `AT_ADDRESS` edge, never present
215
+ * and empty. An always-present key holding nulls reads to a worker as "this
216
+ * site has no address" rather than "we hold none for it", which is why task
217
+ * 2502 shipped no column at all rather than an empty one.
160
218
  */
161
219
  export interface FieldVisit extends VisitRow {
220
+ /**
221
+ * The four inherited worker fields mean one of two things here, decided by
222
+ * the read, and the types do not distinguish them (Task 2512).
223
+ *
224
+ * `readWorkerDay` names a worker, so they are THAT worker's own: on a visit
225
+ * they share with somebody the sole-attendee rule yields null, and a sheet
226
+ * showing no arrival to the worker who pressed it reads as a lost press.
227
+ * `readFieldVisit` names none — the route does its own ownership check — so
228
+ * they fall back to the sole-attendee rule and go null on a shared visit.
229
+ *
230
+ * `attendances` carries everyone on the visit either way, which is what a
231
+ * sheet renders to name who a worker is working with.
232
+ */
162
233
  siteId: string | null;
163
234
  siteName: string | null;
164
235
  customerName: string | null;
165
236
  contactName: string | null;
166
237
  contactTelephone: string | null;
238
+ address?: SiteAddress;
167
239
  }
168
240
 
169
241
  /**
@@ -54,6 +54,20 @@ export interface VisitRecordParams {
54
54
  partId?: string;
55
55
  checklistItem?: string;
56
56
  signature?: string;
57
+ /**
58
+ * Whose arrival this is (Task 2512). Arrival is a property of the attendance,
59
+ * so it cannot be written without knowing the worker.
60
+ *
61
+ * Optional, and only consulted for the three arrival fields. Omitted, the
62
+ * visit's sole attendance is used; on a visit two workers share, omitting it
63
+ * is REFUSED rather than resolved to whichever attendance comes first —
64
+ * picking one silently records that one worker arrived when the other did.
65
+ *
66
+ * The note, media, parts, checklist and signature stay on the `:Visit` and
67
+ * need none of this: either worker may write them, and the record is the
68
+ * visit's.
69
+ */
70
+ workerId?: string;
57
71
  arrivedPressedAt?: string;
58
72
  arrivedObservedAt?: string;
59
73
  arrivedObservedDistanceM?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMxE,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IACtB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAU9E;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;CAC1C;AAED,wBAAsB,WAAW,CAC/B,CAAC,EAAE,iBAAiB,GACnB,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CA4G1C;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;CAC1C;AAED,wBAAsB,cAAc,CAClC,CAAC,EAAE,oBAAoB,GACtB,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CA4I1C"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
@@ -41,33 +41,72 @@ async function visitRecord(p) {
41
41
  sets.push("v.signatures = coalesce(v.signatures, []) + $signature");
42
42
  params.signature = p.signature;
43
43
  }
44
+ // Task 2512 — arrival is written to the ATTENDANCE, so it needs a worker.
44
45
  // Three separate SET clauses, never one object assignment. Each fires only
45
46
  // when this call supplied that value, so neither arrival can clear the other.
47
+ const arrivalSets = [];
48
+ const arrivalParams = {
49
+ accountId: p.accountId,
50
+ visitId: p.visitId,
51
+ };
46
52
  if (p.arrivedPressedAt !== undefined) {
47
- sets.push("v.arrivedPressedAt = $arrivedPressedAt");
48
- params.arrivedPressedAt = p.arrivedPressedAt;
53
+ arrivalSets.push("a.arrivedPressedAt = $arrivedPressedAt");
54
+ arrivalParams.arrivedPressedAt = p.arrivedPressedAt;
49
55
  }
50
56
  if (p.arrivedObservedAt !== undefined) {
51
- sets.push("v.arrivedObservedAt = $arrivedObservedAt");
52
- params.arrivedObservedAt = p.arrivedObservedAt;
57
+ arrivalSets.push("a.arrivedObservedAt = $arrivedObservedAt");
58
+ arrivalParams.arrivedObservedAt = p.arrivedObservedAt;
53
59
  }
54
60
  if (p.arrivedObservedDistanceM !== undefined) {
55
- sets.push("v.arrivedObservedDistanceM = $arrivedObservedDistanceM");
56
- params.arrivedObservedDistanceM = p.arrivedObservedDistanceM;
61
+ arrivalSets.push("a.arrivedObservedDistanceM = $arrivedObservedDistanceM");
62
+ arrivalParams.arrivedObservedDistanceM = p.arrivedObservedDistanceM;
63
+ }
64
+ // Resolved before any write, so a refusal leaves nothing half-recorded.
65
+ let arrivalWorkerId = null;
66
+ if (arrivalSets.length > 0) {
67
+ if (p.workerId !== undefined) {
68
+ const on = visit.attendances.some((a) => a.workerId === p.workerId);
69
+ if (!on) {
70
+ return refuse("not-attending", `${p.cfg.vocabulary.worker} "${p.workerId}" is not on ${p.cfg.vocabulary.visit} "${p.visitId}", so their arrival cannot be recorded against it.`);
71
+ }
72
+ arrivalWorkerId = p.workerId;
73
+ }
74
+ else if (visit.attendances.length === 1) {
75
+ arrivalWorkerId = visit.attendances[0].workerId;
76
+ }
77
+ else if (visit.attendances.length === 0) {
78
+ return refuse("no-attendance", `No ${p.cfg.vocabulary.worker} is on ${p.cfg.vocabulary.visit} "${p.visitId}", so there is no arrival to record. Allocate one first.`);
79
+ }
80
+ else {
81
+ return refuse("ambiguous-attendance", `${visit.attendances.length} ${p.cfg.vocabulary.worker}s are on ${p.cfg.vocabulary.visit} "${p.visitId}" (${visit.attendances.map((a) => a.workerId).join(", ")}). Name whose arrival this is with workerId.`);
82
+ }
57
83
  }
58
- if (sets.length === 0) {
84
+ if (sets.length === 0 && arrivalSets.length === 0) {
59
85
  return refuse("nothing-to-record", `Nothing to record. Supply at least one of: note, mediaRef, partId, checklistItem, signature, arrivedPressedAt, arrivedObservedAt.`);
60
86
  }
61
- await p.session.run(`MATCH (v:Visit {accountId: $accountId, visitId: $visitId}) SET ${sets.join(", ")}`, params);
87
+ if (sets.length > 0) {
88
+ await p.session.run(`MATCH (v:Visit {accountId: $accountId, visitId: $visitId}) SET ${sets.join(", ")}`, params);
89
+ }
90
+ if (arrivalSets.length > 0) {
91
+ arrivalParams.workerId = arrivalWorkerId;
92
+ await p.session.run(`MATCH (:Visit {accountId: $accountId, visitId: $visitId})-[:HAS_ATTENDANCE]->(a:Attendance)
93
+ WHERE a.engineerId = $workerId
94
+ SET ${arrivalSets.join(", ")}`, arrivalParams);
95
+ }
62
96
  const state = await (0, index_js_1.readVisitRecordState)(p.session, p.accountId, p.visitId);
63
97
  p.emit(`[dispatch] op=visit-record visitId=${p.visitId} notes=${state.notes} ` +
64
98
  `media=${state.media} parts=${state.parts} ` +
65
99
  `checklist=${state.checklistDone}/${state.checklistTotal} ` +
66
100
  `signatures=${state.signatures}`);
67
101
  if (p.arrivedObservedAt !== undefined) {
68
- // The press this observation is being compared against is whichever one the
69
- // visit already carried, or the one this same call supplied.
70
- const pressedAt = p.arrivedPressedAt ?? visit.arrivedPressedAt;
102
+ // The press this observation is compared against is the ACTING WORKER'S
103
+ // own, or the one this same call supplied. Task 2512 — reading the visit's
104
+ // scalar here would compare one worker's observation against the other
105
+ // worker's press on any shared visit, and report the gap between two
106
+ // different people as one person's discrepancy.
107
+ const pressedAt = p.arrivedPressedAt ??
108
+ visit.attendances.find((a) => a.workerId === arrivalWorkerId)?.arrivedPressedAt ??
109
+ null;
71
110
  const deltaS = pressedAt === null || pressedAt === undefined
72
111
  ? null
73
112
  : Math.round((Date.parse(p.arrivedObservedAt) - Date.parse(pressedAt)) / 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,17 @@ const VISIT = {
21
21
  endDate: null,
22
22
  purpose: null,
23
23
  workerId: "w1",
24
+ // Task 2512 — one worker on the visit, which is what this fixture has always
25
+ // meant. Arrival lives on the attendance now, so a visit with an empty list
26
+ // has nobody whose arrival could be recorded.
27
+ attendances: [
28
+ {
29
+ workerId: "w1",
30
+ arrivedPressedAt: null,
31
+ arrivedObservedAt: null,
32
+ arrivedObservedDistanceM: null,
33
+ },
34
+ ],
24
35
  arrivedPressedAt: null,
25
36
  arrivedObservedAt: null,
26
37
  arrivedObservedDistanceM: null,
@@ -152,7 +163,66 @@ describe("visitRecord returns a domain outcome", () => {
152
163
  // A pressed arrival is what somebody said and an observed one is what was
153
164
  // measured; a write that set both would destroy the disagreement between
154
165
  // them, which is the finding worth having.
155
- expect(writes[0].query).toContain("v.arrivedObservedAt = $arrivedObservedAt");
156
- expect(writes[0].query).not.toContain("v.arrivedPressedAt");
166
+ //
167
+ // Task 2512 — the target is the ATTENDANCE, not the visit. A visit-level
168
+ // write would put one worker's arrival where the other's is read from.
169
+ expect(writes[0].query).toContain("a.arrivedObservedAt = $arrivedObservedAt");
170
+ expect(writes[0].query).not.toContain("arrivedPressedAt");
171
+ expect(writes[0].query).toContain("HAS_ATTENDANCE");
172
+ });
173
+
174
+ // Task 2512 — the whole point of the node. Guessing which of two workers
175
+ // arrived records that one of them did when the other did.
176
+ it("refuses an arrival on a shared visit that does not name the worker", async () => {
177
+ const { session } = fakeSession({
178
+ visit: {
179
+ ...VISIT,
180
+ workerId: null,
181
+ attendances: [
182
+ { workerId: "w1", arrivedPressedAt: null, arrivedObservedAt: null, arrivedObservedDistanceM: null },
183
+ { workerId: "w2", arrivedPressedAt: null, arrivedObservedAt: null, arrivedObservedDistanceM: null },
184
+ ],
185
+ },
186
+ });
187
+ const out = await visitRecord({
188
+ session, accountId: "a1", cfg, emit: () => {},
189
+ visitId: "v1", arrivedPressedAt: "2026-08-07T09:00:00.000Z",
190
+ });
191
+ expect(out.ok).toBe(false);
192
+ if (out.ok) throw new Error("expected a refusal");
193
+ expect(out.reason).toBe("ambiguous-attendance");
194
+ // The refusal names both, or the operator cannot act on it.
195
+ expect(out.message).toContain("w1");
196
+ expect(out.message).toContain("w2");
197
+ });
198
+
199
+ it("writes a named worker's arrival on a shared visit", async () => {
200
+ const { session, writes } = fakeSession({
201
+ visit: {
202
+ ...VISIT,
203
+ workerId: null,
204
+ attendances: [
205
+ { workerId: "w1", arrivedPressedAt: null, arrivedObservedAt: null, arrivedObservedDistanceM: null },
206
+ { workerId: "w2", arrivedPressedAt: null, arrivedObservedAt: null, arrivedObservedDistanceM: null },
207
+ ],
208
+ },
209
+ });
210
+ const out = await visitRecord({
211
+ session, accountId: "a1", cfg, emit: () => {},
212
+ visitId: "v1", workerId: "w2", arrivedPressedAt: "2026-08-07T09:00:00.000Z",
213
+ });
214
+ expect(out.ok).toBe(true);
215
+ expect(writes[0].params).toMatchObject({ workerId: "w2" });
216
+ });
217
+
218
+ it("refuses an arrival for a worker who is not on the visit", async () => {
219
+ const { session } = fakeSession();
220
+ const out = await visitRecord({
221
+ session, accountId: "a1", cfg, emit: () => {},
222
+ visitId: "v1", workerId: "w9", arrivedPressedAt: "2026-08-07T09:00:00.000Z",
223
+ });
224
+ expect(out.ok).toBe(false);
225
+ if (out.ok) throw new Error("expected a refusal");
226
+ expect(out.reason).toBe("not-attending");
157
227
  });
158
228
  });
@@ -70,6 +70,20 @@ export interface VisitRecordParams {
70
70
  partId?: string;
71
71
  checklistItem?: string;
72
72
  signature?: string;
73
+ /**
74
+ * Whose arrival this is (Task 2512). Arrival is a property of the attendance,
75
+ * so it cannot be written without knowing the worker.
76
+ *
77
+ * Optional, and only consulted for the three arrival fields. Omitted, the
78
+ * visit's sole attendance is used; on a visit two workers share, omitting it
79
+ * is REFUSED rather than resolved to whichever attendance comes first —
80
+ * picking one silently records that one worker arrived when the other did.
81
+ *
82
+ * The note, media, parts, checklist and signature stay on the `:Visit` and
83
+ * need none of this: either worker may write them, and the record is the
84
+ * visit's.
85
+ */
86
+ workerId?: string;
73
87
  arrivedPressedAt?: string;
74
88
  arrivedObservedAt?: string;
75
89
  arrivedObservedDistanceM?: number;
@@ -129,32 +143,77 @@ export async function visitRecord(
129
143
  params.signature = p.signature;
130
144
  }
131
145
 
146
+ // Task 2512 — arrival is written to the ATTENDANCE, so it needs a worker.
132
147
  // Three separate SET clauses, never one object assignment. Each fires only
133
148
  // when this call supplied that value, so neither arrival can clear the other.
149
+ const arrivalSets: string[] = [];
150
+ const arrivalParams: Record<string, unknown> = {
151
+ accountId: p.accountId,
152
+ visitId: p.visitId,
153
+ };
134
154
  if (p.arrivedPressedAt !== undefined) {
135
- sets.push("v.arrivedPressedAt = $arrivedPressedAt");
136
- params.arrivedPressedAt = p.arrivedPressedAt;
155
+ arrivalSets.push("a.arrivedPressedAt = $arrivedPressedAt");
156
+ arrivalParams.arrivedPressedAt = p.arrivedPressedAt;
137
157
  }
138
158
  if (p.arrivedObservedAt !== undefined) {
139
- sets.push("v.arrivedObservedAt = $arrivedObservedAt");
140
- params.arrivedObservedAt = p.arrivedObservedAt;
159
+ arrivalSets.push("a.arrivedObservedAt = $arrivedObservedAt");
160
+ arrivalParams.arrivedObservedAt = p.arrivedObservedAt;
141
161
  }
142
162
  if (p.arrivedObservedDistanceM !== undefined) {
143
- sets.push("v.arrivedObservedDistanceM = $arrivedObservedDistanceM");
144
- params.arrivedObservedDistanceM = p.arrivedObservedDistanceM;
163
+ arrivalSets.push("a.arrivedObservedDistanceM = $arrivedObservedDistanceM");
164
+ arrivalParams.arrivedObservedDistanceM = p.arrivedObservedDistanceM;
145
165
  }
146
166
 
147
- if (sets.length === 0) {
167
+ // Resolved before any write, so a refusal leaves nothing half-recorded.
168
+ let arrivalWorkerId: string | null = null;
169
+ if (arrivalSets.length > 0) {
170
+ if (p.workerId !== undefined) {
171
+ const on = visit.attendances.some((a) => a.workerId === p.workerId);
172
+ if (!on) {
173
+ return refuse(
174
+ "not-attending",
175
+ `${p.cfg.vocabulary.worker} "${p.workerId}" is not on ${p.cfg.vocabulary.visit} "${p.visitId}", so their arrival cannot be recorded against it.`,
176
+ );
177
+ }
178
+ arrivalWorkerId = p.workerId;
179
+ } else if (visit.attendances.length === 1) {
180
+ arrivalWorkerId = visit.attendances[0].workerId;
181
+ } else if (visit.attendances.length === 0) {
182
+ return refuse(
183
+ "no-attendance",
184
+ `No ${p.cfg.vocabulary.worker} is on ${p.cfg.vocabulary.visit} "${p.visitId}", so there is no arrival to record. Allocate one first.`,
185
+ );
186
+ } else {
187
+ return refuse(
188
+ "ambiguous-attendance",
189
+ `${visit.attendances.length} ${p.cfg.vocabulary.worker}s are on ${p.cfg.vocabulary.visit} "${p.visitId}" (${visit.attendances.map((a) => a.workerId).join(", ")}). Name whose arrival this is with workerId.`,
190
+ );
191
+ }
192
+ }
193
+
194
+ if (sets.length === 0 && arrivalSets.length === 0) {
148
195
  return refuse(
149
196
  "nothing-to-record",
150
197
  `Nothing to record. Supply at least one of: note, mediaRef, partId, checklistItem, signature, arrivedPressedAt, arrivedObservedAt.`,
151
198
  );
152
199
  }
153
200
 
154
- await p.session.run(
155
- `MATCH (v:Visit {accountId: $accountId, visitId: $visitId}) SET ${sets.join(", ")}`,
156
- params,
157
- );
201
+ if (sets.length > 0) {
202
+ await p.session.run(
203
+ `MATCH (v:Visit {accountId: $accountId, visitId: $visitId}) SET ${sets.join(", ")}`,
204
+ params,
205
+ );
206
+ }
207
+
208
+ if (arrivalSets.length > 0) {
209
+ arrivalParams.workerId = arrivalWorkerId;
210
+ await p.session.run(
211
+ `MATCH (:Visit {accountId: $accountId, visitId: $visitId})-[:HAS_ATTENDANCE]->(a:Attendance)
212
+ WHERE a.engineerId = $workerId
213
+ SET ${arrivalSets.join(", ")}`,
214
+ arrivalParams,
215
+ );
216
+ }
158
217
 
159
218
  const state = await readVisitRecordState(p.session, p.accountId, p.visitId);
160
219
  p.emit(
@@ -165,9 +224,15 @@ export async function visitRecord(
165
224
  );
166
225
 
167
226
  if (p.arrivedObservedAt !== undefined) {
168
- // The press this observation is being compared against is whichever one the
169
- // visit already carried, or the one this same call supplied.
170
- const pressedAt = p.arrivedPressedAt ?? visit.arrivedPressedAt;
227
+ // The press this observation is compared against is the ACTING WORKER'S
228
+ // own, or the one this same call supplied. Task 2512 — reading the visit's
229
+ // scalar here would compare one worker's observation against the other
230
+ // worker's press on any shared visit, and report the gap between two
231
+ // different people as one person's discrepancy.
232
+ const pressedAt =
233
+ p.arrivedPressedAt ??
234
+ visit.attendances.find((a) => a.workerId === arrivalWorkerId)?.arrivedPressedAt ??
235
+ null;
171
236
  const deltaS =
172
237
  pressedAt === null || pressedAt === undefined
173
238
  ? null
@@ -467,7 +467,7 @@ CREATE FULLTEXT INDEX entity_search_admin IF NOT EXISTS
467
467
  FOR (n:LocalBusiness|Service|PriceSpecification|OpeningHoursSpecification|Organization
468
468
  |Listing|Property|Viewing|Offer|PostalAddress|Sale|Chain|ChainLink
469
469
  |Job|Quote|QuoteLine|Valuation|Milestone|VariationNote|Invoice|InboundInvoice|JobCost|WhatsAppGroup
470
- |Customer|Site|Asset|Visit|Part|PurchaseOrder|PpmContract|Contact|PurchaseOrderLine|InvoiceLine|InvoicePayment|Credit|Note
470
+ |Customer|Site|Asset|Visit|Attendance|Part|PurchaseOrder|PpmContract|Contact|PurchaseOrderLine|InvoiceLine|InvoicePayment|Credit|Note
471
471
  |CashEntry
472
472
  |Person|UserProfile|Preference|AdminUser|AccessGrant
473
473
  |KnowledgeDocument|ConversationArchive|Section|Chunk|DigitalDocument|CreativeWork|Question|FAQPage|DefinedTerm|Review|ImageObject
@@ -1666,6 +1666,62 @@ FOR (v:Visit) REQUIRE (v.accountId, v.visitId) IS UNIQUE;
1666
1666
  CREATE INDEX visit_account IF NOT EXISTS
1667
1667
  FOR (v:Visit) ON (v.accountId);
1668
1668
 
1669
+ // :Attendance (Task 2512) — one worker's attendance of one visit.
1670
+ // (:Visit)-[:HAS_ATTENDANCE]->(:Attendance)-[:BY_ENGINEER]->(:Engineer),
1671
+ // mirroring (:Job)-[:HAS_COST]->(:JobCost)-[:INCURRED_BY]->(:Engineer) above,
1672
+ // down to the composite natural key: `attendanceId` is engineerId + '-' +
1673
+ // visitId exactly as JobCost's `costId` is.
1674
+ //
1675
+ // A FIRST-CLASS NODE, NOT PROPERTIES ON ATTENDED_BY, and the reason is
1676
+ // mechanical rather than stylistic: this file declares no relationship-property
1677
+ // constraint or index anywhere — every constraint is FOR (n:Label) — so
1678
+ // per-attendance arrival times hung off the edge would carry no uniqueness
1679
+ // guarantee and no index, and `schema-dispatch.md`'s >=1-adjacency write gate
1680
+ // has no adjacency to test on a relationship property. The uniqueness
1681
+ // constraint is what makes allocating the same worker twice a no-op instead of
1682
+ // a second silent attendance.
1683
+ CREATE CONSTRAINT attendance_account_attendanceid_unique IF NOT EXISTS
1684
+ FOR (a:Attendance) REQUIRE (a.accountId, a.attendanceId) IS UNIQUE;
1685
+ CREATE INDEX attendance_account IF NOT EXISTS
1686
+ FOR (a:Attendance) ON (a.accountId);
1687
+
1688
+ // Migration (Task 2512): every legacy (:Visit)-[:ATTENDED_BY]->(:Engineer)
1689
+ // becomes an :Attendance carrying the visit's own arrival properties, then the
1690
+ // edge and the visit-level scalars go. Without this every visit already on an
1691
+ // install reads as unallocated the moment the new projection ships, because
1692
+ // nothing else creates the node the reads now match on.
1693
+ //
1694
+ // Idempotent on the deterministic (accountId, attendanceId) key, so a second
1695
+ // apply re-MERGEs the same node rather than violating the constraint above. The
1696
+ // arrival properties are copied under ON CREATE only: a re-run must not
1697
+ // overwrite times a worker has pressed since the first apply with the stale
1698
+ // visit-level values — and after the first pass those scalars are gone anyway.
1699
+ //
1700
+ // The three visit-level scalars are removed unconditionally, so a visit cannot
1701
+ // carry both its old single-worker arrival and its attendances' — two sources
1702
+ // for one fact, which is what this task exists to end.
1703
+ //
1704
+ // AN ENGINEER WITHOUT AN `engineerId` IS SKIPPED, not migrated under a null key.
1705
+ // Cypher propagates null through the concatenation, so the key would be null,
1706
+ // and the (accountId, attendanceId) constraint IGNORES nulls — every re-apply
1707
+ // would add another keyless attendance while `DELETE r` removed the edge that
1708
+ // says who attended. `portal-visits-pull.ts` guards the identical
1709
+ // `engineerId-visitId` cost key for the same reason. The edge is LEFT IN PLACE
1710
+ // on a skip, so the record survives to be repaired and re-migrated.
1711
+ MATCH (v:Visit)-[r:ATTENDED_BY]->(e:Engineer)
1712
+ WHERE e.engineerId IS NOT NULL AND v.visitId IS NOT NULL
1713
+ MERGE (a:Attendance { accountId: v.accountId, attendanceId: e.engineerId + '-' + v.visitId })
1714
+ ON CREATE SET a.engineerId = e.engineerId,
1715
+ a.arrivedPressedAt = v.arrivedPressedAt,
1716
+ a.arrivedObservedAt = v.arrivedObservedAt,
1717
+ a.arrivedObservedDistanceM = v.arrivedObservedDistanceM,
1718
+ a.createdByTool = 'schema-migration',
1719
+ a.migratedFrom = 'Visit.ATTENDED_BY'
1720
+ MERGE (v)-[:HAS_ATTENDANCE]->(a)
1721
+ MERGE (a)-[:BY_ENGINEER]->(e)
1722
+ DELETE r
1723
+ REMOVE v.arrivedPressedAt, v.arrivedObservedAt, v.arrivedObservedDistanceM;
1724
+
1669
1725
  CREATE CONSTRAINT part_account_partid_unique IF NOT EXISTS
1670
1726
  FOR (p:Part) REQUIRE (p.accountId, p.partId) IS UNIQUE;
1671
1727
  CREATE INDEX part_account IF NOT EXISTS
@@ -1681,6 +1737,15 @@ FOR (pc:PpmContract) REQUIRE (pc.accountId, pc.contractId) IS UNIQUE;
1681
1737
  CREATE INDEX ppm_contract_account IF NOT EXISTS
1682
1738
  FOR (pc:PpmContract) ON (pc.accountId);
1683
1739
 
1740
+ // The dispatch intake queue (Task 2508). An inbound request before anybody
1741
+ // decided on it. Deliberately NOT a :Job with a flag — a draft that is a :Job
1742
+ // appears in dispatch-job-list, in the [dispatch-census] jobs= count and in the
1743
+ // planner. Clean natural key (draftId), minted by the plugin.
1744
+ CREATE CONSTRAINT intake_draft_account_draftid_unique IF NOT EXISTS
1745
+ FOR (d:IntakeDraft) REQUIRE (d.accountId, d.draftId) IS UNIQUE;
1746
+ CREATE INDEX intake_draft_account IF NOT EXISTS
1747
+ FOR (d:IntakeDraft) ON (d.accountId);
1748
+
1684
1749
  // Child write-time-MERGE labels (accountId-index only; uniqueness is the
1685
1750
  // writer's MERGE key, mirrors :ImageObject / :Milestone).
1686
1751
  CREATE INDEX contact_account IF NOT EXISTS