@rubytech/create-realagent-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 (253) 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/scripts/__tests__/agent-identity-reconcile.test.sh +110 -0
  17. package/payload/platform/scripts/__tests__/check-orphan-dist.test.sh +87 -0
  18. package/payload/platform/scripts/check-orphan-dist.mjs +143 -0
  19. package/payload/platform/scripts/lib/agent-identity-reconcile.sh +122 -0
  20. package/payload/platform/scripts/lib/provision-account-dir.sh +8 -26
  21. package/payload/platform/scripts/setup-account.sh +15 -0
  22. package/payload/platform/services/claude-session-manager/dist/index.js +5 -0
  23. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  24. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +5 -0
  25. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -1
  26. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +42 -1
  27. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -1
  28. package/payload/platform/templates/agents/public/IDENTITY.md +3 -3
  29. package/payload/server/server.js +543 -409
  30. package/payload/platform/lib/anthropic-key/dist/index.d.ts +0 -22
  31. package/payload/platform/lib/anthropic-key/dist/index.d.ts.map +0 -1
  32. package/payload/platform/lib/anthropic-key/dist/index.js +0 -232
  33. package/payload/platform/lib/anthropic-key/dist/index.js.map +0 -1
  34. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +0 -37
  35. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +0 -1
  36. package/payload/platform/lib/graph-search/dist/query-expansion.js +0 -101
  37. package/payload/platform/lib/graph-search/dist/query-expansion.js.map +0 -1
  38. package/payload/platform/lib/oauth-llm/dist/index.d.ts +0 -116
  39. package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +0 -1
  40. package/payload/platform/lib/oauth-llm/dist/index.js +0 -386
  41. package/payload/platform/lib/oauth-llm/dist/index.js.map +0 -1
  42. package/payload/platform/lib/screening-patterns/dist/index.d.ts +0 -29
  43. package/payload/platform/lib/screening-patterns/dist/index.d.ts.map +0 -1
  44. package/payload/platform/lib/screening-patterns/dist/index.js +0 -48
  45. package/payload/platform/lib/screening-patterns/dist/index.js.map +0 -1
  46. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts +0 -2
  47. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts.map +0 -1
  48. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js +0 -34
  49. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js.map +0 -1
  50. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +0 -39
  51. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +0 -1
  52. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +0 -249
  53. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +0 -1
  54. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts +0 -6
  55. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts.map +0 -1
  56. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js +0 -32
  57. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js.map +0 -1
  58. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +0 -283
  59. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +0 -1
  60. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +0 -1155
  61. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +0 -1
  62. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +0 -90
  63. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +0 -1
  64. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +0 -551
  65. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +0 -1
  66. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +0 -17
  67. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +0 -1
  68. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +0 -186
  69. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +0 -1
  70. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +0 -29
  71. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +0 -1
  72. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +0 -105
  73. package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +0 -1
  74. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +0 -38
  75. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +0 -1
  76. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +0 -817
  77. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +0 -1
  78. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +0 -30
  79. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +0 -1
  80. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +0 -215
  81. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +0 -1
  82. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +0 -19
  83. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +0 -1
  84. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +0 -151
  85. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +0 -1
  86. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +0 -6
  87. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +0 -1
  88. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +0 -89
  89. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +0 -1
  90. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts +0 -2
  91. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts.map +0 -1
  92. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js +0 -90
  93. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js.map +0 -1
  94. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts +0 -2
  95. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts.map +0 -1
  96. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +0 -226
  97. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +0 -1
  98. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +0 -60
  99. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +0 -1
  100. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +0 -169
  101. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +0 -1
  102. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +0 -248
  103. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +0 -1
  104. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +0 -824
  105. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +0 -1
  106. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +0 -63
  107. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +0 -1
  108. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +0 -210
  109. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +0 -1
  110. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +0 -35
  111. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +0 -1
  112. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +0 -28
  113. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +0 -1
  114. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +0 -2
  115. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +0 -1
  116. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +0 -68
  117. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +0 -1
  118. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +0 -2
  119. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +0 -1
  120. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +0 -88
  121. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +0 -1
  122. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +0 -2
  123. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +0 -1
  124. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +0 -58
  125. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +0 -1
  126. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +0 -2
  127. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +0 -1
  128. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +0 -64
  129. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +0 -1
  130. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +0 -2
  131. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +0 -1
  132. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +0 -70
  133. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +0 -1
  134. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +0 -2
  135. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +0 -1
  136. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +0 -48
  137. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +0 -1
  138. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +0 -2
  139. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +0 -1
  140. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +0 -74
  141. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +0 -1
  142. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +0 -2
  143. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +0 -1
  144. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +0 -47
  145. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +0 -1
  146. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +0 -2
  147. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +0 -1
  148. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +0 -65
  149. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +0 -1
  150. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +0 -2
  151. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +0 -1
  152. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +0 -43
  153. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +0 -1
  154. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +0 -2
  155. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +0 -1
  156. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +0 -65
  157. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +0 -1
  158. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +0 -2
  159. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +0 -1
  160. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +0 -49
  161. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +0 -1
  162. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +0 -2
  163. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +0 -1
  164. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +0 -79
  165. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +0 -1
  166. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts +0 -2
  167. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts.map +0 -1
  168. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js +0 -329
  169. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js.map +0 -1
  170. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +0 -2
  171. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +0 -1
  172. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +0 -81
  173. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +0 -1
  174. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +0 -34
  175. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +0 -1
  176. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +0 -62
  177. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +0 -1
  178. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts +0 -61
  179. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts.map +0 -1
  180. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js +0 -102
  181. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js.map +0 -1
  182. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +0 -35
  183. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +0 -1
  184. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +0 -73
  185. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +0 -1
  186. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +0 -29
  187. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +0 -1
  188. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +0 -22
  189. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +0 -1
  190. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +0 -30
  191. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +0 -1
  192. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +0 -130
  193. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +0 -1
  194. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +0 -65
  195. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +0 -1
  196. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +0 -262
  197. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +0 -1
  198. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts +0 -2
  199. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.d.ts.map +0 -1
  200. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js +0 -100
  201. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/normalise-start-date.test.js.map +0 -1
  202. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts +0 -2
  203. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.d.ts.map +0 -1
  204. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js +0 -22
  205. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/scheduled-seat-id.test.js.map +0 -1
  206. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts +0 -11
  207. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.d.ts.map +0 -1
  208. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js +0 -19
  209. package/payload/platform/plugins/scheduling/mcp/dist/lib/scheduled-seat-id.js.map +0 -1
  210. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts +0 -8
  211. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts.map +0 -1
  212. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js +0 -83
  213. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js.map +0 -1
  214. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +0 -151
  215. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +0 -1
  216. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +0 -299
  217. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +0 -1
  218. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts +0 -39
  219. package/payload/platform/services/claude-session-manager/dist/account-admin-census.d.ts.map +0 -1
  220. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js +0 -122
  221. package/payload/platform/services/claude-session-manager/dist/account-admin-census.js.map +0 -1
  222. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts +0 -39
  223. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts.map +0 -1
  224. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js +0 -133
  225. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js.map +0 -1
  226. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts +0 -22
  227. package/payload/platform/services/claude-session-manager/dist/input-postcondition.d.ts.map +0 -1
  228. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js +0 -50
  229. package/payload/platform/services/claude-session-manager/dist/input-postcondition.js.map +0 -1
  230. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +0 -30
  231. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +0 -1
  232. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +0 -204
  233. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +0 -1
  234. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts +0 -80
  235. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts.map +0 -1
  236. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js +0 -306
  237. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js.map +0 -1
  238. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +0 -49
  239. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +0 -1
  240. package/payload/platform/services/claude-session-manager/dist/session-store.js +0 -52
  241. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +0 -1
  242. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +0 -83
  243. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +0 -1
  244. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +0 -345
  245. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +0 -1
  246. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts +0 -104
  247. package/payload/platform/services/telegram-channel/dist/turn-follow.d.ts.map +0 -1
  248. package/payload/platform/services/telegram-channel/dist/turn-follow.js +0 -408
  249. package/payload/platform/services/telegram-channel/dist/turn-follow.js.map +0 -1
  250. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +0 -104
  251. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +0 -1
  252. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +0 -393
  253. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +0 -1
