@rubytech/create-maxy-code 0.1.592 → 0.1.594

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 (339) hide show
  1. package/package.json +2 -2
  2. package/payload/platform/package.json +1 -0
  3. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +11 -5
  4. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +11 -0
  5. package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -0
  6. package/payload/platform/plugins/docs/references/internals.md +5 -3
  7. package/payload/platform/plugins/docs/references/telegram-guide.md +5 -1
  8. package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
  9. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +15 -2
  10. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  11. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  12. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +7 -2
  13. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  14. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +125 -1
  15. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
  16. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts +28 -0
  17. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
  18. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +72 -12
  19. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
  20. package/payload/platform/plugins/telegram/PLUGIN.md +12 -5
  21. package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js +31 -0
  22. package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js.map +1 -1
  23. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js +30 -0
  24. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js.map +1 -1
  25. package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.js +24 -0
  26. package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.js.map +1 -1
  27. package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.js +31 -0
  28. package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.js.map +1 -1
  29. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.d.ts +2 -0
  30. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.d.ts.map +1 -0
  31. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.js +55 -0
  32. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.js.map +1 -0
  33. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.d.ts +2 -0
  34. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.d.ts.map +1 -0
  35. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.js +89 -0
  36. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.js.map +1 -0
  37. package/payload/platform/plugins/telegram/mcp/dist/index.js +13 -42
  38. package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
  39. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.d.ts +80 -0
  40. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.d.ts.map +1 -0
  41. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.js +96 -0
  42. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.js.map +1 -0
  43. package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts +5 -0
  44. package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts.map +1 -1
  45. package/payload/platform/plugins/telegram/mcp/dist/tools/ask.js.map +1 -1
  46. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts +5 -0
  47. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
  48. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -1
  49. package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.d.ts +5 -0
  50. package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.d.ts.map +1 -1
  51. package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.js.map +1 -1
  52. package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts +5 -0
  53. package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts.map +1 -1
  54. package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.js.map +1 -1
  55. package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts +5 -0
  56. package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts.map +1 -1
  57. package/payload/platform/plugins/telegram/mcp/dist/tools/thread.js.map +1 -1
  58. package/payload/platform/scripts/__tests__/agent-identity-reconcile.test.sh +110 -0
  59. package/payload/platform/scripts/__tests__/check-orphan-dist.test.sh +87 -0
  60. package/payload/platform/scripts/check-orphan-dist.mjs +143 -0
  61. package/payload/platform/scripts/lib/agent-identity-reconcile.sh +122 -0
  62. package/payload/platform/scripts/lib/provision-account-dir.sh +8 -26
  63. package/payload/platform/scripts/setup-account.sh +15 -0
  64. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +37 -0
  65. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  66. package/payload/platform/services/claude-session-manager/dist/http-server.js +178 -13
  67. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  68. package/payload/platform/services/claude-session-manager/dist/index.js +5 -0
  69. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  70. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +5 -0
  71. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -1
  72. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +42 -1
  73. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -1
  74. package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.d.ts +13 -5
  75. package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.d.ts.map +1 -1
  76. package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.js +23 -9
  77. package/payload/platform/services/claude-session-manager/dist/rc-public-lockdown.js.map +1 -1
  78. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.d.ts +7 -4
  79. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.d.ts.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.js +5 -3
  81. package/payload/platform/services/claude-session-manager/dist/telegram-channel-mcp.js.map +1 -1
  82. package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.d.ts +15 -1
  83. package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.d.ts.map +1 -1
  84. package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.js +16 -7
  85. package/payload/platform/services/claude-session-manager/dist/telegram-channel-store.js.map +1 -1
  86. package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.d.ts +28 -0
  87. package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.d.ts.map +1 -0
  88. package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.js +53 -0
  89. package/payload/platform/services/claude-session-manager/dist/telegram-plugin-mcp.js.map +1 -0
  90. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts +9 -5
  91. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.d.ts.map +1 -1
  92. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js +12 -6
  93. package/payload/platform/services/claude-session-manager/dist/wa-channel-mcp.js.map +1 -1
  94. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts +7 -3
  95. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.d.ts.map +1 -1
  96. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js +5 -1
  97. package/payload/platform/services/claude-session-manager/dist/webchat-channel-mcp.js.map +1 -1
  98. package/payload/platform/services/telegram-channel/dist/instructions.d.ts +14 -2
  99. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  100. package/payload/platform/services/telegram-channel/dist/instructions.js +34 -3
  101. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  102. package/payload/platform/templates/agents/public/IDENTITY.md +3 -3
  103. package/payload/server/server.js +74 -9
  104. package/payload/platform/lib/anthropic-key/dist/index.d.ts +0 -22
  105. package/payload/platform/lib/anthropic-key/dist/index.d.ts.map +0 -1
  106. package/payload/platform/lib/anthropic-key/dist/index.js +0 -232
  107. package/payload/platform/lib/anthropic-key/dist/index.js.map +0 -1
  108. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +0 -37
  109. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +0 -1
  110. package/payload/platform/lib/graph-search/dist/query-expansion.js +0 -101
  111. package/payload/platform/lib/graph-search/dist/query-expansion.js.map +0 -1
  112. package/payload/platform/lib/oauth-llm/dist/index.d.ts +0 -116
  113. package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +0 -1
  114. package/payload/platform/lib/oauth-llm/dist/index.js +0 -386
  115. package/payload/platform/lib/oauth-llm/dist/index.js.map +0 -1
  116. package/payload/platform/lib/screening-patterns/dist/index.d.ts +0 -29
  117. package/payload/platform/lib/screening-patterns/dist/index.d.ts.map +0 -1
  118. package/payload/platform/lib/screening-patterns/dist/index.js +0 -48
  119. package/payload/platform/lib/screening-patterns/dist/index.js.map +0 -1
  120. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts +0 -2
  121. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts.map +0 -1
  122. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js +0 -34
  123. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js.map +0 -1
  124. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +0 -39
  125. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +0 -1
  126. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +0 -249
  127. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +0 -1
  128. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts +0 -6
  129. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts.map +0 -1
  130. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js +0 -32
  131. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js.map +0 -1
  132. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +0 -283
  133. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +0 -1
  134. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +0 -1155
  135. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +0 -1
  136. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +0 -90
  137. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +0 -1
  138. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +0 -551
  139. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +0 -1
  140. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +0 -17
  141. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +0 -1
  142. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +0 -186
  143. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +0 -1
  144. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +0 -29
  145. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +0 -1
  146. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +0 -105
  147. package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +0 -1
  148. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +0 -38
  149. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +0 -1
  150. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +0 -817
  151. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +0 -1
  152. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +0 -30
  153. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +0 -1
  154. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +0 -215
  155. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +0 -1
  156. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +0 -19
  157. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +0 -1
  158. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +0 -151
  159. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +0 -1
  160. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +0 -6
  161. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +0 -1
  162. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +0 -89
  163. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +0 -1
  164. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts +0 -2
  165. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts.map +0 -1
  166. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js +0 -90
  167. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js.map +0 -1
  168. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts +0 -2
  169. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts.map +0 -1
  170. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +0 -226
  171. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +0 -1
  172. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +0 -60
  173. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +0 -1
  174. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +0 -169
  175. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +0 -1
  176. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +0 -248
  177. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +0 -1
  178. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +0 -824
  179. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +0 -1
  180. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +0 -63
  181. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +0 -1
  182. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +0 -210
  183. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +0 -1
  184. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +0 -35
  185. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +0 -1
  186. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +0 -28
  187. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +0 -1
  188. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +0 -2
  189. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +0 -1
  190. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +0 -68
  191. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +0 -1
  192. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +0 -2
  193. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +0 -1
  194. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +0 -88
  195. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +0 -1
  196. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +0 -2
  197. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +0 -1
  198. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +0 -58
  199. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +0 -1
  200. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +0 -2
  201. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +0 -1
  202. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +0 -64
  203. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +0 -1
  204. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +0 -2
  205. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +0 -1
  206. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +0 -70
  207. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +0 -1
  208. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +0 -2
  209. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +0 -1
  210. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +0 -48
  211. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +0 -1
  212. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +0 -2
  213. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +0 -1
  214. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +0 -74
  215. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +0 -1
  216. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +0 -2
  217. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +0 -1
  218. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +0 -47
  219. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +0 -1
  220. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +0 -2
  221. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +0 -1
  222. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +0 -65
  223. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +0 -1
  224. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +0 -2
  225. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +0 -1
  226. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +0 -43
  227. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +0 -1
  228. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +0 -2
  229. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +0 -1
  230. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +0 -65
  231. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +0 -1
  232. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +0 -2
  233. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +0 -1
  234. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +0 -49
  235. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +0 -1
  236. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +0 -2
  237. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +0 -1
  238. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +0 -79
  239. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +0 -1
  240. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts +0 -2
  241. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts.map +0 -1
  242. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js +0 -329
  243. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js.map +0 -1
  244. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +0 -2
  245. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +0 -1
  246. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +0 -81
  247. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +0 -1
  248. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +0 -34
  249. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +0 -1
  250. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +0 -62
  251. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +0 -1
  252. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts +0 -61
  253. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts.map +0 -1
  254. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js +0 -102
  255. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js.map +0 -1
  256. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +0 -35
  257. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +0 -1
  258. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +0 -73
  259. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +0 -1
  260. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +0 -29
  261. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +0 -1
  262. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +0 -22
  263. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +0 -1
  264. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +0 -30
  265. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +0 -1
  266. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +0 -130
  267. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +0 -1
  268. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +0 -65
  269. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +0 -1
  270. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +0 -262
  271. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +0 -1
  272. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts +0 -2
  273. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts.map +0 -1
  274. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js +0 -100
  275. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js.map +0 -1
  276. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts +0 -2
  277. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts.map +0 -1
  278. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js +0 -22
  279. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js.map +0 -1
  280. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts +0 -11
  281. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts.map +0 -1
  282. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js +0 -19
  283. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js.map +0 -1
  284. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts +0 -2
  285. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts.map +0 -1
  286. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js +0 -196
  287. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js.map +0 -1
  288. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts +0 -70
  289. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts.map +0 -1
  290. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js +0 -247
  291. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js.map +0 -1
  292. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts +0 -21
  293. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts.map +0 -1
  294. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js +0 -40
  295. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js.map +0 -1
  296. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts +0 -8
  297. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts.map +0 -1
  298. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js +0 -83
  299. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js.map +0 -1
  300. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +0 -151
  301. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +0 -1
  302. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +0 -299
  303. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +0 -1
  304. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts +0 -39
  305. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts.map +0 -1
  306. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js +0 -122
  307. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js.map +0 -1
  308. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts +0 -39
  309. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts.map +0 -1
  310. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js +0 -133
  311. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js.map +0 -1
  312. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts +0 -22
  313. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts.map +0 -1
  314. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js +0 -50
  315. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js.map +0 -1
  316. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +0 -30
  317. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +0 -1
  318. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +0 -204
  319. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +0 -1
  320. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts +0 -80
  321. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts.map +0 -1
  322. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js +0 -306
  323. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js.map +0 -1
  324. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +0 -49
  325. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +0 -1
  326. package/payload/platform/services/claude-session-manager/dist/session-store.js +0 -52
  327. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +0 -1
  328. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +0 -83
  329. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +0 -1
  330. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +0 -345
  331. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +0 -1
  332. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts +0 -104
  333. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts.map +0 -1
  334. package/payload/platform/services/telegram-channel/dist/turn-follow.js +0 -408
  335. package/payload/platform/services/telegram-channel/dist/turn-follow.js.map +0 -1
  336. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +0 -104
  337. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +0 -1
  338. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +0 -393
  339. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +0 -1
