@rubytech/create-maxy-code 0.1.593 → 0.1.595

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 (270) hide show
  1. package/package.json +2 -2
  2. package/payload/platform/lib/telegram-button-labels/dist/index.d.ts +19 -0
  3. package/payload/platform/lib/telegram-button-labels/dist/index.d.ts.map +1 -0
  4. package/payload/platform/lib/telegram-button-labels/dist/index.js +84 -0
  5. package/payload/platform/lib/telegram-button-labels/dist/index.js.map +1 -0
  6. package/payload/platform/lib/telegram-button-labels/src/__tests__/store.test.ts +67 -0
  7. package/payload/platform/lib/telegram-button-labels/src/index.ts +88 -0
  8. package/payload/platform/lib/telegram-button-labels/tsconfig.json +9 -0
  9. package/payload/platform/lib/telegram-button-labels/vitest.config.ts +9 -0
  10. package/payload/platform/package.json +3 -2
  11. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +12 -3
  12. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +10 -0
  13. package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -0
  14. package/payload/platform/plugins/docs/references/internals.md +1 -1
  15. package/payload/platform/plugins/docs/references/telegram-guide.md +10 -1
  16. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js +43 -0
  17. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js.map +1 -1
  18. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
  19. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js +21 -0
  20. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -1
  21. package/payload/platform/scripts/__tests__/agent-identity-reconcile.test.sh +110 -0
  22. package/payload/platform/scripts/__tests__/check-orphan-dist.test.sh +87 -0
  23. package/payload/platform/scripts/check-orphan-dist.mjs +143 -0
  24. package/payload/platform/scripts/lib/agent-identity-reconcile.sh +122 -0
  25. package/payload/platform/scripts/lib/provision-account-dir.sh +8 -26
  26. package/payload/platform/scripts/setup-account.sh +15 -0
  27. package/payload/platform/services/claude-session-manager/dist/index.js +5 -0
  28. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  29. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +5 -0
  30. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -1
  31. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +42 -1
  32. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -1
  33. package/payload/platform/templates/agents/public/IDENTITY.md +3 -3
  34. package/payload/server/server.js +543 -409
  35. package/payload/platform/lib/anthropic-key/dist/index.d.ts +0 -22
  36. package/payload/platform/lib/anthropic-key/dist/index.d.ts.map +0 -1
  37. package/payload/platform/lib/anthropic-key/dist/index.js +0 -232
  38. package/payload/platform/lib/anthropic-key/dist/index.js.map +0 -1
  39. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +0 -37
  40. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +0 -1
  41. package/payload/platform/lib/graph-search/dist/query-expansion.js +0 -101
  42. package/payload/platform/lib/graph-search/dist/query-expansion.js.map +0 -1
  43. package/payload/platform/lib/oauth-llm/dist/index.d.ts +0 -116
  44. package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +0 -1
  45. package/payload/platform/lib/oauth-llm/dist/index.js +0 -386
  46. package/payload/platform/lib/oauth-llm/dist/index.js.map +0 -1
  47. package/payload/platform/lib/screening-patterns/dist/index.d.ts +0 -29
  48. package/payload/platform/lib/screening-patterns/dist/index.d.ts.map +0 -1
  49. package/payload/platform/lib/screening-patterns/dist/index.js +0 -48
  50. package/payload/platform/lib/screening-patterns/dist/index.js.map +0 -1
  51. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts +0 -2
  52. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts.map +0 -1
  53. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js +0 -34
  54. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js.map +0 -1
  55. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +0 -39
  56. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +0 -1
  57. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +0 -249
  58. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +0 -1
  59. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts +0 -6
  60. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts.map +0 -1
  61. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js +0 -32
  62. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js.map +0 -1
  63. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +0 -283
  64. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +0 -1
  65. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +0 -1155
  66. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +0 -1
  67. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +0 -90
  68. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +0 -1
  69. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +0 -551
  70. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +0 -1
  71. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +0 -17
  72. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +0 -1
  73. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +0 -186
  74. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +0 -1
  75. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +0 -29
  76. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +0 -1
  77. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +0 -105
  78. package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +0 -1
  79. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +0 -38
  80. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +0 -1
  81. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +0 -817
  82. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +0 -1
  83. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +0 -30
  84. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +0 -1
  85. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +0 -215
  86. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +0 -1
  87. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +0 -19
  88. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +0 -1
  89. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +0 -151
  90. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +0 -1
  91. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +0 -6
  92. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +0 -1
  93. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +0 -89
  94. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +0 -1
  95. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts +0 -2
  96. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts.map +0 -1
  97. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js +0 -90
  98. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js.map +0 -1
  99. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts +0 -2
  100. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts.map +0 -1
  101. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +0 -226
  102. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +0 -1
  103. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +0 -60
  104. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +0 -1
  105. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +0 -169
  106. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +0 -1
  107. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +0 -248
  108. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +0 -1
  109. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +0 -824
  110. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +0 -1
  111. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +0 -63
  112. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +0 -1
  113. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +0 -210
  114. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +0 -1
  115. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +0 -35
  116. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +0 -1
  117. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +0 -28
  118. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +0 -1
  119. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +0 -2
  120. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +0 -1
  121. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +0 -68
  122. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +0 -1
  123. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +0 -2
  124. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +0 -1
  125. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +0 -88
  126. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +0 -1
  127. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +0 -2
  128. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +0 -1
  129. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +0 -58
  130. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +0 -1
  131. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +0 -2
  132. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +0 -1
  133. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +0 -64
  134. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +0 -1
  135. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +0 -2
  136. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +0 -1
  137. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +0 -70
  138. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +0 -1
  139. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +0 -2
  140. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +0 -1
  141. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +0 -48
  142. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +0 -1
  143. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +0 -2
  144. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +0 -1
  145. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +0 -74
  146. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +0 -1
  147. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +0 -2
  148. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +0 -1
  149. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +0 -47
  150. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +0 -1
  151. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +0 -2
  152. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +0 -1
  153. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +0 -65
  154. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +0 -1
  155. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +0 -2
  156. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +0 -1
  157. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +0 -43
  158. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +0 -1
  159. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +0 -2
  160. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +0 -1
  161. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +0 -65
  162. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +0 -1
  163. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +0 -2
  164. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +0 -1
  165. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +0 -49
  166. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +0 -1
  167. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +0 -2
  168. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +0 -1
  169. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +0 -79
  170. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +0 -1
  171. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts +0 -2
  172. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts.map +0 -1
  173. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js +0 -329
  174. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js.map +0 -1
  175. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +0 -2
  176. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +0 -1
  177. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +0 -81
  178. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +0 -1
  179. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +0 -34
  180. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +0 -1
  181. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +0 -62
  182. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +0 -1
  183. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts +0 -61
  184. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts.map +0 -1
  185. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js +0 -102
  186. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js.map +0 -1
  187. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +0 -35
  188. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +0 -1
  189. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +0 -73
  190. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +0 -1
  191. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +0 -29
  192. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +0 -1
  193. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +0 -22
  194. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +0 -1
  195. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +0 -30
  196. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +0 -1
  197. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +0 -130
  198. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +0 -1
  199. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +0 -65
  200. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +0 -1
  201. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +0 -262
  202. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +0 -1
  203. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts +0 -2
  204. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts.map +0 -1
  205. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js +0 -100
  206. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js.map +0 -1
  207. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts +0 -2
  208. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts.map +0 -1
  209. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js +0 -22
  210. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js.map +0 -1
  211. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts +0 -11
  212. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts.map +0 -1
  213. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js +0 -19
  214. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js.map +0 -1
  215. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts +0 -2
  216. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts.map +0 -1
  217. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js +0 -196
  218. package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js.map +0 -1
  219. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts +0 -70
  220. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts.map +0 -1
  221. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js +0 -247
  222. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js.map +0 -1
  223. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts +0 -21
  224. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts.map +0 -1
  225. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js +0 -40
  226. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js.map +0 -1
  227. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts +0 -8
  228. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts.map +0 -1
  229. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js +0 -83
  230. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js.map +0 -1
  231. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +0 -151
  232. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +0 -1
  233. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +0 -299
  234. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +0 -1
  235. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts +0 -39
  236. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts.map +0 -1
  237. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js +0 -122
  238. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js.map +0 -1
  239. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts +0 -39
  240. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts.map +0 -1
  241. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js +0 -133
  242. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js.map +0 -1
  243. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts +0 -22
  244. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts.map +0 -1
  245. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js +0 -50
  246. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js.map +0 -1
  247. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +0 -30
  248. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +0 -1
  249. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +0 -204
  250. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +0 -1
  251. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts +0 -80
  252. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts.map +0 -1
  253. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js +0 -306
  254. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js.map +0 -1
  255. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +0 -49
  256. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +0 -1
  257. package/payload/platform/services/claude-session-manager/dist/session-store.js +0 -52
  258. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +0 -1
  259. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +0 -83
  260. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +0 -1
  261. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +0 -345
  262. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +0 -1
  263. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts +0 -104
  264. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts.map +0 -1
  265. package/payload/platform/services/telegram-channel/dist/turn-follow.js +0 -408
  266. package/payload/platform/services/telegram-channel/dist/turn-follow.js.map +0 -1
  267. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +0 -104
  268. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +0 -1
  269. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +0 -393
  270. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +0 -1