@@ -1,80 +0,0 @@
1
- import type { Logger } from './types.js';
2
- import type { SystemdScopeHandle } from './systemd-spawn.js';
3
- export type RcSpawnMode = 'new' | 'resume';
4
- export interface RcScriptSpawnDeps {
5
- claudeBin: string;
6
- spawnCwd: string;
7
- accountId: string;
8
- platformRoot: string;
9
- claudeConfigDir: string;
10
- brandedNeo4jUri: string;
11
- brandedNeo4jPassword: string;
12
- uiPort: string;
13
- pidFileTimeoutMs: number;
14
- logger: Logger;
15
- systemdSpawn: (params: {
16
- claudeBin: string;
17
- claudeArgs: readonly string[];
18
- env: Readonly<Record<string, string>>;
19
- cwd: string;
20
- unitToken: string;
21
- captureFilePath: string;
22
- }) => Promise<SystemdScopeHandle>;
23
- /** waitForPid binding from the fs watcher (resolves once claude writes
24
- * its pid file under sessions/<pid>.json). Injectable for tests. */
25
- waitForPid: (pid: number, timeoutMs: number) => Promise<{
26
- pidFilePath: string | null;
27
- bridgeSessionId: string | null;
28
- }>;
29
- /** Injectable clock for tests. Defaults to Date.now. */
30
- now?: () => number;
31
- /** Liveness poll interval. Default 15_000 ms. Brief permits up to 30 s. */
32
- livenessPollIntervalMs?: number;
33
- }
34
- export interface RcScriptSpawnRequest {
35
- sessionId: string | null;
36
- name: string | null;
37
- }
38
- export interface RcScriptSpawnResult {
39
- spawnedPid: number;
40
- sessionId: string | null;
41
- unitToken: string;
42
- mode: RcSpawnMode;
43
- }
44
- export interface RcScriptSpawnEntry {
45
- unitToken: string;
46
- pid: number;
47
- sessionId: string | null;
48
- mode: RcSpawnMode;
49
- spawnedAt: number;
50
- captureFilePath: string;
51
- handle: SystemdScopeHandle;
52
- pidFileSeen: boolean;
53
- remoteBound: boolean;
54
- exited: boolean;
55
- }
56
- /** For tests + the census sweep. Read-only iteration. */
57
- export declare function forEachLiveScriptScopeRcSpawn(cb: (entry: RcScriptSpawnEntry) => void): void;
58
- export declare function liveScriptScopeRcSpawnCount(): number;
59
- /** Clear the tracker map. Test-only seam — production never calls. */
60
- export declare function __resetScriptScopeRcSpawnsForTests(): void;
61
- /** Schema-tagged line emitter. Every consumer of the cross-arm `[rc-life]`
62
- * surface must use this so the field order + null-handling stays
63
- * identical between rc-spawn and rc-daemon. */
64
- export declare function emitRcLife(logger: Logger, op: string, source: 'rc-spawn' | 'rc-daemon', path: 'script-scope' | 'node-pty', mode: RcSpawnMode | 'daemon', unitToken: string, fields?: Record<string, string | number | boolean | null>): void;
65
- /** Run the script-scope rc-spawn. Returns once `systemdSpawn` resolves
66
- * (scope is active, cgroup pid captured). Liveness polling, pid-file
67
- * binding, and exit observation run in the background — the route
68
- * responds immediately with `spawnedPid` like the node-pty arm does. */
69
- export declare function handleRcSpawnScriptScope(deps: RcScriptSpawnDeps, req: RcScriptSpawnRequest): Promise<RcScriptSpawnResult>;
70
- /** Census sweep — reconciles expected (dashboard-initiated sessions) vs
71
- * actual (live tracked entries). Detects a leaked entry whose pid is
72
- * gone but the tracker still holds it, or a tracker whose handle's
73
- * scope vanished without an exit event. Traffic-independent — runs on
74
- * a timer in index.ts so a quiet failure surfaces within one interval.
75
- *
76
- * The daemon's live handle is supplied via `daemonAlive`; the daemon
77
- * itself owns the canonical accounting (a single handle reference),
78
- * but exposing it here keeps the schema unified. */
79
- export declare function runRcLifeCensus(logger: Logger, daemonAlive: number): void;
80
- //# sourceMappingURL=rc-script-spawn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rc-script-spawn.d.ts","sourceRoot":"","sources":["../src/rc-script-spawn.ts"],"names":[],"mappings":"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"}
@@ -1,306 +0,0 @@
1
- // Task 562 — isolated rc-spawn path via `systemdSpawn` + `script(1)`.
2
- //
3
- // Mirrors the rc-daemon's spawn mechanism (rc-daemon.ts:312) so the
4
- // manager holds ZERO file descriptors per spawn: stdio:'ignore' on the
5
- // outer systemd-run child, real TTY allocated by `script -q -f -c` inside
6
- // the scope, child's stdout/stderr captured to a retained typescript file
7
- // at `~/.<brand>/logs/spawn-rc-resume-<unitToken>.log`.
8
- //
9
- // Shares no mutable state with the legacy node-pty rc-spawn path:
10
- // - No `spawnPty`, `registerRcSpawnPty`, or `livePtys` interaction.
11
- // - No master fd in the manager → no `releasePtyMasterFd` lifecycle.
12
- // - Own `liveScriptScopeRcSpawns` Map keyed on unitToken for census +
13
- // liveness observability.
14
- //
15
- // Observability follows the cross-arm `[rc-life]` schema (see Task 562
16
- // brief). Every line carries `source=rc-spawn path=script-scope
17
- // mode=<new|resume> unitToken=<token>` so a `grep source=rc-spawn`
18
- // directly compares with `grep source=rc-daemon` lines emitted from
19
- // rc-daemon.ts under the same schema. The capture file is never
20
- // unlinked by this module — post-mortem is always possible.
21
- import { dirname, join } from 'node:path';
22
- import { existsSync } from 'node:fs';
23
- import { randomUUID } from 'node:crypto';
24
- import { findExistingJsonlForSessionId } from './jsonl-path.js';
25
- import { buildRcChildEnv } from './rc-daemon.js';
26
- const liveScriptScopeRcSpawns = new Map();
27
- /** For tests + the census sweep. Read-only iteration. */
28
- export function forEachLiveScriptScopeRcSpawn(cb) {
29
- for (const e of liveScriptScopeRcSpawns.values())
30
- cb(e);
31
- }
32
- export function liveScriptScopeRcSpawnCount() {
33
- return liveScriptScopeRcSpawns.size;
34
- }
35
- /** Clear the tracker map. Test-only seam — production never calls. */
36
- export function __resetScriptScopeRcSpawnsForTests() {
37
- liveScriptScopeRcSpawns.clear();
38
- }
39
- /** Schema-tagged line emitter. Every consumer of the cross-arm `[rc-life]`
40
- * surface must use this so the field order + null-handling stays
41
- * identical between rc-spawn and rc-daemon. */
42
- export function emitRcLife(logger, op, source, path, mode, unitToken, fields = {}) {
43
- const base = `[rc-life] op=${op} source=${source} path=${path} mode=${mode} unitToken=${unitToken}`;
44
- const extras = Object.entries(fields)
45
- .map(([k, v]) => `${k}=${v === null ? 'null' : typeof v === 'string' && v.includes(' ') ? JSON.stringify(v) : v}`)
46
- .join(' ');
47
- logger(extras ? `${base} ${extras}` : base);
48
- }
49
- /** Run the script-scope rc-spawn. Returns once `systemdSpawn` resolves
50
- * (scope is active, cgroup pid captured). Liveness polling, pid-file
51
- * binding, and exit observation run in the background — the route
52
- * responds immediately with `spawnedPid` like the node-pty arm does. */
53
- export async function handleRcSpawnScriptScope(deps, req) {
54
- const now = deps.now ?? (() => Date.now());
55
- const livenessIntervalMs = deps.livenessPollIntervalMs ?? 15_000;
56
- const start = now();
57
- const unitToken = `rc-resume-${randomUUID()}`;
58
- const existingJsonl = req.sessionId
59
- ? findExistingJsonlForSessionId(deps.claudeConfigDir, req.sessionId)
60
- : null;
61
- const mode = existingJsonl ? 'resume' : 'new';
62
- const argv = ['--remote-control'];
63
- if (req.name)
64
- argv.push(req.name);
65
- if (req.sessionId)
66
- argv.push(mode === 'resume' ? '--resume' : '--session-id', req.sessionId);
67
- const env = buildRcChildEnv({
68
- accountId: deps.accountId,
69
- uiPort: deps.uiPort,
70
- platformRoot: deps.platformRoot,
71
- claudeConfigDir: deps.claudeConfigDir,
72
- brandedNeo4jUri: deps.brandedNeo4jUri,
73
- brandedNeo4jPassword: deps.brandedNeo4jPassword,
74
- });
75
- const cleanEnv = {};
76
- for (const [k, v] of Object.entries(env)) {
77
- if (typeof v === 'string')
78
- cleanEnv[k] = v;
79
- }
80
- // Mirror rc-daemon.ts:323 — capture file under <accountDir>/logs/.
81
- // dirname(claudeConfigDir) is the accountDir (e.g. /home/<user>/.maxy-code/).
82
- const captureFilePath = join(dirname(deps.claudeConfigDir), 'logs', `spawn-${unitToken}.log`);
83
- emitRcLife(deps.logger, 'request', 'rc-spawn', 'script-scope', mode, unitToken, {
84
- sessionId: req.sessionId ?? 'new',
85
- name: req.name ?? 'none',
86
- existingJsonl: existingJsonl ?? 'none',
87
- });
88
- emitRcLife(deps.logger, 'argv', 'rc-spawn', 'script-scope', mode, unitToken, {
89
- cwd: deps.spawnCwd,
90
- captureFile: captureFilePath,
91
- argv: JSON.stringify([deps.claudeBin, ...argv]),
92
- });
93
- let handle;
94
- try {
95
- handle = await deps.systemdSpawn({
96
- claudeBin: deps.claudeBin,
97
- claudeArgs: argv,
98
- env: cleanEnv,
99
- cwd: deps.spawnCwd,
100
- unitToken,
101
- captureFilePath,
102
- });
103
- }
104
- catch (err) {
105
- const msg = err instanceof Error ? err.message : String(err);
106
- emitRcLife(deps.logger, 'spawn-failed', 'rc-spawn', 'script-scope', mode, unitToken, {
107
- err: JSON.stringify(msg),
108
- });
109
- throw err;
110
- }
111
- emitRcLife(deps.logger, 'spawned', 'rc-spawn', 'script-scope', mode, unitToken, {
112
- pid: handle.pid,
113
- scopeUnit: `claude-session-${unitToken}.scope`,
114
- captureFile: captureFilePath,
115
- // Manager holds no fd for this child — this is the isolation invariant.
116
- // A rising value across script-scope spawns is the leak signature.
117
- managerOpenFds: 'unchanged',
118
- });
119
- const entry = {
120
- unitToken,
121
- pid: handle.pid,
122
- sessionId: req.sessionId,
123
- mode,
124
- spawnedAt: start,
125
- captureFilePath,
126
- handle,
127
- pidFileSeen: false,
128
- remoteBound: false,
129
- exited: false,
130
- };
131
- liveScriptScopeRcSpawns.set(unitToken, entry);
132
- // Capture-file head emit — first ≤1 KB of the script(1) typescript,
133
- // settled by either reaching 1 KB or by a short post-spawn delay. The
134
- // child's own words are the signal whose absence cost 5 occasions
135
- // (Task 562 brief). Read once and forget; subsequent failures land in
136
- // op=early-exit's captureTail.
137
- void readCaptureHead(handle, 500, 1_024).then((head) => {
138
- emitRcLife(deps.logger, 'child-output', 'rc-spawn', 'script-scope', mode, unitToken, {
139
- pid: handle.pid,
140
- head: JSON.stringify(head),
141
- });
142
- });
143
- // pid-file binding — claude writes <sessions>/<pid>.json once Remote
144
- // Control registration finishes. This is the `ready` signal: pid file
145
- // present means claude is alive and reachable from claude.ai/code.
146
- void deps.waitForPid(handle.pid, deps.pidFileTimeoutMs)
147
- .then((row) => {
148
- entry.pidFileSeen = true;
149
- entry.remoteBound = Boolean(row.bridgeSessionId);
150
- emitRcLife(deps.logger, 'alive', 'rc-spawn', 'script-scope', mode, unitToken, {
151
- pid: handle.pid,
152
- ranMs: now() - start,
153
- });
154
- emitRcLife(deps.logger, 'ready', 'rc-spawn', 'script-scope', mode, unitToken, {
155
- pid: handle.pid,
156
- pidFile: row.pidFilePath ?? 'unknown',
157
- bridgeId: row.bridgeSessionId ?? 'unknown',
158
- remoteSession: row.bridgeSessionId ?? 'unknown',
159
- });
160
- })
161
- .catch((err) => {
162
- emitRcLife(deps.logger, 'wait-pid-failed', 'rc-spawn', 'script-scope', mode, unitToken, {
163
- pid: handle.pid,
164
- err: JSON.stringify(err instanceof Error ? err.message : String(err)),
165
- });
166
- });
167
- // Liveness poll — runs for the session's whole intended life. Catches
168
- // a session that dies quietly between events without a reproduction.
169
- // Both arms emit this so endurance is directly comparable.
170
- const livenessTimer = setInterval(() => {
171
- if (entry.exited) {
172
- clearInterval(livenessTimer);
173
- return;
174
- }
175
- const pidAlive = pidIsAlive(entry.pid);
176
- emitRcLife(deps.logger, 'liveness', 'rc-spawn', 'script-scope', mode, unitToken, {
177
- ageMs: now() - start,
178
- pidAlive,
179
- // scopeActive is captured from handle.waitForExit's terminal — true
180
- // means we have not yet observed the scope leave the active set.
181
- // A pidAlive=false here while exited=false is an early death the
182
- // event flow missed.
183
- scopeActive: !entry.exited,
184
- remoteBound: entry.remoteBound,
185
- });
186
- }, livenessIntervalMs);
187
- // Don't block process exit on the liveness timer.
188
- livenessTimer.unref?.();
189
- // Exit observation — `handle.waitForExit` polls systemctl. On exit,
190
- // tag the lifetime, attach captureTail bytes, and remove from the
191
- // live tracker.
192
- void handle.waitForExit()
193
- .then(async (exit) => {
194
- entry.exited = true;
195
- clearInterval(livenessTimer);
196
- const lifetimeMs = now() - start;
197
- let tail = '';
198
- try {
199
- tail = await handle.readCaptureTail(2_048);
200
- }
201
- catch {
202
- tail = '';
203
- }
204
- if (!entry.pidFileSeen && lifetimeMs < 2_000) {
205
- emitRcLife(deps.logger, 'early-exit', 'rc-spawn', 'script-scope', mode, unitToken, {
206
- pid: handle.pid,
207
- ranMs: lifetimeMs,
208
- exitCode: exit.exitCode ?? 'null',
209
- signal: exit.code ?? 'null',
210
- captureTail: JSON.stringify(tail),
211
- });
212
- }
213
- const reason = inferExitReason(exit.result, lifetimeMs, entry.pidFileSeen);
214
- emitRcLife(deps.logger, 'exit', 'rc-spawn', 'script-scope', mode, unitToken, {
215
- pid: handle.pid,
216
- lifetimeMs,
217
- reason,
218
- result: exit.result,
219
- captureTail: JSON.stringify(tail.slice(-512)),
220
- });
221
- liveScriptScopeRcSpawns.delete(unitToken);
222
- })
223
- .catch((err) => {
224
- entry.exited = true;
225
- clearInterval(livenessTimer);
226
- emitRcLife(deps.logger, 'wait-exit-failed', 'rc-spawn', 'script-scope', mode, unitToken, {
227
- pid: handle.pid,
228
- err: JSON.stringify(err instanceof Error ? err.message : String(err)),
229
- });
230
- liveScriptScopeRcSpawns.delete(unitToken);
231
- });
232
- return {
233
- spawnedPid: handle.pid,
234
- sessionId: req.sessionId,
235
- unitToken,
236
- mode,
237
- };
238
- }
239
- function inferExitReason(result, lifetimeMs, pidFileSeen) {
240
- if (result === 'success' && pidFileSeen && lifetimeMs >= 2_000)
241
- return 'archive';
242
- if (result !== 'success')
243
- return 'crash';
244
- if (!pidFileSeen && lifetimeMs < 2_000)
245
- return 'crash';
246
- return 'unknown';
247
- }
248
- function pidIsAlive(pid) {
249
- try {
250
- process.kill(pid, 0);
251
- return true;
252
- }
253
- catch {
254
- return false;
255
- }
256
- }
257
- /** Reads the head of the script(1) typescript. Returns at most `maxBytes`
258
- * from the start of the file; waits up to `settleMs` for the file to
259
- * appear, since systemd-run + script open the typescript asynchronously
260
- * after the scope is active. */
261
- async function readCaptureHead(handle, settleMs, maxBytes) {
262
- const deadline = Date.now() + settleMs;
263
- while (Date.now() < deadline) {
264
- if (existsSync(handle.captureFilePath))
265
- break;
266
- await new Promise((resolve) => setTimeout(resolve, 50));
267
- }
268
- // readCaptureTail returns the last `maxBytes` bytes; for a small early
269
- // file (< maxBytes) tail == head. The boot sequence is well under 1 KB.
270
- try {
271
- return await handle.readCaptureTail(maxBytes);
272
- }
273
- catch {
274
- return '';
275
- }
276
- }
277
- /** Census sweep — reconciles expected (dashboard-initiated sessions) vs
278
- * actual (live tracked entries). Detects a leaked entry whose pid is
279
- * gone but the tracker still holds it, or a tracker whose handle's
280
- * scope vanished without an exit event. Traffic-independent — runs on
281
- * a timer in index.ts so a quiet failure surfaces within one interval.
282
- *
283
- * The daemon's live handle is supplied via `daemonAlive`; the daemon
284
- * itself owns the canonical accounting (a single handle reference),
285
- * but exposing it here keeps the schema unified. */
286
- export function runRcLifeCensus(logger, daemonAlive) {
287
- let pidAlive = 0;
288
- let pidDeadButTracked = 0;
289
- for (const entry of liveScriptScopeRcSpawns.values()) {
290
- if (pidIsAlive(entry.pid)) {
291
- pidAlive += 1;
292
- }
293
- else {
294
- pidDeadButTracked += 1;
295
- // Independent reconciliation defect — entry exists with a dead pid.
296
- emitRcLife(logger, 'orphan', 'rc-spawn', 'script-scope', entry.mode, entry.unitToken, {
297
- pid: entry.pid,
298
- kind: 'pid-dead-but-tracked',
299
- ageMs: Date.now() - entry.spawnedAt,
300
- });
301
- }
302
- }
303
- logger(`[rc-census] source-breakdown=rc-spawn:${liveScriptScopeRcSpawns.size},rc-daemon:${daemonAlive}` +
304
- ` rcSpawnPidAlive=${pidAlive} rcSpawnPidDead=${pidDeadButTracked}`);
305
- }
306
- //# sourceMappingURL=rc-script-spawn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rc-script-spawn.js","sourceRoot":"","sources":["../src/rc-script-spawn.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import type { PtyHandle, Role, Channel } from './types.js';
2
- export interface StoredSession {
3
- /** Intrinsic Claude session id (UUID). Stable for the row's lifetime.
4
- * For `/resume` spawns this is the prior canonical id the operator
5
- * pressed Resume on. After Task 258's archive-restore at /resume,
6
- * claude --resume appends to the same canonical jsonl, so the
7
- * StoredSession.sessionId and the on-disk jsonl basename match by
8
- * construction. */
9
- sessionId: string;
10
- /** "session_<suffix>" form from the PID file. Stable, never null after
11
- * /spawn returns (the spawn promise resolves on PID-file event). */
12
- bridgeSessionId: string;
13
- /** Suffix-only convenience field (no "session_" prefix). */
14
- bridgeSuffix: string;
15
- pid: number;
16
- /** URL from the `/remote-control` banner. Null until url-capture fires;
17
- * may stay null forever if the banner never lands. The UI tolerates
18
- * null. */
19
- url: string | null;
20
- startedAt: string;
21
- senderId: string;
22
- role: Role;
23
- channel: Channel;
24
- pty: PtyHandle;
25
- exited: boolean;
26
- /** Task 176 — flipped true when `releasePtyMasterFd` returns
27
- * `master-fd=closed` for this session. Both exit branches set this so
28
- * the second branch (whichever loses the race) can skip a redundant
29
- * `pty.destroy()` that would otherwise throw "socket already
30
- * destroyed" on real node-pty and turn the operator-request log
31
- * line's `master-fd=closed` into a false `master-fd=close-failed`.
32
- * When the first branch's destroy throws (rescued), this stays false
33
- * so the second branch retries — defense in depth. */
34
- fdReleased: boolean;
35
- hidden: boolean;
36
- specialist: string | null;
37
- }
38
- export declare class SessionStore {
39
- private readonly bySessionId;
40
- add(s: StoredSession): void;
41
- get(sessionId: string): StoredSession | undefined;
42
- remove(sessionId: string): StoredSession | undefined;
43
- listBySender(senderId: string, opts?: {
44
- includeHidden?: boolean;
45
- }): StoredSession[];
46
- all(): StoredSession[];
47
- size(): number;
48
- }
49
- //# sourceMappingURL=session-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,MAAM,WAAW,aAAa;IAC5B;;;;;wBAKoB;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB;yEACqE;IACrE,eAAe,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX;;gBAEY;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,SAAS,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;2DAOuD;IACvD,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAI3B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIjD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAOpD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,aAAa,EAAE;IAWvF,GAAG,IAAI,aAAa,EAAE;IAItB,IAAI,IAAI,MAAM;CAGf"}
@@ -1,52 +0,0 @@
1
- // In-memory PTY-handle store. The canonical row index lives in the
2
- // fs-watcher; row state is derived from disk on demand (Task 258). This
3
- // store only tracks the live PTY handles the manager itself spawned —
4
- // they aren't on disk. Lookups by alternative identifiers (bridgeSuffix,
5
- // pid, bridgeSessionId) go through the watcher first to resolve to the
6
- // canonical sessionId; the store is then keyed solely on sessionId.
7
- //
8
- // Lifecycle:
9
- // - pty-spawner awaits the PID-file CREATE event from the watcher
10
- // before returning a /spawn response. The store row is registered at
11
- // that point with sessionId known and bridgeSessionId carried from
12
- // the PID file. By the time /spawn returns, sessionId is final.
13
- // - URL capture continues in parallel; the row's `url` field is
14
- // mutated in place when the URL banner fires (may arrive before or
15
- // after the PID-file event; both orderings are safe).
16
- // - The jsonl path is derived from sessionId + spawnCwd at every read
17
- // site — never stored. Task 258 deleted the stored field.
18
- export class SessionStore {
19
- bySessionId = new Map();
20
- add(s) {
21
- this.bySessionId.set(s.sessionId, s);
22
- }
23
- get(sessionId) {
24
- return this.bySessionId.get(sessionId);
25
- }
26
- remove(sessionId) {
27
- const s = this.bySessionId.get(sessionId);
28
- if (!s)
29
- return undefined;
30
- this.bySessionId.delete(sessionId);
31
- return s;
32
- }
33
- listBySender(senderId, opts = {}) {
34
- const includeHidden = opts.includeHidden === true;
35
- const out = [];
36
- for (const s of this.bySessionId.values()) {
37
- if (s.senderId !== senderId)
38
- continue;
39
- if (!includeHidden && s.hidden)
40
- continue;
41
- out.push(s);
42
- }
43
- return out;
44
- }
45
- all() {
46
- return [...this.bySessionId.values()];
47
- }
48
- size() {
49
- return this.bySessionId.size;
50
- }
51
- }
52
- //# sourceMappingURL=session-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,wEAAwE;AACxE,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,EAAE;AACF,aAAa;AACb,oEAAoE;AACpE,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,kEAAkE;AAClE,uEAAuE;AACvE,0DAA0D;AAC1D,wEAAwE;AACxE,8DAA8D;AAyC9D,MAAM,OAAO,YAAY;IACN,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAA;IAE/D,GAAG,CAAC,CAAgB;QAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAA;QACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAClC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,OAAoC,EAAE;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAA;QACjD,MAAM,GAAG,GAAoB,EAAE,CAAA;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBAAE,SAAQ;YACrC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM;gBAAE,SAAQ;YACxC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;CACF"}
@@ -1,83 +0,0 @@
1
- import { type SystemctlRunner } from './systemd-scope.js';
2
- export interface SystemdSpawnParams {
3
- claudeBin: string;
4
- claudeArgs: readonly string[];
5
- /** Env stamped onto the scope via `--setenv=KEY=VAL` flags. Manager-side
6
- * vars (XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS) needed to reach user
7
- * systemd are read from process.env separately. */
8
- env: Readonly<Record<string, string>>;
9
- cwd: string;
10
- unitToken: string;
11
- /** Path the scope's inner `script(1)` writes its typescript to —
12
- * retrievable after the scope is reaped. The parent directory is
13
- * created (mkdir -p) before systemd-run is spawned so script(1) can
14
- * open the file without ENOENT. */
15
- captureFilePath: string;
16
- /** systemctl runner — production uses spawnSync; tests inject a stub. */
17
- runSystemctl?: SystemctlRunner;
18
- /** Reads `cgroup.procs` at /sys/fs/cgroup<ControlGroup>. Returns the
19
- * list of pids in the cgroup, or empty when the file does not exist
20
- * or contains no pids. Tests inject a stub. */
21
- readCgroupProcs?: (controlGroup: string) => number[];
22
- /** Reads the tail of the script(1) typescript file for inclusion in
23
- * activation-gate failure messages. Tests inject a stub; production
24
- * uses the module's own `readCaptureFile`. */
25
- readCaptureTail?: (captureFilePath: string, maxBytes: number) => Promise<string>;
26
- /** Injected child-process spawner for tests. Production uses node:child_process spawn. */
27
- spawnChild?: (cmd: string, args: readonly string[], opts: SpawnOpts) => SpawnedChild;
28
- /** Maximum wait for the scope to activate with at least one pid in its
29
- * cgroup. Default 5000 ms. */
30
- activationTimeoutMs?: number;
31
- /** Inter-poll interval. Default 50 ms. */
32
- activationPollIntervalMs?: number;
33
- }
34
- export interface SpawnOpts {
35
- cwd: string;
36
- env: NodeJS.ProcessEnv;
37
- stdio: 'ignore';
38
- detached: boolean;
39
- }
40
- export interface SpawnedChild {
41
- pid: number | undefined;
42
- unref(): void;
43
- on(event: 'error', cb: (err: Error) => void): void;
44
- }
45
- export interface ScopeExit {
46
- /** systemd's Result string: "success", "exit-code", "signal", "timeout", "core-dump", "watchdog", "start-limit-hit", "resources". */
47
- result: string;
48
- /** ExecMainStatus — process exit code or signal number depending on `result`. */
49
- exitCode: number | null;
50
- /** ExecMainCode — "exited" / "killed" / "dumped", from systemd's process-exit classification. */
51
- code: string | null;
52
- }
53
- export interface WaitForExitOpts {
54
- pollIntervalMs?: number;
55
- }
56
- export interface SystemdScopeHandle {
57
- pid: number;
58
- unitToken: string;
59
- /** The script(1) typescript file written by the scope's inner wrapper.
60
- * Holds the child's stdout/stderr; remains on disk after the scope is
61
- * reaped so a post-mortem investigator can read claude's real exit
62
- * message without re-running anything. */
63
- captureFilePath: string;
64
- /** Resolves once the scope unit's `ActiveState` is no longer in the
65
- * set { 'active', 'activating', 'reloading' }. Reads the unit's
66
- * `Result`, `ExecMainStatus`, and `ExecMainCode` to populate
67
- * the returned `ScopeExit`. */
68
- waitForExit(opts?: WaitForExitOpts): Promise<ScopeExit>;
69
- /** Read the tail of the per-spawn capture file (the script(1)
70
- * typescript). Trimmed to `maxBytes` from the end so the line
71
- * preceding exit wins. */
72
- readCaptureTail(maxBytes: number): Promise<string>;
73
- /** Stop the scope via `systemctl --user stop --no-block` (delegates to
74
- * systemd-scope.stopScopeUnit so the existing escalation path applies). */
75
- stop(): Promise<void>;
76
- }
77
- /** Spawn `systemd-run --user --scope ... <claudeBin> <claudeArgs>` so the
78
- * manager holds no file descriptors for the resulting claude process.
79
- * Returns once cgroup.procs is non-empty AND ActiveState is `active`.
80
- * On terminal failure, stops the partially-registered scope and rejects
81
- * with one of three distinct error tokens. */
82
- export declare function systemdSpawn(p: SystemdSpawnParams): Promise<SystemdScopeHandle>;
83
- //# sourceMappingURL=systemd-spawn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"systemd-spawn.d.ts","sourceRoot":"","sources":["../src/systemd-spawn.ts"],"names":[],"mappings":"AA8DA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B;;wDAEoD;IACpD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB;;;wCAGoC;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;oDAEgD;IAChD,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;IACpD;;mDAE+C;IAC/C,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAChF,0FAA0F;IAC1F,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,YAAY,CAAA;IACpF;mCAC+B;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,0CAA0C;IAC1C,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,KAAK,IAAI,IAAI,CAAA;IACb,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,SAAS;IACxB,qIAAqI;IACrI,MAAM,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iGAAiG;IACjG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB;;;+CAG2C;IAC3C,eAAe,EAAE,MAAM,CAAA;IACvB;;;oCAGgC;IAChC,WAAW,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACvD;;+BAE2B;IAC3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD;gFAC4E;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAID;;;;+CAI+C;AAC/C,wBAAsB,YAAY,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgJrF"}