@rubytech/create-sitedesk-code 0.1.523 → 0.1.525

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 (804) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +99 -0
  3. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -0
  4. package/payload/platform/lib/agent-dispatch-rule/dist/index.js +228 -0
  5. package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -0
  6. package/payload/platform/lib/agent-dispatch-rule/package.json +6 -0
  7. package/payload/platform/lib/agent-dispatch-rule/src/__tests__/rule.test.ts +384 -0
  8. package/payload/platform/lib/agent-dispatch-rule/src/index.ts +269 -0
  9. package/payload/platform/lib/agent-dispatch-rule/tsconfig.json +9 -0
  10. package/payload/platform/lib/agent-dispatch-rule/vitest.config.ts +9 -0
  11. package/payload/platform/lib/routine-templates/dist/roster.js +1 -1
  12. package/payload/platform/lib/routine-templates/src/roster.ts +1 -1
  13. package/payload/platform/package.json +2 -2
  14. package/payload/platform/plugins/admin/PLUGIN.md +1 -0
  15. package/payload/platform/plugins/admin/hooks/__tests__/mailbox-inject.test.sh +501 -0
  16. package/payload/platform/plugins/admin/hooks/mailbox-inject.sh +299 -0
  17. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +54 -21
  18. package/payload/platform/plugins/admin/skills/superpowers-sprint/SKILL.md +26 -0
  19. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  20. package/payload/platform/plugins/docs/references/admin-ui.md +49 -18
  21. package/payload/platform/plugins/docs/references/workflows.md +4 -2
  22. package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +72 -1
  23. package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js.map +1 -1
  24. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +4 -1
  25. package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -1
  26. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
  27. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +4 -2
  28. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
  29. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +0 -6
  30. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
  31. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +24 -2
  32. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
  33. package/payload/platform/plugins/email/references/email-reference.md +1 -1
  34. package/payload/platform/plugins/memory/PLUGIN.md +10 -0
  35. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +5 -1
  36. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.d.ts +2 -0
  38. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.d.ts.map +1 -0
  39. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.js +141 -0
  40. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/temporal-type-preserve.test.js.map +1 -0
  41. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +6 -0
  44. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.d.ts +45 -0
  46. package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.d.ts.map +1 -0
  47. package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.js +122 -0
  48. package/payload/platform/plugins/memory/mcp/dist/lib/temporal-type-preserve.js.map +1 -0
  49. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js +26 -0
  50. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js.map +1 -1
  51. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.d.ts +2 -0
  52. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.d.ts.map +1 -0
  53. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.js +201 -0
  54. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-type-preserve.test.js.map +1 -0
  55. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
  56. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +89 -33
  57. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  58. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
  59. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts +2 -0
  60. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.d.ts.map +1 -0
  61. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js +322 -0
  62. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-search-delegated-ids.test.js.map +1 -0
  63. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js +21 -1
  64. package/payload/platform/plugins/outlook/mcp/dist/__tests__/mailbox-registry.test.js.map +1 -1
  65. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts +13 -0
  66. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.d.ts.map +1 -1
  67. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js +16 -0
  68. package/payload/platform/plugins/outlook/mcp/dist/auth/mailbox-registry.js.map +1 -1
  69. package/payload/platform/plugins/outlook/mcp/dist/index.js +5 -5
  70. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  71. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
  72. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +6 -0
  73. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  74. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +7 -0
  75. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -1
  76. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +122 -8
  77. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -1
  78. package/payload/platform/plugins/scheduling/PLUGIN.md +26 -1
  79. package/payload/platform/plugins/scheduling/mcp/dist/index.js +6 -4
  80. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  81. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js +8 -36
  82. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch.test.js.map +1 -1
  83. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.d.ts +2 -0
  84. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.d.ts.map +1 -0
  85. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.js +148 -0
  86. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/meeting-retype.test.js.map +1 -0
  87. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +10 -65
  88. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
  89. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +29 -122
  90. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
  91. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.d.ts +83 -6
  92. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.d.ts.map +1 -1
  93. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.js +90 -5
  94. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.js.map +1 -1
  95. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js +111 -2
  96. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/routine-roster-audit.test.js.map +1 -1
  97. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +38 -0
  98. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  99. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +116 -0
  100. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  101. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +13 -1
  102. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  103. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +81 -8
  104. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  105. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.js +39 -0
  106. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-event-agent.test.js.map +1 -1
  107. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts +2 -0
  108. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.d.ts.map +1 -0
  109. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js +305 -0
  110. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-update-status.test.js.map +1 -0
  111. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  112. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +9 -1
  113. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  114. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +46 -1
  115. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  116. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +172 -4
  117. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  118. package/payload/platform/plugins/scheduling/skills/routine-control/SKILL.md +48 -0
  119. package/payload/platform/plugins/sweep/skills/email-graph-sweep/SKILL.md +21 -7
  120. package/payload/platform/scripts/__tests__/check-canonical-tool-names.test.sh +162 -0
  121. package/payload/platform/scripts/__tests__/check-no-task-id-leaks.test.sh +53 -0
  122. package/payload/platform/scripts/__tests__/mailbox-inject-registered.test.sh +80 -0
  123. package/payload/platform/scripts/__tests__/task-id-citation.test.sh +72 -0
  124. package/payload/platform/scripts/check-canonical-tool-names.mjs +36 -4
  125. package/payload/platform/scripts/check-no-task-id-leaks.mjs +80 -62
  126. package/payload/platform/scripts/lib/__tests__/account-settings-mailbox-inject.test.sh +166 -0
  127. package/payload/platform/scripts/lib/account-settings-mailbox-inject.sh +91 -0
  128. package/payload/platform/scripts/lib/canonical-tool-names.mjs +130 -26
  129. package/payload/platform/scripts/lib/provision-account-dir.sh +1 -0
  130. package/payload/platform/scripts/lib/task-id-citation.mjs +67 -0
  131. package/payload/platform/scripts/setup-account.sh +15 -0
  132. package/payload/server/public/activity.html +5 -5
  133. package/payload/server/public/agents.html +4 -4
  134. package/payload/server/public/assets/{AdminLoginScreens-uknqh2Pm.js → AdminLoginScreens-BgDjueVe.js} +1 -1
  135. package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.br +0 -0
  136. package/payload/server/public/assets/AdminLoginScreens-BgDjueVe.js.gz +0 -0
  137. package/payload/server/public/assets/{AdminShell-GqtMImyQ.js → AdminShell-YctTrR-D.js} +1 -1
  138. package/payload/server/public/assets/AdminShell-YctTrR-D.js.br +0 -0
  139. package/payload/server/public/assets/AdminShell-YctTrR-D.js.gz +0 -0
  140. package/payload/server/public/assets/{activity-B4KfMJqO.js → activity-DGQt5ys_.js} +1 -1
  141. package/payload/server/public/assets/activity-DGQt5ys_.js.br +0 -0
  142. package/payload/server/public/assets/activity-DGQt5ys_.js.gz +0 -0
  143. package/payload/server/public/assets/admin-DnUxbB3P.js +1 -0
  144. package/payload/server/public/assets/admin-DnUxbB3P.js.br +0 -0
  145. package/payload/server/public/assets/admin-DnUxbB3P.js.gz +0 -0
  146. package/payload/server/public/assets/agents-Bc2LZjwC.js +1 -0
  147. package/payload/server/public/assets/agents-Bc2LZjwC.js.br +0 -0
  148. package/payload/server/public/assets/agents-Bc2LZjwC.js.gz +0 -0
  149. package/payload/server/public/assets/{arc-DaI5MLTq.js → arc-DaudCnXg.js} +1 -1
  150. package/payload/server/public/assets/arc-DaudCnXg.js.br +0 -0
  151. package/payload/server/public/assets/arc-DaudCnXg.js.gz +0 -0
  152. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js +1 -0
  153. package/payload/server/public/assets/architecture-YZFGNWBL-DPFsm5jD.js.br +0 -0
  154. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CBGVUEN9.js → architectureDiagram-Q4EWVU46-BEEC3s7i.js} +1 -1
  155. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.br +0 -0
  156. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-BEEC3s7i.js.gz +0 -0
  157. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DS6dS4GZ.js → blockDiagram-DXYQGD6D-BIWyfb18.js} +1 -1
  158. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.br +0 -0
  159. package/payload/server/public/assets/blockDiagram-DXYQGD6D-BIWyfb18.js.gz +0 -0
  160. package/payload/server/public/assets/{browser-B3hSzI3O.js → browser-BtF7SzvG.js} +1 -1
  161. package/payload/server/public/assets/browser-BtF7SzvG.js.br +0 -0
  162. package/payload/server/public/assets/browser-BtF7SzvG.js.gz +0 -0
  163. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js → c4Diagram-AHTNJAMY--h6oE2cv.js} +1 -1
  164. package/payload/server/public/assets/c4Diagram-AHTNJAMY--h6oE2cv.js.br +0 -0
  165. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-hBSBUZPt.js.gz → c4Diagram-AHTNJAMY--h6oE2cv.js.gz} +0 -0
  166. package/payload/server/public/assets/{calendar-BggxXxhS.js → calendar-D25EhXbD.js} +1 -1
  167. package/payload/server/public/assets/calendar-D25EhXbD.js.br +0 -0
  168. package/payload/server/public/assets/calendar-D25EhXbD.js.gz +0 -0
  169. package/payload/server/public/assets/channel-TwxCDSpK.js +1 -0
  170. package/payload/server/public/assets/channel-TwxCDSpK.js.br +0 -0
  171. package/payload/server/public/assets/chat-z4jsHFXg.js +1 -0
  172. package/payload/server/public/assets/chat-z4jsHFXg.js.br +0 -0
  173. package/payload/server/public/assets/chat-z4jsHFXg.js.gz +0 -0
  174. package/payload/server/public/assets/chevron-left-BD09SN6R.js +1 -0
  175. package/payload/server/public/assets/chevron-right-ChmWeo7T.js +1 -0
  176. package/payload/server/public/assets/chevron-right-ChmWeo7T.js.br +0 -0
  177. package/payload/server/public/assets/{chunk-2KRD3SAO-B6koUoB7.js → chunk-2KRD3SAO-BwEVlnxo.js} +1 -1
  178. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.br +0 -0
  179. package/payload/server/public/assets/chunk-2KRD3SAO-BwEVlnxo.js.gz +0 -0
  180. package/payload/server/public/assets/{chunk-336JU56O-BF6BRh8u.js → chunk-336JU56O-DQddTATH.js} +2 -2
  181. package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.br +0 -0
  182. package/payload/server/public/assets/chunk-336JU56O-DQddTATH.js.gz +0 -0
  183. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js +1 -0
  184. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.br +0 -0
  185. package/payload/server/public/assets/chunk-426QAEUC-BDC8wptW.js.gz +0 -0
  186. package/payload/server/public/assets/{chunk-4BX2VUAB-7sO95xR2.js → chunk-4BX2VUAB-C5p3xTC6.js} +1 -1
  187. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.br +0 -0
  188. package/payload/server/public/assets/chunk-4BX2VUAB-C5p3xTC6.js.gz +0 -0
  189. package/payload/server/public/assets/{chunk-4TB4RGXK-GCTndJYx.js → chunk-4TB4RGXK-gClfNc1w.js} +1 -1
  190. package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.br +0 -0
  191. package/payload/server/public/assets/chunk-4TB4RGXK-gClfNc1w.js.gz +0 -0
  192. package/payload/server/public/assets/{chunk-55IACEB6-ggIJf_TC.js → chunk-55IACEB6-DDU_m1ra.js} +1 -1
  193. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.br +0 -0
  194. package/payload/server/public/assets/chunk-55IACEB6-DDU_m1ra.js.gz +0 -0
  195. package/payload/server/public/assets/{chunk-5FUZZQ4R-DeGmkimt.js → chunk-5FUZZQ4R-CZ2jQWNR.js} +1 -1
  196. package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.br +0 -0
  197. package/payload/server/public/assets/chunk-5FUZZQ4R-CZ2jQWNR.js.gz +0 -0
  198. package/payload/server/public/assets/{chunk-5PVQY5BW-aFIQKk_U.js → chunk-5PVQY5BW-kcZ5kfTg.js} +1 -1
  199. package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.br +0 -0
  200. package/payload/server/public/assets/chunk-5PVQY5BW-kcZ5kfTg.js.gz +0 -0
  201. package/payload/server/public/assets/{chunk-67CJDMHE-LS8rUbii.js → chunk-67CJDMHE-9W0Qv0jm.js} +1 -1
  202. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.br +0 -0
  203. package/payload/server/public/assets/chunk-67CJDMHE-9W0Qv0jm.js.gz +0 -0
  204. package/payload/server/public/assets/{chunk-7N4EOEYR-JKOVngS0.js → chunk-7N4EOEYR-B3gqydR3.js} +1 -1
  205. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.br +0 -0
  206. package/payload/server/public/assets/chunk-7N4EOEYR-B3gqydR3.js.gz +0 -0
  207. package/payload/server/public/assets/{chunk-AA7GKIK3-CoXnTVK6.js → chunk-AA7GKIK3-DW8a-2NK.js} +1 -1
  208. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.br +4 -0
  209. package/payload/server/public/assets/chunk-AA7GKIK3-DW8a-2NK.js.gz +0 -0
  210. package/payload/server/public/assets/{chunk-BSJP7CBP-CcsqObFg.js → chunk-BSJP7CBP-DqXIO_5R.js} +1 -1
  211. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.br +0 -0
  212. package/payload/server/public/assets/chunk-BSJP7CBP-DqXIO_5R.js.gz +0 -0
  213. package/payload/server/public/assets/{chunk-CIAEETIT-CpsybR7q.js → chunk-CIAEETIT-BMJfgj2u.js} +1 -1
  214. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.br +0 -0
  215. package/payload/server/public/assets/chunk-CIAEETIT-BMJfgj2u.js.gz +0 -0
  216. package/payload/server/public/assets/{chunk-EDXVE4YY-BZ2I9PSq.js → chunk-EDXVE4YY-BxdLPk0b.js} +1 -1
  217. package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.br +0 -0
  218. package/payload/server/public/assets/chunk-EDXVE4YY-BxdLPk0b.js.gz +0 -0
  219. package/payload/server/public/assets/{chunk-ENJZ2VHE-DbTwt6OZ.js → chunk-ENJZ2VHE-Cfe2DCjQ.js} +1 -1
  220. package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.br +0 -0
  221. package/payload/server/public/assets/chunk-ENJZ2VHE-Cfe2DCjQ.js.gz +0 -0
  222. package/payload/server/public/assets/{chunk-FMBD7UC4-D27VnSCa.js → chunk-FMBD7UC4-CdPjwbtf.js} +1 -1
  223. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.br +0 -0
  224. package/payload/server/public/assets/chunk-FMBD7UC4-CdPjwbtf.js.gz +0 -0
  225. package/payload/server/public/assets/{chunk-FOC6F5B3-C0tU2UFl.js → chunk-FOC6F5B3-Dl6l1KAh.js} +1 -1
  226. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.br +0 -0
  227. package/payload/server/public/assets/chunk-FOC6F5B3-Dl6l1KAh.js.gz +0 -0
  228. package/payload/server/public/assets/{chunk-ICPOFSXX-UPPu2OIq.js → chunk-ICPOFSXX-PnsGrqtx.js} +2 -2
  229. package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.br +0 -0
  230. package/payload/server/public/assets/chunk-ICPOFSXX-PnsGrqtx.js.gz +0 -0
  231. package/payload/server/public/assets/{chunk-K5T4RW27-DIKxqyYw.js → chunk-K5T4RW27--g29_wjW.js} +1 -1
  232. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.br +0 -0
  233. package/payload/server/public/assets/chunk-K5T4RW27--g29_wjW.js.gz +0 -0
  234. package/payload/server/public/assets/{chunk-KGLVRYIC-CiL4YVLo.js → chunk-KGLVRYIC-CI77ENeO.js} +1 -1
  235. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.br +3 -0
  236. package/payload/server/public/assets/chunk-KGLVRYIC-CI77ENeO.js.gz +0 -0
  237. package/payload/server/public/assets/{chunk-LIHQZDEY-ejKezVlD.js → chunk-LIHQZDEY-CE-XByg6.js} +1 -1
  238. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.br +0 -0
  239. package/payload/server/public/assets/chunk-LIHQZDEY-CE-XByg6.js.gz +0 -0
  240. package/payload/server/public/assets/{chunk-ORNJ4GCN-Cc0vqc-D.js → chunk-ORNJ4GCN-DkjJQQSm.js} +1 -1
  241. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.br +0 -0
  242. package/payload/server/public/assets/chunk-ORNJ4GCN-DkjJQQSm.js.gz +0 -0
  243. package/payload/server/public/assets/{chunk-OYMX7WX6-Drxn1qG0.js → chunk-OYMX7WX6-DhogFeD7.js} +1 -1
  244. package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.br +0 -0
  245. package/payload/server/public/assets/chunk-OYMX7WX6-DhogFeD7.js.gz +0 -0
  246. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js +1 -0
  247. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.br +0 -0
  248. package/payload/server/public/assets/chunk-QZHKN3VN-DnqqL1de.js.gz +0 -0
  249. package/payload/server/public/assets/{chunk-U2HBQHQK-DnbQIkRP.js → chunk-U2HBQHQK-CeaRXuiO.js} +1 -1
  250. package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.br +0 -0
  251. package/payload/server/public/assets/chunk-U2HBQHQK-CeaRXuiO.js.gz +0 -0
  252. package/payload/server/public/assets/{chunk-X2U36JSP-CauTSVWg.js → chunk-X2U36JSP-BqxXeOqf.js} +1 -1
  253. package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.br +0 -0
  254. package/payload/server/public/assets/chunk-X2U36JSP-BqxXeOqf.js.gz +0 -0
  255. package/payload/server/public/assets/{chunk-XPW4576I-DZqqB9Zi.js → chunk-XPW4576I-DtqJwn2x.js} +1 -1
  256. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.br +0 -0
  257. package/payload/server/public/assets/chunk-XPW4576I-DtqJwn2x.js.gz +0 -0
  258. package/payload/server/public/assets/{chunk-YZCP3GAM-BGHo4Li-.js → chunk-YZCP3GAM-COBlEwQw.js} +1 -1
  259. package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.br +0 -0
  260. package/payload/server/public/assets/chunk-YZCP3GAM-COBlEwQw.js.gz +0 -0
  261. package/payload/server/public/assets/{chunk-ZZ45TVLE-DWGJKPd7.js → chunk-ZZ45TVLE-CcL088y6.js} +1 -1
  262. package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.br +0 -0
  263. package/payload/server/public/assets/chunk-ZZ45TVLE-CcL088y6.js.gz +0 -0
  264. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js +1 -0
  265. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.br +0 -0
  266. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Bc3P4dpc.js.gz +0 -0
  267. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js +1 -0
  268. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.br +0 -0
  269. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DgEF_rR_.js.gz +0 -0
  270. package/payload/server/public/assets/clock-Yqf7Ke7I.js +1 -0
  271. package/payload/server/public/assets/clock-Yqf7Ke7I.js.br +0 -0
  272. package/payload/server/public/assets/clock-Yqf7Ke7I.js.gz +0 -0
  273. package/payload/server/public/assets/clone-B3vq32j7.js +1 -0
  274. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-D-95BzXL.js → cose-bilkent-S5V4N54A-kEHVkDNn.js} +1 -1
  275. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.br +0 -0
  276. package/payload/server/public/assets/cose-bilkent-S5V4N54A-kEHVkDNn.js.gz +0 -0
  277. package/payload/server/public/assets/{dagre-BZYNBHvT.js → dagre-D2wUw1zC.js} +1 -1
  278. package/payload/server/public/assets/dagre-D2wUw1zC.js.br +0 -0
  279. package/payload/server/public/assets/dagre-D2wUw1zC.js.gz +0 -0
  280. package/payload/server/public/assets/{dagre-KV5264BT-DyU4HQLQ.js → dagre-KV5264BT-BWfTDwEs.js} +1 -1
  281. package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.br +0 -0
  282. package/payload/server/public/assets/dagre-KV5264BT-BWfTDwEs.js.gz +0 -0
  283. package/payload/server/public/assets/data-RmnKj5nC.js +1 -0
  284. package/payload/server/public/assets/data-RmnKj5nC.js.br +2 -0
  285. package/payload/server/public/assets/data-RmnKj5nC.js.gz +0 -0
  286. package/payload/server/public/assets/{diagram-5BDNPKRD-CCttJ9XA.js → diagram-5BDNPKRD-Tl9dS8w0.js} +1 -1
  287. package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.br +0 -0
  288. package/payload/server/public/assets/diagram-5BDNPKRD-Tl9dS8w0.js.gz +0 -0
  289. package/payload/server/public/assets/{diagram-G4DWMVQ6-DvkpgSLO.js → diagram-G4DWMVQ6-CeSe6TMu.js} +1 -1
  290. package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.br +0 -0
  291. package/payload/server/public/assets/diagram-G4DWMVQ6-CeSe6TMu.js.gz +0 -0
  292. package/payload/server/public/assets/{diagram-MMDJMWI5-DHmW5Y9k.js → diagram-MMDJMWI5-DYBNJCmk.js} +1 -1
  293. package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.br +0 -0
  294. package/payload/server/public/assets/diagram-MMDJMWI5-DYBNJCmk.js.gz +0 -0
  295. package/payload/server/public/assets/{diagram-TYMM5635-C6T4hwzO.js → diagram-TYMM5635-BmpUGltx.js} +1 -1
  296. package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.br +0 -0
  297. package/payload/server/public/assets/diagram-TYMM5635-BmpUGltx.js.gz +0 -0
  298. package/payload/server/public/assets/{erDiagram-SMLLAGMA-5v_o7s3T.js → erDiagram-SMLLAGMA-DuwuNGqx.js} +1 -1
  299. package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.br +0 -0
  300. package/payload/server/public/assets/erDiagram-SMLLAGMA-DuwuNGqx.js.gz +0 -0
  301. package/payload/server/public/assets/file-download-CiGklOfA.js +1 -0
  302. package/payload/server/public/assets/file-download-CiGklOfA.js.br +0 -0
  303. package/payload/server/public/assets/file-download-CiGklOfA.js.gz +0 -0
  304. package/payload/server/public/assets/{file-text-BKs9eyiw.js → file-text-XjJPULAZ.js} +1 -1
  305. package/payload/server/public/assets/file-text-XjJPULAZ.js.br +0 -0
  306. package/payload/server/public/assets/file-text-XjJPULAZ.js.gz +0 -0
  307. package/payload/server/public/assets/{flatten-BtIc9jX7.js → flatten-Bu-b1uTY.js} +1 -1
  308. package/payload/server/public/assets/flatten-Bu-b1uTY.js.br +0 -0
  309. package/payload/server/public/assets/flatten-Bu-b1uTY.js.gz +0 -0
  310. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-3UhCDsjt.js → flowDiagram-DWJPFMVM-Bpp8P6Ba.js} +1 -1
  311. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.br +0 -0
  312. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Bpp8P6Ba.js.gz +0 -0
  313. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-F2zgHIIQ.js → ganttDiagram-T4ZO3ILL-CE6ppjB4.js} +1 -1
  314. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.br +0 -0
  315. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-CE6ppjB4.js.gz +0 -0
  316. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js +1 -0
  317. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B0OUwOUx.js.br +0 -0
  318. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-oQc1N3dT.js → gitGraphDiagram-UUTBAWPF-BdK1GjPr.js} +1 -1
  319. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.br +0 -0
  320. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-BdK1GjPr.js.gz +0 -0
  321. package/payload/server/public/assets/{graph-DTi71NaZ.js → graph-BjHJ0z_6.js} +1 -1
  322. package/payload/server/public/assets/graph-BjHJ0z_6.js.br +0 -0
  323. package/payload/server/public/assets/graph-BjHJ0z_6.js.gz +0 -0
  324. package/payload/server/public/assets/{graph-labels-BT3S6e9H.js → graph-labels-D-0u37KA.js} +1 -1
  325. package/payload/server/public/assets/graph-labels-D-0u37KA.js.br +0 -0
  326. package/payload/server/public/assets/graph-labels-D-0u37KA.js.gz +0 -0
  327. package/payload/server/public/assets/{graphlib-DY4-AT2Q.js → graphlib-CHEXylyU.js} +1 -1
  328. package/payload/server/public/assets/graphlib-CHEXylyU.js.br +0 -0
  329. package/payload/server/public/assets/graphlib-CHEXylyU.js.gz +0 -0
  330. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js +1 -0
  331. package/payload/server/public/assets/info-OMHHGYJF-C_8TwPDe.js.br +0 -0
  332. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js +2 -0
  333. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.br +0 -0
  334. package/payload/server/public/assets/infoDiagram-42DDH7IO-msfwyvbV.js.gz +0 -0
  335. package/payload/server/public/assets/{isEmpty-Bu4fZ8Kf.js → isEmpty-CjH0UASp.js} +1 -1
  336. package/payload/server/public/assets/isEmpty-CjH0UASp.js.br +0 -0
  337. package/payload/server/public/assets/isEmpty-CjH0UASp.js.gz +0 -0
  338. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-wJhSOkuw.js → ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js} +1 -1
  339. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.br +0 -0
  340. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-CgkVZ4-3.js.gz +0 -0
  341. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DgadC6Pz.js → journeyDiagram-VCZTEJTY-ByUPv8q6.js} +1 -1
  342. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.br +0 -0
  343. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-ByUPv8q6.js.gz +0 -0
  344. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Bs4nQqXI.js → kanban-definition-6JOO6SKY-CFinqhpu.js} +1 -1
  345. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.br +0 -0
  346. package/payload/server/public/assets/kanban-definition-6JOO6SKY-CFinqhpu.js.gz +0 -0
  347. package/payload/server/public/assets/{line-Bnmxy1hO.js → line-Y4ns5Ghi.js} +1 -1
  348. package/payload/server/public/assets/line-Y4ns5Ghi.js.br +0 -0
  349. package/payload/server/public/assets/line-Y4ns5Ghi.js.gz +0 -0
  350. package/payload/server/public/assets/{linear-RvwZxFzh.js → linear-l39GooQ5.js} +1 -1
  351. package/payload/server/public/assets/linear-l39GooQ5.js.br +0 -0
  352. package/payload/server/public/assets/linear-l39GooQ5.js.gz +0 -0
  353. package/payload/server/public/assets/{maximize-2-zC94tsxY.js → maximize-2-BJ9S-nfS.js} +1 -1
  354. package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.br +0 -0
  355. package/payload/server/public/assets/maximize-2-BJ9S-nfS.js.gz +0 -0
  356. package/payload/server/public/assets/{mermaid-parser.core-DeNV8RtA.js → mermaid-parser.core-5w0T1dRj.js} +2 -2
  357. package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.br +0 -0
  358. package/payload/server/public/assets/mermaid-parser.core-5w0T1dRj.js.gz +0 -0
  359. package/payload/server/public/assets/{mermaid.core-BU9IiSCP.js → mermaid.core-DBADY5VW.js} +3 -3
  360. package/payload/server/public/assets/mermaid.core-DBADY5VW.js.br +0 -0
  361. package/payload/server/public/assets/mermaid.core-DBADY5VW.js.gz +0 -0
  362. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-D1PMUxxm.js → mindmap-definition-QFDTVHPH-rHz37loq.js} +1 -1
  363. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.br +0 -0
  364. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-rHz37loq.js.gz +0 -0
  365. package/payload/server/public/assets/{operator-BtWNEMh-.js → operator-Cay4rOOK.js} +1 -1
  366. package/payload/server/public/assets/operator-Cay4rOOK.js.br +0 -0
  367. package/payload/server/public/assets/operator-Cay4rOOK.js.gz +0 -0
  368. package/payload/server/public/assets/{ordinal-C2TEWKNu.js → ordinal-D6D6WcTC.js} +1 -1
  369. package/payload/server/public/assets/ordinal-D6D6WcTC.js.br +0 -0
  370. package/payload/server/public/assets/ordinal-D6D6WcTC.js.gz +0 -0
  371. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js +1 -0
  372. package/payload/server/public/assets/packet-4T2RLAQJ-CCQdbIqO.js.br +0 -0
  373. package/payload/server/public/assets/{page-Ccl0FazM.js → page-Cci_j_y7.js} +3 -3
  374. package/payload/server/public/assets/page-Cci_j_y7.js.br +0 -0
  375. package/payload/server/public/assets/page-Cci_j_y7.js.gz +0 -0
  376. package/payload/server/public/assets/page-shuh4ES9.js +1 -0
  377. package/payload/server/public/assets/page-shuh4ES9.js.br +0 -0
  378. package/payload/server/public/assets/page-shuh4ES9.js.gz +0 -0
  379. package/payload/server/public/assets/{pdf-render-C257cidb.js → pdf-render-BSgBp8Fr.js} +1 -1
  380. package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.br +0 -0
  381. package/payload/server/public/assets/pdf-render-BSgBp8Fr.js.gz +0 -0
  382. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js +1 -0
  383. package/payload/server/public/assets/pie-ZZUOXDRM-Bdw3Iqs7.js.br +0 -0
  384. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BzdNzoKA.js → pieDiagram-DEJITSTG-as0e_DSH.js} +1 -1
  385. package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.br +0 -0
  386. package/payload/server/public/assets/pieDiagram-DEJITSTG-as0e_DSH.js.gz +0 -0
  387. package/payload/server/public/assets/{public-BpC6cn9S.js → public-BbJcQGsO.js} +1 -1
  388. package/payload/server/public/assets/public-BbJcQGsO.js.br +0 -0
  389. package/payload/server/public/assets/public-BbJcQGsO.js.gz +0 -0
  390. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-oFr1MJRO.js → quadrantDiagram-34T5L4WZ-B4t8HO9J.js} +1 -1
  391. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.br +0 -0
  392. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-B4t8HO9J.js.gz +0 -0
  393. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js +1 -0
  394. package/payload/server/public/assets/radar-PYXPWWZC-D3FUdA3r.js.br +0 -0
  395. package/payload/server/public/assets/{reduce-BGpN5lgn.js → reduce-BtXXK8Ma.js} +1 -1
  396. package/payload/server/public/assets/reduce-BtXXK8Ma.js.br +0 -0
  397. package/payload/server/public/assets/reduce-BtXXK8Ma.js.gz +0 -0
  398. package/payload/server/public/assets/{requirementDiagram-MS252O5E-C9QBQxDh.js → requirementDiagram-MS252O5E-yxh30zHX.js} +1 -1
  399. package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.br +0 -0
  400. package/payload/server/public/assets/requirementDiagram-MS252O5E-yxh30zHX.js.gz +0 -0
  401. package/payload/server/public/assets/{rotate-ccw-BNcqbHkZ.js → rotate-ccw-jeSVwUAv.js} +1 -1
  402. package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.br +0 -0
  403. package/payload/server/public/assets/rotate-ccw-jeSVwUAv.js.gz +0 -0
  404. package/payload/server/public/assets/routines-D3M1Wh3a.js +1 -0
  405. package/payload/server/public/assets/routines-D3M1Wh3a.js.br +0 -0
  406. package/payload/server/public/assets/routines-D3M1Wh3a.js.gz +0 -0
  407. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-c_y3bvVv.js → sankeyDiagram-XADWPNL6-j-k9Wfty.js} +1 -1
  408. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.br +0 -0
  409. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-j-k9Wfty.js.gz +0 -0
  410. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-YwlCBPHE.js → sequenceDiagram-FGHM5R23-DGLgcLhC.js} +1 -1
  411. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.br +0 -0
  412. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-DGLgcLhC.js.gz +0 -0
  413. package/payload/server/public/assets/{skills-COLAw_jt.js → skills-Bhej2ub1.js} +1 -1
  414. package/payload/server/public/assets/skills-Bhej2ub1.js.br +0 -0
  415. package/payload/server/public/assets/skills-Bhej2ub1.js.gz +0 -0
  416. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BFE3e-FM.js → stateDiagram-FHFEXIEX-C9p1OUMI.js} +1 -1
  417. package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.br +0 -0
  418. package/payload/server/public/assets/stateDiagram-FHFEXIEX-C9p1OUMI.js.gz +0 -0
  419. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js +1 -0
  420. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.br +0 -0
  421. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Bf808Apk.js.gz +0 -0
  422. package/payload/server/public/assets/{tasks-CZDQI4nB.js → tasks-qY-dtOI2.js} +1 -1
  423. package/payload/server/public/assets/tasks-qY-dtOI2.js.br +0 -0
  424. package/payload/server/public/assets/tasks-qY-dtOI2.js.gz +0 -0
  425. package/payload/server/public/assets/{time-entry-format-laTFzawg.js → time-entry-format-r5UY9rjG.js} +1 -1
  426. package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.br +0 -0
  427. package/payload/server/public/assets/time-entry-format-r5UY9rjG.js.gz +0 -0
  428. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-azqhmRwZ.js → timeline-definition-GMOUNBTQ-B1g7pgkH.js} +1 -1
  429. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.br +0 -0
  430. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-B1g7pgkH.js.gz +0 -0
  431. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js +1 -0
  432. package/payload/server/public/assets/treeView-SZITEDCU-DetKw0D0.js.br +0 -0
  433. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js +1 -0
  434. package/payload/server/public/assets/treemap-W4RFUUIX-zQkIANxW.js.br +0 -0
  435. package/payload/server/public/assets/{triangle-alert-DrwqhEog.js → triangle-alert--PCKaewD.js} +1 -1
  436. package/payload/server/public/assets/triangle-alert--PCKaewD.js.br +2 -0
  437. package/payload/server/public/assets/triangle-alert--PCKaewD.js.gz +0 -0
  438. package/payload/server/public/assets/{useCopyFeedback-Cxme5GK6.js → useCopyFeedback-Dg5lNgqH.js} +1 -1
  439. package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.br +0 -0
  440. package/payload/server/public/assets/useCopyFeedback-Dg5lNgqH.js.gz +0 -0
  441. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css +1 -0
  442. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.br +0 -0
  443. package/payload/server/public/assets/useSubAccountSwitcher-BYfe9vj8.css.gz +0 -0
  444. package/payload/server/public/assets/{useVoiceRecorder-DUBpVa2T.js → useVoiceRecorder-BY6ZsGMH.js} +2 -2
  445. package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.br +0 -0
  446. package/payload/server/public/assets/useVoiceRecorder-BY6ZsGMH.js.gz +0 -0
  447. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Da2RfFs8.js → vennDiagram-DHZGUBPP-D2ZjFfh4.js} +1 -1
  448. package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.br +0 -0
  449. package/payload/server/public/assets/vennDiagram-DHZGUBPP-D2ZjFfh4.js.gz +0 -0
  450. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js +1 -0
  451. package/payload/server/public/assets/wardley-RL74JXVD-DkQV3DvB.js.br +0 -0
  452. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-HdrdBYES.js → wardleyDiagram-NUSXRM2D-BFAhfkD8.js} +1 -1
  453. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.br +0 -0
  454. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-BFAhfkD8.js.gz +0 -0
  455. package/payload/server/public/assets/{wrench-DWuxPnzF.js → wrench-Bw1FMolk.js} +1 -1
  456. package/payload/server/public/assets/wrench-Bw1FMolk.js.br +0 -0
  457. package/payload/server/public/assets/wrench-Bw1FMolk.js.gz +0 -0
  458. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DMk6rTcQ.js → xychartDiagram-5P7HB3ND-Dt94h2RQ.js} +1 -1
  459. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.br +0 -0
  460. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-Dt94h2RQ.js.gz +0 -0
  461. package/payload/server/public/brand-defaults.css +1 -0
  462. package/payload/server/public/browser.html +4 -4
  463. package/payload/server/public/calendar.html +7 -7
  464. package/payload/server/public/chat.html +14 -14
  465. package/payload/server/public/data.html +13 -12
  466. package/payload/server/public/graph.html +9 -9
  467. package/payload/server/public/index.html +16 -15
  468. package/payload/server/public/operator.html +15 -15
  469. package/payload/server/public/public.html +14 -14
  470. package/payload/server/public/routines.html +7 -6
  471. package/payload/server/public/skills.html +5 -5
  472. package/payload/server/public/tasks.html +6 -6
  473. package/payload/server/server.js +744 -425
  474. package/payload/platform/.docs/search-surface-contract.md +0 -58
  475. package/payload/platform/docs/superpowers/plans/2026-06-02-task-610-follower-202-retry.md +0 -372
  476. package/payload/platform/docs/superpowers/plans/2026-06-04-public-agent-knowledge-delivery.md +0 -230
  477. package/payload/platform/docs/superpowers/plans/2026-06-23-account-filesystem-schema.md +0 -544
  478. package/payload/platform/docs/superpowers/plans/2026-07-11-task-1557-operator-on-behalf-preference-attribution.md +0 -542
  479. package/payload/platform/docs/superpowers/plans/2026-07-13-account-schema-ontology-projection.md +0 -547
  480. package/payload/platform/docs/superpowers/plans/2026-07-14-graph-top-level-labels-ontology-single-source.md +0 -458
  481. package/payload/platform/docs/superpowers/plans/2026-07-17-task-1736-retire-mcp-stderr-tee.md +0 -397
  482. package/payload/platform/docs/superpowers/plans/2026-07-18-graph-native-ledger.md +0 -807
  483. package/payload/platform/docs/superpowers/plans/2026-07-18-ledger-write-path-fix.md +0 -109
  484. package/payload/platform/docs/superpowers/plans/2026-07-20-storage-pages-create.md +0 -82
  485. package/payload/platform/docs/superpowers/plans/2026-07-20-task-1704-data-portal-standing-audit.md +0 -673
  486. package/payload/platform/docs/superpowers/plans/2026-07-20-task-1789-reseat-channel-row-fork.md +0 -1244
  487. package/payload/platform/docs/superpowers/plans/2026-07-20-task-1818-loop-gate-app-routes.md +0 -462
  488. package/payload/platform/docs/superpowers/plans/2026-07-20-task-1819-top-level-label-allowlist.md +0 -321
  489. package/payload/platform/docs/superpowers/plans/2026-07-20-task-1829-platform-ui-typecheck.md +0 -830
  490. package/payload/platform/docs/superpowers/plans/2026-07-20-task-1831-data-portal-class-derived-allowlist.md +0 -2177
  491. package/payload/platform/docs/superpowers/plans/2026-07-21-graph-caption-resolver.md +0 -124
  492. package/payload/platform/docs/superpowers/plans/2026-07-21-task-1877-bash-schema-enforcement.md +0 -107
  493. package/payload/platform/docs/superpowers/plans/2026-07-21-task-1887-reconcile-allowed-top-level.md +0 -205
  494. package/payload/platform/docs/superpowers/plans/2026-07-22-task-1899-reconcile-report-only.md +0 -748
  495. package/payload/platform/docs/superpowers/plans/2026-07-22-task-1910-two-way-portal-exchange.md +0 -1716
  496. package/payload/platform/docs/superpowers/plans/2026-07-23-task-1930-adherence-enforcement.md +0 -422
  497. package/payload/platform/docs/superpowers/plans/2026-07-24-task-1942-subaccount-switcher-brand-head.md +0 -327
  498. package/payload/platform/docs/superpowers/plans/2026-07-25-task-1974-uploads-intake-inbox.md +0 -235
  499. package/payload/platform/docs/superpowers/plans/2026-07-25-task-1976-intra-folder-hygiene.md +0 -215
  500. package/payload/platform/docs/superpowers/plans/2026-07-26-task-1902-account-owned-entry-declarations.md +0 -555
  501. package/payload/platform/docs/superpowers/plans/2026-07-26-task-1926-portal-push-concurrency-guard.md +0 -482
  502. package/payload/platform/docs/superpowers/plans/2026-07-26-task-2023-sidebar-sessions-async-reads.md +0 -394
  503. package/payload/platform/docs/superpowers/plans/2026-07-27-task-2016-disabled-agent-routing.md +0 -624
  504. package/payload/platform/docs/superpowers/plans/2026-07-27-task-2028-declared-file-write-deny.md +0 -303
  505. package/payload/platform/docs/superpowers/plans/2026-07-27-task-2052-account-machinery-write-fence.md +0 -250
  506. package/payload/platform/docs/superpowers/plans/2026-07-28-task-2097-email-signature-set.md +0 -65
  507. package/payload/platform/docs/superpowers/specs/2026-06-02-task-610-follower-202-retry-design.md +0 -116
  508. package/payload/platform/docs/superpowers/specs/2026-06-23-account-filesystem-schema-design.md +0 -170
  509. package/payload/platform/docs/superpowers/specs/2026-07-11-task-1557-operator-on-behalf-preference-attribution-design.md +0 -90
  510. package/payload/platform/docs/superpowers/specs/2026-07-13-account-schema-ontology-projection-design.md +0 -178
  511. package/payload/platform/docs/superpowers/specs/2026-07-14-graph-top-level-labels-ontology-single-source-design.md +0 -119
  512. package/payload/platform/docs/superpowers/specs/2026-07-17-task-1736-retire-mcp-stderr-tee-design.md +0 -128
  513. package/payload/platform/docs/superpowers/specs/2026-07-18-graph-native-ledger-design.md +0 -241
  514. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1704-data-portal-standing-audit-design.md +0 -177
  515. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1789-reseat-channel-row-fork-design.md +0 -201
  516. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1818-loop-gate-app-routes-design.md +0 -217
  517. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1819-top-level-label-allowlist-design.md +0 -80
  518. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1820-cpu-triage-admin-tools-design.md +0 -97
  519. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1829-platform-ui-typecheck-design.md +0 -163
  520. package/payload/platform/docs/superpowers/specs/2026-07-20-task-1831-data-portal-class-derived-allowlist-design.md +0 -163
  521. package/payload/platform/docs/superpowers/specs/2026-07-22-task-1899-reconcile-report-only-design.md +0 -121
  522. package/payload/platform/docs/superpowers/specs/2026-07-22-task-1910-two-way-portal-exchange-design.md +0 -103
  523. package/payload/platform/docs/superpowers/specs/2026-07-23-task-1930-adherence-enforcement-design.md +0 -81
  524. package/payload/platform/docs/superpowers/specs/2026-07-24-task-1942-subaccount-switcher-brand-head-design.md +0 -35
  525. package/payload/platform/docs/superpowers/specs/2026-07-26-task-1902-account-owned-entry-declarations-design.md +0 -232
  526. package/payload/platform/docs/superpowers/specs/2026-07-26-task-1926-portal-push-concurrency-guard-design.md +0 -200
  527. package/payload/platform/docs/superpowers/specs/2026-07-26-task-2014-ui-suite-nondeterminism-design.md +0 -169
  528. package/payload/platform/docs/superpowers/specs/2026-07-27-task-2016-disabled-agent-routing-design.md +0 -139
  529. package/payload/platform/docs/superpowers/specs/2026-07-27-task-2028-declared-file-write-deny-design.md +0 -127
  530. package/payload/platform/docs/superpowers/specs/2026-07-27-task-2052-account-machinery-write-fence-design.md +0 -150
  531. package/payload/platform/docs/superpowers/specs/2026-07-28-task-2097-email-signature-set-design.md +0 -155
  532. package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.br +0 -0
  533. package/payload/server/public/assets/AdminLoginScreens-uknqh2Pm.js.gz +0 -0
  534. package/payload/server/public/assets/AdminShell-GqtMImyQ.js.br +0 -0
  535. package/payload/server/public/assets/AdminShell-GqtMImyQ.js.gz +0 -0
  536. package/payload/server/public/assets/activity-B4KfMJqO.js.br +0 -0
  537. package/payload/server/public/assets/activity-B4KfMJqO.js.gz +0 -0
  538. package/payload/server/public/assets/admin-DxCZeVw0.js +0 -1
  539. package/payload/server/public/assets/admin-DxCZeVw0.js.br +0 -0
  540. package/payload/server/public/assets/admin-DxCZeVw0.js.gz +0 -0
  541. package/payload/server/public/assets/agents-BtwBuO4G.js +0 -1
  542. package/payload/server/public/assets/agents-BtwBuO4G.js.br +0 -0
  543. package/payload/server/public/assets/agents-BtwBuO4G.js.gz +0 -0
  544. package/payload/server/public/assets/arc-DaI5MLTq.js.br +0 -0
  545. package/payload/server/public/assets/arc-DaI5MLTq.js.gz +0 -0
  546. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js +0 -1
  547. package/payload/server/public/assets/architecture-YZFGNWBL-DWZIX5aV.js.br +0 -0
  548. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.br +0 -0
  549. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-CBGVUEN9.js.gz +0 -0
  550. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.br +0 -0
  551. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DS6dS4GZ.js.gz +0 -0
  552. package/payload/server/public/assets/browser-B3hSzI3O.js.br +0 -0
  553. package/payload/server/public/assets/browser-B3hSzI3O.js.gz +0 -0
  554. package/payload/server/public/assets/c4Diagram-AHTNJAMY-hBSBUZPt.js.br +0 -0
  555. package/payload/server/public/assets/calendar-BggxXxhS.js.br +0 -0
  556. package/payload/server/public/assets/calendar-BggxXxhS.js.gz +0 -0
  557. package/payload/server/public/assets/channel-BEokjAeE.js +0 -1
  558. package/payload/server/public/assets/channel-BEokjAeE.js.br +0 -0
  559. package/payload/server/public/assets/chat-flivHt0t.js +0 -1
  560. package/payload/server/public/assets/chat-flivHt0t.js.br +0 -0
  561. package/payload/server/public/assets/chat-flivHt0t.js.gz +0 -0
  562. package/payload/server/public/assets/chevron-left-nVRThX7f.js +0 -1
  563. package/payload/server/public/assets/chevron-right-CLqfrkRA.js +0 -1
  564. package/payload/server/public/assets/chevron-right-CLqfrkRA.js.br +0 -0
  565. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.br +0 -0
  566. package/payload/server/public/assets/chunk-2KRD3SAO-B6koUoB7.js.gz +0 -0
  567. package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.br +0 -0
  568. package/payload/server/public/assets/chunk-336JU56O-BF6BRh8u.js.gz +0 -0
  569. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js +0 -1
  570. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.br +0 -0
  571. package/payload/server/public/assets/chunk-426QAEUC-pbQ4PWBU.js.gz +0 -0
  572. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.br +0 -0
  573. package/payload/server/public/assets/chunk-4BX2VUAB-7sO95xR2.js.gz +0 -0
  574. package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.br +0 -0
  575. package/payload/server/public/assets/chunk-4TB4RGXK-GCTndJYx.js.gz +0 -0
  576. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.br +0 -0
  577. package/payload/server/public/assets/chunk-55IACEB6-ggIJf_TC.js.gz +0 -0
  578. package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.br +0 -0
  579. package/payload/server/public/assets/chunk-5FUZZQ4R-DeGmkimt.js.gz +0 -0
  580. package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.br +0 -0
  581. package/payload/server/public/assets/chunk-5PVQY5BW-aFIQKk_U.js.gz +0 -0
  582. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.br +0 -2
  583. package/payload/server/public/assets/chunk-67CJDMHE-LS8rUbii.js.gz +0 -0
  584. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.br +0 -2
  585. package/payload/server/public/assets/chunk-7N4EOEYR-JKOVngS0.js.gz +0 -0
  586. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.br +0 -0
  587. package/payload/server/public/assets/chunk-AA7GKIK3-CoXnTVK6.js.gz +0 -0
  588. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.br +0 -0
  589. package/payload/server/public/assets/chunk-BSJP7CBP-CcsqObFg.js.gz +0 -0
  590. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.br +0 -0
  591. package/payload/server/public/assets/chunk-CIAEETIT-CpsybR7q.js.gz +0 -0
  592. package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.br +0 -0
  593. package/payload/server/public/assets/chunk-EDXVE4YY-BZ2I9PSq.js.gz +0 -0
  594. package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.br +0 -0
  595. package/payload/server/public/assets/chunk-ENJZ2VHE-DbTwt6OZ.js.gz +0 -0
  596. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.br +0 -0
  597. package/payload/server/public/assets/chunk-FMBD7UC4-D27VnSCa.js.gz +0 -0
  598. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.br +0 -0
  599. package/payload/server/public/assets/chunk-FOC6F5B3-C0tU2UFl.js.gz +0 -0
  600. package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.br +0 -0
  601. package/payload/server/public/assets/chunk-ICPOFSXX-UPPu2OIq.js.gz +0 -0
  602. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.br +0 -0
  603. package/payload/server/public/assets/chunk-K5T4RW27-DIKxqyYw.js.gz +0 -0
  604. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.br +0 -0
  605. package/payload/server/public/assets/chunk-KGLVRYIC-CiL4YVLo.js.gz +0 -0
  606. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.br +0 -0
  607. package/payload/server/public/assets/chunk-LIHQZDEY-ejKezVlD.js.gz +0 -0
  608. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.br +0 -0
  609. package/payload/server/public/assets/chunk-ORNJ4GCN-Cc0vqc-D.js.gz +0 -0
  610. package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.br +0 -0
  611. package/payload/server/public/assets/chunk-OYMX7WX6-Drxn1qG0.js.gz +0 -0
  612. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js +0 -1
  613. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.br +0 -0
  614. package/payload/server/public/assets/chunk-QZHKN3VN-Dhlh7Pkk.js.gz +0 -0
  615. package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.br +0 -0
  616. package/payload/server/public/assets/chunk-U2HBQHQK-DnbQIkRP.js.gz +0 -0
  617. package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.br +0 -0
  618. package/payload/server/public/assets/chunk-X2U36JSP-CauTSVWg.js.gz +0 -0
  619. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.br +0 -0
  620. package/payload/server/public/assets/chunk-XPW4576I-DZqqB9Zi.js.gz +0 -0
  621. package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.br +0 -0
  622. package/payload/server/public/assets/chunk-YZCP3GAM-BGHo4Li-.js.gz +0 -0
  623. package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.br +0 -0
  624. package/payload/server/public/assets/chunk-ZZ45TVLE-DWGJKPd7.js.gz +0 -0
  625. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js +0 -1
  626. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.br +0 -0
  627. package/payload/server/public/assets/classDiagram-6PBFFD2Q-D2z_ZV1x.js.gz +0 -0
  628. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js +0 -1
  629. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.br +0 -0
  630. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BJwJoNEK.js.gz +0 -0
  631. package/payload/server/public/assets/clock-Dj3SRZKo.js +0 -1
  632. package/payload/server/public/assets/clock-Dj3SRZKo.js.br +0 -0
  633. package/payload/server/public/assets/clock-Dj3SRZKo.js.gz +0 -0
  634. package/payload/server/public/assets/clone-Bn7XXVhr.js +0 -1
  635. package/payload/server/public/assets/clone-Bn7XXVhr.js.br +0 -0
  636. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.br +0 -0
  637. package/payload/server/public/assets/cose-bilkent-S5V4N54A-D-95BzXL.js.gz +0 -0
  638. package/payload/server/public/assets/dagre-BZYNBHvT.js.br +0 -0
  639. package/payload/server/public/assets/dagre-BZYNBHvT.js.gz +0 -0
  640. package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.br +0 -0
  641. package/payload/server/public/assets/dagre-KV5264BT-DyU4HQLQ.js.gz +0 -0
  642. package/payload/server/public/assets/data-Ckjkne54.js +0 -1
  643. package/payload/server/public/assets/data-Ckjkne54.js.br +0 -3
  644. package/payload/server/public/assets/data-Ckjkne54.js.gz +0 -0
  645. package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.br +0 -0
  646. package/payload/server/public/assets/diagram-5BDNPKRD-CCttJ9XA.js.gz +0 -0
  647. package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.br +0 -0
  648. package/payload/server/public/assets/diagram-G4DWMVQ6-DvkpgSLO.js.gz +0 -0
  649. package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.br +0 -0
  650. package/payload/server/public/assets/diagram-MMDJMWI5-DHmW5Y9k.js.gz +0 -0
  651. package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.br +0 -0
  652. package/payload/server/public/assets/diagram-TYMM5635-C6T4hwzO.js.gz +0 -0
  653. package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.br +0 -0
  654. package/payload/server/public/assets/erDiagram-SMLLAGMA-5v_o7s3T.js.gz +0 -0
  655. package/payload/server/public/assets/file-text-BKs9eyiw.js.br +0 -0
  656. package/payload/server/public/assets/file-text-BKs9eyiw.js.gz +0 -0
  657. package/payload/server/public/assets/flatten-BtIc9jX7.js.br +0 -0
  658. package/payload/server/public/assets/flatten-BtIc9jX7.js.gz +0 -0
  659. package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.br +0 -0
  660. package/payload/server/public/assets/flowDiagram-DWJPFMVM-3UhCDsjt.js.gz +0 -0
  661. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.br +0 -0
  662. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-F2zgHIIQ.js.gz +0 -0
  663. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js +0 -1
  664. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C-FvNTHZ.js.br +0 -0
  665. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.br +0 -0
  666. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-oQc1N3dT.js.gz +0 -0
  667. package/payload/server/public/assets/graph-DTi71NaZ.js.br +0 -0
  668. package/payload/server/public/assets/graph-DTi71NaZ.js.gz +0 -0
  669. package/payload/server/public/assets/graph-labels-BT3S6e9H.js.br +0 -0
  670. package/payload/server/public/assets/graph-labels-BT3S6e9H.js.gz +0 -0
  671. package/payload/server/public/assets/graphlib-DY4-AT2Q.js.br +0 -0
  672. package/payload/server/public/assets/graphlib-DY4-AT2Q.js.gz +0 -0
  673. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js +0 -1
  674. package/payload/server/public/assets/info-OMHHGYJF-BjLPgHAC.js.br +0 -0
  675. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js +0 -2
  676. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.br +0 -0
  677. package/payload/server/public/assets/infoDiagram-42DDH7IO-CXNKLTui.js.gz +0 -0
  678. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.br +0 -0
  679. package/payload/server/public/assets/isEmpty-Bu4fZ8Kf.js.gz +0 -0
  680. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.br +0 -0
  681. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-wJhSOkuw.js.gz +0 -0
  682. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.br +0 -0
  683. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-DgadC6Pz.js.gz +0 -0
  684. package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.br +0 -0
  685. package/payload/server/public/assets/kanban-definition-6JOO6SKY-Bs4nQqXI.js.gz +0 -0
  686. package/payload/server/public/assets/line-Bnmxy1hO.js.br +0 -0
  687. package/payload/server/public/assets/line-Bnmxy1hO.js.gz +0 -0
  688. package/payload/server/public/assets/linear-RvwZxFzh.js.br +0 -0
  689. package/payload/server/public/assets/linear-RvwZxFzh.js.gz +0 -0
  690. package/payload/server/public/assets/maximize-2-zC94tsxY.js.br +0 -0
  691. package/payload/server/public/assets/maximize-2-zC94tsxY.js.gz +0 -0
  692. package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.br +0 -0
  693. package/payload/server/public/assets/mermaid-parser.core-DeNV8RtA.js.gz +0 -0
  694. package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.br +0 -0
  695. package/payload/server/public/assets/mermaid.core-BU9IiSCP.js.gz +0 -0
  696. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.br +0 -0
  697. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-D1PMUxxm.js.gz +0 -0
  698. package/payload/server/public/assets/operator-BtWNEMh-.js.br +0 -0
  699. package/payload/server/public/assets/operator-BtWNEMh-.js.gz +0 -0
  700. package/payload/server/public/assets/ordinal-C2TEWKNu.js.br +0 -0
  701. package/payload/server/public/assets/ordinal-C2TEWKNu.js.gz +0 -0
  702. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js +0 -1
  703. package/payload/server/public/assets/packet-4T2RLAQJ-BBAZASfb.js.br +0 -0
  704. package/payload/server/public/assets/page-BFm91p0e.js +0 -1
  705. package/payload/server/public/assets/page-BFm91p0e.js.br +0 -0
  706. package/payload/server/public/assets/page-BFm91p0e.js.gz +0 -0
  707. package/payload/server/public/assets/page-Ccl0FazM.js.br +0 -0
  708. package/payload/server/public/assets/page-Ccl0FazM.js.gz +0 -0
  709. package/payload/server/public/assets/pdf-render-C257cidb.js.br +0 -0
  710. package/payload/server/public/assets/pdf-render-C257cidb.js.gz +0 -0
  711. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js +0 -1
  712. package/payload/server/public/assets/pie-ZZUOXDRM-CCJUnMeG.js.br +0 -0
  713. package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.br +0 -0
  714. package/payload/server/public/assets/pieDiagram-DEJITSTG-BzdNzoKA.js.gz +0 -0
  715. package/payload/server/public/assets/public-BpC6cn9S.js.br +0 -0
  716. package/payload/server/public/assets/public-BpC6cn9S.js.gz +0 -0
  717. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.br +0 -0
  718. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-oFr1MJRO.js.gz +0 -0
  719. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js +0 -1
  720. package/payload/server/public/assets/radar-PYXPWWZC-BsRU8Aep.js.br +0 -0
  721. package/payload/server/public/assets/reduce-BGpN5lgn.js.br +0 -0
  722. package/payload/server/public/assets/reduce-BGpN5lgn.js.gz +0 -0
  723. package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.br +0 -0
  724. package/payload/server/public/assets/requirementDiagram-MS252O5E-C9QBQxDh.js.gz +0 -0
  725. package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.br +0 -0
  726. package/payload/server/public/assets/rotate-ccw-BNcqbHkZ.js.gz +0 -0
  727. package/payload/server/public/assets/routines-D5iia-XG.js +0 -1
  728. package/payload/server/public/assets/routines-D5iia-XG.js.br +0 -0
  729. package/payload/server/public/assets/routines-D5iia-XG.js.gz +0 -0
  730. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.br +0 -0
  731. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-c_y3bvVv.js.gz +0 -0
  732. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.br +0 -0
  733. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-YwlCBPHE.js.gz +0 -0
  734. package/payload/server/public/assets/skills-COLAw_jt.js.br +0 -0
  735. package/payload/server/public/assets/skills-COLAw_jt.js.gz +0 -0
  736. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.br +0 -0
  737. package/payload/server/public/assets/stateDiagram-FHFEXIEX-BFE3e-FM.js.gz +0 -0
  738. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js +0 -1
  739. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.br +0 -4
  740. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CpjB4ykI.js.gz +0 -0
  741. package/payload/server/public/assets/tasks-CZDQI4nB.js.br +0 -0
  742. package/payload/server/public/assets/tasks-CZDQI4nB.js.gz +0 -0
  743. package/payload/server/public/assets/time-entry-format-laTFzawg.js.br +0 -0
  744. package/payload/server/public/assets/time-entry-format-laTFzawg.js.gz +0 -0
  745. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.br +0 -0
  746. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-azqhmRwZ.js.gz +0 -0
  747. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js +0 -1
  748. package/payload/server/public/assets/treeView-SZITEDCU-BDzhKA6v.js.br +0 -0
  749. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js +0 -1
  750. package/payload/server/public/assets/treemap-W4RFUUIX-epHpdeWa.js.br +0 -0
  751. package/payload/server/public/assets/triangle-alert-DrwqhEog.js.br +0 -0
  752. package/payload/server/public/assets/triangle-alert-DrwqhEog.js.gz +0 -0
  753. package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.br +0 -0
  754. package/payload/server/public/assets/useCopyFeedback-Cxme5GK6.js.gz +0 -0
  755. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css +0 -1
  756. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.br +0 -0
  757. package/payload/server/public/assets/useSubAccountSwitcher-B-K8y5a4.css.gz +0 -0
  758. package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.br +0 -0
  759. package/payload/server/public/assets/useVoiceRecorder-DUBpVa2T.js.gz +0 -0
  760. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.br +0 -0
  761. package/payload/server/public/assets/vennDiagram-DHZGUBPP-Da2RfFs8.js.gz +0 -0
  762. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js +0 -1
  763. package/payload/server/public/assets/wardley-RL74JXVD-DNSZCrxV.js.br +0 -0
  764. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.br +0 -0
  765. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-HdrdBYES.js.gz +0 -0
  766. package/payload/server/public/assets/wrench-DWuxPnzF.js.br +0 -0
  767. package/payload/server/public/assets/wrench-DWuxPnzF.js.gz +0 -0
  768. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.br +0 -0
  769. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DMk6rTcQ.js.gz +0 -0
  770. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js → _baseFor-B12He5Rp.js} +0 -0
  771. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.br → _baseFor-B12He5Rp.js.br} +0 -0
  772. /package/payload/server/public/assets/{_baseFor-Be3EKK3K.js.gz → _baseFor-B12He5Rp.js.gz} +0 -0
  773. /package/payload/server/public/assets/{array-X0JlPOfd.js → array-DO1uCttT.js} +0 -0
  774. /package/payload/server/public/assets/{array-X0JlPOfd.js.br → array-DO1uCttT.js.br} +0 -0
  775. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js → cytoscape.esm-DFn2foqy.js} +0 -0
  776. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.br → cytoscape.esm-DFn2foqy.js.br} +0 -0
  777. /package/payload/server/public/assets/{cytoscape.esm-CI2IWMLB.js.gz → cytoscape.esm-DFn2foqy.js.gz} +0 -0
  778. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js → defaultLocale-ieI3yFoA.js} +0 -0
  779. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.br → defaultLocale-ieI3yFoA.js.br} +0 -0
  780. /package/payload/server/public/assets/{defaultLocale-B6RGN4id.js.gz → defaultLocale-ieI3yFoA.js.gz} +0 -0
  781. /package/payload/server/public/assets/{dist-QvbmK1IP.js → dist-DlU7AEeD.js} +0 -0
  782. /package/payload/server/public/assets/{dist-QvbmK1IP.js.br → dist-DlU7AEeD.js.br} +0 -0
  783. /package/payload/server/public/assets/{dist-QvbmK1IP.js.gz → dist-DlU7AEeD.js.gz} +0 -0
  784. /package/payload/server/public/assets/{init-BmUWJJHz.js → init-BCRlEgNP.js} +0 -0
  785. /package/payload/server/public/assets/{init-BmUWJJHz.js.br → init-BCRlEgNP.js.br} +0 -0
  786. /package/payload/server/public/assets/{init-BmUWJJHz.js.gz → init-BCRlEgNP.js.gz} +0 -0
  787. /package/payload/server/public/assets/{katex-BjZuzSQn.js → katex-gkTaZgi6.js} +0 -0
  788. /package/payload/server/public/assets/{katex-BjZuzSQn.js.br → katex-gkTaZgi6.js.br} +0 -0
  789. /package/payload/server/public/assets/{katex-BjZuzSQn.js.gz → katex-gkTaZgi6.js.gz} +0 -0
  790. /package/payload/server/public/assets/{path-CoPyR7c2.js → path-DTmzQFjQ.js} +0 -0
  791. /package/payload/server/public/assets/{path-CoPyR7c2.js.br → path-DTmzQFjQ.js.br} +0 -0
  792. /package/payload/server/public/assets/{path-CoPyR7c2.js.gz → path-DTmzQFjQ.js.gz} +0 -0
  793. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js → preload-helper-eAV8hweq.js} +0 -0
  794. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.br → preload-helper-eAV8hweq.js.br} +0 -0
  795. /package/payload/server/public/assets/{preload-helper-BQrMkyGX.js.gz → preload-helper-eAV8hweq.js.gz} +0 -0
  796. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js → rough.esm-BFJ-MgcB.js} +0 -0
  797. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.br → rough.esm-BFJ-MgcB.js.br} +0 -0
  798. /package/payload/server/public/assets/{rough.esm-jSt7UMyi.js.gz → rough.esm-BFJ-MgcB.js.gz} +0 -0
  799. /package/payload/server/public/assets/{src-C2WwTWSY.js → src-9CNk4JU0.js} +0 -0
  800. /package/payload/server/public/assets/{src-C2WwTWSY.js.br → src-9CNk4JU0.js.br} +0 -0
  801. /package/payload/server/public/assets/{src-C2WwTWSY.js.gz → src-9CNk4JU0.js.gz} +0 -0
  802. /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js → useSubAccountSwitcher-CnpeWIYq.js} +0 -0
  803. /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js.br → useSubAccountSwitcher-CnpeWIYq.js.br} +0 -0
  804. /package/payload/server/public/assets/{useSubAccountSwitcher-C_1E11Dv.js.gz → useSubAccountSwitcher-CnpeWIYq.js.gz} +0 -0