@@ -1,40 +0,0 @@
1
- import { sendMessage, buildInlineKeyboard, } from "../lib/telegram.js";
2
- import { resolveBotToken, listRegisteredBots } from "../lib/account-token.js";
3
- export async function message(params) {
4
- const platformRoot = process.env.PLATFORM_ROOT;
5
- const accountId = process.env.ACCOUNT_ID;
6
- const botToken = platformRoot && accountId ? resolveBotToken(platformRoot, accountId, params.botId) : null;
7
- if (!botToken) {
8
- // Task 2368 — an account holds N bots and nothing else surfaces their ids to
9
- // an agent, so the refusal enumerates them rather than failing opaquely. A
10
- // caller that named the wrong bot, or guessed, gets the right answer here and
11
- // succeeds on its next call. It never picks one: which bot a message goes out
12
- // on is the caller's decision, and choosing would put a stranger's message on
13
- // the operator's own bot.
14
- const registered = platformRoot && accountId ? listRegisteredBots(platformRoot, accountId) : [];
15
- const known = registered.length === 0
16
- ? "This account has no Telegram bot registered — run telegram:configure first."
17
- : `This account's registered bots: ${registered.map((b) => `${b.id} (${b.role}${b.agent ? `, ${b.agent}` : ""})`).join("; ")}.`;
18
- return {
19
- sent: false,
20
- channel: params.channel,
21
- error: `No Telegram bot "${params.botId}" is registered on this account. ${known}`,
22
- };
23
- }
24
- const replyMarkup = params.inlineKeyboard
25
- ? buildInlineKeyboard(params.inlineKeyboard)
26
- : undefined;
27
- const result = await sendMessage(botToken, {
28
- chatId: params.chatId,
29
- text: params.text,
30
- parseMode: params.parseMode,
31
- replyMarkup,
32
- });
33
- return {
34
- sent: result.ok,
35
- channel: "telegram",
36
- messageId: result.messageId,
37
- error: result.error,
38
- };
39
- }
40
- //# sourceMappingURL=message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/tools/message.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,GAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAqB9E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,MAAM,QAAQ,GACZ,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,6EAA6E;QAC7E,2EAA2E;QAC3E,8EAA8E;QAC9E,8EAA8E;QAC9E,8EAA8E;QAC9E,0BAA0B;QAC1B,MAAM,UAAU,GAAG,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC;YACnC,CAAC,CAAC,6EAA6E;YAC/E,CAAC,CAAC,mCAAmC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAClI,OAAO;YACL,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,oBAAoB,MAAM,CAAC,KAAK,oCAAoC,KAAK,EAAE;SACnF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAuC,MAAM,CAAC,cAAc;QAC3E,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,EAAE;QACf,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
@@ -1,8 +0,0 @@
1
- import { spawn as realSpawn } from "node:child_process";
2
- type SpawnFn = typeof realSpawn;
3
- /** Run the summary. Throws on every failure mode (the caller decides whether a
4
- * summary failure should degrade gracefully — the verbatim file is already on
5
- * disk by the time this runs). */
6
- export declare function summarise(url: string, text: string, _spawn?: SpawnFn): Promise<string>;
7
- export {};
8
- //# sourceMappingURL=summarise.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summarise.d.ts","sourceRoot":"","sources":["../../src/lib/summarise.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQxD,KAAK,OAAO,GAAG,OAAO,SAAS,CAAC;AAchC;;mCAEmC;AACnC,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,OAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
@@ -1,83 +0,0 @@
1
- // Transformative summary of fetched page text via a Claude Code subprocess.
2
- //
3
- // VALIDATE TEXT ──▶ SPAWN claude --print --model <haiku> --max-turns 1 ──▶ STDOUT
4
- // │ │ │
5
- // ├─ empty → throw ├─ ENOENT (claude not in PATH) → throw │
6
- // │ ├─ non-zero exit → throw (stderr + stdout) │
7
- // │ ├─ timeout → SIGTERM → throw │
8
- // │ └─ empty stdout → throw │
9
- // └───────────────────────────────────────────────────────────▶ return text
10
- //
11
- // Claude Code handles its own OAuth internally — no API key, no SDK. This is
12
- // the same mechanism the workflows plugin uses for LLM steps. The summary is
13
- // transformative, so it does not trip WebFetch's copyright refusal; the
14
- // verbatim path keeps the model out entirely.
15
- import { spawn as realSpawn } from "node:child_process";
16
- /** Haiku is the right tier for a one-shot summary (cheap, fast). Overridable
17
- * via env for forward-compat with model id changes. */
18
- const SUMMARY_MODEL = process.env.URL_GET_SUMMARY_MODEL ?? "claude-haiku-4-5";
19
- const SUMMARY_TIMEOUT_MS = 60_000;
20
- const MAX_STDERR_BYTES = 4096;
21
- /** Builds the summarisation prompt. A single principled instruction, not a
22
- * checklist of conditions — per the project's LLM-classification doctrine,
23
- * a prescriptive rule list turns the model into a brittle pattern matcher. */
24
- function buildPrompt(url, text) {
25
- return (`Summarise the page below for a reader deciding whether to open the full text. ` +
26
- `Capture what the page is, its main claims, and anything that would matter to ` +
27
- `someone searching for it later. Write only the summary — no preamble.\n\n` +
28
- `Source: ${url}\n\n---\n${text}`);
29
- }
30
- /** Run the summary. Throws on every failure mode (the caller decides whether a
31
- * summary failure should degrade gracefully — the verbatim file is already on
32
- * disk by the time this runs). */
33
- export async function summarise(url, text, _spawn = realSpawn) {
34
- if (!text.trim()) {
35
- throw new Error("nothing to summarise — cleaned text is empty");
36
- }
37
- const prompt = buildPrompt(url, text);
38
- const args = [
39
- "--print",
40
- "--model",
41
- SUMMARY_MODEL,
42
- "--max-turns",
43
- "1",
44
- "--permission-mode",
45
- "dontAsk",
46
- prompt,
47
- ];
48
- return new Promise((resolve, reject) => {
49
- const proc = _spawn("claude", args, { stdio: ["ignore", "pipe", "pipe"] });
50
- let stdout = "";
51
- let stderr = "";
52
- proc.stdout?.on("data", (chunk) => {
53
- stdout += chunk.toString("utf-8");
54
- });
55
- proc.stderr?.on("data", (chunk) => {
56
- if (stderr.length < MAX_STDERR_BYTES) {
57
- stderr += chunk.toString("utf-8").slice(0, MAX_STDERR_BYTES - stderr.length);
58
- }
59
- });
60
- const timer = setTimeout(() => {
61
- proc.kill("SIGTERM");
62
- reject(new Error(`summary timed out after ${SUMMARY_TIMEOUT_MS}ms`));
63
- }, SUMMARY_TIMEOUT_MS);
64
- proc.on("close", (code) => {
65
- clearTimeout(timer);
66
- if (code !== 0) {
67
- const tail = stderr.trim() ? ` stderr: ${stderr.trim()}` : "";
68
- reject(new Error(`claude exited ${code}${tail}`));
69
- return;
70
- }
71
- if (!stdout.trim()) {
72
- reject(new Error("claude returned an empty summary"));
73
- return;
74
- }
75
- resolve(stdout.trim());
76
- });
77
- proc.on("error", (err) => {
78
- clearTimeout(timer);
79
- reject(new Error(`failed to spawn claude: ${err.message}`));
80
- });
81
- });
82
- }
83
- //# sourceMappingURL=summarise.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summarise.js","sourceRoot":"","sources":["../../src/lib/summarise.ts"],"names":[],"mappings":"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"}
@@ -1,151 +0,0 @@
1
- /**
2
- * LLM calls for workflow steps via Claude Code subprocess.
3
- *
4
- * Spawns `claude --print` as a child process with the resolved prompt.
5
- * Claude Code handles its own OAuth authentication internally — no
6
- * credential reading, token refresh, or API endpoint logic needed here.
7
- * This is the same mechanism the admin chat uses (claude-agent.ts).
8
- *
9
- * Two spawn modes:
10
- *
11
- * ONE-SHOT (no mcpServers)
12
- * ────────────────────────
13
- * VALIDATE PROMPT
14
- * │
15
- * ├─ empty → throw (no silent fallback)
16
- * │
17
- * v
18
- * SPAWN claude --print --model <model> --max-turns 1
19
- * │
20
- * ├─ ENOENT (not in PATH) → throw
21
- * ├─ non-zero exit → throw with stderr + stdout
22
- * ├─ timeout → SIGTERM → throw
23
- * ├─ empty stdout → throw
24
- * └─ stdout text → return
25
- *
26
- * AGENTIC (mcpServers declared)
27
- * ─────────────────────────────
28
- * VALIDATE PROMPT
29
- * │
30
- * v
31
- * WRITE TEMP MCP CONFIG (mkdtemp + writeFile)
32
- * │
33
- * ├─ disk error → throw (cleanup skipped — nothing to clean)
34
- * │
35
- * v
36
- * SPAWN claude --print --model <model> --max-turns <N>
37
- * --mcp-config <tmp/mcp.json> --strict-mcp-config
38
- * --permission-mode dontAsk
39
- * │
40
- * ├─ same error paths as one-shot
41
- * │
42
- * v
43
- * CLEANUP TEMP CONFIG (finally — always runs)
44
- * │
45
- * ├─ ENOENT → swallow (already cleaned or never written)
46
- * └─ other error → log, don't throw (cleanup must not mask spawn error)
47
- *
48
- * probeLlmHealth() shares the same spawn path with a trivial "pong"
49
- * prompt and a shorter timeout. Used as the pre-flight check before
50
- * executing workflow LLM steps (Task 74 — graceful degradation).
51
- */
52
- import type { McpServerConfig } from "./step-resolver.js";
53
- interface SpawnedChildLike {
54
- stdout: {
55
- on(event: "data", cb: (chunk: Buffer) => void): void;
56
- };
57
- stderr: {
58
- on(event: "data", cb: (chunk: Buffer) => void): void;
59
- };
60
- on(event: "close", cb: (code: number | null) => void): void;
61
- on(event: "error", cb: (err: Error) => void): void;
62
- kill(signal?: string): void;
63
- }
64
- type SpawnFn = (cmd: string, args: string[], opts: unknown) => SpawnedChildLike;
65
- export interface LlmCallParams {
66
- prompt: string;
67
- model: string;
68
- maxTokens?: number;
69
- timeoutMs: number;
70
- /** MCP server bindings for agentic steps. */
71
- mcpServers?: Record<string, McpServerConfig>;
72
- /** Max agent turns (default 1, or 10 when mcpServers present). */
73
- maxTurns?: number;
74
- /**
75
- * Optional spawn function override — used only by tests to inject a
76
- * fake child process. Production callers must omit this.
77
- */
78
- _spawn?: SpawnFn;
79
- }
80
- export interface ProbeLlmHealthParams {
81
- model: string;
82
- /** Probe timeout — defaults to 10 seconds. */
83
- timeoutMs?: number;
84
- /** Test-only spawn injection. */
85
- _spawn?: SpawnFn;
86
- }
87
- export interface ProbeResult {
88
- ok: boolean;
89
- latencyMs: number;
90
- /** Set when ok is false. One-line error summary suitable for logs and
91
- * substitution into fallback template `{{_error}}`. */
92
- error?: string;
93
- }
94
- /**
95
- * Why readAdminModel returns a tuple instead of string | null:
96
- * the caller persists the result into WorkflowRun.error, which the admin
97
- * agent reads. A silent null collapsed six distinct failure modes (ENOENT,
98
- * EACCES, parse error, missing field, wrong type, empty string) into a
99
- * single error string asserting "adminModel both unset" — which was often
100
- * a lie (the file existed and was correct; something else had failed).
101
- * The tuple surfaces the exact reason so the persisted error and the
102
- * stderr log agree, and the admin agent knows whether to inspect the
103
- * file, the permissions, the path, or a concurrent-write race.
104
- */
105
- export type AdminModelReason = "ok" | "enoent" | "eacces" | "fs_error" | "parse_error" | "field_missing" | "field_wrong_type" | "field_empty";
106
- export interface AdminModelResolution {
107
- /** Model ID when reason is "ok"; null for every failure mode. */
108
- model: string | null;
109
- reason: AdminModelReason;
110
- /** Absolute path attempted — included in failure logs so the operator
111
- * can inspect the exact file that was read. */
112
- path: string;
113
- /** Underlying error message for fs_error and parse_error. */
114
- error?: string;
115
- }
116
- /**
117
- * Read the account's adminModel from account.json.
118
- * Returns {model, reason, path, error?} — callers branch on .model (null
119
- * means fail) and may surface .reason/.path into user-visible errors.
120
- */
121
- export declare function readAdminModel(platformRoot: string, accountId: string): AdminModelResolution;
122
- /**
123
- * Execute an LLM call by spawning Claude Code.
124
- *
125
- * When mcpServers is provided, spawns in agentic mode: writes a temp
126
- * config file, adds --mcp-config and --strict-mcp-config flags, and
127
- * uses the step's maxTurns (or default 10) instead of 1.
128
- *
129
- * Returns the model's text response. The caller is responsible for
130
- * parsing the response (JSON or raw text) via parseStepOutput().
131
- */
132
- export declare function executeLlmCall(params: LlmCallParams): Promise<string>;
133
- /**
134
- * Lightweight pre-flight probe for LLM availability.
135
- *
136
- * Spawns `claude --print` with a trivial prompt ("pong") and a short
137
- * timeout. Any failure mode that would cause a real LLM step to fail
138
- * (missing binary, dead OAuth token, Anthropic outage, network partition)
139
- * also fails this probe — it is the strongest available signal short
140
- * of running the real workflow.
141
- *
142
- * Called at most once per workflow run, only when the workflow contains
143
- * at least one LLM step. Per-step spawn failures mid-run are handled
144
- * separately by the workflow-execute convergence arm.
145
- *
146
- * SUCCESS → { ok: true, latencyMs }
147
- * FAILURE → { ok: false, latencyMs, error: one-line summary }
148
- */
149
- export declare function probeLlmHealth(params: ProbeLlmHealthParams): Promise<ProbeResult>;
150
- export {};
151
- //# sourceMappingURL=llm-call.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-call.d.ts","sourceRoot":"","sources":["../../src/lib/llm-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1D,UAAU,gBAAgB;IACxB,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IACjE,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IACjE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,gBAAgB,CAAC;AAMhF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB;4DACwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,aAAa,GACb,eAAe,GACf,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB;oDACgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAgD5F;AAsED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA6F3E;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAyBtB"}
@@ -1,299 +0,0 @@
1
- /**
2
- * LLM calls for workflow steps via Claude Code subprocess.
3
- *
4
- * Spawns `claude --print` as a child process with the resolved prompt.
5
- * Claude Code handles its own OAuth authentication internally — no
6
- * credential reading, token refresh, or API endpoint logic needed here.
7
- * This is the same mechanism the admin chat uses (claude-agent.ts).
8
- *
9
- * Two spawn modes:
10
- *
11
- * ONE-SHOT (no mcpServers)
12
- * ────────────────────────
13
- * VALIDATE PROMPT
14
- * │
15
- * ├─ empty → throw (no silent fallback)
16
- * │
17
- * v
18
- * SPAWN claude --print --model <model> --max-turns 1
19
- * │
20
- * ├─ ENOENT (not in PATH) → throw
21
- * ├─ non-zero exit → throw with stderr + stdout
22
- * ├─ timeout → SIGTERM → throw
23
- * ├─ empty stdout → throw
24
- * └─ stdout text → return
25
- *
26
- * AGENTIC (mcpServers declared)
27
- * ─────────────────────────────
28
- * VALIDATE PROMPT
29
- * │
30
- * v
31
- * WRITE TEMP MCP CONFIG (mkdtemp + writeFile)
32
- * │
33
- * ├─ disk error → throw (cleanup skipped — nothing to clean)
34
- * │
35
- * v
36
- * SPAWN claude --print --model <model> --max-turns <N>
37
- * --mcp-config <tmp/mcp.json> --strict-mcp-config
38
- * --permission-mode dontAsk
39
- * │
40
- * ├─ same error paths as one-shot
41
- * │
42
- * v
43
- * CLEANUP TEMP CONFIG (finally — always runs)
44
- * │
45
- * ├─ ENOENT → swallow (already cleaned or never written)
46
- * └─ other error → log, don't throw (cleanup must not mask spawn error)
47
- *
48
- * probeLlmHealth() shares the same spawn path with a trivial "pong"
49
- * prompt and a shorter timeout. Used as the pre-flight check before
50
- * executing workflow LLM steps (Task 74 — graceful degradation).
51
- */
52
- import { spawn as realSpawn } from "node:child_process";
53
- import { readFileSync, writeFileSync, rmSync, mkdtempSync } from "node:fs";
54
- import { resolve, join } from "node:path";
55
- import { tmpdir } from "node:os";
56
- /**
57
- * Read the account's adminModel from account.json.
58
- * Returns {model, reason, path, error?} — callers branch on .model (null
59
- * means fail) and may surface .reason/.path into user-visible errors.
60
- */
61
- export function readAdminModel(platformRoot, accountId) {
62
- // Validate accountId — block path traversal
63
- if (accountId.includes("..") || accountId.includes("/") || accountId.includes("\\")) {
64
- throw new Error(`Invalid accountId: "${accountId}" — path traversal blocked`);
65
- }
66
- const configPath = resolve(platformRoot, "..", "data", "accounts", accountId, "account.json");
67
- let raw;
68
- try {
69
- raw = readFileSync(configPath, "utf-8");
70
- }
71
- catch (err) {
72
- const code = err instanceof Error && "code" in err
73
- ? err.code
74
- : undefined;
75
- const message = err instanceof Error ? err.message : String(err);
76
- const reason = code === "ENOENT" ? "enoent" :
77
- code === "EACCES" ? "eacces" :
78
- "fs_error";
79
- logResolutionFailure(reason, configPath, message);
80
- return { model: null, reason, path: configPath, error: message };
81
- }
82
- let config;
83
- try {
84
- config = JSON.parse(raw);
85
- }
86
- catch (err) {
87
- const message = err instanceof Error ? err.message : String(err);
88
- logResolutionFailure("parse_error", configPath, message);
89
- return { model: null, reason: "parse_error", path: configPath, error: message };
90
- }
91
- const adminModel = config.adminModel;
92
- if (adminModel === undefined) {
93
- logResolutionFailure("field_missing", configPath);
94
- return { model: null, reason: "field_missing", path: configPath };
95
- }
96
- if (typeof adminModel !== "string") {
97
- logResolutionFailure("field_wrong_type", configPath, `adminModel is typeof ${typeof adminModel}`);
98
- return { model: null, reason: "field_wrong_type", path: configPath };
99
- }
100
- if (adminModel === "") {
101
- logResolutionFailure("field_empty", configPath);
102
- return { model: null, reason: "field_empty", path: configPath };
103
- }
104
- return { model: adminModel, reason: "ok", path: configPath };
105
- }
106
- function logResolutionFailure(reason, path, error) {
107
- const errSegment = error ? ` error=${error}` : "";
108
- console.error(`[llm-call] adminModel resolution FAILED: reason=${reason} path=${path}${errSegment}`);
109
- }
110
- // ─────────────────────────────────────────────────────────────
111
- // Temp MCP config management
112
- // ─────────────────────────────────────────────────────────────
113
- /**
114
- * Write a temporary MCP config file for agentic steps.
115
- * Returns the path to the config file.
116
- *
117
- * The file is written to a unique temp directory (mkdtempSync)
118
- * to avoid collisions between concurrent workflow executions.
119
- * Format matches Claude Code's --mcp-config JSON input:
120
- * { "mcpServers": { "name": { "command": ..., "args": ..., "env": ... } } }
121
- */
122
- function writeTempMcpConfig(mcpServers) {
123
- const dir = mkdtempSync(join(tmpdir(), "maxy-mcp-"));
124
- const configPath = join(dir, "mcp.json");
125
- const config = { mcpServers };
126
- try {
127
- writeFileSync(configPath, JSON.stringify(config), "utf-8");
128
- console.error(`[llm-call] agentic: wrote MCP config to ${configPath}`);
129
- return configPath;
130
- }
131
- catch (err) {
132
- // Clean up the empty temp dir on write failure
133
- try {
134
- rmSync(dir, { recursive: true });
135
- }
136
- catch { /* best-effort */ }
137
- throw new Error(`Failed to write MCP config for agentic step: ${err instanceof Error ? err.message : String(err)}`);
138
- }
139
- }
140
- /**
141
- * Clean up a temporary MCP config file and its parent directory.
142
- * Never throws — cleanup failures are logged but must not mask
143
- * the spawn result (success or error).
144
- */
145
- function cleanupTempMcpConfig(configPath) {
146
- try {
147
- // configPath is <tmpdir>/maxy-mcp-XXXXXX/mcp.json — remove the parent dir
148
- const dir = resolve(configPath, "..");
149
- rmSync(dir, { recursive: true });
150
- console.error(`[llm-call] agentic: cleanup MCP config ${configPath}`);
151
- }
152
- catch (err) {
153
- // ENOENT is fine (already cleaned or never fully written)
154
- if (err instanceof Error && "code" in err && err.code === "ENOENT") {
155
- return;
156
- }
157
- console.error(`[llm-call] agentic: cleanup failed for ${configPath}: ${err instanceof Error ? err.message : String(err)}`);
158
- }
159
- }
160
- // ─────────────────────────────────────────────────────────────
161
- // LLM call via Claude Code subprocess
162
- // ─────────────────────────────────────────────────────────────
163
- /** Max stderr to capture — enough for diagnostics, bounded to prevent OOM. */
164
- const MAX_STDERR_BYTES = 4096;
165
- /** Default maxTurns when mcpServers is declared but maxTurns is omitted. */
166
- const DEFAULT_AGENTIC_MAX_TURNS = 10;
167
- /**
168
- * Execute an LLM call by spawning Claude Code.
169
- *
170
- * When mcpServers is provided, spawns in agentic mode: writes a temp
171
- * config file, adds --mcp-config and --strict-mcp-config flags, and
172
- * uses the step's maxTurns (or default 10) instead of 1.
173
- *
174
- * Returns the model's text response. The caller is responsible for
175
- * parsing the response (JSON or raw text) via parseStepOutput().
176
- */
177
- export async function executeLlmCall(params) {
178
- const { prompt, model, timeoutMs, mcpServers, maxTurns } = params;
179
- const spawn = params._spawn ?? realSpawn;
180
- if (!prompt.trim()) {
181
- throw new Error("LLM step has an empty prompt — nothing to send to the model.");
182
- }
183
- const isAgentic = mcpServers !== undefined && Object.keys(mcpServers).length > 0;
184
- const effectiveMaxTurns = isAgentic
185
- ? (maxTurns ?? DEFAULT_AGENTIC_MAX_TURNS)
186
- : (maxTurns ?? 1);
187
- const serverNames = isAgentic ? Object.keys(mcpServers) : [];
188
- console.error(`[llm-call] spawning Claude Code: model=${model} maxTurns=${effectiveMaxTurns}` +
189
- (isAgentic ? ` mcpServers=[${serverNames.join(",")}]` : ""));
190
- // Write temp MCP config for agentic steps (before building args)
191
- let tempConfigPath;
192
- if (isAgentic) {
193
- tempConfigPath = writeTempMcpConfig(mcpServers);
194
- }
195
- const args = [
196
- "--print",
197
- "--model", model,
198
- "--max-turns", String(effectiveMaxTurns),
199
- "--permission-mode", "dontAsk",
200
- ];
201
- if (tempConfigPath) {
202
- args.push("--mcp-config", tempConfigPath, "--strict-mcp-config");
203
- }
204
- // Prompt is the last positional argument
205
- args.push(prompt);
206
- try {
207
- return await new Promise((promiseResolve, reject) => {
208
- const proc = spawn("claude", args, {
209
- stdio: ["ignore", "pipe", "pipe"],
210
- });
211
- let stdout = "";
212
- let stderr = "";
213
- proc.stdout.on("data", (chunk) => {
214
- stdout += chunk.toString("utf-8");
215
- });
216
- proc.stderr.on("data", (chunk) => {
217
- if (stderr.length < MAX_STDERR_BYTES) {
218
- stderr += chunk.toString("utf-8").slice(0, MAX_STDERR_BYTES - stderr.length);
219
- }
220
- });
221
- const timer = setTimeout(() => {
222
- proc.kill("SIGTERM");
223
- reject(new Error(`LLM call timed out after ${timeoutMs}ms`));
224
- }, timeoutMs);
225
- proc.on("close", (code) => {
226
- clearTimeout(timer);
227
- if (code !== 0) {
228
- const stderrSnippet = stderr ? `\nstderr: ${stderr.trim()}` : "";
229
- const stdoutSnippet = stdout
230
- ? `\nstdout: ${stdout.slice(0, MAX_STDERR_BYTES).trim()}`
231
- : "";
232
- reject(new Error(`Claude Code exited with code ${code}${stderrSnippet}${stdoutSnippet}`));
233
- return;
234
- }
235
- if (!stdout.trim()) {
236
- reject(new Error("Claude Code returned an empty response."));
237
- return;
238
- }
239
- console.error(`[llm-call] response: ${stdout.length} chars`);
240
- promiseResolve(stdout);
241
- });
242
- proc.on("error", (err) => {
243
- clearTimeout(timer);
244
- reject(new Error(`Failed to spawn Claude Code: ${err.message}`));
245
- });
246
- });
247
- }
248
- finally {
249
- if (tempConfigPath) {
250
- cleanupTempMcpConfig(tempConfigPath);
251
- }
252
- }
253
- }
254
- // ─────────────────────────────────────────────────────────────
255
- // Health probe — pre-flight check before running LLM workflow steps
256
- // ─────────────────────────────────────────────────────────────
257
- const DEFAULT_PROBE_TIMEOUT_MS = 10_000;
258
- /**
259
- * Lightweight pre-flight probe for LLM availability.
260
- *
261
- * Spawns `claude --print` with a trivial prompt ("pong") and a short
262
- * timeout. Any failure mode that would cause a real LLM step to fail
263
- * (missing binary, dead OAuth token, Anthropic outage, network partition)
264
- * also fails this probe — it is the strongest available signal short
265
- * of running the real workflow.
266
- *
267
- * Called at most once per workflow run, only when the workflow contains
268
- * at least one LLM step. Per-step spawn failures mid-run are handled
269
- * separately by the workflow-execute convergence arm.
270
- *
271
- * SUCCESS → { ok: true, latencyMs }
272
- * FAILURE → { ok: false, latencyMs, error: one-line summary }
273
- */
274
- export async function probeLlmHealth(params) {
275
- const { model, timeoutMs = DEFAULT_PROBE_TIMEOUT_MS, _spawn } = params;
276
- const start = Date.now();
277
- console.error(`[llm-probe] probing: model=${model}`);
278
- try {
279
- await executeLlmCall({
280
- prompt: "pong",
281
- model,
282
- maxTokens: 8,
283
- timeoutMs,
284
- _spawn,
285
- });
286
- const latencyMs = Date.now() - start;
287
- console.error(`[llm-probe] ok: latencyMs=${latencyMs}`);
288
- return { ok: true, latencyMs };
289
- }
290
- catch (err) {
291
- const latencyMs = Date.now() - start;
292
- const error = err instanceof Error ? err.message : String(err);
293
- // Collapse multi-line errors to a one-liner for log + template substitution
294
- const oneLine = error.replace(/\s*\n\s*/g, " — ");
295
- console.error(`[llm-probe] FAILED: ${oneLine} latencyMs=${latencyMs}`);
296
- return { ok: false, latencyMs, error: oneLine };
297
- }
298
- }
299
- //# sourceMappingURL=llm-call.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-call.js","sourceRoot":"","sources":["../../src/lib/llm-call.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- export interface ClientAdminRow {
2
- accountId: string;
3
- /** Empty/undefined ⇒ absent. Set-but-not-live ⇒ dangling. */
4
- managingAdminUserId?: string;
5
- }
6
- export interface AccountAdminCensus {
7
- total: number;
8
- assigned: number;
9
- absent: number;
10
- dangling: number;
11
- absentIds: string[];
12
- danglingIds: string[];
13
- }
14
- /** Pure reconcile: classify each client account against the live house admin
15
- * set. A row with no managingAdminUserId is `absent`; a row whose id is not in
16
- * `liveHouseAdminUserIds` is `dangling`; otherwise `assigned`. Deterministic
17
- * and IO-free so the boundaries are unit-testable. */
18
- export declare function reconcileAccountAdminCensus(clients: ClientAdminRow[], liveHouseAdminUserIds: string[]): AccountAdminCensus;
19
- /** The census line. Offender ids are logged in full (not truncated) so each
20
- * correlates directly with an account dir; `-` marks an empty list so every
21
- * field is present and greppable. Healthy: `absent=0 dangling=0`. */
22
- export declare function formatCensusLine(c: AccountAdminCensus): string;
23
- export interface AccountAdminCensusDeps {
24
- accountsRoot: string;
25
- logger: (line: string) => void;
26
- }
27
- /** Run one census pass and log a single line. Filesystem-only and best-effort:
28
- * an unreadable accounts root yields `total=0` rather than throwing. */
29
- export declare function emitAccountAdminCensus(deps: AccountAdminCensusDeps): void;
30
- export interface AccountAdminCensusAudit {
31
- start(): void;
32
- stop(): void;
33
- }
34
- /** Standing periodic census. Unref'd interval so it never holds the process
35
- * open; each tick re-emits best-effort. */
36
- export declare function createAccountAdminCensus(deps: AccountAdminCensusDeps & {
37
- intervalMs: number;
38
- }): AccountAdminCensusAudit;
39
- //# sourceMappingURL=account-admin-census.d.ts.map