@rubytech/create-maxy-code 0.1.469 → 0.1.471

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 (431) hide show
  1. package/dist/index.js +40 -0
  2. package/package.json +1 -1
  3. package/payload/platform/config/brand.json +2 -1
  4. package/payload/platform/docs/superpowers/plans/2026-07-18-graph-native-ledger.md +807 -0
  5. package/payload/platform/docs/superpowers/specs/2026-07-18-graph-native-ledger-design.md +241 -0
  6. package/payload/platform/lib/ledger-core/dist/ageing.d.ts +14 -0
  7. package/payload/platform/lib/ledger-core/dist/ageing.d.ts.map +1 -0
  8. package/payload/platform/lib/ledger-core/dist/ageing.js +38 -0
  9. package/payload/platform/lib/ledger-core/dist/ageing.js.map +1 -0
  10. package/payload/platform/lib/ledger-core/dist/balance.d.ts +25 -0
  11. package/payload/platform/lib/ledger-core/dist/balance.d.ts.map +1 -0
  12. package/payload/platform/lib/ledger-core/dist/balance.js +38 -0
  13. package/payload/platform/lib/ledger-core/dist/balance.js.map +1 -0
  14. package/payload/platform/lib/ledger-core/dist/index.d.ts +5 -0
  15. package/payload/platform/lib/ledger-core/dist/index.d.ts.map +1 -0
  16. package/payload/platform/lib/ledger-core/dist/index.js +5 -0
  17. package/payload/platform/lib/ledger-core/dist/index.js.map +1 -0
  18. package/payload/platform/lib/ledger-core/dist/money.d.ts +12 -0
  19. package/payload/platform/lib/ledger-core/dist/money.d.ts.map +1 -0
  20. package/payload/platform/lib/ledger-core/dist/money.js +16 -0
  21. package/payload/platform/lib/ledger-core/dist/money.js.map +1 -0
  22. package/payload/platform/lib/ledger-core/dist/reconcile.d.ts +51 -0
  23. package/payload/platform/lib/ledger-core/dist/reconcile.d.ts.map +1 -0
  24. package/payload/platform/lib/ledger-core/dist/reconcile.js +77 -0
  25. package/payload/platform/lib/ledger-core/dist/reconcile.js.map +1 -0
  26. package/payload/platform/lib/ledger-core/package.json +16 -0
  27. package/payload/platform/lib/ledger-core/src/__tests__/ageing.test.ts +42 -0
  28. package/payload/platform/lib/ledger-core/src/__tests__/balance.test.ts +48 -0
  29. package/payload/platform/lib/ledger-core/src/__tests__/reconcile.test.ts +87 -0
  30. package/payload/platform/lib/ledger-core/src/ageing.ts +51 -0
  31. package/payload/platform/lib/ledger-core/src/balance.ts +52 -0
  32. package/payload/platform/lib/ledger-core/src/index.ts +4 -0
  33. package/payload/platform/lib/ledger-core/src/money.ts +17 -0
  34. package/payload/platform/lib/ledger-core/src/reconcile.ts +109 -0
  35. package/payload/platform/lib/ledger-core/tsconfig.json +6 -0
  36. package/payload/platform/neo4j/schema.cypher +16 -0
  37. package/payload/platform/package.json +2 -2
  38. package/payload/platform/plugins/.claude-plugin/marketplace.json +10 -0
  39. package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +2 -0
  40. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +171 -2
  41. package/payload/platform/plugins/cloudflare/bin/__tests__/portal-brand-css.test.sh +139 -0
  42. package/payload/platform/plugins/cloudflare/bin/portal-brand-css.mjs +128 -0
  43. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +1 -1
  44. package/payload/platform/plugins/cloudflare/mcp/__tests__/skill-contract.test.ts +25 -0
  45. package/payload/platform/plugins/cloudflare/mcp/__tests__/template-config.test.ts +55 -3
  46. package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +38 -3
  47. package/payload/platform/plugins/cloudflare/skills/data-portal/template/{public/portal.css → portal.css} +13 -2
  48. package/payload/platform/plugins/cloudflare/skills/data-portal/template/wrangler.toml +1 -1
  49. package/payload/platform/plugins/docs/references/admin-ui.md +48 -0
  50. package/payload/platform/plugins/docs/references/google-guide.md +68 -0
  51. package/payload/platform/plugins/docs/references/internals.md +1 -1
  52. package/payload/platform/plugins/docs/references/ledger.md +43 -0
  53. package/payload/platform/plugins/email/PLUGIN.md +4 -0
  54. package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.d.ts +2 -0
  55. package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.d.ts.map +1 -0
  56. package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.js +196 -0
  57. package/payload/platform/plugins/email/mcp/dist/__tests__/display-truncation.test.js.map +1 -0
  58. package/payload/platform/plugins/email/mcp/dist/__tests__/source-fetch-efficiency.test.js +10 -8
  59. package/payload/platform/plugins/email/mcp/dist/__tests__/source-fetch-efficiency.test.js.map +1 -1
  60. package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.d.ts +2 -0
  61. package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.d.ts.map +1 -0
  62. package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.js +110 -0
  63. package/payload/platform/plugins/email/mcp/dist/__tests__/truncation-tool-output.test.js.map +1 -0
  64. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +22 -0
  65. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  66. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +90 -36
  67. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  68. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -1
  69. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +6 -2
  70. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -1
  71. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -1
  72. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +6 -2
  73. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -1
  74. package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +4 -0
  75. package/payload/platform/plugins/google/.claude-plugin/plugin.json +21 -0
  76. package/payload/platform/plugins/google/PLUGIN.md +104 -0
  77. package/payload/platform/plugins/google/lib/mcp-spawn-tee/index.js +193 -0
  78. package/payload/platform/plugins/google/lib/mcp-spawn-tee/package.json +3 -0
  79. package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.d.ts +2 -0
  80. package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.d.ts.map +1 -0
  81. package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.js +60 -0
  82. package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.js.map +1 -0
  83. package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.d.ts +2 -0
  84. package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.d.ts.map +1 -0
  85. package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.js +48 -0
  86. package/payload/platform/plugins/google/mcp/dist/__tests__/calendar-tools.test.js.map +1 -0
  87. package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.d.ts +2 -0
  88. package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.d.ts.map +1 -0
  89. package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.js +25 -0
  90. package/payload/platform/plugins/google/mcp/dist/__tests__/google-client.test.js.map +1 -0
  91. package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.d.ts +2 -0
  92. package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.d.ts.map +1 -0
  93. package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.js +40 -0
  94. package/payload/platform/plugins/google/mcp/dist/__tests__/index-registration.test.js.map +1 -0
  95. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.d.ts +2 -0
  96. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.d.ts.map +1 -0
  97. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.js +35 -0
  98. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-store.test.js.map +1 -0
  99. package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.d.ts +2 -0
  100. package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.d.ts.map +1 -0
  101. package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.js +85 -0
  102. package/payload/platform/plugins/google/mcp/dist/__tests__/token-store.test.js.map +1 -0
  103. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.d.ts +25 -0
  104. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.d.ts.map +1 -0
  105. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.js +87 -0
  106. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.js.map +1 -0
  107. package/payload/platform/plugins/google/mcp/dist/auth/token-store.d.ts +46 -0
  108. package/payload/platform/plugins/google/mcp/dist/auth/token-store.d.ts.map +1 -0
  109. package/payload/platform/plugins/google/mcp/dist/auth/token-store.js +138 -0
  110. package/payload/platform/plugins/google/mcp/dist/auth/token-store.js.map +1 -0
  111. package/payload/platform/plugins/google/mcp/dist/index.d.ts +25 -0
  112. package/payload/platform/plugins/google/mcp/dist/index.d.ts.map +1 -0
  113. package/payload/platform/plugins/google/mcp/dist/index.js +300 -0
  114. package/payload/platform/plugins/google/mcp/dist/index.js.map +1 -0
  115. package/payload/platform/plugins/google/mcp/dist/lib/google-client.d.ts +28 -0
  116. package/payload/platform/plugins/google/mcp/dist/lib/google-client.d.ts.map +1 -0
  117. package/payload/platform/plugins/google/mcp/dist/lib/google-client.js +102 -0
  118. package/payload/platform/plugins/google/mcp/dist/lib/google-client.js.map +1 -0
  119. package/payload/platform/plugins/google/mcp/dist/lib/log.d.ts +3 -0
  120. package/payload/platform/plugins/google/mcp/dist/lib/log.d.ts.map +1 -0
  121. package/payload/platform/plugins/google/mcp/dist/lib/log.js +16 -0
  122. package/payload/platform/plugins/google/mcp/dist/lib/log.js.map +1 -0
  123. package/payload/platform/plugins/google/mcp/dist/tools/account-info.d.ts +12 -0
  124. package/payload/platform/plugins/google/mcp/dist/tools/account-info.d.ts.map +1 -0
  125. package/payload/platform/plugins/google/mcp/dist/tools/account-info.js +23 -0
  126. package/payload/platform/plugins/google/mcp/dist/tools/account-info.js.map +1 -0
  127. package/payload/platform/plugins/google/mcp/dist/tools/account-list.d.ts +12 -0
  128. package/payload/platform/plugins/google/mcp/dist/tools/account-list.d.ts.map +1 -0
  129. package/payload/platform/plugins/google/mcp/dist/tools/account-list.js +9 -0
  130. package/payload/platform/plugins/google/mcp/dist/tools/account-list.js.map +1 -0
  131. package/payload/platform/plugins/google/mcp/dist/tools/account-register.d.ts +42 -0
  132. package/payload/platform/plugins/google/mcp/dist/tools/account-register.d.ts.map +1 -0
  133. package/payload/platform/plugins/google/mcp/dist/tools/account-register.js +102 -0
  134. package/payload/platform/plugins/google/mcp/dist/tools/account-register.js.map +1 -0
  135. package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.d.ts +10 -0
  136. package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.d.ts.map +1 -0
  137. package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.js +9 -0
  138. package/payload/platform/plugins/google/mcp/dist/tools/calendar-cancel.js.map +1 -0
  139. package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.d.ts +20 -0
  140. package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.d.ts.map +1 -0
  141. package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.js +25 -0
  142. package/payload/platform/plugins/google/mcp/dist/tools/calendar-create.js.map +1 -0
  143. package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.d.ts +6 -0
  144. package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.d.ts.map +1 -0
  145. package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.js +7 -0
  146. package/payload/platform/plugins/google/mcp/dist/tools/calendar-event.js.map +1 -0
  147. package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.d.ts +14 -0
  148. package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.d.ts.map +1 -0
  149. package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.js +16 -0
  150. package/payload/platform/plugins/google/mcp/dist/tools/calendar-freebusy.js.map +1 -0
  151. package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.d.ts +44 -0
  152. package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.d.ts.map +1 -0
  153. package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.js +36 -0
  154. package/payload/platform/plugins/google/mcp/dist/tools/calendar-list.js.map +1 -0
  155. package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.d.ts +16 -0
  156. package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.d.ts.map +1 -0
  157. package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.js +29 -0
  158. package/payload/platform/plugins/google/mcp/dist/tools/calendar-respond.js.map +1 -0
  159. package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.d.ts +16 -0
  160. package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.d.ts.map +1 -0
  161. package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.js +32 -0
  162. package/payload/platform/plugins/google/mcp/dist/tools/calendar-update.js.map +1 -0
  163. package/payload/platform/plugins/google/mcp/package.json +20 -0
  164. package/payload/platform/plugins/google/references/auth.md +35 -0
  165. package/payload/platform/plugins/ledger/.claude-plugin/plugin.json +21 -0
  166. package/payload/platform/plugins/ledger/PLUGIN.md +82 -0
  167. package/payload/platform/plugins/ledger/lib/mcp-spawn-tee/index.js +193 -0
  168. package/payload/platform/plugins/ledger/lib/mcp-spawn-tee/package.json +3 -0
  169. package/payload/platform/plugins/ledger/mcp/dist/index.d.ts +2 -0
  170. package/payload/platform/plugins/ledger/mcp/dist/index.d.ts.map +1 -0
  171. package/payload/platform/plugins/ledger/mcp/dist/index.js +168 -0
  172. package/payload/platform/plugins/ledger/mcp/dist/index.js.map +1 -0
  173. package/payload/platform/plugins/ledger/mcp/dist/lib/ids.d.ts +4 -0
  174. package/payload/platform/plugins/ledger/mcp/dist/lib/ids.d.ts.map +1 -0
  175. package/payload/platform/plugins/ledger/mcp/dist/lib/ids.js +0 -0
  176. package/payload/platform/plugins/ledger/mcp/dist/lib/ids.js.map +1 -0
  177. package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.d.ts +5 -0
  178. package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.d.ts.map +1 -0
  179. package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.js +40 -0
  180. package/payload/platform/plugins/ledger/mcp/dist/lib/neo4j.js.map +1 -0
  181. package/payload/platform/plugins/ledger/mcp/dist/lib/read.d.ts +29 -0
  182. package/payload/platform/plugins/ledger/mcp/dist/lib/read.d.ts.map +1 -0
  183. package/payload/platform/plugins/ledger/mcp/dist/lib/read.js +138 -0
  184. package/payload/platform/plugins/ledger/mcp/dist/lib/read.js.map +1 -0
  185. package/payload/platform/plugins/ledger/mcp/dist/lib/types.d.ts +47 -0
  186. package/payload/platform/plugins/ledger/mcp/dist/lib/types.d.ts.map +1 -0
  187. package/payload/platform/plugins/ledger/mcp/dist/lib/types.js +14 -0
  188. package/payload/platform/plugins/ledger/mcp/dist/lib/types.js.map +1 -0
  189. package/payload/platform/plugins/ledger/mcp/dist/tools/balance.d.ts +18 -0
  190. package/payload/platform/plugins/ledger/mcp/dist/tools/balance.d.ts.map +1 -0
  191. package/payload/platform/plugins/ledger/mcp/dist/tools/balance.js +23 -0
  192. package/payload/platform/plugins/ledger/mcp/dist/tools/balance.js.map +1 -0
  193. package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.d.ts +26 -0
  194. package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.d.ts.map +1 -0
  195. package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.js +33 -0
  196. package/payload/platform/plugins/ledger/mcp/dist/tools/cash-record.js.map +1 -0
  197. package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.d.ts +27 -0
  198. package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.d.ts.map +1 -0
  199. package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.js +40 -0
  200. package/payload/platform/plugins/ledger/mcp/dist/tools/invoice-record.js.map +1 -0
  201. package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.d.ts +46 -0
  202. package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.d.ts.map +1 -0
  203. package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.js +68 -0
  204. package/payload/platform/plugins/ledger/mcp/dist/tools/payment-record.js.map +1 -0
  205. package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.d.ts +20 -0
  206. package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.d.ts.map +1 -0
  207. package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.js +30 -0
  208. package/payload/platform/plugins/ledger/mcp/dist/tools/reconcile.js.map +1 -0
  209. package/payload/platform/plugins/ledger/mcp/dist/tools/statement.d.ts +26 -0
  210. package/payload/platform/plugins/ledger/mcp/dist/tools/statement.d.ts.map +1 -0
  211. package/payload/platform/plugins/ledger/mcp/dist/tools/statement.js +35 -0
  212. package/payload/platform/plugins/ledger/mcp/dist/tools/statement.js.map +1 -0
  213. package/payload/platform/plugins/ledger/mcp/package.json +21 -0
  214. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.d.ts +2 -0
  215. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.d.ts.map +1 -0
  216. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.js +81 -0
  217. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/ledger-vertical-coverage.test.js.map +1 -0
  218. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +9 -7
  219. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts.map +1 -1
  220. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +10 -8
  221. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -1
  222. package/payload/platform/plugins/memory/references/schema-base.md +22 -0
  223. package/payload/platform/plugins/memory/references/schema-construction.md +0 -18
  224. package/payload/platform/plugins/scheduling/PLUGIN.md +20 -0
  225. package/payload/platform/plugins/scheduling/mcp/dist/lib/meeting-write.d.ts.map +1 -1
  226. package/payload/platform/plugins/scheduling/mcp/dist/lib/meeting-write.js +11 -2
  227. package/payload/platform/plugins/scheduling/mcp/dist/lib/meeting-write.js.map +1 -1
  228. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +1 -1
  229. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  230. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +3 -3
  231. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
  232. package/payload/platform/services/claude-session-manager/dist/activity-rows.d.ts +138 -0
  233. package/payload/platform/services/claude-session-manager/dist/activity-rows.d.ts.map +1 -0
  234. package/payload/platform/services/claude-session-manager/dist/activity-rows.js +268 -0
  235. package/payload/platform/services/claude-session-manager/dist/activity-rows.js.map +1 -0
  236. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  237. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +20 -0
  238. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  239. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +6 -0
  240. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  241. package/payload/platform/services/claude-session-manager/dist/http-server.js +42 -0
  242. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  243. package/payload/platform/services/claude-session-manager/dist/index.js +10 -1
  244. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  245. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts +80 -6
  246. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts.map +1 -1
  247. package/payload/platform/services/claude-session-manager/dist/pty-census.js +96 -20
  248. package/payload/platform/services/claude-session-manager/dist/pty-census.js.map +1 -1
  249. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts.map +1 -1
  250. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js +5 -1
  251. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js.map +1 -1
  252. package/payload/platform/templates/specialists/agents/database-operator.md +1 -1
  253. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  254. package/payload/platform/templates/specialists/agents/project-manager.md +1 -1
  255. package/payload/server/{chunk-POBXIHOF.js → chunk-BSTIQX52.js} +59 -1
  256. package/payload/server/maxy-edge.js +1 -1
  257. package/payload/server/public/activity.html +17 -0
  258. package/payload/server/public/assets/AdminLoginScreens-Rf94VD9w.js +1 -0
  259. package/payload/server/public/assets/AdminShell-CyGKg7MG.js +2 -0
  260. package/payload/server/public/assets/Checkbox-B0jmI2y2.js +1 -0
  261. package/payload/server/public/assets/HeaderMenu-BnTYGNaB.js +9 -0
  262. package/payload/server/public/assets/{useSubAccountSwitcher-pu0jjLCz.css → HeaderMenu-DtIEBHOU.css} +1 -1
  263. package/payload/server/public/assets/activity-BOBTWFr-.js +1 -0
  264. package/payload/server/public/assets/admin-HDLzwbLl.js +1 -0
  265. package/payload/server/public/assets/{arc-qKfXIt8v.js → arc-CFMJyMm-.js} +1 -1
  266. package/payload/server/public/assets/architecture-YZFGNWBL-Cypt5qHL.js +1 -0
  267. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DkVrGn7G.js → architectureDiagram-Q4EWVU46-CmOpXLsH.js} +1 -1
  268. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DqavswGH.js → blockDiagram-DXYQGD6D-CmS8f9YF.js} +1 -1
  269. package/payload/server/public/assets/browser-D4_XLSSm.js +1 -0
  270. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-B7fyKiXe.js → c4Diagram-AHTNJAMY-BXIjMl6A.js} +1 -1
  271. package/payload/server/public/assets/calendar-s5V_gbI7.js +1 -0
  272. package/payload/server/public/assets/channel-DhrFAm7m.js +1 -0
  273. package/payload/server/public/assets/chat-40WyKzGb.js +1 -0
  274. package/payload/server/public/assets/chevron-left-C35qGP5f.js +1 -0
  275. package/payload/server/public/assets/{chunk-2KRD3SAO-DsgMtGkv.js → chunk-2KRD3SAO-D4fktAwW.js} +1 -1
  276. package/payload/server/public/assets/{chunk-336JU56O-CkdISfNt.js → chunk-336JU56O-C2MKnRTj.js} +2 -2
  277. package/payload/server/public/assets/chunk-426QAEUC-BhU7-TyS.js +1 -0
  278. package/payload/server/public/assets/{chunk-4BX2VUAB-CYpiF2bl.js → chunk-4BX2VUAB-C13Wz3zS.js} +1 -1
  279. package/payload/server/public/assets/{chunk-4TB4RGXK-CWyc_F7v.js → chunk-4TB4RGXK-CalYahTR.js} +1 -1
  280. package/payload/server/public/assets/{chunk-55IACEB6-BbzKMw2Z.js → chunk-55IACEB6-TmOKdy8a.js} +1 -1
  281. package/payload/server/public/assets/{chunk-5FUZZQ4R-u19Nai9e.js → chunk-5FUZZQ4R-C-i0BVag.js} +1 -1
  282. package/payload/server/public/assets/{chunk-5PVQY5BW-Ba8by6Uy.js → chunk-5PVQY5BW-D6bJMLnf.js} +1 -1
  283. package/payload/server/public/assets/{chunk-67CJDMHE-BwUuxtyb.js → chunk-67CJDMHE-Cif9Uu5C.js} +1 -1
  284. package/payload/server/public/assets/{chunk-7N4EOEYR-BRH9iM9L.js → chunk-7N4EOEYR-WjTHCXnd.js} +1 -1
  285. package/payload/server/public/assets/{chunk-AA7GKIK3-BGoztgLL.js → chunk-AA7GKIK3-CwCfdQmb.js} +1 -1
  286. package/payload/server/public/assets/{chunk-BSJP7CBP-C5GDAZTl.js → chunk-BSJP7CBP-9A67yXwT.js} +1 -1
  287. package/payload/server/public/assets/{chunk-CIAEETIT-ChY32VPS.js → chunk-CIAEETIT-DPMiWSBi.js} +1 -1
  288. package/payload/server/public/assets/{chunk-EDXVE4YY-CPSD3p6p.js → chunk-EDXVE4YY-B9PBdwiT.js} +1 -1
  289. package/payload/server/public/assets/{chunk-ENJZ2VHE-D1oL-iUr.js → chunk-ENJZ2VHE-CM5OqcQ5.js} +1 -1
  290. package/payload/server/public/assets/{chunk-FMBD7UC4-CPvYEr54.js → chunk-FMBD7UC4-Bmt_ZRlV.js} +1 -1
  291. package/payload/server/public/assets/{chunk-FOC6F5B3-9Yyj7Vbz.js → chunk-FOC6F5B3-DfGJGxpX.js} +1 -1
  292. package/payload/server/public/assets/{chunk-ICPOFSXX-BaYgh8FR.js → chunk-ICPOFSXX-D6M89DA0.js} +2 -2
  293. package/payload/server/public/assets/{chunk-K5T4RW27-5ucpeRvm.js → chunk-K5T4RW27-DMpoaqw2.js} +1 -1
  294. package/payload/server/public/assets/{chunk-KGLVRYIC-DW-FHk7T.js → chunk-KGLVRYIC-DYUFgri2.js} +1 -1
  295. package/payload/server/public/assets/{chunk-LIHQZDEY-CGGVfAyG.js → chunk-LIHQZDEY-x3LmeKmx.js} +1 -1
  296. package/payload/server/public/assets/{chunk-ORNJ4GCN-Bv8EUa5d.js → chunk-ORNJ4GCN-BeuNAWkW.js} +1 -1
  297. package/payload/server/public/assets/{chunk-OYMX7WX6-C1mXJnyw.js → chunk-OYMX7WX6-Bv6gisQ6.js} +1 -1
  298. package/payload/server/public/assets/chunk-QZHKN3VN-7_kS3RBy.js +1 -0
  299. package/payload/server/public/assets/{chunk-U2HBQHQK-PwSQz6EP.js → chunk-U2HBQHQK-C2iT9Av2.js} +1 -1
  300. package/payload/server/public/assets/{chunk-X2U36JSP--NPHTBlU.js → chunk-X2U36JSP-Bd6bv87A.js} +1 -1
  301. package/payload/server/public/assets/{chunk-XPW4576I-Bbc7Da32.js → chunk-XPW4576I-ByFnN4JO.js} +1 -1
  302. package/payload/server/public/assets/{chunk-YZCP3GAM-D-9v8e--.js → chunk-YZCP3GAM-Bt8I6ZDb.js} +1 -1
  303. package/payload/server/public/assets/{chunk-ZZ45TVLE-CMPg670Q.js → chunk-ZZ45TVLE-DBMPgZ_A.js} +1 -1
  304. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BrWqm88p.js +1 -0
  305. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-D0wzG5Fd.js +1 -0
  306. package/payload/server/public/assets/clone-DQA-nNrl.js +1 -0
  307. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-NVSb1Bhy.js → cose-bilkent-S5V4N54A-DgLEaApT.js} +1 -1
  308. package/payload/server/public/assets/{dagre-KV5264BT-V2Ai1DFl.js → dagre-KV5264BT-kWVPgmmL.js} +1 -1
  309. package/payload/server/public/assets/{dagre-QfLcO-1j.js → dagre-mSazqXgG.js} +1 -1
  310. package/payload/server/public/assets/data-Bq0vU3qJ.js +1 -0
  311. package/payload/server/public/assets/{diagram-5BDNPKRD-Caw21693.js → diagram-5BDNPKRD-BHe_omJD.js} +1 -1
  312. package/payload/server/public/assets/{diagram-G4DWMVQ6-CgwVkT2q.js → diagram-G4DWMVQ6-fUFsmM3x.js} +1 -1
  313. package/payload/server/public/assets/{diagram-MMDJMWI5-DFUrLZhs.js → diagram-MMDJMWI5-DmujPLlM.js} +1 -1
  314. package/payload/server/public/assets/{diagram-TYMM5635-CEEiEuZJ.js → diagram-TYMM5635-B7Aoas89.js} +1 -1
  315. package/payload/server/public/assets/{dist-Cvgxm7qv.js → dist-C9D_xz81.js} +1 -1
  316. package/payload/server/public/assets/{erDiagram-SMLLAGMA-CG10NrT3.js → erDiagram-SMLLAGMA-6hS1rGiO.js} +1 -1
  317. package/payload/server/public/assets/{flatten-DAO0sfCM.js → flatten-BXzaHgtL.js} +1 -1
  318. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BqkV9Okv.js → flowDiagram-DWJPFMVM-Bqhr_r5b.js} +1 -1
  319. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-DRiCDQF6.js → ganttDiagram-T4ZO3ILL-B8kjyN4o.js} +1 -1
  320. package/payload/server/public/assets/gitGraph-7Q5UKJZL-C_-XjxLd.js +1 -0
  321. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BZV2voyy.js → gitGraphDiagram-UUTBAWPF--TTRq4ir.js} +1 -1
  322. package/payload/server/public/assets/{graph-BZiudUGr.js → graph-C252ZHjp.js} +3 -3
  323. package/payload/server/public/assets/graph-labels-DzPbbhLc.js +1 -0
  324. package/payload/server/public/assets/{graphlib-DGPThX8M.js → graphlib-CWkjawc5.js} +1 -1
  325. package/payload/server/public/assets/info-OMHHGYJF-BH8yDCfL.js +1 -0
  326. package/payload/server/public/assets/infoDiagram-42DDH7IO-D8U4M0pK.js +2 -0
  327. package/payload/server/public/assets/{isEmpty-Cb_U81C6.js → isEmpty-uB1dEu_Z.js} +1 -1
  328. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BKsAxSvp.js → ishikawaDiagram-UXIWVN3A-CR8B7VzM.js} +1 -1
  329. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CmliuOd-.js → journeyDiagram-VCZTEJTY-45lWAvtq.js} +1 -1
  330. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DAlElMb-.js → kanban-definition-6JOO6SKY-DkrPXLVb.js} +1 -1
  331. package/payload/server/public/assets/{line-DKZqLKAC.js → line-Db0H446a.js} +1 -1
  332. package/payload/server/public/assets/{linear-CbSGdh1x.js → linear-X3O7lwK3.js} +1 -1
  333. package/payload/server/public/assets/maximize-2-CEbXFpQT.js +1 -0
  334. package/payload/server/public/assets/{mermaid-parser.core-DFvbao9C.js → mermaid-parser.core-CixBHOya.js} +2 -2
  335. package/payload/server/public/assets/{mermaid.core-C0vEBxDm.js → mermaid.core-BGQq98L7.js} +3 -3
  336. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-CShASUKd.js → mindmap-definition-QFDTVHPH-v9cJl1mj.js} +1 -1
  337. package/payload/server/public/assets/operator-zKk4HMdX.js +1 -0
  338. package/payload/server/public/assets/{ordinal-H0tVmBDP.js → ordinal-CZY9laxg.js} +1 -1
  339. package/payload/server/public/assets/packet-4T2RLAQJ-Bajcns4r.js +1 -0
  340. package/payload/server/public/assets/page-BrmN_vzV.js +1 -0
  341. package/payload/server/public/assets/page-Cts-ESBe.js +32 -0
  342. package/payload/server/public/assets/{pdf-render-jAQU0nXt.js → pdf-render-7HZBTZ0_.js} +1 -1
  343. package/payload/server/public/assets/pie-ZZUOXDRM-D7hjM5w1.js +1 -0
  344. package/payload/server/public/assets/{pieDiagram-DEJITSTG-CBZHpDAJ.js → pieDiagram-DEJITSTG-DQ0b6edX.js} +1 -1
  345. package/payload/server/public/assets/public-BItzHBc0.js +1 -0
  346. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-n3bB3K91.js → quadrantDiagram-34T5L4WZ-B64mj7Ei.js} +1 -1
  347. package/payload/server/public/assets/radar-PYXPWWZC-B46d5x7a.js +1 -0
  348. package/payload/server/public/assets/{reduce-DAvwat-a.js → reduce-BGQzAenn.js} +1 -1
  349. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DiDvQK3c.js → requirementDiagram-MS252O5E-CE2JIEWo.js} +1 -1
  350. package/payload/server/public/assets/rotate-ccw-B0EYGhGx.js +1 -0
  351. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DWDQQZmd.js → sankeyDiagram-XADWPNL6-Cmt5cfCz.js} +1 -1
  352. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DmAqRlBT.js → sequenceDiagram-FGHM5R23-B5vVn_sw.js} +1 -1
  353. package/payload/server/public/assets/{src-DV4LKv2E.js → src-BTKk8KAG.js} +1 -1
  354. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-D4R-n6bZ.js → stateDiagram-FHFEXIEX-DiUEJ-RZ.js} +1 -1
  355. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DIm3XuAD.js +1 -0
  356. package/payload/server/public/assets/tasks-ClE8-be8.js +1 -0
  357. package/payload/server/public/assets/time-entry-format-BwjGLnXu.js +1 -0
  358. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CjiHGP4l.js → timeline-definition-GMOUNBTQ-C9jprDVw.js} +1 -1
  359. package/payload/server/public/assets/treeView-SZITEDCU-3XQh5xQ1.js +1 -0
  360. package/payload/server/public/assets/treemap-W4RFUUIX-DwR-_l5z.js +1 -0
  361. package/payload/server/public/assets/triangle-alert-DejWYn1x.js +1 -0
  362. package/payload/server/public/assets/useCopyFeedback-CpSgOavK.js +1 -0
  363. package/payload/server/public/assets/useSelectionMode-ZQZQUgze.js +1 -0
  364. package/payload/server/public/assets/useSubAccountSwitcher-DuRLvCfO.js +1 -0
  365. package/payload/server/public/assets/useVoiceRecorder-BTYYeUJW.js +2 -0
  366. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CBdDQ7c-.js → vennDiagram-DHZGUBPP-DWqQJ9X0.js} +1 -1
  367. package/payload/server/public/assets/wardley-RL74JXVD-DZp9oCGv.js +1 -0
  368. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BlIQPKLb.js → wardleyDiagram-NUSXRM2D-Dg6c2Voh.js} +1 -1
  369. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CslKgh9B.js → xychartDiagram-5P7HB3ND-EhN-zeDj.js} +1 -1
  370. package/payload/server/public/browser.html +7 -6
  371. package/payload/server/public/calendar.html +8 -7
  372. package/payload/server/public/chat.html +15 -14
  373. package/payload/server/public/data.html +14 -12
  374. package/payload/server/public/graph.html +13 -12
  375. package/payload/server/public/index.html +17 -15
  376. package/payload/server/public/operator.html +17 -16
  377. package/payload/server/public/public.html +15 -14
  378. package/payload/server/public/tasks.html +7 -6
  379. package/payload/server/server.js +1064 -536
  380. package/payload/server/public/assets/AdminLoginScreens-Bed8SDxY.js +0 -1
  381. package/payload/server/public/assets/AdminShell-BLh9O6dn.js +0 -2
  382. package/payload/server/public/assets/Checkbox-BC_KSbpS.js +0 -1
  383. package/payload/server/public/assets/admin-DfWgJVI3.js +0 -1
  384. package/payload/server/public/assets/architecture-YZFGNWBL-FPHT7s-C.js +0 -1
  385. package/payload/server/public/assets/browser-C0vkv-hH.js +0 -1
  386. package/payload/server/public/assets/calendar-_pfHw0Hp.js +0 -1
  387. package/payload/server/public/assets/channel-j70eMvcL.js +0 -1
  388. package/payload/server/public/assets/chat-DYT5H81o.js +0 -1
  389. package/payload/server/public/assets/chevron-left-BnpVBu51.js +0 -1
  390. package/payload/server/public/assets/chunk-426QAEUC-D-NcAlTW.js +0 -1
  391. package/payload/server/public/assets/chunk-QZHKN3VN-CAwbQBtf.js +0 -1
  392. package/payload/server/public/assets/classDiagram-6PBFFD2Q-Ct6Rn0vt.js +0 -1
  393. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-B_2XCIFv.js +0 -1
  394. package/payload/server/public/assets/clone-DjPWA_NH.js +0 -1
  395. package/payload/server/public/assets/data-CR-fbPWr.js +0 -1
  396. package/payload/server/public/assets/gitGraph-7Q5UKJZL-B8Hx7f-D.js +0 -1
  397. package/payload/server/public/assets/graph-labels-BzmmJwCR.js +0 -1
  398. package/payload/server/public/assets/info-OMHHGYJF-BicCJTqU.js +0 -1
  399. package/payload/server/public/assets/infoDiagram-42DDH7IO-tf-8rOez.js +0 -2
  400. package/payload/server/public/assets/maximize-2-Bhdsv0U-.js +0 -1
  401. package/payload/server/public/assets/operator-gm2eP4r6.js +0 -1
  402. package/payload/server/public/assets/packet-4T2RLAQJ-Ckn_5hq0.js +0 -1
  403. package/payload/server/public/assets/page-8AB3jUa_.js +0 -1
  404. package/payload/server/public/assets/page-BoPorLg-.js +0 -32
  405. package/payload/server/public/assets/pie-ZZUOXDRM-DzlGQW3J.js +0 -1
  406. package/payload/server/public/assets/public-DqJk6qgW.js +0 -1
  407. package/payload/server/public/assets/radar-PYXPWWZC-BHo2YD8b.js +0 -1
  408. package/payload/server/public/assets/rotate-ccw-D_5cETGt.js +0 -1
  409. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BcFRbGRu.js +0 -1
  410. package/payload/server/public/assets/tasks-EyKLXINi.js +0 -1
  411. package/payload/server/public/assets/time-entry-format-DAwmmR3i.js +0 -1
  412. package/payload/server/public/assets/treeView-SZITEDCU-BtRr5vXp.js +0 -1
  413. package/payload/server/public/assets/treemap-W4RFUUIX-D8p0sbyo.js +0 -1
  414. package/payload/server/public/assets/useCopyFeedback-rOWd_lzl.js +0 -1
  415. package/payload/server/public/assets/useSelectionMode-DDmLmPph.js +0 -1
  416. package/payload/server/public/assets/useSubAccountSwitcher-CU-lOxTd.js +0 -9
  417. package/payload/server/public/assets/useVoiceRecorder-azG8zSUI.js +0 -2
  418. package/payload/server/public/assets/wardley-RL74JXVD-DgMn-9ZJ.js +0 -1
  419. /package/payload/platform/plugins/cloudflare/skills/data-portal/{template/schema.sql → schema.sql} +0 -0
  420. /package/payload/platform/plugins/cloudflare/skills/data-portal/template/{public/index.html → index.html} +0 -0
  421. /package/payload/platform/plugins/cloudflare/skills/data-portal/template/{public/portal.js → portal.js} +0 -0
  422. /package/payload/server/public/assets/{_baseFor-D3BqAOBr.js → _baseFor-CMWvz0uA.js} +0 -0
  423. /package/payload/server/public/assets/{array-iYP9fzJp.js → array-Cny_NT6T.js} +0 -0
  424. /package/payload/server/public/assets/{chunk-Ck5AOu5v.js → chunk-TPjIAO9U.js} +0 -0
  425. /package/payload/server/public/assets/{cytoscape.esm-BQSBzPsB.js → cytoscape.esm-De0CCmB2.js} +0 -0
  426. /package/payload/server/public/assets/{defaultLocale-BrdA1gDi.js → defaultLocale-BahRht8U.js} +0 -0
  427. /package/payload/server/public/assets/{init-Bx0S6pkp.js → init-DoIvjoJ_.js} +0 -0
  428. /package/payload/server/public/assets/{katex-BsiH_a6d.js → katex-Bfn1OZEl.js} +0 -0
  429. /package/payload/server/public/assets/{path-BLSgTy3w.js → path-CTezU8L5.js} +0 -0
  430. /package/payload/server/public/assets/{preload-helper-ClBMtM1g.js → preload-helper-CT1Z6Pdu.js} +0 -0
  431. /package/payload/server/public/assets/{rough.esm-BMOtDaaS.js → rough.esm-BJo4pvXu.js} +0 -0
