@rubytech/create-realagent-code 0.1.574 → 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 (793) hide show
  1. package/dist/index.js +14 -0
  2. package/package.json +1 -1
  3. package/payload/platform/lib/canonical-instant/dist/index.d.ts +57 -0
  4. package/payload/platform/lib/canonical-instant/dist/index.d.ts.map +1 -0
  5. package/payload/platform/lib/canonical-instant/dist/index.js +139 -0
  6. package/payload/platform/lib/canonical-instant/dist/index.js.map +1 -0
  7. package/payload/platform/lib/canonical-instant/src/__tests__/normalise-instant.test.ts +158 -0
  8. package/payload/platform/lib/canonical-instant/src/index.ts +147 -0
  9. package/payload/platform/lib/canonical-instant/tsconfig.json +9 -0
  10. package/payload/platform/lib/canonical-instant/vitest.config.ts +9 -0
  11. package/payload/platform/lib/dispatch-read/dist/geo.d.ts +34 -0
  12. package/payload/platform/lib/dispatch-read/dist/geo.d.ts.map +1 -0
  13. package/payload/platform/lib/dispatch-read/dist/geo.js +27 -0
  14. package/payload/platform/lib/dispatch-read/dist/geo.js.map +1 -0
  15. package/payload/platform/lib/dispatch-read/dist/index.d.ts +6 -2
  16. package/payload/platform/lib/dispatch-read/dist/index.d.ts.map +1 -1
  17. package/payload/platform/lib/dispatch-read/dist/index.js +21 -1
  18. package/payload/platform/lib/dispatch-read/dist/index.js.map +1 -1
  19. package/payload/platform/lib/dispatch-read/dist/keyboard.d.ts +66 -0
  20. package/payload/platform/lib/dispatch-read/dist/keyboard.d.ts.map +1 -0
  21. package/payload/platform/lib/dispatch-read/dist/keyboard.js +64 -0
  22. package/payload/platform/lib/dispatch-read/dist/keyboard.js.map +1 -0
  23. package/payload/platform/lib/dispatch-read/dist/read.d.ts +144 -9
  24. package/payload/platform/lib/dispatch-read/dist/read.d.ts.map +1 -1
  25. package/payload/platform/lib/dispatch-read/dist/read.js +437 -118
  26. package/payload/platform/lib/dispatch-read/dist/read.js.map +1 -1
  27. package/payload/platform/lib/dispatch-read/dist/types.d.ts +80 -11
  28. package/payload/platform/lib/dispatch-read/dist/types.d.ts.map +1 -1
  29. package/payload/platform/lib/dispatch-read/src/__tests__/geo.test.ts +86 -0
  30. package/payload/platform/lib/dispatch-read/src/__tests__/keyboard.test.ts +124 -0
  31. package/payload/platform/lib/dispatch-read/src/__tests__/previous-visit.test.ts +98 -0
  32. package/payload/platform/lib/dispatch-read/src/__tests__/read.test.ts +107 -8
  33. package/payload/platform/lib/dispatch-read/src/__tests__/worker-day.test.ts +215 -10
  34. package/payload/platform/lib/dispatch-read/src/geo.ts +56 -0
  35. package/payload/platform/lib/dispatch-read/src/index.ts +25 -1
  36. package/payload/platform/lib/dispatch-read/src/keyboard.ts +98 -0
  37. package/payload/platform/lib/dispatch-read/src/read.ts +522 -119
  38. package/payload/platform/lib/dispatch-read/src/types.ts +83 -11
  39. package/payload/platform/lib/dispatch-write/dist/write.d.ts +14 -0
  40. package/payload/platform/lib/dispatch-write/dist/write.d.ts.map +1 -1
  41. package/payload/platform/lib/dispatch-write/dist/write.js +50 -11
  42. package/payload/platform/lib/dispatch-write/dist/write.js.map +1 -1
  43. package/payload/platform/lib/dispatch-write/src/__tests__/write.test.ts +72 -2
  44. package/payload/platform/lib/dispatch-write/src/write.ts +79 -14
  45. package/payload/platform/neo4j/schema.cypher +66 -1
  46. package/payload/platform/package.json +2 -2
  47. package/payload/platform/plugins/admin/PLUGIN.md +3 -0
  48. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard-bash.test.sh +106 -0
  49. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +66 -0
  50. package/payload/platform/plugins/admin/hooks/fs-schema-guard-bash-post.sh +85 -12
  51. package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +18 -0
  52. package/payload/platform/plugins/admin/mcp/dist/index.js +2 -2
  53. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  54. package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +10 -11
  55. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +106 -36
  56. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +8 -0
  57. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visits-scope.test.ts +130 -1
  58. package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +63 -0
  59. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visits.ts +104 -3
  60. package/payload/platform/plugins/dispatch/.claude-plugin/plugin.json +1 -1
  61. package/payload/platform/plugins/dispatch/PLUGIN.md +49 -6
  62. package/payload/platform/plugins/dispatch/mcp/dist/index.js +200 -2
  63. package/payload/platform/plugins/dispatch/mcp/dist/index.js.map +1 -1
  64. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts +22 -4
  65. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts.map +1 -1
  66. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js +4 -0
  67. package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js.map +1 -1
  68. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.d.ts +10 -0
  69. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.d.ts.map +1 -0
  70. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.js +47 -0
  71. package/payload/platform/plugins/dispatch/mcp/dist/lib/bot-token.js.map +1 -0
  72. package/payload/platform/plugins/dispatch/mcp/dist/lib/config.d.ts.map +1 -1
  73. package/payload/platform/plugins/dispatch/mcp/dist/lib/config.js +12 -0
  74. package/payload/platform/plugins/dispatch/mcp/dist/lib/config.js.map +1 -1
  75. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.d.ts +1 -0
  76. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.d.ts.map +1 -1
  77. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.js +1 -0
  78. package/payload/platform/plugins/dispatch/mcp/dist/lib/ids.js.map +1 -1
  79. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.d.ts +36 -0
  80. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.d.ts.map +1 -0
  81. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.js +36 -0
  82. package/payload/platform/plugins/dispatch/mcp/dist/lib/intake.js.map +1 -0
  83. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.d.ts +11 -0
  84. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.d.ts.map +1 -0
  85. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.js +10 -0
  86. package/payload/platform/plugins/dispatch/mcp/dist/lib/keyboard.js.map +1 -0
  87. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.d.ts +2 -2
  88. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.d.ts.map +1 -1
  89. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.js +9 -1
  90. package/payload/platform/plugins/dispatch/mcp/dist/lib/read.js.map +1 -1
  91. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.d.ts +43 -0
  92. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.d.ts.map +1 -0
  93. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.js +53 -0
  94. package/payload/platform/plugins/dispatch/mcp/dist/lib/travel.js.map +1 -0
  95. package/payload/platform/plugins/dispatch/mcp/dist/lib/types.d.ts +13 -2
  96. package/payload/platform/plugins/dispatch/mcp/dist/lib/types.d.ts.map +1 -1
  97. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts +6 -0
  98. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.d.ts.map +1 -0
  99. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js +102 -0
  100. package/payload/platform/plugins/dispatch/mcp/dist/scripts/converge-visit-instants.js.map +1 -0
  101. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.d.ts +18 -0
  102. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.d.ts.map +1 -1
  103. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.js +251 -40
  104. package/payload/platform/plugins/dispatch/mcp/dist/tools/allocate.js.map +1 -1
  105. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.d.ts +75 -0
  106. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.d.ts.map +1 -0
  107. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.js +194 -0
  108. package/payload/platform/plugins/dispatch/mcp/dist/tools/intake.js.map +1 -0
  109. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.d.ts +61 -0
  110. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.d.ts.map +1 -0
  111. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.js +130 -0
  112. package/payload/platform/plugins/dispatch/mcp/dist/tools/notify-worker.js.map +1 -0
  113. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.d.ts +28 -0
  114. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.d.ts.map +1 -0
  115. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.js +44 -0
  116. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-location-set.js.map +1 -0
  117. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.d.ts +43 -0
  118. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.d.ts.map +1 -0
  119. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.js +139 -0
  120. package/payload/platform/plugins/dispatch/mcp/dist/tools/site-upsert.js.map +1 -0
  121. package/payload/platform/plugins/dispatch/skills/dispatch-page/SKILL.md +85 -0
  122. package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.css +97 -0
  123. package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.html +59 -0
  124. package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.js +343 -0
  125. package/payload/platform/plugins/dispatch/skills/dispatch-setup/SKILL.md +9 -4
  126. package/payload/platform/plugins/docs/references/channel-wake-and-prompt.md +11 -20
  127. package/payload/platform/plugins/docs/references/dispatch.md +94 -15
  128. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/dispatch-vertical-coverage.test.js +4 -1
  129. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/dispatch-vertical-coverage.test.js.map +1 -1
  130. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +24 -1
  131. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -1
  132. package/payload/platform/plugins/memory/references/schema-dispatch.md +70 -4
  133. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +2 -35
  134. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -1
  135. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +6 -114
  136. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -1
  137. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.d.ts +1 -1
  138. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js +3 -3
  139. package/payload/platform/plugins/scheduling/mcp/dist/scripts/converge-startdate-utc.js.map +1 -1
  140. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +2 -2
  141. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  142. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +3 -3
  143. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  144. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.d.ts +40 -6
  145. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.d.ts.map +1 -1
  146. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.js +116 -15
  147. package/payload/platform/services/claude-session-manager/dist/blocked-tool-census.js.map +1 -1
  148. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  149. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +6 -0
  150. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  151. package/payload/platform/services/telegram-channel/dist/notification.d.ts +0 -12
  152. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  153. package/payload/platform/services/telegram-channel/dist/notification.js +8 -29
  154. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  155. package/payload/platform/services/telegram-channel/dist/server.d.ts.map +1 -1
  156. package/payload/platform/services/telegram-channel/dist/server.js +8 -11
  157. package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
  158. package/payload/server/public/activity.html +7 -7
  159. package/payload/server/public/agents.html +6 -6
  160. package/payload/server/public/assets/{AdminLoginScreens-Dp6k1XgD.js → AdminLoginScreens-BLGZEaKU.js} +1 -1
  161. package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js.br +0 -0
  162. package/payload/server/public/assets/AdminLoginScreens-BLGZEaKU.js.gz +0 -0
  163. package/payload/server/public/assets/AdminShell-C_M7YE5Z.js +3 -0
  164. package/payload/server/public/assets/AdminShell-C_M7YE5Z.js.br +0 -0
  165. package/payload/server/public/assets/AdminShell-C_M7YE5Z.js.gz +0 -0
  166. package/payload/server/public/assets/{activity-BJxhblz-.js → activity-BL6qbB9a.js} +1 -1
  167. package/payload/server/public/assets/activity-BL6qbB9a.js.br +0 -0
  168. package/payload/server/public/assets/activity-BL6qbB9a.js.gz +0 -0
  169. package/payload/server/public/assets/admin-jnJ3P2u4.js +1 -0
  170. package/payload/server/public/assets/admin-jnJ3P2u4.js.br +0 -0
  171. package/payload/server/public/assets/admin-jnJ3P2u4.js.gz +0 -0
  172. package/payload/server/public/assets/{agents-DTL8kjfD.js → agents-BzhfKZDN.js} +1 -1
  173. package/payload/server/public/assets/agents-BzhfKZDN.js.br +0 -0
  174. package/payload/server/public/assets/agents-BzhfKZDN.js.gz +0 -0
  175. package/payload/server/public/assets/{arc-CWXBKNZd.js → arc-Bge2fWf4.js} +1 -1
  176. package/payload/server/public/assets/arc-Bge2fWf4.js.br +0 -0
  177. package/payload/server/public/assets/arc-Bge2fWf4.js.gz +0 -0
  178. package/payload/server/public/assets/architecture-YZFGNWBL-B9jqFTbw.js +1 -0
  179. package/payload/server/public/assets/architecture-YZFGNWBL-B9jqFTbw.js.br +0 -0
  180. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-C-KPMyG4.js → architectureDiagram-Q4EWVU46-BRauf5b8.js} +1 -1
  181. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js.br +0 -0
  182. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BRauf5b8.js.gz +0 -0
  183. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DkYbV9Sf.js → blockDiagram-DXYQGD6D-CUJ554WZ.js} +1 -1
  184. package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js.br +0 -0
  185. package/payload/server/public/assets/blockDiagram-DXYQGD6D-CUJ554WZ.js.gz +0 -0
  186. package/payload/server/public/assets/{browser-UZp75zhx.js → browser-C-6io2B9.js} +1 -1
  187. package/payload/server/public/assets/browser-C-6io2B9.js.br +0 -0
  188. package/payload/server/public/assets/browser-C-6io2B9.js.gz +0 -0
  189. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-EYW4kdlx.js → c4Diagram-AHTNJAMY-CV9gKsKo.js} +1 -1
  190. package/payload/server/public/assets/c4Diagram-AHTNJAMY-CV9gKsKo.js.br +0 -0
  191. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-EYW4kdlx.js.gz → c4Diagram-AHTNJAMY-CV9gKsKo.js.gz} +0 -0
  192. package/payload/server/public/assets/{calendar-Dfo0O2K_.js → calendar-Dt3gS88s.js} +1 -1
  193. package/payload/server/public/assets/calendar-Dt3gS88s.js.br +0 -0
  194. package/payload/server/public/assets/calendar-Dt3gS88s.js.gz +0 -0
  195. package/payload/server/public/assets/channel-DUwJcjZw.js +1 -0
  196. package/payload/server/public/assets/channel-DUwJcjZw.js.br +0 -0
  197. package/payload/server/public/assets/chat-IUOvVkL-.js +1 -0
  198. package/payload/server/public/assets/chat-IUOvVkL-.js.br +1 -0
  199. package/payload/server/public/assets/chat-IUOvVkL-.js.gz +0 -0
  200. package/payload/server/public/assets/chevron-left-DSzR9zR7.js +1 -0
  201. package/payload/server/public/assets/chevron-left-DSzR9zR7.js.br +0 -0
  202. package/payload/server/public/assets/{chunk-2KRD3SAO-CmAF1UmH.js → chunk-2KRD3SAO-HzWGrran.js} +1 -1
  203. package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js.br +0 -0
  204. package/payload/server/public/assets/chunk-2KRD3SAO-HzWGrran.js.gz +0 -0
  205. package/payload/server/public/assets/{chunk-336JU56O-CyhmJeMM.js → chunk-336JU56O-ChGDYu_S.js} +2 -2
  206. package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js.br +0 -0
  207. package/payload/server/public/assets/chunk-336JU56O-ChGDYu_S.js.gz +0 -0
  208. package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js +1 -0
  209. package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js.br +0 -0
  210. package/payload/server/public/assets/chunk-426QAEUC-DLLi1nAr.js.gz +0 -0
  211. package/payload/server/public/assets/{chunk-4BX2VUAB-DCzC40-Y.js → chunk-4BX2VUAB-BJunAy2u.js} +1 -1
  212. package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js.br +0 -0
  213. package/payload/server/public/assets/chunk-4BX2VUAB-BJunAy2u.js.gz +0 -0
  214. package/payload/server/public/assets/{chunk-4TB4RGXK-D9BXrSA_.js → chunk-4TB4RGXK-Df9Ew0fN.js} +1 -1
  215. package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js.br +0 -0
  216. package/payload/server/public/assets/chunk-4TB4RGXK-Df9Ew0fN.js.gz +0 -0
  217. package/payload/server/public/assets/{chunk-55IACEB6-BwXC-qTZ.js → chunk-55IACEB6-DtquCg7p.js} +1 -1
  218. package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js.br +0 -0
  219. package/payload/server/public/assets/chunk-55IACEB6-DtquCg7p.js.gz +0 -0
  220. package/payload/server/public/assets/{chunk-5FUZZQ4R-De7QtXxM.js → chunk-5FUZZQ4R-B3s1YuQa.js} +1 -1
  221. package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js.br +0 -0
  222. package/payload/server/public/assets/chunk-5FUZZQ4R-B3s1YuQa.js.gz +0 -0
  223. package/payload/server/public/assets/{chunk-5PVQY5BW-B5tsJiCq.js → chunk-5PVQY5BW-C0bRnMKQ.js} +1 -1
  224. package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js.br +0 -0
  225. package/payload/server/public/assets/chunk-5PVQY5BW-C0bRnMKQ.js.gz +0 -0
  226. package/payload/server/public/assets/{chunk-67CJDMHE-BjTh9STV.js → chunk-67CJDMHE-B9jxnEpu.js} +1 -1
  227. package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js.br +0 -0
  228. package/payload/server/public/assets/chunk-67CJDMHE-B9jxnEpu.js.gz +0 -0
  229. package/payload/server/public/assets/{chunk-7N4EOEYR-91klRswn.js → chunk-7N4EOEYR-DaimaIlO.js} +1 -1
  230. package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js.br +0 -0
  231. package/payload/server/public/assets/chunk-7N4EOEYR-DaimaIlO.js.gz +0 -0
  232. package/payload/server/public/assets/{chunk-AA7GKIK3-XFPGEoBu.js → chunk-AA7GKIK3-htgz4y5z.js} +1 -1
  233. package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js.br +0 -0
  234. package/payload/server/public/assets/chunk-AA7GKIK3-htgz4y5z.js.gz +0 -0
  235. package/payload/server/public/assets/{chunk-BSJP7CBP-B7wgMyWq.js → chunk-BSJP7CBP-0xBlnKJN.js} +1 -1
  236. package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js.br +0 -0
  237. package/payload/server/public/assets/chunk-BSJP7CBP-0xBlnKJN.js.gz +0 -0
  238. package/payload/server/public/assets/{chunk-CIAEETIT-WPy9vcOo.js → chunk-CIAEETIT-HZOrcAzJ.js} +1 -1
  239. package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js.br +0 -0
  240. package/payload/server/public/assets/chunk-CIAEETIT-HZOrcAzJ.js.gz +0 -0
  241. package/payload/server/public/assets/{chunk-EDXVE4YY-D_2JIFFG.js → chunk-EDXVE4YY-CC8hCcuU.js} +1 -1
  242. package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js.br +0 -0
  243. package/payload/server/public/assets/chunk-EDXVE4YY-CC8hCcuU.js.gz +0 -0
  244. package/payload/server/public/assets/{chunk-ENJZ2VHE-xORReRt0.js → chunk-ENJZ2VHE-BdPfdZYB.js} +1 -1
  245. package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js.br +0 -0
  246. package/payload/server/public/assets/chunk-ENJZ2VHE-BdPfdZYB.js.gz +0 -0
  247. package/payload/server/public/assets/{chunk-FMBD7UC4-BZsDu4nl.js → chunk-FMBD7UC4-MHdn_KgF.js} +1 -1
  248. package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js.br +0 -0
  249. package/payload/server/public/assets/chunk-FMBD7UC4-MHdn_KgF.js.gz +0 -0
  250. package/payload/server/public/assets/{chunk-FOC6F5B3-QzUp8wXX.js → chunk-FOC6F5B3-Ti8BlQKX.js} +1 -1
  251. package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js.br +0 -0
  252. package/payload/server/public/assets/chunk-FOC6F5B3-Ti8BlQKX.js.gz +0 -0
  253. package/payload/server/public/assets/{chunk-ICPOFSXX-B64S7i7x.js → chunk-ICPOFSXX-BP8A8zb1.js} +2 -2
  254. package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js.br +0 -0
  255. package/payload/server/public/assets/chunk-ICPOFSXX-BP8A8zb1.js.gz +0 -0
  256. package/payload/server/public/assets/{chunk-K5T4RW27-DzPc6X1_.js → chunk-K5T4RW27-F30EnSBL.js} +1 -1
  257. package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js.br +0 -0
  258. package/payload/server/public/assets/chunk-K5T4RW27-F30EnSBL.js.gz +0 -0
  259. package/payload/server/public/assets/{chunk-KGLVRYIC-A2rPnD7k.js → chunk-KGLVRYIC-DNSEkg2Q.js} +1 -1
  260. package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js.br +2 -0
  261. package/payload/server/public/assets/chunk-KGLVRYIC-DNSEkg2Q.js.gz +0 -0
  262. package/payload/server/public/assets/{chunk-LIHQZDEY-CaWX327m.js → chunk-LIHQZDEY-DM7b0dec.js} +1 -1
  263. package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js.br +0 -0
  264. package/payload/server/public/assets/chunk-LIHQZDEY-DM7b0dec.js.gz +0 -0
  265. package/payload/server/public/assets/{chunk-ORNJ4GCN-zrWhdmnc.js → chunk-ORNJ4GCN-B0qoI_vp.js} +1 -1
  266. package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js.br +0 -0
  267. package/payload/server/public/assets/chunk-ORNJ4GCN-B0qoI_vp.js.gz +0 -0
  268. package/payload/server/public/assets/{chunk-OYMX7WX6-B_2qQir6.js → chunk-OYMX7WX6-Bfzo53eI.js} +1 -1
  269. package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js.br +0 -0
  270. package/payload/server/public/assets/chunk-OYMX7WX6-Bfzo53eI.js.gz +0 -0
  271. package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js +1 -0
  272. package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js.br +0 -0
  273. package/payload/server/public/assets/chunk-QZHKN3VN-A6b8ZN9i.js.gz +0 -0
  274. package/payload/server/public/assets/{chunk-U2HBQHQK-B-IYgxsc.js → chunk-U2HBQHQK-DcqGPXEy.js} +1 -1
  275. package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js.br +0 -0
  276. package/payload/server/public/assets/chunk-U2HBQHQK-DcqGPXEy.js.gz +0 -0
  277. package/payload/server/public/assets/{chunk-X2U36JSP-Y9Y1_EuG.js → chunk-X2U36JSP-DtRi7n5Z.js} +1 -1
  278. package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js.br +0 -0
  279. package/payload/server/public/assets/chunk-X2U36JSP-DtRi7n5Z.js.gz +0 -0
  280. package/payload/server/public/assets/{chunk-XPW4576I-C-6yETG_.js → chunk-XPW4576I-DmuDCcY3.js} +1 -1
  281. package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js.br +0 -0
  282. package/payload/server/public/assets/chunk-XPW4576I-DmuDCcY3.js.gz +0 -0
  283. package/payload/server/public/assets/{chunk-YZCP3GAM-KAuQIU5n.js → chunk-YZCP3GAM-oKk9Gv_e.js} +1 -1
  284. package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js.br +0 -0
  285. package/payload/server/public/assets/chunk-YZCP3GAM-oKk9Gv_e.js.gz +0 -0
  286. package/payload/server/public/assets/{chunk-ZZ45TVLE-BJcH3KDH.js → chunk-ZZ45TVLE-teET41Yh.js} +1 -1
  287. package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js.br +0 -0
  288. package/payload/server/public/assets/chunk-ZZ45TVLE-teET41Yh.js.gz +0 -0
  289. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js +1 -0
  290. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js.br +0 -0
  291. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CMXajSzA.js.gz +0 -0
  292. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js +1 -0
  293. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js.br +0 -0
  294. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cz5Kib2r.js.gz +0 -0
  295. package/payload/server/public/assets/clock-C5xE5p2I.js +1 -0
  296. package/payload/server/public/assets/clock-C5xE5p2I.js.br +0 -0
  297. package/payload/server/public/assets/clone-BORhq8On.js +1 -0
  298. package/payload/server/public/assets/clone-BORhq8On.js.br +0 -0
  299. package/payload/server/public/assets/{copy-CGI2jioK.js → copy-TkPJgllS.js} +1 -1
  300. package/payload/server/public/assets/copy-TkPJgllS.js.br +0 -0
  301. package/payload/server/public/assets/copy-TkPJgllS.js.gz +0 -0
  302. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-CcXj8vHa.js → cose-bilkent-S5V4N54A-D1xLpHGm.js} +1 -1
  303. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js.br +0 -0
  304. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D1xLpHGm.js.gz +0 -0
  305. package/payload/server/public/assets/{dagre-KV5264BT-BOhQs4rS.js → dagre-KV5264BT-Byl65NKT.js} +1 -1
  306. package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js.br +0 -0
  307. package/payload/server/public/assets/dagre-KV5264BT-Byl65NKT.js.gz +0 -0
  308. package/payload/server/public/assets/{dagre-DOtq9kYX.js → dagre-ZzXkSDir.js} +1 -1
  309. package/payload/server/public/assets/dagre-ZzXkSDir.js.br +0 -0
  310. package/payload/server/public/assets/dagre-ZzXkSDir.js.gz +0 -0
  311. package/payload/server/public/assets/data-Bhv0Pvfl.js +1 -0
  312. package/payload/server/public/assets/data-Bhv0Pvfl.js.br +0 -0
  313. package/payload/server/public/assets/data-Bhv0Pvfl.js.gz +0 -0
  314. package/payload/server/public/assets/{diagram-5BDNPKRD-CqJFt5ZM.js → diagram-5BDNPKRD-BFNkV5GK.js} +1 -1
  315. package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js.br +0 -0
  316. package/payload/server/public/assets/diagram-5BDNPKRD-BFNkV5GK.js.gz +0 -0
  317. package/payload/server/public/assets/{diagram-G4DWMVQ6-WQIyAZMn.js → diagram-G4DWMVQ6-1n6vHXzR.js} +1 -1
  318. package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js.br +0 -0
  319. package/payload/server/public/assets/diagram-G4DWMVQ6-1n6vHXzR.js.gz +0 -0
  320. package/payload/server/public/assets/{diagram-MMDJMWI5-jcKc4a2w.js → diagram-MMDJMWI5-D4QOzaw0.js} +1 -1
  321. package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js.br +0 -0
  322. package/payload/server/public/assets/diagram-MMDJMWI5-D4QOzaw0.js.gz +0 -0
  323. package/payload/server/public/assets/{diagram-TYMM5635-Bbt2KuWe.js → diagram-TYMM5635-z8lBRsaV.js} +1 -1
  324. package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js.br +0 -0
  325. package/payload/server/public/assets/diagram-TYMM5635-z8lBRsaV.js.gz +0 -0
  326. package/payload/server/public/assets/{dist-9RiN6lky.js → dist-DjYA4E4S.js} +1 -1
  327. package/payload/server/public/assets/dist-DjYA4E4S.js.br +0 -0
  328. package/payload/server/public/assets/dist-DjYA4E4S.js.gz +0 -0
  329. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BBm6azPJ.js → erDiagram-SMLLAGMA-CXj3tbtX.js} +1 -1
  330. package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js.br +0 -0
  331. package/payload/server/public/assets/erDiagram-SMLLAGMA-CXj3tbtX.js.gz +0 -0
  332. package/payload/server/public/assets/field-B490-evJ.js +1 -0
  333. package/payload/server/public/assets/field-B490-evJ.js.br +0 -0
  334. package/payload/server/public/assets/field-B490-evJ.js.gz +0 -0
  335. package/payload/server/public/assets/{file-text-RWintp9q.js → file-text-DyAL2DCh.js} +1 -1
  336. package/payload/server/public/assets/file-text-DyAL2DCh.js.br +0 -0
  337. package/payload/server/public/assets/file-text-DyAL2DCh.js.gz +0 -0
  338. package/payload/server/public/assets/{flatten-BurGKeIy.js → flatten-UdUTbm8v.js} +1 -1
  339. package/payload/server/public/assets/flatten-UdUTbm8v.js.br +0 -0
  340. package/payload/server/public/assets/flatten-UdUTbm8v.js.gz +0 -0
  341. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-_r45DYJ8.js → flowDiagram-DWJPFMVM-DnySI-I4.js} +1 -1
  342. package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js.br +0 -0
  343. package/payload/server/public/assets/flowDiagram-DWJPFMVM-DnySI-I4.js.gz +0 -0
  344. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-Bjgj9Bej.js → ganttDiagram-T4ZO3ILL-BIE2Q78F.js} +1 -1
  345. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js.br +0 -0
  346. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-BIE2Q78F.js.gz +0 -0
  347. package/payload/server/public/assets/gitGraph-7Q5UKJZL-Ua2z-DNt.js +1 -0
  348. package/payload/server/public/assets/gitGraph-7Q5UKJZL-Ua2z-DNt.js.br +0 -0
  349. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DTRdhGJA.js → gitGraphDiagram-UUTBAWPF-B2RTRpyG.js} +1 -1
  350. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js.br +0 -0
  351. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-B2RTRpyG.js.gz +0 -0
  352. package/payload/server/public/assets/{graph-CpBlfYrJ.js → graph-PiNIcCfX.js} +1 -1
  353. package/payload/server/public/assets/graph-PiNIcCfX.js.br +0 -0
  354. package/payload/server/public/assets/graph-PiNIcCfX.js.gz +0 -0
  355. package/payload/server/public/assets/{graph-labels-BOMyPppX.js → graph-labels-8jKFrLHn.js} +1 -1
  356. package/payload/server/public/assets/graph-labels-8jKFrLHn.js.br +0 -0
  357. package/payload/server/public/assets/graph-labels-8jKFrLHn.js.gz +0 -0
  358. package/payload/server/public/assets/{graphlib-DT4h6-4N.js → graphlib-SOh92ucm.js} +1 -1
  359. package/payload/server/public/assets/graphlib-SOh92ucm.js.br +0 -0
  360. package/payload/server/public/assets/graphlib-SOh92ucm.js.gz +0 -0
  361. package/payload/server/public/assets/info-OMHHGYJF-CNYp42iX.js +1 -0
  362. package/payload/server/public/assets/info-OMHHGYJF-CNYp42iX.js.br +0 -0
  363. package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js +2 -0
  364. package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js.br +0 -0
  365. package/payload/server/public/assets/infoDiagram-42DDH7IO-DklHffYr.js.gz +0 -0
  366. package/payload/server/public/assets/{isEmpty-C5v0-EY7.js → isEmpty-DY_Xp9Na.js} +1 -1
  367. package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.br +0 -0
  368. package/payload/server/public/assets/isEmpty-DY_Xp9Na.js.gz +0 -0
  369. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BklHzVHm.js → ishikawaDiagram-UXIWVN3A-KAC06i3M.js} +1 -1
  370. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js.br +0 -0
  371. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-KAC06i3M.js.gz +0 -0
  372. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-Ckxx2CmV.js → journeyDiagram-VCZTEJTY-cA37ob8S.js} +1 -1
  373. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js.br +0 -0
  374. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-cA37ob8S.js.gz +0 -0
  375. package/payload/server/public/assets/{jsx-runtime-DxsQ5Y-z.css → jsx-runtime-ChVh0xOm.css} +1 -1
  376. package/payload/server/public/assets/jsx-runtime-ChVh0xOm.css.br +0 -0
  377. package/payload/server/public/assets/{jsx-runtime-DxsQ5Y-z.css.gz → jsx-runtime-ChVh0xOm.css.gz} +0 -0
  378. package/payload/server/public/assets/{jsx-runtime-5lmxFBIw.js → jsx-runtime-YcUntiud.js} +1 -1
  379. package/payload/server/public/assets/jsx-runtime-YcUntiud.js.br +0 -0
  380. package/payload/server/public/assets/jsx-runtime-YcUntiud.js.gz +0 -0
  381. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-BLELXpqn.js → kanban-definition-6JOO6SKY-CBjL70wU.js} +1 -1
  382. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js.br +0 -0
  383. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CBjL70wU.js.gz +0 -0
  384. package/payload/server/public/assets/{line-BkI5icOY.js → line-K8229GLG.js} +1 -1
  385. package/payload/server/public/assets/line-K8229GLG.js.br +0 -0
  386. package/payload/server/public/assets/line-K8229GLG.js.gz +0 -0
  387. package/payload/server/public/assets/{linear-B64ANRVs.js → linear-DeX7Wdt6.js} +1 -1
  388. package/payload/server/public/assets/linear-DeX7Wdt6.js.br +0 -0
  389. package/payload/server/public/assets/linear-DeX7Wdt6.js.gz +0 -0
  390. package/payload/server/public/assets/{mermaid-parser.core-qXPKkdJe.js → mermaid-parser.core-OnNOAzPX.js} +2 -2
  391. package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js.br +0 -0
  392. package/payload/server/public/assets/mermaid-parser.core-OnNOAzPX.js.gz +0 -0
  393. package/payload/server/public/assets/{mermaid.core-BMsz65Wy.js → mermaid.core-DA-Gezeo.js} +3 -3
  394. package/payload/server/public/assets/mermaid.core-DA-Gezeo.js.br +0 -0
  395. package/payload/server/public/assets/mermaid.core-DA-Gezeo.js.gz +0 -0
  396. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-DhFTS2sx.js → mindmap-definition-QFDTVHPH-C24TcDyS.js} +1 -1
  397. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js.br +0 -0
  398. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-C24TcDyS.js.gz +0 -0
  399. package/payload/server/public/assets/operator-DKGKGzrb.js +1 -0
  400. package/payload/server/public/assets/operator-DKGKGzrb.js.br +0 -0
  401. package/payload/server/public/assets/operator-DKGKGzrb.js.gz +0 -0
  402. package/payload/server/public/assets/{ordinal-CJ_pL32Z.js → ordinal-gnpqfIHn.js} +1 -1
  403. package/payload/server/public/assets/ordinal-gnpqfIHn.js.br +0 -0
  404. package/payload/server/public/assets/ordinal-gnpqfIHn.js.gz +0 -0
  405. package/payload/server/public/assets/packet-4T2RLAQJ-B3ZAElsg.js +1 -0
  406. package/payload/server/public/assets/packet-4T2RLAQJ-B3ZAElsg.js.br +0 -0
  407. package/payload/server/public/assets/{page-BRShHSH0.js → page-BU5vlY9Y.js} +1 -1
  408. package/payload/server/public/assets/page-BU5vlY9Y.js.br +0 -0
  409. package/payload/server/public/assets/page-BU5vlY9Y.js.gz +0 -0
  410. package/payload/server/public/assets/{page-BbBCu9iP.js → page-DXz_K10G.js} +3 -3
  411. package/payload/server/public/assets/page-DXz_K10G.js.br +0 -0
  412. package/payload/server/public/assets/page-DXz_K10G.js.gz +0 -0
  413. package/payload/server/public/assets/{pdf-render-ynIPXfRA.js → pdf-render-B5af7vu1.js} +1 -1
  414. package/payload/server/public/assets/pdf-render-B5af7vu1.js.br +0 -0
  415. package/payload/server/public/assets/pdf-render-B5af7vu1.js.gz +0 -0
  416. package/payload/server/public/assets/pie-ZZUOXDRM-BWsRCj8p.js +1 -0
  417. package/payload/server/public/assets/pie-ZZUOXDRM-BWsRCj8p.js.br +0 -0
  418. package/payload/server/public/assets/{pieDiagram-DEJITSTG-B2TxkbHK.js → pieDiagram-DEJITSTG-ChS9jalQ.js} +1 -1
  419. package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js.br +0 -0
  420. package/payload/server/public/assets/pieDiagram-DEJITSTG-ChS9jalQ.js.gz +0 -0
  421. package/payload/server/public/assets/play-CmSyYrB6.js +1 -0
  422. package/payload/server/public/assets/play-CmSyYrB6.js.br +0 -0
  423. package/payload/server/public/assets/play-CmSyYrB6.js.gz +0 -0
  424. package/payload/server/public/assets/{public-DkObqkzL.js → public-BmA3-jLj.js} +1 -1
  425. package/payload/server/public/assets/public-BmA3-jLj.js.br +0 -0
  426. package/payload/server/public/assets/public-BmA3-jLj.js.gz +0 -0
  427. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-GsMxIJuS.js → quadrantDiagram-34T5L4WZ-BxLfRK0z.js} +1 -1
  428. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js.br +0 -0
  429. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-BxLfRK0z.js.gz +0 -0
  430. package/payload/server/public/assets/radar-PYXPWWZC-Gxbt2rGT.js +1 -0
  431. package/payload/server/public/assets/radar-PYXPWWZC-Gxbt2rGT.js.br +0 -0
  432. package/payload/server/public/assets/{reduce-CfkEiHc9.js → reduce-BvezuHIe.js} +1 -1
  433. package/payload/server/public/assets/reduce-BvezuHIe.js.br +0 -0
  434. package/payload/server/public/assets/reduce-BvezuHIe.js.gz +0 -0
  435. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DqNprm-1.js → requirementDiagram-MS252O5E-CWy48VI3.js} +1 -1
  436. package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js.br +0 -0
  437. package/payload/server/public/assets/requirementDiagram-MS252O5E-CWy48VI3.js.gz +0 -0
  438. package/payload/server/public/assets/{rotate-ccw-DgMO69nh.js → rotate-ccw-fCH0LSMq.js} +1 -1
  439. package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js.br +0 -0
  440. package/payload/server/public/assets/rotate-ccw-fCH0LSMq.js.gz +0 -0
  441. package/payload/server/public/assets/{routines-D9kvg_Xu.js → routines-BeFrmkls.js} +1 -1
  442. package/payload/server/public/assets/routines-BeFrmkls.js.br +0 -0
  443. package/payload/server/public/assets/routines-BeFrmkls.js.gz +0 -0
  444. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-B-kRuiuz.js → sankeyDiagram-XADWPNL6-BBCLEJA3.js} +1 -1
  445. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js.br +0 -0
  446. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-BBCLEJA3.js.gz +0 -0
  447. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DEhL9g3K.js → sequenceDiagram-FGHM5R23-wu64F04G.js} +1 -1
  448. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js.br +0 -0
  449. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-wu64F04G.js.gz +0 -0
  450. package/payload/server/public/assets/{skills-l5I9HZ3D.js → skills-mjls5HBa.js} +1 -1
  451. package/payload/server/public/assets/skills-mjls5HBa.js.br +0 -0
  452. package/payload/server/public/assets/skills-mjls5HBa.js.gz +0 -0
  453. package/payload/server/public/assets/{src-BrAT6wKv.js → src-BvINb2fL.js} +1 -1
  454. package/payload/server/public/assets/src-BvINb2fL.js.br +0 -0
  455. package/payload/server/public/assets/src-BvINb2fL.js.gz +0 -0
  456. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-Q-g6BHdz.js → stateDiagram-FHFEXIEX-Bq6BFFDC.js} +1 -1
  457. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js.br +0 -0
  458. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Bq6BFFDC.js.gz +0 -0
  459. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js +1 -0
  460. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js.br +0 -0
  461. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-PxPsWt1r.js.gz +0 -0
  462. package/payload/server/public/assets/{tasks-C2qJMv6i.js → tasks-p6puHHD0.js} +1 -1
  463. package/payload/server/public/assets/tasks-p6puHHD0.js.br +0 -0
  464. package/payload/server/public/assets/tasks-p6puHHD0.js.gz +0 -0
  465. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-B3-52q4Q.js → timeline-definition-GMOUNBTQ-DTdvVZp-.js} +1 -1
  466. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js.br +0 -0
  467. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DTdvVZp-.js.gz +0 -0
  468. package/payload/server/public/assets/treeView-SZITEDCU-Bl-aPmE3.js +1 -0
  469. package/payload/server/public/assets/treeView-SZITEDCU-Bl-aPmE3.js.br +0 -0
  470. package/payload/server/public/assets/treemap-W4RFUUIX-CUxE8Ofg.js +1 -0
  471. package/payload/server/public/assets/treemap-W4RFUUIX-CUxE8Ofg.js.br +0 -0
  472. package/payload/server/public/assets/{triangle-alert-BnC67uSs.js → triangle-alert-CrZ1ewbd.js} +1 -1
  473. package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js.br +0 -0
  474. package/payload/server/public/assets/triangle-alert-CrZ1ewbd.js.gz +0 -0
  475. package/payload/server/public/assets/{useCopyFeedback-1RmgkTFh.js → useCopyFeedback-zOQNrIwd.js} +1 -1
  476. package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js.br +0 -0
  477. package/payload/server/public/assets/useCopyFeedback-zOQNrIwd.js.gz +0 -0
  478. package/payload/server/public/assets/{useMediaQuery-BQslddHQ.js → useMediaQuery-BmG090FR.js} +1 -1
  479. package/payload/server/public/assets/useMediaQuery-BmG090FR.js.br +0 -0
  480. package/payload/server/public/assets/useMediaQuery-BmG090FR.js.gz +0 -0
  481. package/payload/server/public/assets/{useVoiceRecorder-BeZNQEC4.js → useVoiceRecorder-9pf6FFJ-.js} +2 -2
  482. package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js.br +0 -0
  483. package/payload/server/public/assets/useVoiceRecorder-9pf6FFJ-.js.gz +0 -0
  484. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Bzm1VDi1.js → vennDiagram-DHZGUBPP-CigqIBdl.js} +1 -1
  485. package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js.br +0 -0
  486. package/payload/server/public/assets/vennDiagram-DHZGUBPP-CigqIBdl.js.gz +0 -0
  487. package/payload/server/public/assets/wardley-RL74JXVD-DPB13D22.js +1 -0
  488. package/payload/server/public/assets/wardley-RL74JXVD-DPB13D22.js.br +0 -0
  489. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-DIqGZr4v.js → wardleyDiagram-NUSXRM2D-VhV1plUD.js} +1 -1
  490. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js.br +0 -0
  491. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-VhV1plUD.js.gz +0 -0
  492. package/payload/server/public/assets/{wrench-D4ufQG6C.js → wrench-k4GYG5rc.js} +1 -1
  493. package/payload/server/public/assets/wrench-k4GYG5rc.js.br +0 -0
  494. package/payload/server/public/assets/wrench-k4GYG5rc.js.gz +0 -0
  495. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-0W2L2hQA.js → xychartDiagram-5P7HB3ND-DGkkNLZt.js} +1 -1
  496. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js.br +0 -0
  497. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DGkkNLZt.js.gz +0 -0
  498. package/payload/server/public/browser.html +6 -6
  499. package/payload/server/public/calendar.html +9 -9
  500. package/payload/server/public/chat.html +16 -16
  501. package/payload/server/public/data.html +15 -15
  502. package/payload/server/public/field.html +4 -4
  503. package/payload/server/public/graph.html +11 -11
  504. package/payload/server/public/index.html +17 -17
  505. package/payload/server/public/operator.html +17 -17
  506. package/payload/server/public/public.html +16 -16
  507. package/payload/server/public/routines.html +10 -10
  508. package/payload/server/public/skills.html +7 -7
  509. package/payload/server/public/tasks.html +8 -8
  510. package/payload/server/server.js +2930 -2125
  511. package/payload/platform/lib/dispatch-read/src/config.d.ts +0 -26
  512. package/payload/platform/lib/dispatch-read/src/types.d.ts +0 -143
  513. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.br +0 -0
  514. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.gz +0 -0
  515. package/payload/server/public/assets/AdminShell-D-wB90c3.js +0 -3
  516. package/payload/server/public/assets/AdminShell-D-wB90c3.js.br +0 -0
  517. package/payload/server/public/assets/AdminShell-D-wB90c3.js.gz +0 -0
  518. package/payload/server/public/assets/activity-BJxhblz-.js.br +0 -0
  519. package/payload/server/public/assets/activity-BJxhblz-.js.gz +0 -0
  520. package/payload/server/public/assets/admin-DzEi8shs.js +0 -1
  521. package/payload/server/public/assets/admin-DzEi8shs.js.br +0 -0
  522. package/payload/server/public/assets/admin-DzEi8shs.js.gz +0 -0
  523. package/payload/server/public/assets/agents-DTL8kjfD.js.br +0 -0
  524. package/payload/server/public/assets/agents-DTL8kjfD.js.gz +0 -0
  525. package/payload/server/public/assets/arc-CWXBKNZd.js.br +0 -0
  526. package/payload/server/public/assets/arc-CWXBKNZd.js.gz +0 -0
  527. package/payload/server/public/assets/architecture-YZFGNWBL-CIL4I0fc.js +0 -1
  528. package/payload/server/public/assets/architecture-YZFGNWBL-CIL4I0fc.js.br +0 -0
  529. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js.br +0 -0
  530. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-C-KPMyG4.js.gz +0 -0
  531. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js.br +0 -0
  532. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DkYbV9Sf.js.gz +0 -0
  533. package/payload/server/public/assets/browser-UZp75zhx.js.br +0 -0
  534. package/payload/server/public/assets/browser-UZp75zhx.js.gz +0 -0
  535. package/payload/server/public/assets/c4Diagram-AHTNJAMY-EYW4kdlx.js.br +0 -0
  536. package/payload/server/public/assets/calendar-Dfo0O2K_.js.br +0 -0
  537. package/payload/server/public/assets/calendar-Dfo0O2K_.js.gz +0 -0
  538. package/payload/server/public/assets/channel-CbHmRjy_.js +0 -1
  539. package/payload/server/public/assets/channel-CbHmRjy_.js.br +0 -0
  540. package/payload/server/public/assets/chat-ByJAvEWZ.js +0 -1
  541. package/payload/server/public/assets/chat-ByJAvEWZ.js.br +0 -0
  542. package/payload/server/public/assets/chat-ByJAvEWZ.js.gz +0 -0
  543. package/payload/server/public/assets/chevron-left-iG7sYNm7.js +0 -1
  544. package/payload/server/public/assets/chevron-left-iG7sYNm7.js.br +0 -0
  545. package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js.br +0 -0
  546. package/payload/server/public/assets/chunk-2KRD3SAO-CmAF1UmH.js.gz +0 -0
  547. package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js.br +0 -0
  548. package/payload/server/public/assets/chunk-336JU56O-CyhmJeMM.js.gz +0 -0
  549. package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js +0 -1
  550. package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js.br +0 -0
  551. package/payload/server/public/assets/chunk-426QAEUC-C2tnHCM7.js.gz +0 -0
  552. package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js.br +0 -0
  553. package/payload/server/public/assets/chunk-4BX2VUAB-DCzC40-Y.js.gz +0 -0
  554. package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js.br +0 -0
  555. package/payload/server/public/assets/chunk-4TB4RGXK-D9BXrSA_.js.gz +0 -0
  556. package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js.br +0 -0
  557. package/payload/server/public/assets/chunk-55IACEB6-BwXC-qTZ.js.gz +0 -0
  558. package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js.br +0 -0
  559. package/payload/server/public/assets/chunk-5FUZZQ4R-De7QtXxM.js.gz +0 -0
  560. package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js.br +0 -0
  561. package/payload/server/public/assets/chunk-5PVQY5BW-B5tsJiCq.js.gz +0 -0
  562. package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js.br +0 -0
  563. package/payload/server/public/assets/chunk-67CJDMHE-BjTh9STV.js.gz +0 -0
  564. package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js.br +0 -0
  565. package/payload/server/public/assets/chunk-7N4EOEYR-91klRswn.js.gz +0 -0
  566. package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js.br +0 -3
  567. package/payload/server/public/assets/chunk-AA7GKIK3-XFPGEoBu.js.gz +0 -0
  568. package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js.br +0 -0
  569. package/payload/server/public/assets/chunk-BSJP7CBP-B7wgMyWq.js.gz +0 -0
  570. package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js.br +0 -0
  571. package/payload/server/public/assets/chunk-CIAEETIT-WPy9vcOo.js.gz +0 -0
  572. package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js.br +0 -0
  573. package/payload/server/public/assets/chunk-EDXVE4YY-D_2JIFFG.js.gz +0 -0
  574. package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js.br +0 -0
  575. package/payload/server/public/assets/chunk-ENJZ2VHE-xORReRt0.js.gz +0 -0
  576. package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js.br +0 -0
  577. package/payload/server/public/assets/chunk-FMBD7UC4-BZsDu4nl.js.gz +0 -0
  578. package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js.br +0 -0
  579. package/payload/server/public/assets/chunk-FOC6F5B3-QzUp8wXX.js.gz +0 -0
  580. package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js.br +0 -0
  581. package/payload/server/public/assets/chunk-ICPOFSXX-B64S7i7x.js.gz +0 -0
  582. package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js.br +0 -0
  583. package/payload/server/public/assets/chunk-K5T4RW27-DzPc6X1_.js.gz +0 -0
  584. package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js.br +0 -1
  585. package/payload/server/public/assets/chunk-KGLVRYIC-A2rPnD7k.js.gz +0 -0
  586. package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js.br +0 -0
  587. package/payload/server/public/assets/chunk-LIHQZDEY-CaWX327m.js.gz +0 -0
  588. package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js.br +0 -0
  589. package/payload/server/public/assets/chunk-ORNJ4GCN-zrWhdmnc.js.gz +0 -0
  590. package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js.br +0 -0
  591. package/payload/server/public/assets/chunk-OYMX7WX6-B_2qQir6.js.gz +0 -0
  592. package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js +0 -1
  593. package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js.br +0 -0
  594. package/payload/server/public/assets/chunk-QZHKN3VN-BzgrgCTo.js.gz +0 -0
  595. package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js.br +0 -0
  596. package/payload/server/public/assets/chunk-U2HBQHQK-B-IYgxsc.js.gz +0 -0
  597. package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js.br +0 -0
  598. package/payload/server/public/assets/chunk-X2U36JSP-Y9Y1_EuG.js.gz +0 -0
  599. package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js.br +0 -0
  600. package/payload/server/public/assets/chunk-XPW4576I-C-6yETG_.js.gz +0 -0
  601. package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js.br +0 -0
  602. package/payload/server/public/assets/chunk-YZCP3GAM-KAuQIU5n.js.gz +0 -0
  603. package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js.br +0 -0
  604. package/payload/server/public/assets/chunk-ZZ45TVLE-BJcH3KDH.js.gz +0 -0
  605. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js +0 -1
  606. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js.br +0 -0
  607. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BxvqeBEj.js.gz +0 -0
  608. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js +0 -1
  609. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js.br +0 -0
  610. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-R3-NzMRG.js.gz +0 -0
  611. package/payload/server/public/assets/clock-xSs0UF10.js +0 -1
  612. package/payload/server/public/assets/clock-xSs0UF10.js.br +0 -0
  613. package/payload/server/public/assets/clock-xSs0UF10.js.gz +0 -0
  614. package/payload/server/public/assets/clone-QdOE5SXR.js +0 -1
  615. package/payload/server/public/assets/copy-CGI2jioK.js.br +0 -0
  616. package/payload/server/public/assets/copy-CGI2jioK.js.gz +0 -0
  617. package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js.br +0 -0
  618. package/payload/server/public/assets/cose-bilkent-S5V4N54A-CcXj8vHa.js.gz +0 -0
  619. package/payload/server/public/assets/dagre-DOtq9kYX.js.br +0 -0
  620. package/payload/server/public/assets/dagre-DOtq9kYX.js.gz +0 -0
  621. package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js.br +0 -0
  622. package/payload/server/public/assets/dagre-KV5264BT-BOhQs4rS.js.gz +0 -0
  623. package/payload/server/public/assets/data-dvwK4BcP.js +0 -1
  624. package/payload/server/public/assets/data-dvwK4BcP.js.br +0 -0
  625. package/payload/server/public/assets/data-dvwK4BcP.js.gz +0 -0
  626. package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js.br +0 -0
  627. package/payload/server/public/assets/diagram-5BDNPKRD-CqJFt5ZM.js.gz +0 -0
  628. package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js.br +0 -0
  629. package/payload/server/public/assets/diagram-G4DWMVQ6-WQIyAZMn.js.gz +0 -0
  630. package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js.br +0 -0
  631. package/payload/server/public/assets/diagram-MMDJMWI5-jcKc4a2w.js.gz +0 -0
  632. package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js.br +0 -0
  633. package/payload/server/public/assets/diagram-TYMM5635-Bbt2KuWe.js.gz +0 -0
  634. package/payload/server/public/assets/dispatch-Dx9-ty1K.js +0 -1
  635. package/payload/server/public/assets/dispatch-Dx9-ty1K.js.br +0 -0
  636. package/payload/server/public/assets/dispatch-Dx9-ty1K.js.gz +0 -0
  637. package/payload/server/public/assets/dist-9RiN6lky.js.br +0 -0
  638. package/payload/server/public/assets/dist-9RiN6lky.js.gz +0 -0
  639. package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js.br +0 -0
  640. package/payload/server/public/assets/erDiagram-SMLLAGMA-BBm6azPJ.js.gz +0 -0
  641. package/payload/server/public/assets/field-D-P6CsWA.js +0 -1
  642. package/payload/server/public/assets/field-D-P6CsWA.js.br +0 -0
  643. package/payload/server/public/assets/field-D-P6CsWA.js.gz +0 -0
  644. package/payload/server/public/assets/file-text-RWintp9q.js.br +0 -0
  645. package/payload/server/public/assets/file-text-RWintp9q.js.gz +0 -0
  646. package/payload/server/public/assets/flatten-BurGKeIy.js.br +0 -0
  647. package/payload/server/public/assets/flatten-BurGKeIy.js.gz +0 -0
  648. package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js.br +0 -0
  649. package/payload/server/public/assets/flowDiagram-DWJPFMVM-_r45DYJ8.js.gz +0 -0
  650. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js.br +0 -0
  651. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-Bjgj9Bej.js.gz +0 -0
  652. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DdbK59od.js +0 -1
  653. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DdbK59od.js.br +0 -0
  654. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js.br +0 -0
  655. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-DTRdhGJA.js.gz +0 -0
  656. package/payload/server/public/assets/graph-CpBlfYrJ.js.br +0 -0
  657. package/payload/server/public/assets/graph-CpBlfYrJ.js.gz +0 -0
  658. package/payload/server/public/assets/graph-labels-BOMyPppX.js.br +0 -0
  659. package/payload/server/public/assets/graph-labels-BOMyPppX.js.gz +0 -0
  660. package/payload/server/public/assets/graphlib-DT4h6-4N.js.br +0 -0
  661. package/payload/server/public/assets/graphlib-DT4h6-4N.js.gz +0 -0
  662. package/payload/server/public/assets/info-OMHHGYJF-BR8gm0wj.js +0 -1
  663. package/payload/server/public/assets/info-OMHHGYJF-BR8gm0wj.js.br +0 -0
  664. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js +0 -2
  665. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js.br +0 -0
  666. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cr3Efss6.js.gz +0 -0
  667. package/payload/server/public/assets/isEmpty-C5v0-EY7.js.br +0 -0
  668. package/payload/server/public/assets/isEmpty-C5v0-EY7.js.gz +0 -0
  669. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js.br +0 -0
  670. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-BklHzVHm.js.gz +0 -0
  671. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js.br +0 -0
  672. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-Ckxx2CmV.js.gz +0 -0
  673. package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js.br +0 -0
  674. package/payload/server/public/assets/jsx-runtime-5lmxFBIw.js.gz +0 -0
  675. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css.br +0 -0
  676. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js.br +0 -0
  677. package/payload/server/public/assets/kanban-definition-6JOO6SKY-BLELXpqn.js.gz +0 -0
  678. package/payload/server/public/assets/line-BkI5icOY.js.br +0 -0
  679. package/payload/server/public/assets/line-BkI5icOY.js.gz +0 -0
  680. package/payload/server/public/assets/linear-B64ANRVs.js.br +0 -0
  681. package/payload/server/public/assets/linear-B64ANRVs.js.gz +0 -0
  682. package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js.br +0 -0
  683. package/payload/server/public/assets/mermaid-parser.core-qXPKkdJe.js.gz +0 -0
  684. package/payload/server/public/assets/mermaid.core-BMsz65Wy.js.br +0 -0
  685. package/payload/server/public/assets/mermaid.core-BMsz65Wy.js.gz +0 -0
  686. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js.br +0 -0
  687. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DhFTS2sx.js.gz +0 -0
  688. package/payload/server/public/assets/operator-DFgW6GiH.js +0 -1
  689. package/payload/server/public/assets/operator-DFgW6GiH.js.br +0 -0
  690. package/payload/server/public/assets/operator-DFgW6GiH.js.gz +0 -0
  691. package/payload/server/public/assets/ordinal-CJ_pL32Z.js.br +0 -0
  692. package/payload/server/public/assets/ordinal-CJ_pL32Z.js.gz +0 -0
  693. package/payload/server/public/assets/packet-4T2RLAQJ-B31PbAeA.js +0 -1
  694. package/payload/server/public/assets/packet-4T2RLAQJ-B31PbAeA.js.br +0 -0
  695. package/payload/server/public/assets/page-BRShHSH0.js.br +0 -0
  696. package/payload/server/public/assets/page-BRShHSH0.js.gz +0 -0
  697. package/payload/server/public/assets/page-BbBCu9iP.js.br +0 -0
  698. package/payload/server/public/assets/page-BbBCu9iP.js.gz +0 -0
  699. package/payload/server/public/assets/pdf-render-ynIPXfRA.js.br +0 -0
  700. package/payload/server/public/assets/pdf-render-ynIPXfRA.js.gz +0 -0
  701. package/payload/server/public/assets/pie-ZZUOXDRM-BbSc1VXl.js +0 -1
  702. package/payload/server/public/assets/pie-ZZUOXDRM-BbSc1VXl.js.br +0 -0
  703. package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js.br +0 -0
  704. package/payload/server/public/assets/pieDiagram-DEJITSTG-B2TxkbHK.js.gz +0 -0
  705. package/payload/server/public/assets/play-BJxUaf6-.js +0 -1
  706. package/payload/server/public/assets/play-BJxUaf6-.js.br +0 -0
  707. package/payload/server/public/assets/play-BJxUaf6-.js.gz +0 -0
  708. package/payload/server/public/assets/public-DkObqkzL.js.br +0 -0
  709. package/payload/server/public/assets/public-DkObqkzL.js.gz +0 -0
  710. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js.br +0 -0
  711. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-GsMxIJuS.js.gz +0 -0
  712. package/payload/server/public/assets/radar-PYXPWWZC-B0La8_mZ.js +0 -1
  713. package/payload/server/public/assets/radar-PYXPWWZC-B0La8_mZ.js.br +0 -0
  714. package/payload/server/public/assets/reduce-CfkEiHc9.js.br +0 -0
  715. package/payload/server/public/assets/reduce-CfkEiHc9.js.gz +0 -0
  716. package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js.br +0 -0
  717. package/payload/server/public/assets/requirementDiagram-MS252O5E-DqNprm-1.js.gz +0 -0
  718. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.br +0 -0
  719. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.gz +0 -0
  720. package/payload/server/public/assets/routines-D9kvg_Xu.js.br +0 -0
  721. package/payload/server/public/assets/routines-D9kvg_Xu.js.gz +0 -0
  722. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js.br +0 -0
  723. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-B-kRuiuz.js.gz +0 -0
  724. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js.br +0 -0
  725. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DEhL9g3K.js.gz +0 -0
  726. package/payload/server/public/assets/skills-l5I9HZ3D.js.br +0 -0
  727. package/payload/server/public/assets/skills-l5I9HZ3D.js.gz +0 -0
  728. package/payload/server/public/assets/src-BrAT6wKv.js.br +0 -0
  729. package/payload/server/public/assets/src-BrAT6wKv.js.gz +0 -0
  730. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js.br +0 -0
  731. package/payload/server/public/assets/stateDiagram-FHFEXIEX-Q-g6BHdz.js.gz +0 -0
  732. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js +0 -1
  733. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js.br +0 -0
  734. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-ssRWItVj.js.gz +0 -0
  735. package/payload/server/public/assets/tasks-C2qJMv6i.js.br +0 -0
  736. package/payload/server/public/assets/tasks-C2qJMv6i.js.gz +0 -0
  737. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js.br +0 -0
  738. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B3-52q4Q.js.gz +0 -0
  739. package/payload/server/public/assets/treeView-SZITEDCU-BBR3hu9P.js +0 -1
  740. package/payload/server/public/assets/treeView-SZITEDCU-BBR3hu9P.js.br +0 -0
  741. package/payload/server/public/assets/treemap-W4RFUUIX-wSQMuzBT.js +0 -1
  742. package/payload/server/public/assets/treemap-W4RFUUIX-wSQMuzBT.js.br +0 -0
  743. package/payload/server/public/assets/triangle-alert-BnC67uSs.js.br +0 -0
  744. package/payload/server/public/assets/triangle-alert-BnC67uSs.js.gz +0 -0
  745. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.br +0 -0
  746. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.gz +0 -0
  747. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.br +0 -0
  748. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.gz +0 -0
  749. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.br +0 -0
  750. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.gz +0 -0
  751. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js.br +0 -0
  752. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Bzm1VDi1.js.gz +0 -0
  753. package/payload/server/public/assets/wardley-RL74JXVD-3QaECtQN.js +0 -1
  754. package/payload/server/public/assets/wardley-RL74JXVD-3QaECtQN.js.br +0 -0
  755. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js.br +0 -0
  756. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-DIqGZr4v.js.gz +0 -0
  757. package/payload/server/public/assets/wrench-D4ufQG6C.js.br +0 -0
  758. package/payload/server/public/assets/wrench-D4ufQG6C.js.gz +0 -0
  759. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js.br +0 -0
  760. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-0W2L2hQA.js.gz +0 -0
  761. package/payload/server/public/dispatch.html +0 -20
  762. /package/payload/server/public/assets/{_baseFor-D1duyODO.js → _baseFor-BApe6Tla.js} +0 -0
  763. /package/payload/server/public/assets/{_baseFor-D1duyODO.js.br → _baseFor-BApe6Tla.js.br} +0 -0
  764. /package/payload/server/public/assets/{_baseFor-D1duyODO.js.gz → _baseFor-BApe6Tla.js.gz} +0 -0
  765. /package/payload/server/public/assets/{array-j7Xa9Fap.js → array-eiH4WfvY.js} +0 -0
  766. /package/payload/server/public/assets/{array-j7Xa9Fap.js.br → array-eiH4WfvY.js.br} +0 -0
  767. /package/payload/server/public/assets/{chunk-DlZTsV_O.js → chunk-BycB0eMI.js} +0 -0
  768. /package/payload/server/public/assets/{chunk-DlZTsV_O.js.br → chunk-BycB0eMI.js.br} +0 -0
  769. /package/payload/server/public/assets/{chunk-DlZTsV_O.js.gz → chunk-BycB0eMI.js.gz} +0 -0
  770. /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js → cytoscape.esm-BZ6NYo0w.js} +0 -0
  771. /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js.br → cytoscape.esm-BZ6NYo0w.js.br} +0 -0
  772. /package/payload/server/public/assets/{cytoscape.esm-Dob3eilA.js.gz → cytoscape.esm-BZ6NYo0w.js.gz} +0 -0
  773. /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js → defaultLocale-DWHqsa6O.js} +0 -0
  774. /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js.br → defaultLocale-DWHqsa6O.js.br} +0 -0
  775. /package/payload/server/public/assets/{defaultLocale-BNILPWh2.js.gz → defaultLocale-DWHqsa6O.js.gz} +0 -0
  776. /package/payload/server/public/assets/{file-download-CN4H4Eih.js → file-download-B7zwa78w.js} +0 -0
  777. /package/payload/server/public/assets/{file-download-CN4H4Eih.js.br → file-download-B7zwa78w.js.br} +0 -0
  778. /package/payload/server/public/assets/{file-download-CN4H4Eih.js.gz → file-download-B7zwa78w.js.gz} +0 -0
  779. /package/payload/server/public/assets/{init-ve51bpJo.js → init-BdkYWjJJ.js} +0 -0
  780. /package/payload/server/public/assets/{init-ve51bpJo.js.br → init-BdkYWjJJ.js.br} +0 -0
  781. /package/payload/server/public/assets/{init-ve51bpJo.js.gz → init-BdkYWjJJ.js.gz} +0 -0
  782. /package/payload/server/public/assets/{katex-CJNaolDQ.js → katex-BCzoGtFh.js} +0 -0
  783. /package/payload/server/public/assets/{katex-CJNaolDQ.js.br → katex-BCzoGtFh.js.br} +0 -0
  784. /package/payload/server/public/assets/{katex-CJNaolDQ.js.gz → katex-BCzoGtFh.js.gz} +0 -0
  785. /package/payload/server/public/assets/{path-B4emajHp.js → path-DY2qBuPM.js} +0 -0
  786. /package/payload/server/public/assets/{path-B4emajHp.js.br → path-DY2qBuPM.js.br} +0 -0
  787. /package/payload/server/public/assets/{path-B4emajHp.js.gz → path-DY2qBuPM.js.gz} +0 -0
  788. /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js → preload-helper-eAV8hweq.js} +0 -0
  789. /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.br → preload-helper-eAV8hweq.js.br} +0 -0
  790. /package/payload/server/public/assets/{preload-helper-3YNEDsJZ.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
  791. /package/payload/server/public/assets/{rough.esm-zabqYs6f.js → rough.esm-ec8xsRC7.js} +0 -0
  792. /package/payload/server/public/assets/{rough.esm-zabqYs6f.js.br → rough.esm-ec8xsRC7.js.br} +0 -0
  793. /package/payload/server/public/assets/{rough.esm-zabqYs6f.js.gz → rough.esm-ec8xsRC7.js.gz} +0 -0
@@ -0,0 +1,343 @@
1
+ /* The office planner. Dependency-free, no bundler, the same shape as portal.js.
2
+
3
+ It draws worker rows against the days of one week from what /api/visits
4
+ returns. THAT ENDPOINT IS THE GATE. This page re-applies no filter of its
5
+ own: an own-scoped person already receives only their own rows and their own
6
+ roster row, and a second filter here would be a second thing to get wrong.
7
+
8
+ Nothing an operator can name is in this file. The nouns, the statuses and the
9
+ timezone all arrive in `meta`, published from the account's own config. */
10
+ (function () {
11
+ 'use strict';
12
+
13
+ function metaTag(name) {
14
+ var el = document.querySelector('meta[name="' + name + '"]');
15
+ return el ? el.getAttribute('content') || '' : '';
16
+ }
17
+
18
+ var API = metaTag('api-base');
19
+ var statusEl = document.getElementById('dp-status');
20
+ var loginEl = document.getElementById('dp-login');
21
+ var panelEl = document.getElementById('pl-panel');
22
+ var gridEl = document.getElementById('pl-grid');
23
+ var rangeEl = document.getElementById('pl-range');
24
+ var freshEl = document.getElementById('pl-freshness');
25
+ var unplaceableEl = document.getElementById('pl-unplaceable');
26
+
27
+ /* Monday of the week on screen, held as a UTC midnight. The two arrows move
28
+ it a week at a time and the seven day keys derive from it. */
29
+ var anchor = mondayOf(new Date());
30
+ /* The last payload read, so moving the week re-renders without a round trip
31
+ and a refused write can redraw what is actually on the device. */
32
+ var latest = null;
33
+
34
+ function say(msg) {
35
+ statusEl.textContent = msg;
36
+ }
37
+
38
+ function api(path, opts) {
39
+ return fetch(API + path, Object.assign({ credentials: 'same-origin' }, opts || {}));
40
+ }
41
+
42
+ function mondayOf(d) {
43
+ var u = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
44
+ var back = (u.getUTCDay() + 6) % 7;
45
+ u.setUTCDate(u.getUTCDate() - back);
46
+ return u;
47
+ }
48
+
49
+ function ymd(d) {
50
+ return d.toISOString().slice(0, 10);
51
+ }
52
+
53
+ function dayKeys() {
54
+ var out = [];
55
+ for (var i = 0; i < 7; i++) {
56
+ var d = new Date(anchor.getTime());
57
+ d.setUTCDate(d.getUTCDate() + i);
58
+ out.push(ymd(d));
59
+ }
60
+ return out;
61
+ }
62
+
63
+ /* Which day an instant falls on IN THE ACCOUNT'S ZONE. en-CA formats
64
+ YYYY-MM-DD, so the result compares directly against dayKeys(). The zone is
65
+ always passed: a formatter built without one takes the browser's, and a
66
+ 23:30 London visit then lands on tomorrow for somebody in Auckland. */
67
+ function dayOf(iso, zone) {
68
+ if (!iso) return '';
69
+ var t = new Date(iso);
70
+ if (isNaN(t.getTime())) return '';
71
+ return new Intl.DateTimeFormat('en-CA', {
72
+ timeZone: zone,
73
+ year: 'numeric',
74
+ month: '2-digit',
75
+ day: '2-digit',
76
+ }).format(t);
77
+ }
78
+
79
+ function timeOf(iso, zone) {
80
+ var t = new Date(iso);
81
+ if (isNaN(t.getTime())) return '';
82
+ return new Intl.DateTimeFormat('en-GB', {
83
+ timeZone: zone,
84
+ hour: '2-digit',
85
+ minute: '2-digit',
86
+ }).format(t);
87
+ }
88
+
89
+ function dayLabel(key, zone) {
90
+ return new Intl.DateTimeFormat('en-GB', {
91
+ timeZone: zone,
92
+ weekday: 'short',
93
+ day: 'numeric',
94
+ month: 'short',
95
+ }).format(new Date(key + 'T12:00:00.000Z'));
96
+ }
97
+
98
+ /* A config noun rendered as a heading. The retired grid printed the raw value
99
+ beside formatted day names, so one cell read lowercase and the rest did
100
+ not. */
101
+ function capitalise(word) {
102
+ if (!word) return '';
103
+ return word.charAt(0).toUpperCase() + word.slice(1);
104
+ }
105
+
106
+ function cell(cls, text) {
107
+ var el = document.createElement('div');
108
+ el.className = cls;
109
+ if (text !== undefined) el.textContent = text;
110
+ return el;
111
+ }
112
+
113
+ /* The keys working hours are declared under, Monday first, matching the
114
+ column order above. */
115
+ var HOUR_KEYS = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
116
+
117
+ /* One visit. Clicking moves it to the next declared status and posts that
118
+ through the portal's existing write door. Which transitions are legal is
119
+ Task 2511's; this cycles the declared list. */
120
+ function visitButton(v, meta, zone) {
121
+ var b = document.createElement('button');
122
+ b.type = 'button';
123
+ b.className = 'pl-visit';
124
+ b.textContent = [timeOf(v.startDate, zone), v.status, v.purpose].filter(Boolean).join(' · ');
125
+ b.addEventListener('click', function () {
126
+ advance(v, meta);
127
+ });
128
+ return b;
129
+ }
130
+
131
+ function advance(v, meta) {
132
+ var names = ((meta && meta.statuses) || []).map(function (s) {
133
+ return s.name;
134
+ });
135
+ if (!names.length) {
136
+ say('No statuses are configured for this account.');
137
+ return;
138
+ }
139
+ var next = names[(names.indexOf(v.status) + 1) % names.length];
140
+ say('Saving…');
141
+ api('/api/visit-status', {
142
+ method: 'POST',
143
+ headers: { 'content-type': 'application/json' },
144
+ body: JSON.stringify({ visitId: v.visitId, status: next }),
145
+ })
146
+ .then(function (r) {
147
+ return r.json().then(function (d) {
148
+ return { s: r.status, d: d };
149
+ });
150
+ })
151
+ .then(function (res) {
152
+ if (!res.d.ok) {
153
+ /* The endpoint answers the same 404 for "no such record" and "not
154
+ yours", deliberately, so this message says neither. */
155
+ console.error('[planner] status write refused', { status: res.s, error: res.d.error });
156
+ say(res.s === 404 ? 'That is not yours to change.' : 'That change was refused.');
157
+ return;
158
+ }
159
+ /* The graph is the authority and the device carries this there within a
160
+ minute. Showing it now and re-reading on the next poll is what makes
161
+ the page honest about which of the two it is displaying. */
162
+ v.status = next;
163
+ say('Saved. It reaches the office within a minute.');
164
+ if (latest) render(latest);
165
+ })
166
+ .catch(function (err) {
167
+ console.error('[planner] status write failed', { status: 'network', error: err });
168
+ say('Could not reach the server.');
169
+ });
170
+ }
171
+
172
+ function render(data) {
173
+ var meta = data.meta;
174
+ /* UTC when the account published no config. Never the browser's: a page
175
+ that guesses the zone draws a plausible week on the wrong days. */
176
+ var zone = (meta && meta.zone) || 'UTC';
177
+ var keys = dayKeys();
178
+
179
+ rangeEl.textContent = dayLabel(keys[0], zone) + ' – ' + dayLabel(keys[6], zone);
180
+ freshEl.textContent =
181
+ meta && meta.publishedAt ? 'As at ' + timeOf(meta.publishedAt, zone) : 'Never published';
182
+
183
+ gridEl.replaceChildren();
184
+ gridEl.appendChild(
185
+ cell('pl-corner', capitalise((meta && meta.vocabulary && meta.vocabulary.worker) || '')),
186
+ );
187
+ keys.forEach(function (k) {
188
+ gridEl.appendChild(cell('pl-colhead', dayLabel(k, zone)));
189
+ });
190
+
191
+ /* Visits group onto a row by ownerId, the key both halves of the exchange
192
+ already use. A visit whose owner matches no roster row gets its own row
193
+ rather than vanishing, and one with no start date is listed below the
194
+ grid: a dropped visit is invisible, and invisible is the failure this
195
+ surface exists to catch. */
196
+ var byOwner = {};
197
+ var unplaceable = [];
198
+ (data.visits || []).forEach(function (v) {
199
+ var key = dayOf(v.startDate, zone);
200
+ if (!key) {
201
+ unplaceable.push(v);
202
+ return;
203
+ }
204
+ if (keys.indexOf(key) === -1) return;
205
+ var owner = v.ownerId || '';
206
+ (byOwner[owner] = byOwner[owner] || []).push(v);
207
+ });
208
+
209
+ var rows = (data.roster || []).slice();
210
+ var known = {};
211
+ rows.forEach(function (w) {
212
+ known[w.ownerId] = true;
213
+ });
214
+ Object.keys(byOwner).forEach(function (owner) {
215
+ if (!known[owner]) rows.push({ workerId: '', ownerId: owner, name: '', workingHours: {} });
216
+ });
217
+
218
+ rows.forEach(function (w) {
219
+ var label = cell('pl-rowlabel', w.name || w.ownerId || 'Unassigned');
220
+ if (!w.workerId) label.setAttribute('data-unknown', 'true');
221
+ gridEl.appendChild(label);
222
+ keys.forEach(function (k, i) {
223
+ var c = cell('pl-cell');
224
+ c.setAttribute(
225
+ 'data-off',
226
+ w.workingHours && w.workingHours[HOUR_KEYS[i]] ? 'false' : 'true',
227
+ );
228
+ (byOwner[w.ownerId] || [])
229
+ .filter(function (v) {
230
+ return dayOf(v.startDate, zone) === k;
231
+ })
232
+ .forEach(function (v) {
233
+ c.appendChild(visitButton(v, meta, zone));
234
+ });
235
+ gridEl.appendChild(c);
236
+ });
237
+ });
238
+
239
+ if (unplaceable.length) {
240
+ unplaceableEl.hidden = false;
241
+ unplaceableEl.textContent =
242
+ unplaceable.length +
243
+ ' with no date: ' +
244
+ unplaceable
245
+ .map(function (v) {
246
+ return v.visitId;
247
+ })
248
+ .join(', ');
249
+ } else {
250
+ unplaceableEl.hidden = true;
251
+ unplaceableEl.textContent = '';
252
+ }
253
+ }
254
+
255
+ function refresh() {
256
+ return api('/api/visits')
257
+ .then(function (r) {
258
+ if (r.status === 401) {
259
+ panelEl.hidden = true;
260
+ loginEl.hidden = false;
261
+ return null;
262
+ }
263
+ return r.json();
264
+ })
265
+ .then(function (d) {
266
+ if (!d || !d.ok) return;
267
+ latest = d;
268
+ loginEl.hidden = true;
269
+ panelEl.hidden = false;
270
+ render(d);
271
+ })
272
+ .catch(function (err) {
273
+ console.error('[planner] read failed', { error: err });
274
+ say('Could not reach the server.');
275
+ });
276
+ }
277
+
278
+ function authFailureMessage(status) {
279
+ if (status === 429) return 'Too many attempts. Try again later.';
280
+ if (status === 400) return 'Enter both your name and your passcode.';
281
+ if (status === 401) return 'That name and passcode did not match.';
282
+ return 'Something went wrong. Please try again in a moment.';
283
+ }
284
+
285
+ loginEl.addEventListener('submit', function (e) {
286
+ e.preventDefault();
287
+ say('Signing in…');
288
+ api('/api/auth', {
289
+ method: 'POST',
290
+ headers: { 'content-type': 'application/json' },
291
+ body: JSON.stringify({
292
+ ownerId: document.getElementById('dp-owner').value.trim(),
293
+ passcode: document.getElementById('dp-passcode').value,
294
+ }),
295
+ })
296
+ .then(function (r) {
297
+ return r.json().then(function (d) {
298
+ return { s: r.status, d: d };
299
+ });
300
+ })
301
+ .then(function (res) {
302
+ if (!res.d.ok) {
303
+ /* The server returns one denial for a wrong passcode and an unknown
304
+ person on purpose, so this message stays single. */
305
+ console.error('[planner] auth failed', { status: res.s, error: res.d.error });
306
+ say(authFailureMessage(res.s));
307
+ return;
308
+ }
309
+ document.getElementById('dp-passcode').value = '';
310
+ say('');
311
+ return refresh();
312
+ })
313
+ .catch(function (err) {
314
+ console.error('[planner] auth failed', { status: 'network', error: err });
315
+ say('Could not reach the server. Check your connection and try again.');
316
+ });
317
+ });
318
+
319
+ document.getElementById('pl-prev').addEventListener('click', function () {
320
+ anchor.setUTCDate(anchor.getUTCDate() - 7);
321
+ if (latest) render(latest);
322
+ });
323
+
324
+ document.getElementById('pl-next').addEventListener('click', function () {
325
+ anchor.setUTCDate(anchor.getUTCDate() + 7);
326
+ if (latest) render(latest);
327
+ });
328
+
329
+ /* Re-read at the cadence the device publishes at, so a change made on the
330
+ device appears without anybody clicking. Gated on visibility so a forgotten
331
+ tab costs nothing, and skipped while a read is in flight so a slow response
332
+ cannot stack requests. */
333
+ var polling = false;
334
+ setInterval(function () {
335
+ if (document.hidden || panelEl.hidden || polling) return;
336
+ polling = true;
337
+ refresh().then(function () {
338
+ polling = false;
339
+ });
340
+ }, 60000);
341
+
342
+ refresh();
343
+ })();
@@ -58,7 +58,12 @@ exists. Check with `dispatch-job-list` before removing any status, and say what
58
58
 
59
59
  ## What this skill does not do
60
60
 
61
- It creates no `:Site`, `:Customer`, `:Person:Engineer` or `:Vehicle` node. A `workerId` in the
62
- roster must have a matching `:Person:Engineer` on the account before `dispatch-allocate` will use
63
- it, created with `memory-update`. Say this at the end of setup rather than letting the first
64
- allocation discover it.
61
+ It creates no `:Customer`, `:Person:Engineer` or `:Vehicle` node. A `workerId` in the roster must
62
+ have a matching `:Person:Engineer` on the account before `dispatch-allocate` will use it, created
63
+ with `memory-update`. Say this at the end of setup rather than letting the first allocation discover
64
+ it.
65
+
66
+ Sites are `dispatch-site-upsert`'s, not this skill's, and a site wants its street and postcode at
67
+ the moment it is created. A site with only a name reaches the worker's card as a name, and he sets
68
+ off without a street to drive to. The same tool adds an address to a site that already exists, so a
69
+ gap found later is one call, not a re-creation.
@@ -111,33 +111,24 @@ for that door alone.
111
111
  census prints every cycle, including when the counts agree: an absent line means
112
112
  the census stopped, never that delivery is healthy.
113
113
 
114
- ## What a second door actually requires
114
+ ## Which door an answer reaches
115
115
 
116
- Reaching a door other than the one the message arrived on needs two facts.
116
+ The door the message arrived on, and no other. A question asked on WhatsApp is
117
+ answered on WhatsApp; one asked on Telegram is answered on Telegram. The browser
118
+ reader is not a door at all: it tails the session record the answer was taken
119
+ from, so it shows the conversation without anything being sent to it.
117
120
 
118
- **The person must be resolvable from the turn's sender.** That resolution reads
119
- one place: the admin's `users.json` entry. `phone` (E.164) identifies a WhatsApp
120
- sender; `telegram` (the chat id, matched exactly) identifies a Telegram sender.
121
- `account.json` `whatsapp.adminPhones` is a different store with a different job:
122
- it says a number may reach the admin agent, not whose number it is, which is why
123
- adding a phone there binds nobody. Set the bindings with `admin-bind`, or at
124
- creation with `admin-add`'s `phone` and `telegram`.
121
+ Answers used to also reach the person's other bound channel. That was removed:
122
+ only the answer text travelled, never the question, so the second app showed a
123
+ reply with nothing above it. The same conversation already follows you to
124
+ another device through WhatsApp Web and Telegram Web, each for its own channel.
125
125
 
126
- **The other door must hold a live target for that person.** `phone` addresses
127
- WhatsApp when a Telegram turn wants to reach it, and `telegram` addresses
128
- Telegram from a WhatsApp turn. Two-way reach needs both fields, not one.
129
-
130
- The three lines that name each failure:
126
+ The two lines that name a delivery failure:
131
127
 
132
128
  | Line | Means |
133
129
  |---|---|
134
- | `[whatsapp-native] op=admin-identity senderId=… userId=unbound-empty` | no binding, so no second door is even looked for |
135
- | `[channel-fanout] op=no-target origin=… reason=no-admin-user` | the same fact, observed at the fan-out |
136
130
  | `[channel-fanout] op=no-target origin=… reason=origin-not-live` | the door holds no live target for this key |
137
-
138
- A Telegram bot owned by a `role:'client'` sub-account can never resolve an
139
- admin: both resolvers return null on a client account before reading any chat
140
- id. No binding fixes that; the bot has to live on the house account.
131
+ | `[channel-fanout] op=no-target origin=telegram key=… accountId=none reason=no-account` | no account on this install owns the bot in that key |
141
132
 
142
133
  `[whatsapp-account-scope] op=non-uuid-account caller=fan-out` means the fan-out
143
134
  was handed a Baileys credential dirname where a platform UUID belongs. That is
@@ -28,22 +28,44 @@ No status, job type, qualification, checklist, SLA target or operator noun appea
28
28
  A test walks every source file and fails if any string from either shipped fixture config appears in
29
29
  it.
30
30
 
31
- ## The ten tools
31
+ ## The sixteen tools
32
32
 
33
33
  | Tool | Does | Refuses when |
34
34
  |---|---|---|
35
35
  | `dispatch-config-get` | Returns the vocabulary, statuses, transitions, job types, roster, checklists and the config audit | no config |
36
+ | `dispatch-site-upsert` | Creates a site under its customer, or gives an existing site its street, town and postcode | a new site with no `customerId`, `name` or `region`; a customer that does not exist; a region outside East/North/South/West; some but not all three address fields |
37
+ | `dispatch-intake-draft` | Holds an inbound request as a draft, storing the fields that resolved and naming the required ones that did not | neither the site nor the customer exists, so there is nothing to attach the draft to |
38
+ | `dispatch-intake-decide` | Approves a draft into a job through the `dispatch-job-create` path, or rejects it with a reason and keeps it | draft unknown; already decided; rejecting with no reason; approving while a required field is still missing |
39
+ | `dispatch-intake-list` | The undecided queue oldest first, or drafts already decided when a verdict is named | — |
36
40
  | `dispatch-job-create` | Raises a job at a site for a customer, in the account's first job status, with `slaTargetAt` computed from the type | unknown job type; site or customer does not exist |
37
41
  | `dispatch-job-get` | One job with every visit, its times, who attended and what was recorded | job not on this account |
38
42
  | `dispatch-job-list` | Jobs filtered by status, type, worker, date window, or narrowed to never-allocated. `overdue` computed on every read | status not declared |
39
- | `dispatch-allocate-candidates` | Who could take this job in this window, with clashes shown and exclusions named | job unknown, untyped, or typed to something no longer declared |
43
+ | `dispatch-allocate-candidates` | Who could take this job in this window, with clashes shown, exclusions named, and an estimated travel time from each worker's previous visit that day | job unknown, untyped, or typed to something no longer declared |
40
44
  | `dispatch-allocate` | Creates the visit, attends it, moves the job along its own edge, attaches a vehicle | worker not on the roster; worker lacks the qualification; vehicle passed while `vehicles.enabled` is false; no `:Person:Engineer` node for the workerId |
41
45
  | `dispatch-visit-status-set` | Moves a visit; closes the job when its last visit reaches a terminal status | status not declared; transition not in the edge list; a required record missing |
42
46
  | `dispatch-visit-record` | Note, media reference, fitted part, checklist item, signature, arrival | visit unknown; nothing supplied to record |
43
47
  | `dispatch-site-history` | Every visit at one site, newest first, with notes | — |
44
48
  | `dispatch-day` | One day: every worker with the visits they hold, plus jobs nobody has been sent to | — |
49
+ | `dispatch-notify-worker` | Sends the worker attending a visit its card: one button per move this account allows from where the visit is now, plus a button opening the job sheet inside Telegram | visit unknown or unallocated; worker not on the roster; worker carries no `telegramUserId`; no bot registered; origin is not https |
50
+ | `dispatch-site-location-set` | Gives a site a latitude and longitude, and optionally its own arrival radius in metres | site not on this account; coordinates out of range; radius zero or negative |
45
51
 
46
- All ten are `adminAllowlist: true`, `publicAllowlist: false`.
52
+ All sixteen are `adminAllowlist: true`, `publicAllowlist: false`.
53
+
54
+ ## A request is a draft before it is a job
55
+
56
+ An inbound request becomes an `:IntakeDraft`, never a `:Job` with a flag — a draft that is a `:Job`
57
+ shows up in `dispatch-job-list`, in the census `jobs=` count and in the planner. A value that names
58
+ nothing on this account counts as missing exactly like an omitted one, so there is one list of gaps
59
+ to act on rather than two vocabularies to reconcile.
60
+
61
+ A draft must resolve at least one of its site or its customer, because the graph write path rejects
62
+ a node with no adjacency and this plugin creates neither. A request naming neither is refused with
63
+ both fields named.
64
+
65
+ Approval runs through the same write path `dispatch-job-create` uses, so the opening status and the
66
+ SLA target come from the account's config and `op=job-create` still appears. A rejection stores its
67
+ reason and keeps the draft. A decision is final; a second one is refused rather than raising a
68
+ duplicate job.
47
69
 
48
70
  ## Legality is data
49
71
 
@@ -65,7 +87,19 @@ Only a missing qualification excludes a worker, and every exclusion is named:
65
87
  with the clash shown. Double-booking is the office's decision, and a tool that drops the busy option
66
88
  makes that decision for them with no trace.
67
89
 
68
- There is no travel-time estimate.
90
+ ## How far each candidate has to come
91
+
92
+ Every offered candidate carries `travelMinutes` from their previous visit that day to this job's
93
+ site. It is a **straight-line** figure over an assumed road speed, named in `travelProvider`, so it
94
+ is a lower bound on the drive and never a route: an estuary or a one-way system costs minutes it
95
+ cannot see. Set a site's coordinates with `dispatch-site-location-set` to make it measurable.
96
+
97
+ A candidate with no estimate carries no `travelMinutes` at all, plus a `travelReason` saying why —
98
+ the worker has nothing earlier that day, or a site has no coordinates, named so you know which one
99
+ to fix. There is no zero and no null, because either would read as a measurement.
100
+
101
+ A provider that fails never shortens the list. The office sees the same people it would have seen,
102
+ each carrying the reason instead of a number.
69
103
 
70
104
  ## Arrival is two properties
71
105
 
@@ -74,18 +108,59 @@ either never clears the other. An observation with no press is stored and flagge
74
108
  is what somebody said; an observed one is what was measured, and a single `arrivedAt` cannot show
75
109
  them disagreeing.
76
110
 
111
+ ## The card in the worker's chat
112
+
113
+ A worker does not have to open anything to move a job along. `dispatch-notify-worker` sends the
114
+ visit as a card in his Telegram chat, carrying one button per move this account allows from where the
115
+ visit is now, and one button that opens the full job sheet inside Telegram. Press a button and the
116
+ visit moves; the card redraws itself with whatever is legal next.
117
+
118
+ Two things have to be true before a card can go anywhere. The worker's entry in
119
+ `dispatch/config.json` needs his numeric `telegramUserId`, the same one the job sheet signs him in
120
+ with. And the account needs an admin Telegram bot registered, which `telegram-setup` does.
121
+
122
+ A button that is out of date is refused, not applied. If the office moved the visit on while the
123
+ card sat on his phone, pressing it tells him what the button was for and what the visit is now, and
124
+ redraws the card. Nothing is applied twice and nothing is applied out of order.
125
+
126
+ If he shares his live location, and the site has coordinates, arriving inside the site's radius
127
+ records the arrival independently of anything he pressed. Both times are kept. That is the whole
128
+ point: what somebody said and what was measured can then disagree, and the disagreement is visible.
129
+ A site gets its coordinates from `dispatch-site-location-set`; without them the geofence cannot fire
130
+ and `sitesWithoutCoords=` counts how many are still unplaced. The radius is the site's own if it has
131
+ one, otherwise the account's `vehicles.defaultGeofenceRadiusM`; with neither, nothing is recorded,
132
+ because a distance with nothing to compare it against cannot say whether anybody arrived.
133
+
134
+ A voice note becomes that visit's note, transcribed. A photo becomes its media. Both need exactly
135
+ one visit open for that worker: with none, or with more than one, the message stays in the chat and
136
+ he is told which visit to open, because filing a photograph against the wrong job silently is worse
137
+ than asking.
138
+
77
139
  ## The standing checks
78
140
 
79
- Six failure modes emit no event, because no action occurs: a job created and never allocated, a job
80
- past its SLA target, a status no transition reaches, a job type no worker is qualified for, a worker
81
- with no qualification, and visits closing hours after the work ended.
141
+ Eight failure modes emit no event, because no action occurs: a draft nobody decided on, a job
142
+ created and never allocated, a job past its SLA target, a status no transition reaches, a job
143
+ type no worker is qualified for, a worker with no qualification, visits closing hours after the
144
+ work ended, and a card sent to a worker's phone that never arrived.
145
+
146
+ The draft is the sharpest of them. Nothing was created so there are no write logs, nothing was
147
+ refused so there are no rejection logs, and the requester never got an answer. It is byte-identical
148
+ to a quiet morning until the census counts it.
82
149
 
83
150
  - `[dispatch-census]`, per account, every 15 minutes: `jobs= unallocated= oldestUnallocatedAgeH=
84
- overdue= visitsOpen= visitsOpenOver24h=`
151
+ overdue= visitsOpen= visitsOpenOver24h= intakeUnreviewed= oldestIntakeAgeH=`
85
152
  - `[dispatch-config-audit]`, on config load and each tick: `statuses= unreachable= terminal=
86
153
  jobTypes= typesWithNoQualifiedWorker= workersWithNoQualification=`
87
154
  - `[dispatch-record-census]`, daily: `closedVisits= withNote= withMedia= medianRecordLagS=
88
155
  p90RecordLagS=`
156
+ - `[dispatch-tg-census]`, per account, every 15 minutes: `dispatchedToday= acknowledged=
157
+ unacknowledged= oldestUnackMin= keyboardsLive= keyboardsOnClosedVisits= callbacksToday=
158
+ callbacksFailed= voiceAwaitingTranscription= sitesWithoutCoords=`
159
+
160
+ A card that never reached a worker's phone is the seventh failure mode that emits nothing at all.
161
+ Nothing is logged because nothing happened, so only counting cards sent against cards pressed can
162
+ see it. `oldestUnackMin` climbing across ticks is a phone that is off, out of signal, or a worker
163
+ who has stopped looking.
89
164
 
90
165
  They run in the UI server, not in the plugin, because a plugin only runs when somebody calls it.
91
166
  Accounts without a dispatch config are skipped silently.
@@ -112,11 +187,13 @@ Europe/London visit near local midnight for the whole of British Summer Time, so
112
187
  derives boundaries in the account's own timezone. And `dispatch-job-list` caps its rows, so the
113
188
  planner takes its counts from an aggregate instead of counting what it was given.
114
189
 
115
- It also names a defect it cannot fix. `dispatch-allocate` stores `startDate` exactly as the caller
116
- passed it (`allocate.ts:186`) while normalising `endDate` (`allocate.ts:51`). The window compare is
117
- lexical, so a start carrying a non-UTC offset reads correctly under GMT and an hour out under
118
- British Summer Time. The planner logs `op=nonzulu-start` with the offending visit ids; correcting
119
- it belongs at the writer.
190
+ The window compare is lexical, so an instant carrying a non-UTC offset reads correctly under GMT and
191
+ an hour out under British Summer Time. It is fixed at the writer, the only place it can be fixed:
192
+ `dispatch-allocate` normalises `startDate` and `endDate` through `platform/lib/canonical-instant`,
193
+ the same definition the scheduling writers use, and refuses a value it cannot convert. Stored rows
194
+ converge on install. The planner still logs `op=nonzulu-start` with the offending visit ids, and
195
+ `[dispatch-census]` carries `nonCanonicalInstants` every sweep, so a regression is visible with or
196
+ without a browser open.
120
197
 
121
198
  Full detail: [`.docs/dispatch-planner.md`](../../../.docs/dispatch-planner.md).
122
199
 
@@ -152,8 +229,10 @@ Full detail: [`.docs/dispatch-field-app.md`](../../../.docs/dispatch-field-app.m
152
229
  ## Diagnostic path
153
230
 
154
231
  ```
155
- journalctl --user -u <brand>-* | grep -E '\[dispatch\]|\[dispatch-census\]|\[dispatch-config-audit\]|\[dispatch-record-census\]|\[dispatch-field\]|\[dispatch-field-census\]'
232
+ journalctl --user -u <brand>-* | grep -E '\[dispatch\]|\[dispatch-census\]|\[dispatch-config-audit\]|\[dispatch-record-census\]|\[dispatch-field\]|\[dispatch-field-census\]|\[dispatch-tg\]|\[dispatch-tg-census\]'
156
233
  ```
157
234
 
158
235
  Then filter by `jobId=` for one job's lifeline, `op=transition-refused` to audit rejected writes, or
159
- `exclusions=` to see why allocation offered whom.
236
+ `exclusions=` to see why allocation offered whom. For the card path, `updateId=` follows one press
237
+ end to end, `visitId=` follows one visit's whole field record, and `op=unbound-inbound` finds the
238
+ messages that reached no visit.
@@ -202,7 +202,10 @@ test("dispatch owns the visit, cost and note edges", () => {
202
202
  const block = patternBlock("schema-dispatch.md");
203
203
  for (const edge of [
204
204
  "(:Job)-[:HAS_VISIT]->(:Visit)",
205
- "(:Visit)-[:ATTENDED_BY]->(:Engineer)",
205
+ // Two hops since Task 2512: the attendance is the node that carries one
206
+ // worker's own arrival times.
207
+ "(:Visit)-[:HAS_ATTENDANCE]->(:Attendance)",
208
+ "(:Attendance)-[:BY_ENGINEER]->(:Engineer)",
206
209
  "(:Job)-[:HAS_COST]->(:JobCost)",
207
210
  "(:Note)-[:ABOUT]->(:Job)",
208
211
  ]) {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch-vertical-coverage.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/dispatch-vertical-coverage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch-vertical-coverage.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/dispatch-vertical-coverage.test.ts"],"names":[],"mappings":"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"}
@@ -184,9 +184,32 @@ describe("real schema-dispatch.md (Task 2499)", () => {
184
184
  // anchored on :Engineer, so a base :Person write is never newly governed.
185
185
  expect(patterns.find((p) => p.source === "Person")).toBeUndefined();
186
186
  });
187
+ it("allows AT_ADDRESS from a Site, so a site address is not drift (Task 2514)", () => {
188
+ // :Site is already a governed source label via HAS_ASSET, so before this
189
+ // edge was declared an address write from a site was governed && !allowed
190
+ // and every one of them was logged as drift.
191
+ expect(patterns).toContainEqual({
192
+ source: "Site",
193
+ edgeType: "AT_ADDRESS",
194
+ target: "PostalAddress",
195
+ sourceFile: "schema-dispatch.md",
196
+ });
197
+ expect(checkEdgeAgainstPatterns(["Site"], "AT_ADDRESS", patterns)).toEqual({
198
+ governed: true,
199
+ allowed: true,
200
+ });
201
+ });
187
202
  it("governs the visit lifecycle edges", () => {
188
203
  expect(checkEdgeAgainstPatterns(["Job"], "HAS_VISIT", patterns).allowed).toBe(true);
189
- expect(checkEdgeAgainstPatterns(["Visit"], "ATTENDED_BY", patterns).allowed).toBe(true);
204
+ // Task 2512 replaced (:Visit)-[:ATTENDED_BY]->(:Engineer) with the two hops
205
+ // through :Attendance, so the retired edge must now be governed and refused
206
+ // rather than merely absent — an ungoverned edge would be written silently.
207
+ expect(checkEdgeAgainstPatterns(["Visit"], "HAS_ATTENDANCE", patterns).allowed).toBe(true);
208
+ expect(checkEdgeAgainstPatterns(["Attendance"], "BY_ENGINEER", patterns).allowed).toBe(true);
209
+ expect(checkEdgeAgainstPatterns(["Visit"], "ATTENDED_BY", patterns)).toEqual({
210
+ governed: true,
211
+ allowed: false,
212
+ });
190
213
  expect(checkEdgeAgainstPatterns(["Visit"], "USED_VEHICLE", patterns).allowed).toBe(true);
191
214
  expect(checkEdgeAgainstPatterns(["Visit"], "INVENTED_EDGE", patterns)).toEqual({
192
215
  governed: true,