@@ -1,58 +0,0 @@
1
- # Search-surface parity contract
2
-
3
- Three operator/agent surfaces run the same `hybrid()` search engine
4
- (`platform/lib/graph-search`). The contract: **the same query yields the same
5
- node set on every surface** unless a surface declares an explicit, documented
6
- divergence.
7
-
8
- | Surface | Entry point | Labels default | Vector floor |
9
- |---|---|---|---|
10
- | Chat (agent recall) | `memory-search` MCP tool → `memorySearch()` | none set ⇒ all labels | `DEFAULT_VECTOR_THRESHOLD` (0.82) |
11
- | `/graph` admin page | `GET /api/admin/graph-search` | no chips ⇒ all labels; chips narrow | `DEFAULT_VECTOR_THRESHOLD` (0.82), `?threshold` overrides |
12
- | `/data` admin page | `GET /api/admin/graph-search?labels=FileArtifact` | `FileArtifact` only (files) | `DEFAULT_VECTOR_THRESHOLD` (0.82), `?threshold` overrides; show-all sends `?threshold=0` |
13
-
14
- ## The two parity rules (Task 635)
15
-
16
- 1. **All labels by default.** A caller that passes no labels (chat) or an empty
17
- chip set (`/graph`) searches every label — the route forwards `undefined` to
18
- `hybrid()`, the lib's no-label gate, which queries every vector index. The
19
- `*` wildcard is a separate explicit opt-in to the same all-labels path (no
20
- current caller sends it; `/data` sends a real `FileArtifact` label instead).
21
- `/graph` no longer rejects an empty chip set with a 400; chips, when present,
22
- narrow post-filter.
23
-
24
- 2. **One vector floor, defined once.** `DEFAULT_VECTOR_THRESHOLD = 0.82` lives
25
- in `platform/lib/graph-search/src/index.ts` and is the single source of
26
- truth. Each *surface* opts into it as its default; `hybrid()` itself keeps
27
- the `vectorThreshold === undefined ⇒ no floor` contract. Two literals of
28
- 0.82 in two files would be a drift vector — there is one constant, imported
29
- by both the route (`src`) and `memory-search` (`dist`, so the lib must be
30
- rebuilt for the memory plugin to see a change).
31
-
32
- ## Declared divergences (allowed, by explicit caller or post-filter)
33
-
34
- - **`/data` is files-only.** It sends `labels=FileArtifact` — a deliberate
35
- server-side caller filter to file nodes, not a parity break. (It also
36
- triggers the route's `FileArtifact` index-reconcile branch before searching.)
37
- - **`graph-subgraph` pivot mask.** `GET /api/admin/graph-subgraph?q=…` runs
38
- `hybrid()` with `expandHops: 0` and **no** vector floor. Its output is not a
39
- result list — it is intersected with a clicked node's neighbourhood to
40
- narrow a pivot. "Same query, same results" does not apply to an intersection
41
- mask, so it intentionally stays unthresholded.
42
- - **Post-search projections** — the chat public-twin property rewrite and the
43
- `/graph` Message→Conversation parent merge run after the engine returns and
44
- do not change which nodes the engine selected.
45
-
46
- ## Diagnostics
47
-
48
- ```
49
- logs-read.sh --tail server 100 | grep -E '\[graph-search\]'
50
- ```
51
-
52
- - `op=labels-default applied=all` — a no-chip `/graph` request took the
53
- all-labels path. Its absence on a no-labels request is the regression signal.
54
- - `labels=all` (query line) — no chips (all labels); `labels=*` — explicit
55
- wildcard opt-in; `labels=FileArtifact` — `/data` files search;
56
- `labels=Person,…` — narrowed chip search.
57
- - `threshold=0.82` on a default request; `threshold=off` only when an explicit
58
- `?threshold=0` was passed.
@@ -1,372 +0,0 @@
1
- # Follower 202 Cold-Start Retry Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** Make the channel-pty-bridge JSONL follower survive the cold-spawn `202 {pending:true}` window so a fresh public webchat turn detects `end_turn` and the visitor receives the greeting instead of a 120s timeout.
6
-
7
- **Architecture:** Wrap the follower's single `fetch(/log?follow=1)` in a bounded retry loop. `202` triggers a logged retry on a poll interval until a `200` stream arrives or a give-up window elapses; `200` proceeds into the existing read/fan-out loop unchanged; other non-ok statuses keep today's `onError`+`onClose`. Two env vars (give-up window, poll interval) tune the loop, defaulting to cover claude cold-boot. The manager is untouched.
8
-
9
- **Tech Stack:** TypeScript, Node fetch + ReadableStream, vitest. Files in `maxy-code/platform/ui/app/lib/channel-pty-bridge/`.
10
-
11
- ---
12
-
13
- ### Task 1: Extend the test fetch helper to script a follow-response sequence
14
-
15
- The current `installManagerFetch` always answers `/log?follow=1` with a `200` stream. To
16
- test the `202`→`200` path we need to script per-sessionId follow responses: a list of
17
- statuses where `202` returns the pending JSON body and `200` returns the stream.
18
-
19
- **Files:**
20
- - Modify: `maxy-code/platform/ui/app/lib/channel-pty-bridge/__tests__/helpers.ts`
21
-
22
- - [ ] **Step 1: Add a `followStatuses` option and apply it in the follow branch**
23
-
24
- In `ManagerFetchOptions`, add:
25
-
26
- ```ts
27
- /** Per-sessionId status sequence for /:id/log?follow=1. Each 202 returns
28
- * `{pending:true}` and consumes one entry; the first non-202 entry returns
29
- * the stream (200) or an error body. Cycles the last entry. When unset, the
30
- * follow branch returns 200 + stream as before. */
31
- followStatuses?: Record<string, number[]>
32
- ```
33
-
34
- In `installManagerFetch`, before the `fetchMock` definition:
35
-
36
- ```ts
37
- const followStatusSeq = opts.followStatuses ?? {}
38
- const followStatusIdx: Record<string, number> = {}
39
- ```
40
-
41
- Replace the existing follow branch body (the `if (followMatch && method === 'GET')` block)
42
- with:
43
-
44
- ```ts
45
- const followMatch = url.match(/\/([^/?]+)\/log\?follow=1$/)
46
- if (followMatch && method === 'GET') {
47
- const sessionId = followMatch[1]
48
- followCalls.push(sessionId)
49
- const seq = followStatusSeq[sessionId]
50
- if (seq && seq.length > 0) {
51
- const i = Math.min(followStatusIdx[sessionId] ?? 0, seq.length - 1)
52
- followStatusIdx[sessionId] = (followStatusIdx[sessionId] ?? 0) + 1
53
- const status = seq[i]
54
- if (status === 202) {
55
- return new Response(JSON.stringify({ jsonlPath: null, exists: false, sizeBytes: 0, pending: true }), {
56
- status: 202,
57
- headers: { 'content-type': 'application/json' },
58
- })
59
- }
60
- }
61
- const stream = perId[sessionId] ?? defaultFollow ?? makeJsonlStream()
62
- return new Response(stream.body, {
63
- status: 200,
64
- headers: { 'content-type': 'application/x-ndjson' },
65
- })
66
- }
67
- ```
68
-
69
- - [ ] **Step 2: Confirm the existing follower suite still compiles and passes**
70
-
71
- Run: `cd maxy-code/platform && npx vitest run ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts`
72
- Expected: PASS (4 tests) — the helper change is additive; `followStatuses` is unset in
73
- every existing test so the follow branch behaves exactly as before.
74
-
75
- - [ ] **Step 3: Commit**
76
-
77
- ```bash
78
- git add maxy-code/platform/ui/app/lib/channel-pty-bridge/__tests__/helpers.ts
79
- git commit -m "test(610): scriptable follow-response sequence in manager fetch helper"
80
- ```
81
-
82
- ---
83
-
84
- ### Task 2: Failing test — follower retries on 202 then fans out on the 200 stream
85
-
86
- **Files:**
87
- - Modify: `maxy-code/platform/ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts`
88
-
89
- - [ ] **Step 1: Write the failing test**
90
-
91
- Add inside the `describe('follower', …)` block (the `makeEntry` helper and imports already
92
- exist at the top of the file):
93
-
94
- ```ts
95
- it('retries on 202 pending then fans out once the 200 stream is available', async () => {
96
- const stream = makeJsonlStream()
97
- // First follow fetch → 202 pending; second → 200 + stream.
98
- mgr = installManagerFetch({
99
- followStream: stream,
100
- followStatuses: { 'sess-aaaaaaaa': [202, 200] },
101
- })
102
- process.env.CHANNEL_PTY_FOLLOWER_RETRY_MS = '5'
103
- process.env.CHANNEL_PTY_FOLLOWER_PENDING_MAX_MS = '5000'
104
- const entry = makeEntry()
105
- const received: string[] = []
106
- entry.subscribers.add((text) => {
107
- received.push(text)
108
- })
109
- startFollower({ entry, tag: '[test]', onClose: () => {} })
110
- // Wait until the retry loop has issued the second (200) follow fetch.
111
- await waitFor(() => mgr.followCalls.length >= 2)
112
- stream.push(
113
- JSON.stringify({
114
- type: 'assistant',
115
- message: { content: [{ type: 'text', text: 'greeting' }], stop_reason: 'end_turn' },
116
- }),
117
- )
118
- await waitFor(() => received.length > 0)
119
- expect(received).toEqual(['greeting'])
120
- })
121
- ```
122
-
123
- Add to the `afterEach` (or a dedicated cleanup) so the env vars don't leak into other
124
- tests — place these two lines in the existing `afterEach` callback:
125
-
126
- ```ts
127
- delete process.env.CHANNEL_PTY_FOLLOWER_RETRY_MS
128
- delete process.env.CHANNEL_PTY_FOLLOWER_PENDING_MAX_MS
129
- ```
130
-
131
- - [ ] **Step 2: Run test to verify it fails**
132
-
133
- Run: `cd maxy-code/platform && npx vitest run ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts -t "retries on 202"`
134
- Expected: FAIL — today the follower treats `202` as success, consumes the pending JSON
135
- body as a single non-event line, reads `done`, and closes. `mgr.followCalls.length` never
136
- reaches 2 (no retry), so `waitFor` throws "predicate never became true".
137
-
138
- - [ ] **Step 3: Commit the failing test**
139
-
140
- ```bash
141
- git add maxy-code/platform/ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts
142
- git commit -m "test(610): failing test for follower 202 retry then fan-out"
143
- ```
144
-
145
- ---
146
-
147
- ### Task 3: Implement the bounded 202 retry loop in the follower
148
-
149
- **Files:**
150
- - Modify: `maxy-code/platform/ui/app/lib/channel-pty-bridge/follower.ts`
151
-
152
- - [ ] **Step 1: Add the two config readers**
153
-
154
- Below the imports (after the `type JsonlEvent = …` line, before `FollowerOptions`), add:
155
-
156
- ```ts
157
- function followerPendingMaxMs(): number {
158
- return Number(process.env.CHANNEL_PTY_FOLLOWER_PENDING_MAX_MS ?? String(120_000))
159
- }
160
-
161
- function followerRetryMs(): number {
162
- return Number(process.env.CHANNEL_PTY_FOLLOWER_RETRY_MS ?? String(1_000))
163
- }
164
- ```
165
-
166
- - [ ] **Step 2: Replace the single-fetch guard with the retry loop**
167
-
168
- Replace this block (currently `follower.ts:42-51`):
169
-
170
- ```ts
171
- try {
172
- const res = await fetch(managerLogFollowUrl(entry.sessionId), {
173
- signal: abort.signal,
174
- })
175
- if (!res.ok || !res.body) {
176
- opts.onError?.(`follow-status-${res.status}`)
177
- opts.onClose()
178
- return
179
- }
180
- const reader = res.body.getReader()
181
- ```
182
-
183
- with:
184
-
185
- ```ts
186
- try {
187
- const sid = entry.sessionId.slice(0, 8)
188
- const deadline = Date.now() + followerPendingMaxMs()
189
- let res: Response
190
- let attempt = 0
191
- for (;;) {
192
- res = await fetch(managerLogFollowUrl(entry.sessionId), {
193
- signal: abort.signal,
194
- })
195
- console.error(`${tag} follower-connect sessionId=${sid} status=${res.status}`)
196
- // 202 {pending:true}: the PTY is live but claude has not flushed its
197
- // first JSONL line yet (cold-spawn window). Retry on a poll interval
198
- // until a 200 stream is available or the give-up window elapses.
199
- if (res.status === 202) {
200
- attempt += 1
201
- await res.body?.cancel().catch(() => {})
202
- if (abort.signal.aborted) {
203
- opts.onClose()
204
- return
205
- }
206
- if (Date.now() >= deadline) {
207
- console.error(`${tag} follower-give-up sessionId=${sid} reason=pending-timeout attempts=${attempt}`)
208
- opts.onError?.('follow-pending-timeout')
209
- opts.onClose()
210
- return
211
- }
212
- console.error(`${tag} follower-retry sessionId=${sid} attempt=${attempt} reason=pending`)
213
- await new Promise((r) => setTimeout(r, followerRetryMs()))
214
- if (abort.signal.aborted) {
215
- opts.onClose()
216
- return
217
- }
218
- continue
219
- }
220
- break
221
- }
222
- if (!res.ok || !res.body) {
223
- opts.onError?.(`follow-status-${res.status}`)
224
- opts.onClose()
225
- return
226
- }
227
- console.error(`${tag} follower-open sessionId=${sid}`)
228
- const reader = res.body.getReader()
229
- ```
230
-
231
- The rest of the function (the `while (!abort.signal.aborted)` read loop, the `catch`, and
232
- the `finally → opts.onClose()`) is unchanged. `onClose` still fires exactly once on every
233
- exit path: each early `return` inside the loop calls `onClose()` directly and returns
234
- before the read loop; the normal stream-end / abort / error paths fall through to the
235
- existing `finally`.
236
-
237
- - [ ] **Step 3: Run the new test to verify it passes**
238
-
239
- Run: `cd maxy-code/platform && npx vitest run ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts -t "retries on 202"`
240
- Expected: PASS — first fetch returns 202, follower logs `follower-retry`, second fetch
241
- returns the 200 stream, `follower-open` logs, the `end_turn` record fans out `'greeting'`.
242
-
243
- - [ ] **Step 4: Commit**
244
-
245
- ```bash
246
- git add maxy-code/platform/ui/app/lib/channel-pty-bridge/follower.ts
247
- git commit -m "fix(610): follower retries on 202 cold-start, never silently closes"
248
- ```
249
-
250
- ---
251
-
252
- ### Task 4: Give-up test — persistent 202 ends with onError + onClose, no fan-out
253
-
254
- **Files:**
255
- - Modify: `maxy-code/platform/ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts`
256
-
257
- - [ ] **Step 1: Write the test**
258
-
259
- Add inside the `describe` block:
260
-
261
- ```ts
262
- it('gives up after the pending window: onError + onClose, no fan-out', async () => {
263
- const stream = makeJsonlStream()
264
- // Every follow fetch returns 202 — the JSONL never appears.
265
- mgr = installManagerFetch({
266
- followStream: stream,
267
- followStatuses: { 'sess-aaaaaaaa': [202] },
268
- })
269
- process.env.CHANNEL_PTY_FOLLOWER_RETRY_MS = '2'
270
- process.env.CHANNEL_PTY_FOLLOWER_PENDING_MAX_MS = '20'
271
- const entry = makeEntry()
272
- const received: string[] = []
273
- entry.subscribers.add((text) => {
274
- received.push(text)
275
- })
276
- const onError = vi.fn()
277
- const onClose = vi.fn()
278
- startFollower({ entry, tag: '[test]', onError, onClose })
279
- await waitFor(() => onClose.mock.calls.length > 0)
280
- expect(onError).toHaveBeenCalledWith('follow-pending-timeout')
281
- expect(onClose).toHaveBeenCalledTimes(1)
282
- expect(received).toEqual([])
283
- })
284
- ```
285
-
286
- - [ ] **Step 2: Run it**
287
-
288
- Run: `cd maxy-code/platform && npx vitest run ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts -t "gives up"`
289
- Expected: PASS — repeated 202s exceed the 20ms window, follower logs `follower-give-up`,
290
- calls `onError('follow-pending-timeout')` and `onClose()` once, no text delivered.
291
-
292
- - [ ] **Step 3: Commit**
293
-
294
- ```bash
295
- git add maxy-code/platform/ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts
296
- git commit -m "test(610): follower gives up after pending window"
297
- ```
298
-
299
- ---
300
-
301
- ### Task 5: Full suite + typecheck + lint
302
-
303
- **Files:** none (verification only)
304
-
305
- - [ ] **Step 1: Run the whole channel-pty-bridge suite**
306
-
307
- Run: `cd maxy-code/platform && npx vitest run ui/app/lib/channel-pty-bridge/__tests__/`
308
- Expected: PASS — all follower tests (6 now), plus dispatch-once, reaper, subscribe,
309
- write-chain, public-session-exit, live-memory-eviction, spawn-refused.
310
-
311
- - [ ] **Step 2: Typecheck the changed files**
312
-
313
- Run: `cd maxy-code/platform && npx tsc --noEmit -p ui/tsconfig.json 2>&1 | grep -E 'follower|helpers' || echo "no type errors in changed files"`
314
- Expected: `no type errors in changed files`.
315
-
316
- - [ ] **Step 3: Lint the changed files**
317
-
318
- Run: `cd maxy-code/platform && npx eslint ui/app/lib/channel-pty-bridge/follower.ts ui/app/lib/channel-pty-bridge/__tests__/follower.test.ts ui/app/lib/channel-pty-bridge/__tests__/helpers.ts`
319
- Expected: no errors.
320
-
321
- ---
322
-
323
- ### Task 6: Documentation — webchat turn lifecycle + new env vars
324
-
325
- **Files:**
326
- - Modify or create: the webchat turn lifecycle reference under `maxy-code/platform/plugins/docs/references/` and the matching internal note under `maxy-code/.docs/` (locate the existing channel-pty-bridge / webchat doc first with a grep; edit it rather than creating a duplicate).
327
-
328
- - [ ] **Step 1: Locate the existing doc**
329
-
330
- Run: `cd maxy-code && grep -rln "channel-pty-bridge\|dispatchOnce\|log-follow-open\|WEBCHAT_TURN_TIMEOUT" .docs/ platform/plugins/docs/references/ 2>/dev/null`
331
- Edit the file(s) that own the webchat turn lifecycle. If none exists, add a short
332
- "Webchat turn lifecycle" section to the most relevant existing reference.
333
-
334
- - [ ] **Step 2: Document the cold-start retry and env vars**
335
-
336
- Add prose covering: the follower opens `GET /:sessionId/log?follow=1`; a cold spawn
337
- returns `202 {pending:true}` until claude flushes its first JSONL line; the follower
338
- retries every `CHANNEL_PTY_FOLLOWER_RETRY_MS` (default 1000) until a 200 stream arrives or
339
- `CHANNEL_PTY_FOLLOWER_PENDING_MAX_MS` (default 120000) elapses, then gives up with
340
- `follower-give-up`. Note the log signature for diagnosis: `follower-connect` →
341
- `follower-retry`* → `follower-open` → `outbound`, mirroring the manager's `log-follow-open`.
342
-
343
- - [ ] **Step 3: Commit**
344
-
345
- ```bash
346
- git add maxy-code/.docs maxy-code/platform/plugins/docs/references
347
- git commit -m "docs(610): webchat follower cold-start retry + env vars"
348
- ```
349
-
350
- ---
351
-
352
- ## Self-Review
353
-
354
- **Spec coverage:**
355
- - Follower retries on 202 → Task 3. ✓
356
- - Env-tunable bound (give-up window + poll interval) → Task 3 Step 1, defaults 120000 / 1000. ✓
357
- - Repro test (202→200, fan-out) → Task 2. ✓
358
- - Give-up test → Task 4. ✓
359
- - Warm-session regression (existing 4 tests unchanged) → Task 1 Step 2, Task 5 Step 1. ✓
360
- - Observability log points (follower-connect / follower-retry / follower-open / follower-give-up) → Task 3 Step 2. ✓
361
- - Manager untouched → no task modifies http-server.ts. ✓
362
- - Docs → Task 6. ✓
363
- - No behaviour change for other channels → no channel-specific code added; covered by shared-follower note in spec. ✓
364
-
365
- **Placeholder scan:** Task 6 requires a grep-locate because the doc's exact path is not yet
366
- known; the content to write is fully specified, only the target file is discovered at
367
- execution. Acceptable — it is not a content placeholder.
368
-
369
- **Type consistency:** `followerPendingMaxMs()` / `followerRetryMs()` used consistently;
370
- `followStatuses` option name matches between helper definition (Task 1) and test use
371
- (Tasks 2, 4); `follow-pending-timeout` error string matches between Task 3 and Task 4
372
- assertion.
@@ -1,230 +0,0 @@
1
- # Public Agent Knowledge Delivery — Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** Make the public agent's `KNOWLEDGE.md` reach its spawn prompt, refuse a dud (empty/missing SOUL or KNOWLEDGE) public spawn with a distinct logged reason, and stop seeding/reading the dead public `SOUL`/`config` templates and `plugins` config field.
6
-
7
- **Architecture:** The only spawn-prompt path is `composeAppendSystemPrompt` in `claude-session-manager`. It reads `agents/<role>/{IDENTITY,SOUL}.md`; we add a public-only `KNOWLEDGE.md` read rendered as `<knowledge>` after `<soul>`, with strict empty/missing refusal. `pty-spawner` maps the new refusal reasons and emits the per-spawn byte-count line. The installer stops manufacturing a public agent on fresh install but re-syncs the Rubytech IDENTITY into existing agent dirs on upgrade. The UI config reader drops the unused `plugins` field. The admin skill doc is corrected to match.
8
-
9
- **Tech Stack:** TypeScript (Node, vitest), bash (`setup-account.sh`), markdown (SKILL.md).
10
-
11
- ---
12
-
13
- ### Task 1: `system-prompt.ts` — read KNOWLEDGE for public, distinct refusal reasons
14
-
15
- **Files:**
16
- - Modify: `services/claude-session-manager/src/system-prompt.ts`
17
- - Test: `services/claude-session-manager/src/__tests__/system-prompt.test.ts`
18
-
19
- **Behaviours:**
20
- - `AppendBlockResult` ok:true gains `knowledgeBytes: number`.
21
- - `AppendBlockResult` ok:false `reason` union gains `'soul-empty' | 'knowledge-missing' | 'knowledge-empty'`.
22
- - `renderAppendBlock` gains a `knowledgeContent: string | null` param; when non-null, render `<knowledge>\n{content}\n</knowledge>` immediately after `</soul>`, before `<about-owner>`; return `knowledgeBytes`. Null ⇒ no block, no bytes (admin + self-test + drift unchanged).
23
- - `composeAppendSystemPrompt`: IDENTITY failure → `identity-unresolved` (all roles, unchanged). SOUL failure → `identity-unresolved` for admin (unchanged); for `role==='public'` → `soul-empty`. When `role==='public'`, read `<roleDir>/KNOWLEDGE.md` via `readIdentityFile`: detail ending `:empty` → `knowledge-empty`; any other failure (ENOENT/unreadable) → `knowledge-missing`. Pass content to `renderAppendBlock`; admin passes `null`.
24
-
25
- - [ ] **Step 1: Write failing tests** — append to `system-prompt.test.ts`:
26
-
27
- ```ts
28
- describe('composeAppendSystemPrompt — public KNOWLEDGE delivery', () => {
29
- function makePublic(seed: { identity?: string | null; soul?: string | null; knowledge?: string | null }): string {
30
- const dir = mkdtempSync(join(tmpdir(), 'task618-account-'))
31
- const roleDir = join(dir, 'agents', 'public')
32
- mkdirSync(roleDir, { recursive: true })
33
- if (typeof seed.identity === 'string') writeFileSync(join(roleDir, 'IDENTITY.md'), seed.identity)
34
- if (typeof seed.soul === 'string') writeFileSync(join(roleDir, 'SOUL.md'), seed.soul)
35
- if (typeof seed.knowledge === 'string') writeFileSync(join(roleDir, 'KNOWLEDGE.md'), seed.knowledge)
36
- return dir
37
- }
38
-
39
- it('public + non-empty KNOWLEDGE ⇒ <knowledge> verbatim, ordered after <soul>, knowledgeBytes>0', () => {
40
- const knowledge = '# Knowledge\nWe open 9-5. Sale price £450k.\n'
41
- const accountDir = makePublic({ identity: 'I', soul: 'S', knowledge })
42
- try {
43
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'public' })
44
- expect(result.ok).toBe(true)
45
- if (!result.ok) return
46
- expect(result.block).toContain(`<knowledge>\n${knowledge}\n</knowledge>`)
47
- expect(result.block.indexOf('<knowledge>')).toBeGreaterThan(result.block.indexOf('</soul>'))
48
- expect(result.knowledgeBytes).toBe(Buffer.byteLength(knowledge, 'utf8'))
49
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
50
- })
51
-
52
- it('public + missing KNOWLEDGE ⇒ ok:false reason=knowledge-missing', () => {
53
- const accountDir = makePublic({ identity: 'I', soul: 'S' })
54
- try {
55
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'public' })
56
- expect(result.ok).toBe(false)
57
- if (result.ok) return
58
- expect(result.reason).toBe('knowledge-missing')
59
- expect(result.detail).toContain('KNOWLEDGE.md')
60
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
61
- })
62
-
63
- it('public + empty KNOWLEDGE ⇒ ok:false reason=knowledge-empty', () => {
64
- const accountDir = makePublic({ identity: 'I', soul: 'S', knowledge: '' })
65
- try {
66
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'public' })
67
- expect(result.ok).toBe(false)
68
- if (result.ok) return
69
- expect(result.reason).toBe('knowledge-empty')
70
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
71
- })
72
-
73
- it('public + empty SOUL ⇒ ok:false reason=soul-empty', () => {
74
- const accountDir = makePublic({ identity: 'I', soul: '', knowledge: 'K' })
75
- try {
76
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'public' })
77
- expect(result.ok).toBe(false)
78
- if (result.ok) return
79
- expect(result.reason).toBe('soul-empty')
80
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
81
- })
82
-
83
- it('public + empty IDENTITY ⇒ identity-unresolved (unchanged)', () => {
84
- const accountDir = makePublic({ identity: '', soul: 'S', knowledge: 'K' })
85
- try {
86
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'public' })
87
- expect(result.ok).toBe(false)
88
- if (result.ok) return
89
- expect(result.reason).toBe('identity-unresolved')
90
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
91
- })
92
-
93
- it('admin + KNOWLEDGE.md on disk ⇒ no <knowledge> block', () => {
94
- const accountDir = makeAccountDir({ admin: { identity: 'I', soul: 'S' } })
95
- writeFileSync(join(accountDir, 'agents', 'admin', 'KNOWLEDGE.md'), 'admin-knowledge')
96
- try {
97
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'admin' })
98
- expect(result.ok).toBe(true)
99
- if (!result.ok) return
100
- expect(result.block).not.toContain('<knowledge>')
101
- expect(result.block).not.toContain('admin-knowledge')
102
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
103
- })
104
-
105
- it('snapshot: full composed public prompt with a sample KNOWLEDGE.md', () => {
106
- const accountDir = makePublic({
107
- identity: '# Identity\nYou speak for the business.',
108
- soul: '# Soul\nWarm, brief.',
109
- knowledge: '# Knowledge\nOpen 9-5. Contact 01234 567890.',
110
- })
111
- try {
112
- const result = composeAppendSystemPrompt(HOST, { accountDir, role: 'public' })
113
- expect(result.ok).toBe(true)
114
- if (!result.ok) return
115
- expect(result.block).toMatchSnapshot()
116
- } finally { rmSync(accountDir, { recursive: true, force: true }) }
117
- })
118
- })
119
- ```
120
-
121
- - [ ] **Step 2: Run, verify fail** — `npx vitest run src/__tests__/system-prompt.test.ts` → FAIL (knowledge not read).
122
-
123
- - [ ] **Step 3: Implement** in `system-prompt.ts`:
124
- - Add `knowledgeBytes: number` to ok:true; extend ok:false reason union.
125
- - Add `knowledgeContent: string | null` param to `renderAppendBlock`; insert `<knowledge>` block after `</soul>` push, before `<about-owner>`; track + return `knowledgeBytes`.
126
- - Update both internal `renderAppendBlock` callers (`runIdentityDriftAssertion`, `runSystemPromptSelfTest`) to pass `null`.
127
- - In `composeAppendSystemPrompt`: on SOUL failure, `return { ok:false, reason: sources.role === 'public' ? 'soul-empty' : 'identity-unresolved', detail: soul.detail }`. When `role==='public'`, read `KNOWLEDGE.md`; on failure `return { ok:false, reason: knowledge.detail.endsWith(':empty') ? 'knowledge-empty' : 'knowledge-missing', detail: knowledge.detail }`. Pass `role==='public' ? knowledge.content : null` to `renderAppendBlock`; set `knowledgeBytes` accordingly (0 for admin).
128
-
129
- - [ ] **Step 4: Run, verify pass** — `npx vitest run src/__tests__/system-prompt.test.ts` → PASS. Review the new snapshot.
130
-
131
- - [ ] **Step 5: Commit** — `feat(public-agent): read KNOWLEDGE.md into public spawn prompt with strict refusal`
132
-
133
- ---
134
-
135
- ### Task 2: `pty-spawner.ts` — surface refusal reasons + per-spawn compose line
136
-
137
- **Files:**
138
- - Modify: `services/claude-session-manager/src/pty-spawner.ts` (`SpawnFailureReason` ~351; compose handling ~1292-1315)
139
-
140
- **Behaviours:**
141
- - `SpawnFailureReason` gains `'soul-empty' | 'knowledge-missing' | 'knowledge-empty'`.
142
- - In the `!composed.ok` branch, for the three new reasons emit `[pty-spawn] spawn-failed reason=<r> role=public slug=<agentSlug>` and return `{ ok:false, reason:<r>, stderrTail: composed.detail }`. The existing `identity-unresolved` path is unchanged.
143
- - Track `knowledge` in `composedBytes`. On public success emit `[pty-spawn] op=public-prompt-compose role=public slug=<agentSlug> identityBytes=N soulBytes=N knowledgeBytes=N` (in addition to the existing `compose-system-prompt-ok` line, which gains `knowledgeBytes`).
144
-
145
- - [ ] **Step 1: Implement** — extend the union; in the failure branch add a `case` for the three reasons before the identity fallthrough; add `knowledge: composed.knowledgeBytes` to `composedBytes`; append `knowledgeBytes=${composed.knowledgeBytes}` to the `compose-system-prompt-ok` log; after that log, `if (args.role === 'public') deps.logger(\`op=public-prompt-compose role=public slug=${agentSlug} identityBytes=${composed.identityBytes} soulBytes=${composed.soulBytes} knowledgeBytes=${composed.knowledgeBytes}\`)`.
146
-
147
- - [ ] **Step 2: Verify** — `npx vitest run` for csm (no test directly asserts these strings; the build + existing suite must stay green). Confirm tsc has no error on the union/result fields.
148
-
149
- - [ ] **Step 3: Commit** — `feat(public-agent): map knowledge/soul refusal reasons + emit public-prompt-compose line`
150
-
151
- ---
152
-
153
- ### Task 3: Templates — delete dead public SOUL + config
154
-
155
- **Files:**
156
- - Delete: `templates/agents/public/SOUL.md`, `templates/agents/public/config.json`
157
- - Keep: `templates/agents/public/IDENTITY.md`
158
-
159
- - [ ] **Step 1:** `git rm templates/agents/public/SOUL.md templates/agents/public/config.json`
160
- - [ ] **Step 2: Verify no live reader** — `grep -rIn 'agents/public/SOUL\|agents/public/config' --include=*.ts --include=*.sh .` returns only `setup-account.sh` lines removed in Task 4. (`smoke-boot-services.sh` and `verify-doc-impl.sh` copy/grep IDENTITY only.)
161
- - [ ] **Step 3: Commit** with Task 4 (template deletion is meaningless without the seed removal).
162
-
163
- ---
164
-
165
- ### Task 4: `setup-account.sh` — no fresh-install public agent; re-sync IDENTITY for existing
166
-
167
- **Files:**
168
- - Modify: `scripts/setup-account.sh` (mkdir ~38; IDENTITY block ~181-184; SOUL/config seed ~221-224)
169
-
170
- **Behaviours:**
171
- - Drop `"$ACCOUNT_DIR/agents/public"` from the line-38 `mkdir -p`.
172
- - Remove the public IDENTITY overwrite (lines 183-184) and the public SOUL/config seed (lines 221-224).
173
- - Add, in the agent-identities section, a loop: for each `"$ACCOUNT_DIR/agents"/*/` whose basename ≠ `admin` and which already contains `IDENTITY.md`, overwrite `IDENTITY.md` from `"$TEMPLATES_DIR/agents/public/IDENTITY.md"`; echo a re-sync line. Never create dirs; never write SOUL/KNOWLEDGE/config. Admin block untouched.
174
-
175
- - [ ] **Step 1: Implement** the three edits.
176
- - [ ] **Step 2: Verify fresh install** — run `setup-account.sh` against a scratch `ACCOUNT_DIR` with no `agents/public`; assert no `agents/public/` is created and `agents/admin/IDENTITY.md` exists.
177
- - [ ] **Step 3: Verify upgrade** — scratch `ACCOUNT_DIR` pre-seeded with `agents/sales/IDENTITY.md` (stale text) + `agents/sales/SOUL.md`; run; assert `agents/sales/IDENTITY.md` now equals the template and `agents/sales/SOUL.md` is untouched.
178
- - [ ] **Step 4: Commit** (with Task 3) — `refactor(installer): public agents author client-side; re-sync IDENTITY for existing dirs only`
179
-
180
- ---
181
-
182
- ### Task 5: `account.ts` — drop the dead `plugins` config field
183
-
184
- **Files:**
185
- - Modify: `ui/app/lib/claude-agent/account.ts` (`ResolvedAgentConfig` ~277; reader ~304,324; return ~395)
186
- - Test: `ui/app/lib/claude-agent/__tests__/spawn-context.test.ts` (trim `plugins` assertions only)
187
-
188
- **Behaviours:**
189
- - Remove `plugins: string[] | null` from `ResolvedAgentConfig`; remove `let plugins`, the `parsed.plugins` read, and `plugins` from the return object. Leave `knowledgeKeywords` and the budget-breakdown `plugins: 0` token field intact.
190
-
191
- - [ ] **Step 1: Find & update the test** — `grep -n 'plugins' ui/app/lib/claude-agent/__tests__/spawn-context.test.ts`; remove only the assertions reading `config.plugins`; add/confirm a case that a public `config.json` lacking `plugins` resolves and `knowledgeKeywords` is still read.
192
- - [ ] **Step 2: Run, verify fail/observe** — `npx vitest run ui/app/lib/claude-agent/__tests__/spawn-context.test.ts`.
193
- - [ ] **Step 3: Implement** the field removal in `account.ts`.
194
- - [ ] **Step 4: Run, verify pass** — same vitest command → PASS.
195
- - [ ] **Step 5: Commit** — `refactor(public-agent): drop unused plugins field from resolved agent config`
196
-
197
- ---
198
-
199
- ### Task 6: `public-agent-manager/SKILL.md` — correct the doc
200
-
201
- **Files:**
202
- - Modify: `plugins/admin/skills/public-agent-manager/SKILL.md`
203
-
204
- **Behaviours (scope item 6):**
205
- - (a) Table: `KNOWLEDGE.md` Required → Yes; `SOUL.md` purpose → personality + role (basic public info, capture the visitor's contact details for human follow-up — the chat equivalent of the landing-page contact form). Add a line: SOUL.md and KNOWLEDGE.md are authored entirely client-side and must be non-empty before the agent goes active; an empty one is refused at spawn. KNOWLEDGE = the business's public-facing facts at landing-page detail.
206
- - (b) Create step: IDENTITY.md is copied from the Rubytech template verbatim, not drafted/edited.
207
- - (c) Remove the `plugins` key from the `config.json` example; remove "selected plugins" from the table; delete the "Plugin Selection" section; remove the plugin-selection Create step and renumber the Create steps + every cross-reference (`Step 4/5/6/7`, `All other steps (4, 8-12)`). Update the template-create plugin pre-select bullet (plugins gone) and note IDENTITY is the fixed Rubytech template.
208
- - (d) Ensure no reference to a SOUL/config seed template remains.
209
- - Keep: `knowledgeKeywords` field, the create-form field, keyword-subscription and direct-tagging sections, projection steps.
210
-
211
- - [ ] **Step 1: Implement** the edits above.
212
- - [ ] **Step 2: Verify** — `grep -n 'plugins' SKILL.md` shows no `plugins` config key or Plugin Selection section (knowledgeKeywords/tagging prose may remain); Create steps are sequentially numbered with consistent cross-refs.
213
- - [ ] **Step 3: Commit** — `docs(public-agent): KNOWLEDGE required, IDENTITY templated, drop plugins from skill`
214
-
215
- ---
216
-
217
- ### Task 7: Verify — build, bundle, full suites
218
-
219
- - [ ] **Step 1:** `npm run build:claude-session-manager` → no tsc errors.
220
- - [ ] **Step 2:** Full csm suite `cd services/claude-session-manager && npx vitest run` → green (esp. `public-identity-template`, `pty-spawner-channels`).
221
- - [ ] **Step 3:** `npx vitest run ui/app/lib/claude-agent/__tests__/` → green.
222
- - [ ] **Step 4:** Bundle the installer payload (`maxy-code/packages/create-maxy-code` `npm run bundle`) → no runtime errors; confirm `templates/agents/public/` in the payload contains only `IDENTITY.md`.
223
-
224
- ---
225
-
226
- ## Self-Review
227
-
228
- - **Spec coverage:** scope 1→T1, 2→T2, 3→T3, 4→T4, 5→T5, 6→T6; verification + observability→T1/T2/T7. All covered.
229
- - **Out of scope (untouched):** `knowledgeKeywords` machinery, projection routes, the migrated Real Agent agent's KNOWLEDGE authoring, Pi hand-patched files.
230
- - **Type consistency:** `knowledgeBytes` and the three reasons named identically in T1 (composer) and T2 (spawner). `renderAppendBlock` `knowledgeContent` param threaded through all three callers.