@@ -1,5 +1,9 @@
1
- /* Data portal styles. Plain CSS, dp- prefixed, themed off variables so a brand
2
- can restyle without touching markup the same shape as booking.css. */
1
+ /* Data portal styles. Plain CSS, dp- prefixed. The :root values below are
2
+ template defaults and are nobody's brand: the assemble step runs
3
+ bin/portal-brand-css.mjs, which rewrites this block from the install's
4
+ consent.palette. They must stay legible on their own, because a brand that
5
+ declares no palette keeps them. --dp-muted is not brand-carried and survives
6
+ on every brand. */
3
7
  :root {
4
8
  --dp-ink: #14181f;
5
9
  --dp-muted: #667085;
@@ -13,6 +17,13 @@
13
17
  box-sizing: border-box;
14
18
  }
15
19
 
20
+ /* `hidden` is only display:none in the UA stylesheet, so any author `display`
21
+ beats it — .dp-login's display:flex did exactly that and left the sign-in
22
+ form on screen after sign-in. Keep the attribute authoritative everywhere. */
23
+ [hidden] {
24
+ display: none !important;
25
+ }
26
+
16
27
  body {
17
28
  margin: 0;
18
29
  padding: 2rem 1rem;
@@ -5,7 +5,7 @@
5
5
  # __D1_DATABASE_ID__ the id printed by `wrangler d1 create`
6
6
  # __R2_BUCKET_NAME__ the R2 bucket name (<accountId>-<purpose>)
7
7
  name = "__PROJECT_NAME__"
8
- pages_build_output_dir = "public"
8
+ pages_build_output_dir = "."
9
9
  compatibility_date = "2024-01-01"
10
10
  compatibility_flags = ["nodejs_compat"]
11
11
 
@@ -336,6 +336,54 @@ A 0.000 reading that persists across many polls while `top` shows load
336
336
  is the delta-cache regression signature (the single-flight promise was
337
337
  not released).
338
338
 
339
+ ## Activity view
340
+
341
+ Source:
342
+ [`server/routes/admin/activity.ts`](../../../ui/server/routes/admin/activity.ts)
343
+ (house-gated proxy) and
344
+ [`platform/ui/app/activity/page.tsx`](../../../ui/app/activity/page.tsx)
345
+ (page). CSS lives under `.activity*` in
346
+ [`platform/ui/app/globals.css`](../../../ui/app/globals.css).
347
+
348
+ **What it shows.** `/activity` lists every live session across every account
349
+ in the install, one row per session: account, title, model, status, age, idle,
350
+ turn count, RSS, CPU %, cumulative tokens, and imputed GBP cost. Columns sort
351
+ on click. The sidebar session list is scoped to the caller's own account, so
352
+ this is the only surface that answers "where is the activity" install-wide.
353
+
354
+ **House account only.** The manager binds loopback and gates nothing, so the
355
+ scoping lives on the admin route. The house is resolved by the same three-arm
356
+ predicate the spawn path uses (`resolveAccountDir`): exactly one `role:"house"`
357
+ account, else a sole account declaring no role, else deny — two houses is
358
+ corruption and denies rather than picking one. Both operands are null-checked,
359
+ because `caller === house` alone is true for two nulls. A caller pinned
360
+ elsewhere receives 403 and a logged `op=gate decision=deny` carrying its
361
+ reason. The `HeaderMenu` item is admin-variant only for the same reason.
362
+
363
+ Be precise about what this is. Under the install-wide access model every
364
+ authenticated install admin can re-pin to any account via
365
+ `POST /api/admin/session/switch-account`, so the gate is a scope selector, not
366
+ an authority boundary between privilege levels.
367
+
368
+ **Where the numbers come from.** The manager assembles them at its own
369
+ `GET /activity`, joining the live PTY set, the watcher's per-row `accountId`,
370
+ the JSONL enumerator (turns, model, tokens, last message), the PTY census
371
+ (RSS and CPU), and a bounded metering fan-out. The admin route adds the one
372
+ fact the manager cannot see: the `data/accounts` directory count, taken
373
+ independently of `listValidAccounts()` so a rejected account shows as
374
+ `onDisk > valid` rather than silently shortening the list.
375
+
376
+ **Reading the cells.** A dash means unmeasured, never zero — an unmeasured CPU
377
+ is not an idle session. Cost is the price arm matching the row's own model,
378
+ because the metering core prices one token count under both Opus and Sonnet
379
+ assumptions without knowing which ran; a model in neither family shows a dash.
380
+ Every dashed cost carries its reason as a tooltip, so an unpriced model, a
381
+ failed parse and a session with no transcript are distinguishable rather than
382
+ three readings of the same glyph.
383
+ A session whose sidecar carries no account shows `untagged` rather than being
384
+ folded into the house. The census age is rendered because the snapshot is a 60s
385
+ sample and a dead collector emits nothing.
386
+
339
387
  ## Sidebar surfaces
340
388
 
341
389
  The sidebar is the entire left column of the admin UI. Its full layout,
@@ -0,0 +1,68 @@
1
+ # Google Calendar
2
+
3
+ Live Google Calendar for one account: read the user's real events, and create,
4
+ update, cancel, respond to and check availability against them. Eleven tools,
5
+ admin agent only.
6
+
7
+ There is deliberately no Gmail surface here. Mail runs on the `email` plugin's
8
+ IMAP/SMTP path, and Gmail's read/modify scopes are *restricted*, which would
9
+ force Google's annual third-party security assessment. Calendar is only a
10
+ *sensitive* scope, so it needs the lighter brand verification.
11
+
12
+ ## Connecting an account
13
+
14
+ `google-account-register` returns a consent URL. Relay it to the user: they open
15
+ it on any device, sign in, and approve. Google redirects to this install's
16
+ public host at `/api/google/oauth/callback`, which exchanges the code and stores
17
+ encrypted tokens. `google-account-register-poll` then reports the outcome.
18
+
19
+ The register tool does not block and does not wait. A second register while one
20
+ is already live is refused rather than overwriting it; that refusal names how
21
+ long the live one has been pending.
22
+
23
+ One account can connect several Google accounts. Every operational tool takes an
24
+ optional `account` (the email address). Omit it when there is one; with two or
25
+ more, omitting it returns a refusal listing them.
26
+
27
+ ## Reading and controlling
28
+
29
+ - `google-calendar-list` — events in the next `rangeDays` days (default 7).
30
+ Recurring series are expanded into instances, so this returns what the user
31
+ actually sees in their calendar.
32
+ - `google-calendar-event` — one event by id.
33
+ - `google-calendar-create` — times are RFC3339 (`2026-07-20T09:00:00Z`) unless
34
+ `allDay` is true, in which case they are plain dates (`2026-07-20`).
35
+ - `google-calendar-update` — changes only the fields you name. Omitted fields
36
+ are left alone, so an update never blanks something by accident.
37
+ - `google-calendar-cancel` — deletes the event and notifies attendees.
38
+ - `google-calendar-respond` — accept, decline or tentatively accept an
39
+ invitation. Every other attendee's response is preserved.
40
+ - `google-calendar-freebusy` — busy blocks between two times. Free time is the
41
+ complement, which you work out.
42
+
43
+ ## Checking health
44
+
45
+ `google-account-list` answers "is anything connected?" from local stores with no
46
+ network call. Read each entry's `status` — a count alone is not "connected", and
47
+ an unreadable store still counts. `google-account-info` gives one account's auth
48
+ state, including whether its access token is near expiry and which scopes were
49
+ granted.
50
+
51
+ ## When something is wrong
52
+
53
+ **"GOOGLE_CLIENT_ID is not configured"** — this brand has no Google vendor app
54
+ yet. Nothing the operator does on the device fixes it; the brand needs its own
55
+ Google Cloud OAuth client. See `platform/plugins/google/references/auth.md`.
56
+
57
+ **A 403 naming insufficient scope** — the connected account approved something
58
+ narrower than the full calendar scope. Re-run `google-account-register` so they
59
+ re-consent.
60
+
61
+ **The user re-consents every week** — the brand's Google app is still in
62
+ Testing, where Google caps refresh tokens at seven days and limits the app to
63
+ 100 named test users. Completing brand verification removes both. This is a
64
+ property of the vendor app, not a fault in the connection.
65
+
66
+ **A registration never completes** — the consent URL was opened but not
67
+ approved, or the callback could not be reached. `google-account-register-poll`
68
+ reports `expired` once the pending entry outlives Google's code lifetime.
@@ -327,7 +327,7 @@ This tool is read-only and available to both public and admin agents.
327
327
 
328
328
  ### When conversations are created
329
329
 
330
- `:Conversation` nodes on webchat (admin login, "New conversation" in the burger, a new public visitor) are created lazily. Opening the chat or logging in does not write anything to the graph — {{productName}} only records the conversation once the user sends a second message. This keeps `conversation-search` and the Conversations modal free of one-turn abandoned threads. WhatsApp and Telegram take the opposite posture: every inbound — DM or group, allowed or activation-off, agent-invoked or gated — MERGEs the `:Conversation` and writes a forensic `:Message:WhatsAppMessage` row before any access-control decision. The graph is the durable record of every message the device received, not just the ones the agent replied to. See `.docs/web-chat.md` "Deferred conversation persistence" and `.docs/whatsapp.md` "Session continuity" for the full contract.
330
+ `:Conversation` nodes on webchat (admin login, "New conversation" in the burger, a new public visitor) are created lazily. Opening the chat or logging in does not write anything to the graph — {{productName}} only records the conversation once the user sends a second message. This keeps `conversation-search` and the Conversations modal free of one-turn abandoned threads. WhatsApp and Telegram take the opposite posture: every inbound — DM or group, allowed or activation-off, agent-invoked or gated — MERGEs the `:Conversation` and writes a forensic `:Message:WhatsAppMessage` row before any access-control decision. The graph is the durable record of every message the device received, not just the ones the agent replied to. That forensic row is addressed by cacheKey (`default:<phone>`) on the socket-owning account and deliberately has no session behind it. A WhatsApp sender therefore carries a **second** `:Conversation`: the anchored row written at spawn on the account the session actually runs under, keyed by the session's own deterministic id, which is the row every `MATCH (c:Conversation {sessionId: $SESSION_ID})` resolves. Two rows, two jobs, not duplicates. See `.docs/web-chat.md` "Deferred conversation persistence", `.docs/whatsapp.md` "Session continuity", and `.docs/session-conversation-identity.md` for the per-channel identity contract.
331
331
 
332
332
  Each row in the Conversations modal exposes a `View logs` row-action that opens a popover with three links — **Stream**, **Errors**, **SSE** — each of which targets `/api/admin/logs?type={stream|error|sse}&sessionId={full-id}` in a new tab. The row's 8-char id chip is click-to-copy; hover reveals the full `sessionId` as a tooltip. See `.docs/web-chat.md` "In-chat retrieval" for the route contract and `console.debug` observability.
333
333
 
@@ -0,0 +1,43 @@
1
+ # Ledger
2
+
3
+ A cash book with receivables and payables. It records what you invoiced, what you were billed, what was paid, and money that moved without an invoice, then tells you what is still outstanding.
4
+
5
+ ## What it is not
6
+
7
+ It is not double-entry bookkeeping. There is no chart of accounts, no journals, no trial balance. It computes no VAT and handles a single currency. It does not read bank feeds and it does not talk to QuickBooks.
8
+
9
+ If you need statutory accounts, this is not that. It is the answer to "who owes me what, what do I owe, and where did the money go".
10
+
11
+ ## The seven things you can ask for
12
+
13
+ **Record an invoice you raised.** A reference, who owes you, the amount, and when it is due.
14
+
15
+ **Record a bill you received.** The same, in the other direction.
16
+
17
+ **Record a payment.** Against either an invoice or a bill. You give the reference, the amount, the date and how it was paid.
18
+
19
+ **Record a credit.** Against an invoice you raised. It reduces what is owed exactly as a payment does.
20
+
21
+ **Record a cash movement.** Money in or out that belongs to no invoice: bank charges, a cash sale, drawings, a refund.
22
+
23
+ **Ask what is outstanding on one document.** You get the total, what has been paid, what has been credited, and what remains.
24
+
25
+ **Ask for a statement.** Everything owed to you and everything you owe, sorted into 0-30, 31-60, 61-90 and 90+ days overdue, plus net cash.
26
+
27
+ ## Three behaviours worth knowing about
28
+
29
+ **What is outstanding is never stored.** It is worked out from the payments each time you ask. This means the figure cannot fall out of step with the payments behind it. If it were stored, a payment recorded by any route that forgot to update it would leave the invoice quietly reporting a wrong number, and nothing would fail.
30
+
31
+ **Paying more than is owed is refused.** If an invoice has 4,400 left and you try to record 5,000, nothing is written and you are told the figure that would settle it. It is not rounded down to 4,400 and it is not recorded anyway. A ledger that quietly accepts an impossible payment is worse than one that says no.
32
+
33
+ **Every payment is read back.** After a payment is written, the invoice is re-read from the graph and the outstanding figure is checked against what was expected. If they disagree you are told to stop recording against that invoice until it is sorted out. Writing something is not the same as it having landed.
34
+
35
+ ## The health check
36
+
37
+ Some ways this can go wrong announce themselves. Others do not: a payment that ends up attached to no invoice, a stale balance field reappearing, or the same payment recorded twice under two different ids. None of those produce an error at the time, because nothing goes wrong at the moment they happen.
38
+
39
+ So there is a check that runs by itself every fifteen minutes and writes one line to the log beginning `[ledger-census]`. When it is healthy the counters are all zero. When something is wrong the line ends with `alarm=true` and says which of the four it found.
40
+
41
+ You can also ask for that check on demand at any time, and it reports the same thing in plain words.
42
+
43
+ If you never see the line at all, that is itself the problem: it means the periodic check is not running.
@@ -106,6 +106,10 @@ Email ingestion is **operator-initiated and human-in-the-loop**. There is no bac
106
106
  - **Graph history** (`email-graph-query`) — stored email-thread `:ConversationArchive {source:'email'}` rows (with `:Section` chunks) in Neo4j. Use for recall, semantic search, email history questions.
107
107
  - **General knowledge** (`memory-search`) — cross-type knowledge graph. Use when the question spans all memory, not just emails.
108
108
 
109
+ **Naming a mailbox.** When more than one mailbox is configured on the account, `email-read` and `email-search` refuse a call that omits `mailbox`, naming every stored identity. This is deliberate — guessing between them would silently read the wrong mailbox. Call `email-status` to list the configured identities, then pass `mailbox` on every read. A single-mailbox account needs no `mailbox` argument.
110
+
111
+ **Both readers return the newest matches.** When more messages match than `limit` admits, the newest `limit` are returned and the output names the split, e.g. `Showing the newest 20 of 33 matches in the scanned window`. `33` counts matches inside the fetched window, not the whole mailbox. Treat that line as "there is more behind this" and page back with the `next_before_uid` printed alongside it — a truncated result always carries a cursor, and that cursor is the oldest message shown, so the next page lands exactly on what was dropped rather than skipping it. A result with no truncation line showed everything that matched in its window. This is reported separately from the recipient-filter line because the two do not coincide: truncation is only reachable when a recipient filter is active (that is what widens the window past `limit`), but a filter that hides nothing prints no recipient line while still truncating.
112
+
109
113
  ## Skills
110
114
 
111
115
  | Skill | Purpose |
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=display-truncation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-truncation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/display-truncation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,196 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { formatTruncationLine } from "../lib/imap.js";
3
+ // Task 1777. The display slice is a second way a matching message can vanish
4
+ // from a result, distinct from the recipient filter Task 700 made non-silent.
5
+ // Truncation is only reachable when a recipient filter is active (that is what
6
+ // over-fetches past `limit`), but an active filter that hides nothing emits no
7
+ // recipient line at all — so the two signals do not coincide and truncation is
8
+ // reported on its own.
9
+ describe("formatTruncationLine", () => {
10
+ it("names shown and matched when the display was truncated", () => {
11
+ expect(formatTruncationLine({ shown: 20, matched: 33 })).toBe("Showing the newest 20 of 33 matches in the scanned window; the rest are older \u2014 page back with next_before_uid.");
12
+ });
13
+ it("returns null when nothing was truncated", () => {
14
+ expect(formatTruncationLine({ shown: 13, matched: 13 })).toBeNull();
15
+ });
16
+ it("returns null when no stats were recorded", () => {
17
+ expect(formatTruncationLine(undefined)).toBeNull();
18
+ });
19
+ });
20
+ let inbox = [];
21
+ function rowFor(uid, fields) {
22
+ const m = inbox.find((x) => x.uid === uid);
23
+ if (!m)
24
+ return null;
25
+ const row = { uid };
26
+ if (fields.envelope) {
27
+ row.envelope = {
28
+ from: [{ address: m.from, name: null }],
29
+ to: [{ address: m.to }],
30
+ cc: [],
31
+ subject: m.subject,
32
+ date: new Date("2026-01-01T00:00:00Z"),
33
+ messageId: `<${m.uid}@x>`,
34
+ inReplyTo: null,
35
+ };
36
+ }
37
+ if (fields.bodyStructure)
38
+ row.bodyStructure = { type: "text/plain" };
39
+ if (fields.source) {
40
+ row.source = Buffer.from([`From: ${m.from}`, `To: ${m.to}`, `Subject: ${m.subject}`, "", `body-${m.uid}`, ""].join("\r\n"));
41
+ }
42
+ return row;
43
+ }
44
+ const mockClient = {
45
+ connect: vi.fn(async () => { }),
46
+ list: vi.fn(async () => [{ path: "INBOX" }, { path: "Sent", specialUse: "\\Sent" }]),
47
+ getMailboxLock: vi.fn(async () => ({ release: vi.fn() })),
48
+ search: vi.fn(async () => inbox.map((m) => m.uid)),
49
+ fetch: vi.fn(function (range, fields) {
50
+ const uids = range.split(",").map((s) => Number(s.trim()));
51
+ async function* gen() {
52
+ for (const uid of uids) {
53
+ const row = rowFor(uid, fields);
54
+ if (row)
55
+ yield row;
56
+ }
57
+ }
58
+ return gen();
59
+ }),
60
+ fetchOne: vi.fn(async (range, fields) => rowFor(Number(range), fields)),
61
+ logout: vi.fn(async () => { }),
62
+ close: vi.fn(() => { }),
63
+ };
64
+ vi.mock("imapflow", () => ({
65
+ ImapFlow: function ImapFlow() {
66
+ return mockClient;
67
+ },
68
+ }));
69
+ import { fetchRecent, searchMessages } from "../lib/imap.js";
70
+ const config = {
71
+ email: "info@rubytech.llc",
72
+ imapHost: "imap.example.com",
73
+ imapPort: 993,
74
+ imapSecurity: "tls",
75
+ };
76
+ function seed(startUid, count) {
77
+ return Array.from({ length: count }, (_, i) => ({
78
+ uid: startUid + i,
79
+ to: "info@rubytech.llc",
80
+ from: `s${i}@x.com`,
81
+ subject: `msg-${startUid + i}`,
82
+ }));
83
+ }
84
+ beforeEach(() => {
85
+ vi.clearAllMocks();
86
+ inbox = [];
87
+ });
88
+ describe("Task 1777 — the newest matches survive the display slice", () => {
89
+ it("fetchRecent returns the newest limit matches, newest first", async () => {
90
+ // 12 seeded; limit 3 with a TO filter over-fetches ×3, so the window is the
91
+ // newest 9 UIDs (103..111). All 9 match, so 3 are shown and 6 are dropped.
92
+ inbox = seed(100, 12);
93
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
94
+ const res = await fetchRecent(config, "pw", { limit: 3, to: ["info@rubytech.llc"] });
95
+ expect(res.messages.map((m) => m.uid)).toEqual([111, 110, 109]);
96
+ expect(res.truncation).toEqual({ shown: 3, matched: 9 });
97
+ });
98
+ it("searchMessages returns the newest limit matches, newest first", async () => {
99
+ // 9 seeded; limit 2 over-fetches ×3, so the window is the newest 6 (203..208).
100
+ inbox = seed(200, 9);
101
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
102
+ const res = await searchMessages(config, "pw", { limit: 2, to: ["info@rubytech.llc"] });
103
+ expect(res.messages.map((m) => m.uid)).toEqual([208, 207]);
104
+ expect(res.truncation).toEqual({ shown: 2, matched: 6 });
105
+ });
106
+ it("reports no truncation when every match is shown", async () => {
107
+ inbox = seed(300, 2);
108
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
109
+ const res = await fetchRecent(config, "pw", { limit: 10, to: ["info@rubytech.llc"] });
110
+ expect(res.messages.map((m) => m.uid)).toEqual([301, 300]);
111
+ expect(res.truncation).toBeUndefined();
112
+ });
113
+ it("replays the reported rubytech.llc case: the newest info@ mail leads", async () => {
114
+ // Envelopes observed live on 2026-07-18 (accountId 20028fb5-…, INBOX).
115
+ // UIDs 4406..4596 are the 20 matches the tool actually returned before the
116
+ // fix; 4730..4839 are the real newest 15, with their real recipients. At
117
+ // the default limit 20 the pre-fix reader returned 4406..4596 and both
118
+ // joshgoff1 messages (4811, 4816) were unreachable.
119
+ const olderMatches = [
120
+ 4406, 4407, 4418, 4419, 4420, 4421, 4423, 4440, 4464, 4528,
121
+ 4529, 4533, 4534, 4535, 4536, 4542, 4557, 4568, 4573, 4596,
122
+ ].map((uid) => ({ uid, to: "info@rubytech.llc", from: "older@x.com", subject: `older-${uid}` }));
123
+ const newest = [
124
+ { uid: 4730, to: "info@rubytech.llc", from: "Vincenzo.Aliotta@aon.it", subject: "R: RubySDK R&W" },
125
+ { uid: 4735, to: "info@rubytech.llc", from: "mark@rubysdk.com", subject: "Re: RubySDK R&W" },
126
+ { uid: 4759, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "expiry" },
127
+ { uid: 4760, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "order" },
128
+ { uid: 4761, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "order" },
129
+ { uid: 4771, to: "kappa@rubytech.llc", from: "tom@flashalpha.com", subject: "SPY digest" },
130
+ { uid: 4772, to: "realagent@rubytech.llc", from: "ebony@magneticbd.co.uk", subject: "Catch Up" },
131
+ { uid: 4773, to: "ebony@magneticbd.co.uk", from: "info@rubytech.llc", subject: "Re: Catch Up" },
132
+ { uid: 4794, to: "namecheap@rubytech.llc", from: "pesupport@namecheap.com", subject: "webmail" },
133
+ { uid: 4795, to: "kappa@rubytech.llc", from: "tom@flashalpha.com", subject: "SPY digest" },
134
+ { uid: 4809, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "30% off" },
135
+ { uid: 4810, to: "namecheap@rubytech.llc", from: "support@namecheap.com", subject: "order" },
136
+ { uid: 4811, to: "info@rubytech.llc", from: "joshgoff1@hotmail.com", subject: "Re: Maxy Institute Training" },
137
+ { uid: 4816, to: "info@rubytech.llc", from: "joshgoff1@hotmail.com", subject: "Re: Maxy Institute Training" },
138
+ { uid: 4839, to: "realagent.smarty@rubytech.llc", from: "no-reply@i.smarty.co.uk", subject: "favour" },
139
+ ];
140
+ inbox = [...olderMatches, ...newest];
141
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
142
+ const res = await fetchRecent(config, "pw", {
143
+ limit: 20,
144
+ to: ["info@rubytech.llc", "maxy@rubytech.llc"],
145
+ });
146
+ const uids = res.messages.map((m) => m.uid);
147
+ // Both joshgoff1 messages now lead the result.
148
+ expect(uids[0]).toBe(4816);
149
+ expect(uids[1]).toBe(4811);
150
+ // 24 matched, 20 shown, so the four oldest matches drop off the back.
151
+ expect(res.truncation).toEqual({ shown: 20, matched: 24 });
152
+ expect(uids).not.toContain(4406);
153
+ });
154
+ it("pages back onto the truncated matches instead of skipping them", async () => {
155
+ // The cursor must land on the dropped set, not below it. With the
156
+ // window-floor cursor the dropped matches sit ABOVE beforeUid and are
157
+ // excluded from every subsequent page, so the truncation line would promise
158
+ // a remainder that pagination could never deliver.
159
+ inbox = seed(800, 12);
160
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
161
+ const first = await fetchRecent(config, "pw", { limit: 3, to: ["info@rubytech.llc"] });
162
+ expect(first.messages.map((m) => m.uid)).toEqual([811, 810, 809]);
163
+ // Oldest displayed, NOT the window floor (803).
164
+ expect(first.nextBeforeUid).toBe(809);
165
+ const second = await fetchRecent(config, "pw", {
166
+ limit: 3,
167
+ to: ["info@rubytech.llc"],
168
+ beforeUid: first.nextBeforeUid,
169
+ });
170
+ // The next page continues exactly where the display stopped: no gap, no repeat.
171
+ expect(second.messages.map((m) => m.uid)).toEqual([808, 807, 806]);
172
+ });
173
+ it("sets a cursor whenever the display truncated, even inside one window", async () => {
174
+ // 35 UIDs with fetchLimit 60: the whole match set fits the window, so the
175
+ // window-floor branch reports "exhausted" while matches still exceed limit.
176
+ inbox = seed(900, 35);
177
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
178
+ const res = await fetchRecent(config, "pw", { limit: 20, to: ["info@rubytech.llc"] });
179
+ expect(res.truncation).toEqual({ shown: 20, matched: 35 });
180
+ expect(res.nextBeforeUid).toBe(915);
181
+ });
182
+ it("downloads body source only for the retained (newest) UIDs", async () => {
183
+ // Guards the Task 1180 promise across the retention change: the second-pass
184
+ // source fetch must cover the displayed set, which is now the newest.
185
+ inbox = seed(400, 12);
186
+ mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
187
+ await fetchRecent(config, "pw", { limit: 3, to: ["info@rubytech.llc"] });
188
+ const sourceCall = mockClient.fetch.mock.calls.find((c) => c[1].source);
189
+ const fetched = String(sourceCall?.[0])
190
+ .split(",")
191
+ .map((s) => Number(s.trim()))
192
+ .sort((a, b) => a - b);
193
+ expect(fetched).toEqual([409, 410, 411]);
194
+ });
195
+ });
196
+ //# sourceMappingURL=display-truncation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-truncation.test.js","sourceRoot":"","sources":["../../src/__tests__/display-truncation.test.ts"],"names":[],"mappings":"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"}
@@ -104,9 +104,10 @@ describe("Task 1180 — list/search fetch source only for displayed messages", (
104
104
  ];
105
105
  mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
106
106
  const res = await fetchRecent(config, "pw", { limit: 2, to: "keep@x.com" });
107
- // Window is the 6 newest UIDs (4..9). The display set is the FIRST two
108
- // keep@ matches in ascending window order (5, 7), returned newest-first.
109
- expect(res.messages.map((m) => m.uid)).toEqual([7, 5]);
107
+ // Window is the 6 newest UIDs (4..9). Matches are 5, 7, 9; the display set
108
+ // is the NEWEST two (7, 9), returned newest-first. Before Task 1777 this
109
+ // asserted [7, 5] — the oldest two — which encoded the truncation defect.
110
+ expect(res.messages.map((m) => m.uid)).toEqual([9, 7]);
110
111
  expect(res.messages.every((m) => m.bodyPreview.length > 0)).toBe(true);
111
112
  const sourceFetches = fetchCalls.filter((c) => c.fields.source);
112
113
  expect(sourceFetches.length).toBe(1);
@@ -114,7 +115,7 @@ describe("Task 1180 — list/search fetch source only for displayed messages", (
114
115
  .split(",")
115
116
  .map((s) => Number(s.trim()))
116
117
  .sort((a, b) => a - b);
117
- expect(fetchedUids).toEqual([5, 7]);
118
+ expect(fetchedUids).toEqual([7, 9]);
118
119
  });
119
120
  it("searchMessages second-pass source fetch covers only the displayed UID set", async () => {
120
121
  inbox = [
@@ -127,16 +128,17 @@ describe("Task 1180 — list/search fetch source only for displayed messages", (
127
128
  ];
128
129
  mockClient.search.mockResolvedValue(inbox.map((m) => m.uid));
129
130
  const res = await searchMessages(config, "pw", { limit: 2, to: "keep@x.com" });
130
- // Window is all 6 UIDs (1..6). Display set is the first two keep@ matches
131
- // in ascending order (1, 3), returned newest-first.
132
- expect(res.messages.map((m) => m.uid)).toEqual([3, 1]);
131
+ // Window is all 6 UIDs (1..6). Matches are 1, 3, 5; the display set is the
132
+ // NEWEST two (3, 5), returned newest-first. Before Task 1777 this asserted
133
+ // [3, 1] — the oldest two — which encoded the truncation defect.
134
+ expect(res.messages.map((m) => m.uid)).toEqual([5, 3]);
133
135
  const sourceFetches = fetchCalls.filter((c) => c.fields.source);
134
136
  expect(sourceFetches.length).toBe(1);
135
137
  const fetchedUids = sourceFetches[0].range
136
138
  .split(",")
137
139
  .map((s) => Number(s.trim()))
138
140
  .sort((a, b) => a - b);
139
- expect(fetchedUids).toEqual([1, 3]);
141
+ expect(fetchedUids).toEqual([3, 5]);
140
142
  });
141
143
  });
142
144
  //# sourceMappingURL=source-fetch-efficiency.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-fetch-efficiency.test.js","sourceRoot":"","sources":["../../src/__tests__/source-fetch-efficiency.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-fetch-efficiency.test.js","sourceRoot":"","sources":["../../src/__tests__/source-fetch-efficiency.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=truncation-tool-output.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncation-tool-output.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/truncation-tool-output.test.ts"],"names":[],"mappings":""}