@@ -1,393 +0,0 @@
1
- // Turn-end detector for the WhatsApp native channel (Task 832, extended in
2
- // Task 839). Pure of the MCP SDK so it unit-tests in isolation.
3
- // `reduceTurnFromLines` folds one turn's JSONL lines into the delivery decision;
4
- // `followTurnEnds` tails the session JSONL from a byte offset and reports every
5
- // assistant end_turn (not just the first), so a follow-on turn produced from a
6
- // mid-turn-queued message is covered too.
7
- import { closeSync, openSync, readSync, statSync, watch } from 'node:fs';
8
- // The reply tools the agent uses to deliver. Any one appearing in a turn means
9
- // the operator received something this turn — so the turn was not silent and no
10
- // text fallback fires. The single-target server registers as 'whatsapp-channel'
11
- // (WA_CHANNEL_SERVER_NAME in claude-session-manager's wa-channel-mcp.ts); the
12
- // unified multi-target server registers as 'channel' (CHANNEL_SERVER_NAME in
13
- // channel-mcp.ts), so its delivery tools are mcp__channel__reply{,-document}.
14
- // Both name shapes are held so this one detector serves both followers; the
15
- // names are kept as literals here to avoid a cross-package import. A name from
16
- // the other mode never appears in a turn, so carrying all four is safe.
17
- // Task 2078 retired every one of these tools, and this set is deliberately KEPT.
18
- // It reads HISTORICAL transcripts: a session that ran before the retirement has
19
- // real reply tool_use blocks in its JSONL, and `replied` must stay true for them
20
- // or a re-read of an old turn reports an answer that was delivered as one that
21
- // was not. No live turn can add a name to it.
22
- const REPLY_TOOL_NAMES = new Set([
23
- 'mcp__whatsapp-channel__reply',
24
- 'mcp__whatsapp-channel__reply-document',
25
- 'mcp__channel__reply',
26
- 'mcp__channel__reply-document',
27
- ]);
28
- // The `<channel source="…">` envelope Claude Code wraps a channel notification in.
29
- // Platform channels also stamp the row `isMeta: true` + `origin.kind === 'channel'`;
30
- // native Claude Code channels (maxy-lite) emit the wrapper with no stamp, which
31
- // is why parse-transcript.ts accepts stamp-or-wrapper on its user-row branch.
32
- // The wrapper fallback is carried on the attachment branch too — parse-transcript
33
- // requires the stamp there — because an unstamped queued_command carrying the
34
- // envelope is still one inbound the turn answered, and under-counting it is the
35
- // drift this task exists to close. The two discriminators never disagreed across
36
- // session e59ed04e's 86 channel prompts (75/75 user rows, 11/11 attachments).
37
- const CHANNEL_WRAPPER_PREFIX = /^<channel\b[^>]*>/;
38
- function isChannelStamped(v) {
39
- return (v?.isMeta === true &&
40
- typeof v.origin === 'object' &&
41
- v.origin !== null &&
42
- v.origin.kind === 'channel');
43
- }
44
- /** True iff this JSONL row is one channel inbound the turn answered. */
45
- function isConsumedInbound(ev) {
46
- if (ev.type === 'user') {
47
- const content = ev.message?.content;
48
- // Array content is a tool_result carrier, never an inbound.
49
- if (typeof content !== 'string')
50
- return false;
51
- return isChannelStamped(ev) || CHANNEL_WRAPPER_PREFIX.test(content);
52
- }
53
- if (ev.type === 'attachment') {
54
- const att = ev.attachment;
55
- if (att?.type !== 'queued_command' || typeof att.prompt !== 'string')
56
- return false;
57
- return isChannelStamped(att) || CHANNEL_WRAPPER_PREFIX.test(att.prompt);
58
- }
59
- // `queue-operation` rows carry the same prompt text on enqueue/remove, so
60
- // counting them would multiply each inbound. They are never counted.
61
- return false;
62
- }
63
- /** A usage figure the row actually reported, or -1. */
64
- function usageNum(v) {
65
- return typeof v === 'number' && Number.isFinite(v) ? v : -1;
66
- }
67
- /** Fold one turn's JSONL line strings into the delivery decision. Pure. */
68
- export function reduceTurnFromLines(lines) {
69
- let replied = false;
70
- let finalText = '';
71
- let reachedEndTurn = false;
72
- let consumedInbounds = 0;
73
- let cacheReadTokens = -1;
74
- let inputTokens = -1;
75
- let outputTokens = -1;
76
- let thinkingBlocks = 0;
77
- let thinkingChars = 0;
78
- let messageId = '';
79
- let toolUseBlocks = 0;
80
- for (const line of lines) {
81
- if (!line)
82
- continue;
83
- let ev;
84
- try {
85
- ev = JSON.parse(line);
86
- }
87
- catch {
88
- continue;
89
- }
90
- if (ev.type !== 'assistant') {
91
- if (isConsumedInbound(ev))
92
- consumedInbounds++;
93
- continue;
94
- }
95
- const msg = ev.message;
96
- const isEnd = msg?.stop_reason === 'end_turn';
97
- // Task 2364 — counted ahead of the content-shape guard below so every
98
- // assistant row in the turn contributes, not only the end_turn row.
99
- if (msg && Array.isArray(msg.content)) {
100
- for (const block of msg.content) {
101
- // Task 2451 — counted here, in the same unguarded pass as thinking, so
102
- // a row whose content is present but whose shape fails the later guard
103
- // still contributes its tool calls.
104
- if (block?.type === 'tool_use')
105
- toolUseBlocks++;
106
- if (block?.type !== 'thinking')
107
- continue;
108
- thinkingBlocks++;
109
- if (typeof block.thinking === 'string')
110
- thinkingChars += block.thinking.length;
111
- }
112
- }
113
- // Task 2451 — a segment normally holds exactly one end_turn row, but a MERGED
114
- // segment holds every end_turn row of one split assistant message. Those rows
115
- // carry identical `id` and `usage` (measured on msg_011Cdk9NsrGoTd4dEsi25uvq),
116
- // so re-assigning per row is last-wins over equal values.
117
- if (isEnd) {
118
- messageId = typeof msg?.id === 'string' ? msg.id : '';
119
- cacheReadTokens = usageNum(msg?.usage?.cache_read_input_tokens);
120
- inputTokens = usageNum(msg?.usage?.input_tokens);
121
- outputTokens = usageNum(msg?.usage?.output_tokens);
122
- }
123
- if (!msg || !Array.isArray(msg.content)) {
124
- // Task 2451 — `finalText` is NOT cleared here. It is '' unless an earlier
125
- // end_turn row of the same merged message already contributed text, and
126
- // erasing that would drop an answer this segment holds.
127
- if (isEnd)
128
- reachedEndTurn = true;
129
- continue;
130
- }
131
- let endText = '';
132
- for (const block of msg.content) {
133
- if (block?.type === 'tool_use' && typeof block.name === 'string' && REPLY_TOOL_NAMES.has(block.name)) {
134
- replied = true;
135
- }
136
- else if (block?.type === 'text' && typeof block.text === 'string' && isEnd) {
137
- endText += block.text;
138
- }
139
- }
140
- if (isEnd) {
141
- reachedEndTurn = true;
142
- // Task 2451 — accumulate rather than assign: a split message is ONE answer,
143
- // so its text is the concatenation of its rows. Identical to assignment on
144
- // an ordinary segment, which holds a single end_turn row.
145
- finalText += endText;
146
- }
147
- }
148
- return {
149
- replied,
150
- finalText,
151
- reachedEndTurn,
152
- segmentStart: -1,
153
- segmentEnd: -1,
154
- messageId,
155
- toolUseBlocks,
156
- consumedInbounds,
157
- context: { cacheReadTokens, inputTokens, outputTokens, thinkingBlocks, thinkingChars },
158
- };
159
- }
160
- /** True iff `line` is an assistant message with stop_reason 'end_turn'. */
161
- function isAssistantEndTurn(line) {
162
- if (!line)
163
- return false;
164
- let ev;
165
- try {
166
- ev = JSON.parse(line);
167
- }
168
- catch {
169
- return false;
170
- }
171
- return ev.type === 'assistant' && ev.message?.stop_reason === 'end_turn';
172
- }
173
- /** The `message.id` of an assistant row, or '' for any other row shape. */
174
- function rowMessageId(line) {
175
- if (!line)
176
- return '';
177
- let ev;
178
- try {
179
- ev = JSON.parse(line);
180
- }
181
- catch {
182
- return '';
183
- }
184
- if (ev.type !== 'assistant')
185
- return '';
186
- return typeof ev.message?.id === 'string' ? ev.message.id : '';
187
- }
188
- /**
189
- * Task 2451 — a close reducing to no text, no tool use and at least one thinking
190
- * block is not a finished turn. Claude Code 2.1.222 persists one assistant
191
- * message as one row per content block, each stamped end_turn, so the thinking
192
- * row closes the turn before the text row exists. Measured on account 5bc2c0e2:
193
- * 89 of 481 end_turn rows are thinking-only and 89 of 89 are followed by a text
194
- * end_turn row of the same message.
195
- */
196
- function isIncompleteClose(o) {
197
- // A close with no `message.id` is never held. The hold is released by the
198
- // first row whose id differs, and `rowMessageId` reports '' for EVERY
199
- // non-assistant row, so a hold keyed on '' matches the next user row instead
200
- // of releasing on it: that row joins the held segment, the empty turn takes
201
- // its inbound, and the real answer arrives with nothing left to consume and is
202
- // discarded at the server's credit guard. That is precisely the loss this
203
- // hold exists to prevent, reintroduced by the identity test degenerating.
204
- if (o.messageId === '')
205
- return false;
206
- return o.finalText === '' && o.toolUseBlocks === 0 && o.context.thinkingBlocks >= 1;
207
- }
208
- /**
209
- * Tail `jsonlPath` from `startOffset` for the life of the session, invoking
210
- * `onTurnEnd` once per TURN. Task 2451: that is once per assistant end_turn
211
- * EXCEPT where one message was split across several end_turn rows, which are
212
- * merged into a single call. Each call carries that turn's outcome
213
- * (Task 839). Unlike a one-shot follow it does not stop at the first end_turn:
214
- * it segments the JSONL at each end_turn so a follow-on turn produced from a
215
- * mid-turn-queued message is reported too. The process dies with the session,
216
- * so there is no per-turn timeout; the promise resolves only when the file
217
- * becomes unreadable (mirrors watchForGrowth's stat-failure bail). Never rejects.
218
- */
219
- export async function followTurnEnds(jsonlPath, startOffset, onTurnEnd, opts = {}) {
220
- let baseSize;
221
- try {
222
- baseSize = statSync(jsonlPath).size;
223
- }
224
- catch {
225
- return;
226
- }
227
- return new Promise((resolve) => {
228
- let offset = Math.min(startOffset, baseSize);
229
- let carry = '';
230
- // Task 2078 — byte position of the first line of the segment being built,
231
- // and of the end of the last line consumed. Both advance only on a
232
- // fully-delimited line, so a partial trailing line in `carry` never moves
233
- // them, and a multi-byte character split across two reads cannot
234
- // desynchronise them: each line's own utf8 length is measured after the
235
- // line is complete.
236
- let segStart = Math.min(startOffset, baseSize);
237
- let segEnd = segStart;
238
- // The lines of the turn currently being accumulated; reset after each
239
- // end_turn so each onTurnEnd sees exactly one turn's lines. Task 2451: a
240
- // merged segment spans every end_turn row of one split message, which is
241
- // still one turn's lines.
242
- let segment = [];
243
- const state = opts.state;
244
- const now = opts.now ?? (() => Date.now());
245
- // Task 2451 — the held segment's lines and its byte start. `heldId` is the
246
- // message identity a later row must match to extend it. Null when not holding.
247
- let heldSegment = null;
248
- let heldId = '';
249
- let heldStart = 0;
250
- /** Emit an outcome over the given lines and record it on the shared state. */
251
- const emit = (lines, start, end) => {
252
- const outcome = reduceTurnFromLines(lines);
253
- outcome.segmentStart = start;
254
- outcome.segmentEnd = end;
255
- if (state)
256
- state.lastMessageId = outcome.messageId;
257
- onTurnEnd(outcome);
258
- };
259
- /** Release a held segment as its own (empty-answer) turn. */
260
- const clearHold = () => {
261
- heldSegment = null;
262
- heldId = '';
263
- if (state) {
264
- state.held = false;
265
- state.heldMessageId = '';
266
- state.heldSinceMs = -1;
267
- }
268
- };
269
- // Declared ahead of `settle`, which calls it: both are const arrow functions
270
- // in one scope, so the reverse order throws a TDZ ReferenceError on the
271
- // watcher-error path, which TypeScript does not report.
272
- const flushHeld = (end) => {
273
- if (!heldSegment)
274
- return;
275
- const lines = heldSegment;
276
- const start = heldStart;
277
- clearHold();
278
- emit(lines, start, end);
279
- };
280
- let settled = false;
281
- const settle = () => {
282
- if (settled)
283
- return;
284
- settled = true;
285
- watcher.close();
286
- clearInterval(poll);
287
- // Task 2451 — a hold outstanding when the session ends is that answer's
288
- // last chance to be reported. Flush before the promise resolves and the
289
- // owning server clears its counters.
290
- flushHeld(segEnd);
291
- resolve();
292
- };
293
- // Poll as well as watch: fs.watch misses appends on some platforms (notably
294
- // macOS), so a light poll guarantees growth is seen within the interval.
295
- const poll = setInterval(() => drain(), 200);
296
- // Fully synchronous read of newly-appended bytes. Being synchronous, two
297
- // pending invocations (the poll and the fs.watch callback) run to completion
298
- // serially on the event loop, so `offset`/`carry`/`segment` advance
299
- // atomically per call — overlapping reads can never reassemble bytes out of
300
- // order or split a turn across two onTurnEnd calls.
301
- const drain = () => {
302
- let end;
303
- try {
304
- end = statSync(jsonlPath).size;
305
- }
306
- catch {
307
- settle();
308
- return;
309
- }
310
- if (end <= offset)
311
- return;
312
- let buf;
313
- try {
314
- const fd = openSync(jsonlPath, 'r');
315
- try {
316
- buf = Buffer.alloc(end - offset);
317
- readSync(fd, buf, 0, buf.length, offset);
318
- }
319
- finally {
320
- closeSync(fd);
321
- }
322
- }
323
- catch {
324
- settle();
325
- return;
326
- }
327
- offset = end;
328
- carry += buf.toString('utf8');
329
- let nl = carry.indexOf('\n');
330
- while (nl !== -1) {
331
- const line = carry.slice(0, nl);
332
- carry = carry.slice(nl + 1);
333
- nl = carry.indexOf('\n');
334
- // Task 2451 — a row belonging to a different message ends the held one.
335
- // Releasing here rather than at the next end_turn keeps the hold as short
336
- // as the transcript allows: a following user or tool row frees it at once.
337
- // `segEnd` has not yet advanced past this line, so the flushed segment's
338
- // end offset correctly excludes the releasing row, and `segStart` must
339
- // move to that same boundary or the next outcome's byte range re-covers
340
- // the flushed turn (webchat ships those offsets to the gateway).
341
- if (heldSegment && rowMessageId(line) !== heldId) {
342
- flushHeld(segEnd);
343
- segStart = segEnd;
344
- }
345
- if (heldSegment) {
346
- heldSegment.push(line);
347
- }
348
- else {
349
- segment.push(line);
350
- }
351
- segEnd += Buffer.byteLength(line, 'utf8') + 1;
352
- if (!isAssistantEndTurn(line))
353
- continue;
354
- if (heldSegment) {
355
- // Same message.id and it closes again: the rest of the split message
356
- // has arrived. Emit the merged segment, empty text included — a merge
357
- // that is still empty is an honest empty-answer turn.
358
- const lines = heldSegment;
359
- const start = heldStart;
360
- clearHold();
361
- emit(lines, start, segEnd);
362
- segStart = segEnd;
363
- continue;
364
- }
365
- const outcome = reduceTurnFromLines(segment);
366
- if (isIncompleteClose(outcome)) {
367
- heldSegment = segment;
368
- heldId = outcome.messageId;
369
- heldStart = segStart;
370
- if (state) {
371
- state.held = true;
372
- state.heldMessageId = outcome.messageId;
373
- state.heldSinceMs = now();
374
- }
375
- segment = [];
376
- segStart = segEnd;
377
- continue;
378
- }
379
- outcome.segmentStart = segStart;
380
- outcome.segmentEnd = segEnd;
381
- if (state)
382
- state.lastMessageId = outcome.messageId;
383
- onTurnEnd(outcome);
384
- segment = [];
385
- segStart = segEnd;
386
- }
387
- };
388
- const watcher = watch(jsonlPath, { persistent: false }, () => drain());
389
- watcher.on('error', () => settle());
390
- drain(); // catch lines already present between startOffset and now
391
- });
392
- }
393
- //# sourceMappingURL=turn-follow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"turn-follow.js","sourceRoot":"","sources":["../src/turn-follow.ts"],"names":[],"mappings":"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"}