botmux 2.46.1 → 2.47.0

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 (468) hide show
  1. package/README.en.md +5 -10
  2. package/README.md +5 -10
  3. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/tmux-backend.js +0 -11
  5. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  6. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  7. package/dist/adapters/cli/claude-code.js +9 -36
  8. package/dist/adapters/cli/claude-code.js.map +1 -1
  9. package/dist/adapters/cli/coco.d.ts.map +1 -1
  10. package/dist/adapters/cli/coco.js +1 -26
  11. package/dist/adapters/cli/coco.js.map +1 -1
  12. package/dist/adapters/cli/codex.d.ts.map +1 -1
  13. package/dist/adapters/cli/codex.js +1 -6
  14. package/dist/adapters/cli/codex.js.map +1 -1
  15. package/dist/adapters/cli/cursor.d.ts.map +1 -1
  16. package/dist/adapters/cli/cursor.js +12 -58
  17. package/dist/adapters/cli/cursor.js.map +1 -1
  18. package/dist/adapters/cli/gemini.d.ts.map +1 -1
  19. package/dist/adapters/cli/gemini.js +1 -5
  20. package/dist/adapters/cli/gemini.js.map +1 -1
  21. package/dist/adapters/cli/opencode.d.ts.map +1 -1
  22. package/dist/adapters/cli/opencode.js +1 -19
  23. package/dist/adapters/cli/opencode.js.map +1 -1
  24. package/dist/adapters/cli/registry.d.ts +1 -5
  25. package/dist/adapters/cli/registry.d.ts.map +1 -1
  26. package/dist/adapters/cli/registry.js +2 -22
  27. package/dist/adapters/cli/registry.js.map +1 -1
  28. package/dist/adapters/cli/shared-hints.d.ts +1 -1
  29. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  30. package/dist/adapters/cli/shared-hints.js +1 -2
  31. package/dist/adapters/cli/shared-hints.js.map +1 -1
  32. package/dist/adapters/cli/types.d.ts +2 -35
  33. package/dist/adapters/cli/types.d.ts.map +1 -1
  34. package/dist/bot-registry.d.ts +0 -59
  35. package/dist/bot-registry.d.ts.map +1 -1
  36. package/dist/bot-registry.js +0 -67
  37. package/dist/bot-registry.js.map +1 -1
  38. package/dist/cli/bots-list-output.d.ts +0 -8
  39. package/dist/cli/bots-list-output.d.ts.map +1 -1
  40. package/dist/cli/bots-list-output.js +0 -9
  41. package/dist/cli/bots-list-output.js.map +1 -1
  42. package/dist/cli.d.ts +1 -15
  43. package/dist/cli.d.ts.map +1 -1
  44. package/dist/cli.js +106 -603
  45. package/dist/cli.js.map +1 -1
  46. package/dist/config.d.ts +2 -11
  47. package/dist/config.d.ts.map +1 -1
  48. package/dist/config.js +4 -17
  49. package/dist/config.js.map +1 -1
  50. package/dist/core/command-handler.d.ts +0 -20
  51. package/dist/core/command-handler.d.ts.map +1 -1
  52. package/dist/core/command-handler.js +313 -762
  53. package/dist/core/command-handler.js.map +1 -1
  54. package/dist/core/dashboard-ipc-server.d.ts +0 -2
  55. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  56. package/dist/core/dashboard-ipc-server.js +2 -222
  57. package/dist/core/dashboard-ipc-server.js.map +1 -1
  58. package/dist/core/role-resolver.d.ts +1 -17
  59. package/dist/core/role-resolver.d.ts.map +1 -1
  60. package/dist/core/role-resolver.js +10 -64
  61. package/dist/core/role-resolver.js.map +1 -1
  62. package/dist/core/session-discovery.d.ts.map +1 -1
  63. package/dist/core/session-discovery.js +5 -19
  64. package/dist/core/session-discovery.js.map +1 -1
  65. package/dist/core/session-manager.d.ts +1 -1
  66. package/dist/core/session-manager.d.ts.map +1 -1
  67. package/dist/core/session-manager.js +20 -37
  68. package/dist/core/session-manager.js.map +1 -1
  69. package/dist/core/types.d.ts +0 -5
  70. package/dist/core/types.d.ts.map +1 -1
  71. package/dist/core/types.js.map +1 -1
  72. package/dist/core/worker-pool.d.ts +0 -141
  73. package/dist/core/worker-pool.d.ts.map +1 -1
  74. package/dist/core/worker-pool.js +24 -543
  75. package/dist/core/worker-pool.js.map +1 -1
  76. package/dist/daemon.d.ts.map +1 -1
  77. package/dist/daemon.js +58 -213
  78. package/dist/daemon.js.map +1 -1
  79. package/dist/dashboard/auth.d.ts +1 -6
  80. package/dist/dashboard/auth.d.ts.map +1 -1
  81. package/dist/dashboard/auth.js +1 -9
  82. package/dist/dashboard/auth.js.map +1 -1
  83. package/dist/dashboard/web/app.js +0 -8
  84. package/dist/dashboard/web/app.js.map +1 -1
  85. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  86. package/dist/dashboard/web/bot-defaults.js +21 -205
  87. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  88. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  89. package/dist/dashboard/web/i18n.js +5 -43
  90. package/dist/dashboard/web/i18n.js.map +1 -1
  91. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  92. package/dist/dashboard/web/sessions.js +0 -4
  93. package/dist/dashboard/web/sessions.js.map +1 -1
  94. package/dist/dashboard/web/workflows.js +3 -3
  95. package/dist/dashboard/web/workflows.js.map +1 -1
  96. package/dist/dashboard/workflow-api.d.ts +1 -8
  97. package/dist/dashboard/workflow-api.d.ts.map +1 -1
  98. package/dist/dashboard/workflow-api.js +4 -19
  99. package/dist/dashboard/workflow-api.js.map +1 -1
  100. package/dist/dashboard-web/app.js +375 -539
  101. package/dist/dashboard-web/index.html +1 -3
  102. package/dist/dashboard-web/style.css +0 -22
  103. package/dist/dashboard.js +2 -199
  104. package/dist/dashboard.js.map +1 -1
  105. package/dist/i18n/en.d.ts.map +1 -1
  106. package/dist/i18n/en.js +11 -104
  107. package/dist/i18n/en.js.map +1 -1
  108. package/dist/i18n/zh.d.ts.map +1 -1
  109. package/dist/i18n/zh.js +11 -104
  110. package/dist/i18n/zh.js.map +1 -1
  111. package/dist/im/lark/card-builder.d.ts +3 -108
  112. package/dist/im/lark/card-builder.d.ts.map +1 -1
  113. package/dist/im/lark/card-builder.js +50 -480
  114. package/dist/im/lark/card-builder.js.map +1 -1
  115. package/dist/im/lark/card-handler.d.ts.map +1 -1
  116. package/dist/im/lark/card-handler.js +18 -241
  117. package/dist/im/lark/card-handler.js.map +1 -1
  118. package/dist/im/lark/client.d.ts +0 -83
  119. package/dist/im/lark/client.d.ts.map +1 -1
  120. package/dist/im/lark/client.js +70 -286
  121. package/dist/im/lark/client.js.map +1 -1
  122. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  123. package/dist/im/lark/event-dispatcher.js +4 -29
  124. package/dist/im/lark/event-dispatcher.js.map +1 -1
  125. package/dist/im/lark/grant-command.d.ts +1 -2
  126. package/dist/im/lark/grant-command.d.ts.map +1 -1
  127. package/dist/im/lark/grant-command.js +2 -3
  128. package/dist/im/lark/grant-command.js.map +1 -1
  129. package/dist/im/lark/identity-cache.d.ts.map +1 -1
  130. package/dist/im/lark/identity-cache.js +3 -3
  131. package/dist/im/lark/identity-cache.js.map +1 -1
  132. package/dist/im/lark/md-card.d.ts +2 -20
  133. package/dist/im/lark/md-card.d.ts.map +1 -1
  134. package/dist/im/lark/md-card.js +17 -49
  135. package/dist/im/lark/md-card.js.map +1 -1
  136. package/dist/im/lark/message-parser.d.ts.map +1 -1
  137. package/dist/im/lark/message-parser.js +31 -87
  138. package/dist/im/lark/message-parser.js.map +1 -1
  139. package/dist/im/lark/workflow-card-handler.d.ts +2 -2
  140. package/dist/im/lark/workflow-card-handler.d.ts.map +1 -1
  141. package/dist/im/lark/workflow-card-handler.js +1 -12
  142. package/dist/im/lark/workflow-card-handler.js.map +1 -1
  143. package/dist/im/lark/workflow-progress-card.d.ts.map +1 -1
  144. package/dist/im/lark/workflow-progress-card.js +0 -53
  145. package/dist/im/lark/workflow-progress-card.js.map +1 -1
  146. package/dist/services/codex-bridge-queue.d.ts +0 -1
  147. package/dist/services/codex-bridge-queue.d.ts.map +1 -1
  148. package/dist/services/codex-bridge-queue.js +0 -23
  149. package/dist/services/codex-bridge-queue.js.map +1 -1
  150. package/dist/services/codex-transcript.d.ts +0 -1
  151. package/dist/services/codex-transcript.d.ts.map +1 -1
  152. package/dist/services/codex-transcript.js.map +1 -1
  153. package/dist/services/feishu-task-client.d.ts +28 -0
  154. package/dist/services/feishu-task-client.d.ts.map +1 -0
  155. package/dist/services/feishu-task-client.js +123 -0
  156. package/dist/services/feishu-task-client.js.map +1 -0
  157. package/dist/services/grant-store.d.ts +2 -12
  158. package/dist/services/grant-store.d.ts.map +1 -1
  159. package/dist/services/grant-store.js +4 -51
  160. package/dist/services/grant-store.js.map +1 -1
  161. package/dist/services/group-creator.d.ts +0 -10
  162. package/dist/services/group-creator.d.ts.map +1 -1
  163. package/dist/services/group-creator.js +1 -26
  164. package/dist/services/group-creator.js.map +1 -1
  165. package/dist/services/groups-store.d.ts +0 -30
  166. package/dist/services/groups-store.d.ts.map +1 -1
  167. package/dist/services/groups-store.js +12 -85
  168. package/dist/services/groups-store.js.map +1 -1
  169. package/dist/services/project-scanner.d.ts +0 -10
  170. package/dist/services/project-scanner.d.ts.map +1 -1
  171. package/dist/services/project-scanner.js +0 -11
  172. package/dist/services/project-scanner.js.map +1 -1
  173. package/dist/services/session-store.js +1 -1
  174. package/dist/services/session-store.js.map +1 -1
  175. package/dist/services/task-store.d.ts +37 -0
  176. package/dist/services/task-store.d.ts.map +1 -0
  177. package/dist/services/task-store.js +115 -0
  178. package/dist/services/task-store.js.map +1 -0
  179. package/dist/setup/bot-config-editor.d.ts +1 -8
  180. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  181. package/dist/setup/bot-config-editor.js +2 -20
  182. package/dist/setup/bot-config-editor.js.map +1 -1
  183. package/dist/setup/ensure-tmux.d.ts +22 -0
  184. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  185. package/dist/setup/ensure-tmux.js +1 -25
  186. package/dist/setup/ensure-tmux.js.map +1 -1
  187. package/dist/setup/verify-permissions.d.ts.map +1 -1
  188. package/dist/setup/verify-permissions.js +1 -15
  189. package/dist/setup/verify-permissions.js.map +1 -1
  190. package/dist/skills/definitions.d.ts +0 -2
  191. package/dist/skills/definitions.d.ts.map +1 -1
  192. package/dist/skills/definitions.js +12 -178
  193. package/dist/skills/definitions.js.map +1 -1
  194. package/dist/skills/installer.d.ts +0 -34
  195. package/dist/skills/installer.d.ts.map +1 -1
  196. package/dist/skills/installer.js +2 -119
  197. package/dist/skills/installer.js.map +1 -1
  198. package/dist/types.d.ts +0 -25
  199. package/dist/types.d.ts.map +1 -1
  200. package/dist/utils/bot-routing.d.ts +0 -50
  201. package/dist/utils/bot-routing.d.ts.map +1 -1
  202. package/dist/utils/bot-routing.js +0 -83
  203. package/dist/utils/bot-routing.js.map +1 -1
  204. package/dist/utils/user-token.d.ts.map +1 -1
  205. package/dist/utils/user-token.js +2 -0
  206. package/dist/utils/user-token.js.map +1 -1
  207. package/dist/worker.js +27 -198
  208. package/dist/worker.js.map +1 -1
  209. package/dist/workflows/attempt-resume.d.ts.map +1 -1
  210. package/dist/workflows/attempt-resume.js +2 -2
  211. package/dist/workflows/attempt-resume.js.map +1 -1
  212. package/dist/workflows/definition.d.ts +9 -412
  213. package/dist/workflows/definition.d.ts.map +1 -1
  214. package/dist/workflows/definition.js +3 -238
  215. package/dist/workflows/definition.js.map +1 -1
  216. package/dist/workflows/events/payloads.d.ts +11 -114
  217. package/dist/workflows/events/payloads.d.ts.map +1 -1
  218. package/dist/workflows/events/payloads.js +0 -46
  219. package/dist/workflows/events/payloads.js.map +1 -1
  220. package/dist/workflows/events/replay.d.ts +0 -21
  221. package/dist/workflows/events/replay.d.ts.map +1 -1
  222. package/dist/workflows/events/replay.js +0 -103
  223. package/dist/workflows/events/replay.js.map +1 -1
  224. package/dist/workflows/events/schema.d.ts +1017 -1712
  225. package/dist/workflows/events/schema.d.ts.map +1 -1
  226. package/dist/workflows/events/schema.js +1 -37
  227. package/dist/workflows/events/schema.js.map +1 -1
  228. package/dist/workflows/events/types.d.ts +1 -5
  229. package/dist/workflows/events/types.d.ts.map +1 -1
  230. package/dist/workflows/loader.d.ts +0 -14
  231. package/dist/workflows/loader.d.ts.map +1 -1
  232. package/dist/workflows/loader.js +0 -27
  233. package/dist/workflows/loader.js.map +1 -1
  234. package/dist/workflows/loop.js +0 -58
  235. package/dist/workflows/loop.js.map +1 -1
  236. package/dist/workflows/ops-projection.d.ts +0 -58
  237. package/dist/workflows/ops-projection.d.ts.map +1 -1
  238. package/dist/workflows/ops-projection.js +0 -74
  239. package/dist/workflows/ops-projection.js.map +1 -1
  240. package/dist/workflows/orchestrator.d.ts +1 -65
  241. package/dist/workflows/orchestrator.d.ts.map +1 -1
  242. package/dist/workflows/orchestrator.js +74 -486
  243. package/dist/workflows/orchestrator.js.map +1 -1
  244. package/dist/workflows/output-binding.d.ts +1 -8
  245. package/dist/workflows/output-binding.d.ts.map +1 -1
  246. package/dist/workflows/output-binding.js +11 -75
  247. package/dist/workflows/output-binding.js.map +1 -1
  248. package/dist/workflows/runtime.d.ts +1 -1
  249. package/dist/workflows/runtime.d.ts.map +1 -1
  250. package/dist/workflows/runtime.js +4 -39
  251. package/dist/workflows/runtime.js.map +1 -1
  252. package/dist/workflows/wait.d.ts +2 -23
  253. package/dist/workflows/wait.d.ts.map +1 -1
  254. package/dist/workflows/wait.js +17 -39
  255. package/dist/workflows/wait.js.map +1 -1
  256. package/package.json +1 -1
  257. package/dist/adapters/adopt-route.d.ts +0 -63
  258. package/dist/adapters/adopt-route.d.ts.map +0 -1
  259. package/dist/adapters/adopt-route.js +0 -195
  260. package/dist/adapters/adopt-route.js.map +0 -1
  261. package/dist/adapters/cli/codex-app.d.ts +0 -4
  262. package/dist/adapters/cli/codex-app.d.ts.map +0 -1
  263. package/dist/adapters/cli/codex-app.js +0 -72
  264. package/dist/adapters/cli/codex-app.js.map +0 -1
  265. package/dist/adapters/cli/hermes.d.ts +0 -4
  266. package/dist/adapters/cli/hermes.d.ts.map +0 -1
  267. package/dist/adapters/cli/hermes.js +0 -40
  268. package/dist/adapters/cli/hermes.js.map +0 -1
  269. package/dist/adapters/cli/mira.d.ts +0 -4
  270. package/dist/adapters/cli/mira.d.ts.map +0 -1
  271. package/dist/adapters/cli/mira.js +0 -67
  272. package/dist/adapters/cli/mira.js.map +0 -1
  273. package/dist/adapters/cli/mtr.d.ts +0 -5
  274. package/dist/adapters/cli/mtr.d.ts.map +0 -1
  275. package/dist/adapters/cli/mtr.js +0 -62
  276. package/dist/adapters/cli/mtr.js.map +0 -1
  277. package/dist/adapters/hook-command.d.ts +0 -18
  278. package/dist/adapters/hook-command.d.ts.map +0 -1
  279. package/dist/adapters/hook-command.js +0 -38
  280. package/dist/adapters/hook-command.js.map +0 -1
  281. package/dist/adapters/hook-installer.d.ts +0 -14
  282. package/dist/adapters/hook-installer.d.ts.map +0 -1
  283. package/dist/adapters/hook-installer.js +0 -192
  284. package/dist/adapters/hook-installer.js.map +0 -1
  285. package/dist/codex-app-runner.d.ts +0 -3
  286. package/dist/codex-app-runner.d.ts.map +0 -1
  287. package/dist/codex-app-runner.js +0 -512
  288. package/dist/codex-app-runner.js.map +0 -1
  289. package/dist/core/ask-api.d.ts +0 -47
  290. package/dist/core/ask-api.d.ts.map +0 -1
  291. package/dist/core/ask-api.js +0 -139
  292. package/dist/core/ask-api.js.map +0 -1
  293. package/dist/core/ask-args.d.ts +0 -53
  294. package/dist/core/ask-args.d.ts.map +0 -1
  295. package/dist/core/ask-args.js +0 -122
  296. package/dist/core/ask-args.js.map +0 -1
  297. package/dist/core/ask-broker.d.ts +0 -98
  298. package/dist/core/ask-broker.d.ts.map +0 -1
  299. package/dist/core/ask-broker.js +0 -329
  300. package/dist/core/ask-broker.js.map +0 -1
  301. package/dist/core/ask-hook/claude-code.d.ts +0 -50
  302. package/dist/core/ask-hook/claude-code.d.ts.map +0 -1
  303. package/dist/core/ask-hook/claude-code.js +0 -145
  304. package/dist/core/ask-hook/claude-code.js.map +0 -1
  305. package/dist/core/ask-hook/codex.d.ts +0 -43
  306. package/dist/core/ask-hook/codex.d.ts.map +0 -1
  307. package/dist/core/ask-hook/codex.js +0 -69
  308. package/dist/core/ask-hook/codex.js.map +0 -1
  309. package/dist/core/ask-hook/opencode.d.ts +0 -41
  310. package/dist/core/ask-hook/opencode.d.ts.map +0 -1
  311. package/dist/core/ask-hook/opencode.js +0 -108
  312. package/dist/core/ask-hook/opencode.js.map +0 -1
  313. package/dist/core/ask-hook/registry.d.ts +0 -3
  314. package/dist/core/ask-hook/registry.d.ts.map +0 -1
  315. package/dist/core/ask-hook/registry.js +0 -12
  316. package/dist/core/ask-hook/registry.js.map +0 -1
  317. package/dist/core/ask-hook/types.d.ts +0 -26
  318. package/dist/core/ask-hook/types.d.ts.map +0 -1
  319. package/dist/core/ask-hook/types.js +0 -2
  320. package/dist/core/ask-hook/types.js.map +0 -1
  321. package/dist/core/ask-types.d.ts +0 -146
  322. package/dist/core/ask-types.d.ts.map +0 -1
  323. package/dist/core/ask-types.js +0 -18
  324. package/dist/core/ask-types.js.map +0 -1
  325. package/dist/core/trigger-session.d.ts +0 -9
  326. package/dist/core/trigger-session.d.ts.map +0 -1
  327. package/dist/core/trigger-session.js +0 -158
  328. package/dist/core/trigger-session.js.map +0 -1
  329. package/dist/dashboard/connector-api.d.ts +0 -3
  330. package/dist/dashboard/connector-api.d.ts.map +0 -1
  331. package/dist/dashboard/connector-api.js +0 -351
  332. package/dist/dashboard/connector-api.js.map +0 -1
  333. package/dist/dashboard/federated-group-core.d.ts +0 -54
  334. package/dist/dashboard/federated-group-core.d.ts.map +0 -1
  335. package/dist/dashboard/federated-group-core.js +0 -165
  336. package/dist/dashboard/federated-group-core.js.map +0 -1
  337. package/dist/dashboard/federation-api.d.ts +0 -42
  338. package/dist/dashboard/federation-api.d.ts.map +0 -1
  339. package/dist/dashboard/federation-api.js +0 -408
  340. package/dist/dashboard/federation-api.js.map +0 -1
  341. package/dist/dashboard/federation-spoke-api.d.ts +0 -76
  342. package/dist/dashboard/federation-spoke-api.d.ts.map +0 -1
  343. package/dist/dashboard/federation-spoke-api.js +0 -618
  344. package/dist/dashboard/federation-spoke-api.js.map +0 -1
  345. package/dist/dashboard/team-group.d.ts +0 -18
  346. package/dist/dashboard/team-group.d.ts.map +0 -1
  347. package/dist/dashboard/team-group.js +0 -7
  348. package/dist/dashboard/team-group.js.map +0 -1
  349. package/dist/dashboard/trigger-api.d.ts +0 -13
  350. package/dist/dashboard/trigger-api.d.ts.map +0 -1
  351. package/dist/dashboard/trigger-api.js +0 -77
  352. package/dist/dashboard/trigger-api.js.map +0 -1
  353. package/dist/dashboard/web/connectors.d.ts +0 -2
  354. package/dist/dashboard/web/connectors.d.ts.map +0 -1
  355. package/dist/dashboard/web/connectors.js +0 -187
  356. package/dist/dashboard/web/connectors.js.map +0 -1
  357. package/dist/dashboard/web/team-federation.d.ts +0 -3
  358. package/dist/dashboard/web/team-federation.d.ts.map +0 -1
  359. package/dist/dashboard/web/team-federation.js +0 -487
  360. package/dist/dashboard/web/team-federation.js.map +0 -1
  361. package/dist/dashboard/webhook-routes.d.ts +0 -19
  362. package/dist/dashboard/webhook-routes.d.ts.map +0 -1
  363. package/dist/dashboard/webhook-routes.js +0 -321
  364. package/dist/dashboard/webhook-routes.js.map +0 -1
  365. package/dist/im/lark/ask-card.d.ts +0 -55
  366. package/dist/im/lark/ask-card.d.ts.map +0 -1
  367. package/dist/im/lark/ask-card.js +0 -328
  368. package/dist/im/lark/ask-card.js.map +0 -1
  369. package/dist/mira-output.d.ts +0 -3
  370. package/dist/mira-output.d.ts.map +0 -1
  371. package/dist/mira-output.js +0 -136
  372. package/dist/mira-output.js.map +0 -1
  373. package/dist/mira-runner.d.ts +0 -3
  374. package/dist/mira-runner.d.ts.map +0 -1
  375. package/dist/mira-runner.js +0 -534
  376. package/dist/mira-runner.js.map +0 -1
  377. package/dist/services/bot-owner-store.d.ts +0 -28
  378. package/dist/services/bot-owner-store.d.ts.map +0 -1
  379. package/dist/services/bot-owner-store.js +0 -82
  380. package/dist/services/bot-owner-store.js.map +0 -1
  381. package/dist/services/bot-profile-store.d.ts +0 -16
  382. package/dist/services/bot-profile-store.d.ts.map +0 -1
  383. package/dist/services/bot-profile-store.js +0 -98
  384. package/dist/services/bot-profile-store.js.map +0 -1
  385. package/dist/services/brand-store.d.ts +0 -15
  386. package/dist/services/brand-store.d.ts.map +0 -1
  387. package/dist/services/brand-store.js +0 -47
  388. package/dist/services/brand-store.js.map +0 -1
  389. package/dist/services/card-prefs-store.d.ts +0 -20
  390. package/dist/services/card-prefs-store.d.ts.map +0 -1
  391. package/dist/services/card-prefs-store.js +0 -82
  392. package/dist/services/card-prefs-store.js.map +0 -1
  393. package/dist/services/connector-store.d.ts +0 -58
  394. package/dist/services/connector-store.d.ts.map +0 -1
  395. package/dist/services/connector-store.js +0 -79
  396. package/dist/services/connector-store.js.map +0 -1
  397. package/dist/services/deployment-identity.d.ts +0 -22
  398. package/dist/services/deployment-identity.d.ts.map +0 -1
  399. package/dist/services/deployment-identity.js +0 -67
  400. package/dist/services/deployment-identity.js.map +0 -1
  401. package/dist/services/federation-membership-store.d.ts +0 -23
  402. package/dist/services/federation-membership-store.d.ts.map +0 -1
  403. package/dist/services/federation-membership-store.js +0 -66
  404. package/dist/services/federation-membership-store.js.map +0 -1
  405. package/dist/services/federation-roster.d.ts +0 -54
  406. package/dist/services/federation-roster.d.ts.map +0 -1
  407. package/dist/services/federation-roster.js +0 -51
  408. package/dist/services/federation-roster.js.map +0 -1
  409. package/dist/services/federation-store.d.ts +0 -76
  410. package/dist/services/federation-store.d.ts.map +0 -1
  411. package/dist/services/federation-store.js +0 -133
  412. package/dist/services/federation-store.js.map +0 -1
  413. package/dist/services/hermes-transcript.d.ts +0 -7
  414. package/dist/services/hermes-transcript.d.ts.map +0 -1
  415. package/dist/services/hermes-transcript.js +0 -117
  416. package/dist/services/hermes-transcript.js.map +0 -1
  417. package/dist/services/invite-store.d.ts +0 -28
  418. package/dist/services/invite-store.d.ts.map +0 -1
  419. package/dist/services/invite-store.js +0 -85
  420. package/dist/services/invite-store.js.map +0 -1
  421. package/dist/services/pairing-store.d.ts +0 -47
  422. package/dist/services/pairing-store.d.ts.map +0 -1
  423. package/dist/services/pairing-store.js +0 -132
  424. package/dist/services/pairing-store.js.map +0 -1
  425. package/dist/services/relay-picker.d.ts +0 -22
  426. package/dist/services/relay-picker.d.ts.map +0 -1
  427. package/dist/services/relay-picker.js +0 -62
  428. package/dist/services/relay-picker.js.map +0 -1
  429. package/dist/services/send-policy.d.ts +0 -55
  430. package/dist/services/send-policy.d.ts.map +0 -1
  431. package/dist/services/send-policy.js +0 -47
  432. package/dist/services/send-policy.js.map +0 -1
  433. package/dist/services/team-roster.d.ts +0 -38
  434. package/dist/services/team-roster.d.ts.map +0 -1
  435. package/dist/services/team-roster.js +0 -82
  436. package/dist/services/team-roster.js.map +0 -1
  437. package/dist/services/team-store.d.ts +0 -54
  438. package/dist/services/team-store.d.ts.map +0 -1
  439. package/dist/services/team-store.js +0 -156
  440. package/dist/services/team-store.js.map +0 -1
  441. package/dist/services/trigger-log-store.d.ts +0 -46
  442. package/dist/services/trigger-log-store.d.ts.map +0 -1
  443. package/dist/services/trigger-log-store.js +0 -132
  444. package/dist/services/trigger-log-store.js.map +0 -1
  445. package/dist/services/trigger-types.d.ts +0 -57
  446. package/dist/services/trigger-types.d.ts.map +0 -1
  447. package/dist/services/trigger-types.js +0 -28
  448. package/dist/services/trigger-types.js.map +0 -1
  449. package/dist/services/webhook-key.d.ts +0 -16
  450. package/dist/services/webhook-key.d.ts.map +0 -1
  451. package/dist/services/webhook-key.js +0 -123
  452. package/dist/services/webhook-key.js.map +0 -1
  453. package/dist/services/webhook-lifecycle-extractors.d.ts +0 -15
  454. package/dist/services/webhook-lifecycle-extractors.d.ts.map +0 -1
  455. package/dist/services/webhook-lifecycle-extractors.js +0 -59
  456. package/dist/services/webhook-lifecycle-extractors.js.map +0 -1
  457. package/dist/services/webhook-lifecycle-store.d.ts +0 -45
  458. package/dist/services/webhook-lifecycle-store.d.ts.map +0 -1
  459. package/dist/services/webhook-lifecycle-store.js +0 -159
  460. package/dist/services/webhook-lifecycle-store.js.map +0 -1
  461. package/dist/utils/daemon-discovery.d.ts +0 -11
  462. package/dist/utils/daemon-discovery.d.ts.map +0 -1
  463. package/dist/utils/daemon-discovery.js +0 -59
  464. package/dist/utils/daemon-discovery.js.map +0 -1
  465. package/dist/workflows/trigger-from-envelope.d.ts +0 -13
  466. package/dist/workflows/trigger-from-envelope.d.ts.map +0 -1
  467. package/dist/workflows/trigger-from-envelope.js +0 -67
  468. package/dist/workflows/trigger-from-envelope.js.map +0 -1
@@ -1,534 +0,0 @@
1
- #!/usr/bin/env node
2
- import { execFileSync } from 'node:child_process';
3
- import { existsSync } from 'node:fs';
4
- import { homedir } from 'node:os';
5
- import { join } from 'node:path';
6
- import { Buffer } from 'node:buffer';
7
- import { extractMiraHistoryFinalText, sanitizeMiraFinalText } from './mira-output.js';
8
- const MIRA_DOMAIN = 'https://mira.bytedance.com';
9
- const API_BASE_URL = process.env.MIRA_API_BASE_URL ?? `${MIRA_DOMAIN}/mira/api/v1`;
10
- const MODEL_METADATA_URL = process.env.MIRA_MODEL_METADATA_URL ?? `${MIRA_DOMAIN}/api/v1/model/metadata`;
11
- const DEFAULT_DATA_SOURCES = ['manus'];
12
- const LAST_ROUND_RETRY_DELAYS_MS = [0, 250, 750];
13
- const COOKIE_DB_PATH = process.env.MIRA_COOKIE_DB
14
- ?? join(homedir(), 'Library', 'Application Support', 'mira', 'Cookies');
15
- const OSC_PREFIX = '\x1b]777;botmux:';
16
- const OSC_END = '\x07';
17
- function parseArgs(argv) {
18
- const out = { sessionId: '' };
19
- for (let i = 0; i < argv.length; i++) {
20
- const key = argv[i];
21
- const val = argv[i + 1];
22
- if (key === '--session-id' && val !== undefined) {
23
- out.sessionId = val;
24
- i++;
25
- }
26
- else if (key === '--mira-session-id' && val !== undefined) {
27
- out.miraSessionId = val;
28
- i++;
29
- }
30
- else if (key === '--model' && val !== undefined) {
31
- out.model = val;
32
- i++;
33
- }
34
- else if (key === '--bot-name' && val !== undefined) {
35
- out.botName = val;
36
- i++;
37
- }
38
- else if (key === '--bot-open-id' && val !== undefined) {
39
- out.botOpenId = val;
40
- i++;
41
- }
42
- else if (key === '--locale' && val !== undefined) {
43
- out.locale = val;
44
- i++;
45
- }
46
- }
47
- if (!out.sessionId)
48
- throw new Error('--session-id is required');
49
- return out;
50
- }
51
- function b64Json(value) {
52
- return Buffer.from(JSON.stringify(value), 'utf8').toString('base64');
53
- }
54
- function emitMarker(kind, payload) {
55
- process.stdout.write(`${OSC_PREFIX}${kind}:${b64Json(payload)}${OSC_END}`);
56
- }
57
- function writeLine(text = '') {
58
- process.stdout.write(text + '\n');
59
- }
60
- function prompt() {
61
- process.stdout.write('› ');
62
- }
63
- function errorMessage(err) {
64
- if (err instanceof Error)
65
- return err.message;
66
- return String(err);
67
- }
68
- function sleep(ms) {
69
- return new Promise(resolve => setTimeout(resolve, ms));
70
- }
71
- function runSqliteCookieQuery(dbPath) {
72
- const sql = [
73
- "select name || '=' || value",
74
- 'from cookies',
75
- "where value != ''",
76
- " and (host_key = 'mira.bytedance.com' or host_key = '.mira.bytedance.com' or host_key like '%.mira.bytedance.com')",
77
- "order by case when name = 'mira_session' then 0 else 1 end",
78
- ].join(' ');
79
- return execFileSync('sqlite3', [dbPath, sql], {
80
- encoding: 'utf8',
81
- stdio: ['ignore', 'pipe', 'pipe'],
82
- timeout: 5_000,
83
- });
84
- }
85
- function readCookieHeader() {
86
- if (process.env.MIRA_COOKIE_HEADER?.trim())
87
- return process.env.MIRA_COOKIE_HEADER.trim();
88
- if (process.env.MIRA_SESSION?.trim())
89
- return `mira_session=${process.env.MIRA_SESSION.trim()}`;
90
- if (!existsSync(COOKIE_DB_PATH)) {
91
- throw new Error(`Mira cookie database not found at ${COOKIE_DB_PATH}. Open Mira.app and sign in, or set MIRA_COOKIE_HEADER.`);
92
- }
93
- let output;
94
- try {
95
- output = runSqliteCookieQuery(COOKIE_DB_PATH);
96
- }
97
- catch (err) {
98
- const detail = err?.stderr ? String(err.stderr).trim() : errorMessage(err);
99
- throw new Error(`Failed to read Mira cookies via sqlite3: ${detail}`);
100
- }
101
- const cookies = output.split('\n').map(s => s.trim()).filter(Boolean);
102
- if (!cookies.some(c => c.startsWith('mira_session='))) {
103
- throw new Error('Mira login cookie mira_session was not found. Open Mira.app and sign in, then try again.');
104
- }
105
- return cookies.join('; ');
106
- }
107
- function parseDataSources() {
108
- const raw = process.env.MIRA_DATA_SOURCES?.trim();
109
- if (!raw)
110
- return DEFAULT_DATA_SOURCES;
111
- try {
112
- const parsed = JSON.parse(raw);
113
- if (Array.isArray(parsed))
114
- return parsed.map(String).filter(Boolean);
115
- }
116
- catch { /* fall through to CSV */ }
117
- return raw.split(',').map(s => s.trim()).filter(Boolean);
118
- }
119
- function boolEnv(name, fallback) {
120
- const raw = process.env[name]?.trim().toLowerCase();
121
- if (!raw)
122
- return fallback;
123
- return raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on';
124
- }
125
- function extractMiraMessage(data) {
126
- if (data === '[DONE]')
127
- return { event: 'finish', data: {} };
128
- try {
129
- const outer = JSON.parse(data);
130
- const message = outer.Message;
131
- if (typeof message === 'string')
132
- return JSON.parse(message);
133
- if (message && typeof message === 'object')
134
- return message;
135
- }
136
- catch {
137
- return undefined;
138
- }
139
- return undefined;
140
- }
141
- function sseDataLines(block) {
142
- return block
143
- .split(/\r?\n/)
144
- .filter(line => line.startsWith('data:'))
145
- .map(line => line.slice(5).trimStart());
146
- }
147
- function findSseSeparator(buffer) {
148
- const lf = buffer.indexOf('\n\n');
149
- const crlf = buffer.indexOf('\r\n\r\n');
150
- if (lf < 0 && crlf < 0)
151
- return undefined;
152
- if (lf < 0)
153
- return { index: crlf, length: 4 };
154
- if (crlf < 0)
155
- return { index: lf, length: 2 };
156
- return lf < crlf ? { index: lf, length: 2 } : { index: crlf, length: 4 };
157
- }
158
- function extractText(value) {
159
- if (typeof value === 'string')
160
- return value;
161
- if (!value || typeof value !== 'object')
162
- return undefined;
163
- const obj = value;
164
- for (const key of ['result', 'text', 'content', 'answer', 'delta']) {
165
- const nested = obj[key];
166
- if (typeof nested === 'string')
167
- return nested;
168
- }
169
- if (obj.content && typeof obj.content === 'object') {
170
- const nested = extractText(obj.content);
171
- if (nested)
172
- return nested;
173
- }
174
- return undefined;
175
- }
176
- function finalTextFromMessage(message) {
177
- if (message.event !== 'content')
178
- return undefined;
179
- const data = message.data;
180
- if (!data || typeof data !== 'object')
181
- return extractText(data);
182
- const obj = data;
183
- return extractText(obj.content ?? obj);
184
- }
185
- function titleFromMessage(message) {
186
- if (message.event !== 'title')
187
- return undefined;
188
- return extractText(message.data);
189
- }
190
- class MiraClient {
191
- args;
192
- currentSessionId;
193
- cookieHeader;
194
- explicitModel;
195
- resolvedModel;
196
- dataSources = parseDataSources();
197
- constructor(args) {
198
- this.args = args;
199
- this.currentSessionId = args.miraSessionId;
200
- this.explicitModel = process.env.MIRA_MODEL?.trim() || args.model?.trim() || undefined;
201
- }
202
- async ensureSession() {
203
- if (this.currentSessionId) {
204
- emitMarker('thread', { threadId: this.currentSessionId });
205
- return this.currentSessionId;
206
- }
207
- const model = await this.resolveModel();
208
- const sessionProperties = {
209
- topic: `botmux ${this.args.sessionId.slice(0, 8)}`,
210
- dataSource: '360_performance',
211
- dataSources: this.dataSources,
212
- model,
213
- };
214
- const payload = {
215
- sessionProperties: {
216
- ...sessionProperties,
217
- },
218
- };
219
- const response = await fetch(`${API_BASE_URL}/chat/create`, {
220
- method: 'POST',
221
- headers: await this.headers(),
222
- body: JSON.stringify(payload),
223
- });
224
- const text = await response.text();
225
- if (!response.ok)
226
- throw new Error(`Mira chat/create failed (${response.status}): ${text.slice(0, 500)}`);
227
- let parsed;
228
- try {
229
- parsed = JSON.parse(text);
230
- }
231
- catch {
232
- throw new Error(`Mira chat/create returned non-JSON: ${text.slice(0, 500)}`);
233
- }
234
- if (parsed.code && parsed.code !== 0) {
235
- throw new Error(`Mira API error ${parsed.code}: ${parsed.msg ?? parsed.message ?? 'unknown'}`);
236
- }
237
- const sessionId = parsed.sessionItem?.sessionId;
238
- if (typeof sessionId !== 'string' || !sessionId) {
239
- throw new Error(`Mira chat/create response did not include sessionItem.sessionId: ${text.slice(0, 500)}`);
240
- }
241
- this.currentSessionId = sessionId;
242
- emitMarker('thread', { threadId: sessionId });
243
- return sessionId;
244
- }
245
- async complete(content) {
246
- const sessionId = await this.ensureSession();
247
- const model = await this.resolveModel();
248
- const startedAt = Date.now();
249
- const online = boolEnv('MIRA_ONLINE', true);
250
- const payload = {
251
- sessionId,
252
- content,
253
- messageType: 1,
254
- summaryAgent: model,
255
- dataSources: this.dataSources,
256
- comprehensive: 1,
257
- config: {
258
- online,
259
- mode: process.env.MIRA_MODE || 'quick',
260
- tool_list: online
261
- ? [
262
- { name: 'Web', id: 'Web', scope: 'GLOBAL' },
263
- { name: 'KnowledgeQASearch', id: 'KnowledgeQASearch', scope: 'GLOBAL' },
264
- ]
265
- : [],
266
- updatedAt: startedAt,
267
- },
268
- };
269
- const response = await fetch(`${API_BASE_URL}/chat/completion`, {
270
- method: 'POST',
271
- headers: await this.headers({ Accept: 'text/event-stream' }),
272
- body: JSON.stringify(payload),
273
- });
274
- if (!response.ok || !response.body) {
275
- const text = await response.text().catch(() => '');
276
- throw new Error(`Mira chat/completion failed (${response.status}): ${text.slice(0, 500)}`);
277
- }
278
- const reader = response.body.getReader();
279
- const decoder = new TextDecoder();
280
- let buffer = '';
281
- let finalText = '';
282
- let seenTitle = false;
283
- let done = false;
284
- while (!done) {
285
- const chunk = await reader.read();
286
- if (chunk.done)
287
- break;
288
- buffer += decoder.decode(chunk.value, { stream: true });
289
- for (;;) {
290
- const sep = findSseSeparator(buffer);
291
- if (!sep)
292
- break;
293
- const block = buffer.slice(0, sep.index);
294
- buffer = buffer.slice(sep.index + sep.length);
295
- for (const data of sseDataLines(block)) {
296
- const message = extractMiraMessage(data);
297
- if (!message)
298
- continue;
299
- if (message.event === 'finish') {
300
- done = true;
301
- break;
302
- }
303
- const title = titleFromMessage(message);
304
- if (title && !seenTitle) {
305
- seenTitle = true;
306
- writeLine(`[mira] ${title}`);
307
- }
308
- const errorValue = message.error ?? message.data?.error;
309
- if (errorValue)
310
- throw new Error(`Mira stream error: ${JSON.stringify(errorValue)}`);
311
- const text = finalTextFromMessage(message);
312
- if (text)
313
- finalText = text;
314
- }
315
- if (done)
316
- break;
317
- }
318
- }
319
- try {
320
- await reader.cancel();
321
- }
322
- catch { /* stream already closed */ }
323
- const sanitizedFinalText = sanitizeMiraFinalText(finalText);
324
- return {
325
- finalText: sanitizedFinalText || await this.fetchLastRoundFinalText(sessionId).catch(() => '') || '',
326
- turnId: `mira-${startedAt}`,
327
- };
328
- }
329
- async headers(extraHeaders = {}) {
330
- if (!this.cookieHeader)
331
- this.cookieHeader = readCookieHeader();
332
- return {
333
- 'Content-Type': 'application/json',
334
- Cookie: this.cookieHeader,
335
- ...extraHeaders,
336
- };
337
- }
338
- async resolveModel() {
339
- if (this.resolvedModel)
340
- return this.resolvedModel;
341
- if (this.explicitModel) {
342
- this.resolvedModel = this.explicitModel;
343
- return this.resolvedModel;
344
- }
345
- const settingsModel = await this.fetchUserDefaultModel().catch(err => {
346
- writeLine(`[mira] failed to read Mira default model: ${errorMessage(err)}`);
347
- return undefined;
348
- });
349
- if (settingsModel) {
350
- this.resolvedModel = settingsModel;
351
- return settingsModel;
352
- }
353
- const metadataModel = await this.fetchMetadataDefaultModel().catch(err => {
354
- writeLine(`[mira] failed to read Mira model metadata: ${errorMessage(err)}`);
355
- return undefined;
356
- });
357
- if (metadataModel) {
358
- this.resolvedModel = metadataModel;
359
- return metadataModel;
360
- }
361
- throw new Error('Unable to determine Mira model. Set a Default Model in Mira.app settings, or set MIRA_MODEL.');
362
- }
363
- async fetchUserDefaultModel() {
364
- const json = await this.fetchJson(`${API_BASE_URL}/user/settings/get`, 'Mira user settings');
365
- if (json.code && json.code !== 0) {
366
- throw new Error(`API error ${json.code}: ${json.msg ?? json.message ?? 'unknown'}`);
367
- }
368
- const model = json.data?.settings?.default_model;
369
- return typeof model === 'string' && model.trim() ? model.trim() : undefined;
370
- }
371
- async fetchMetadataDefaultModel() {
372
- const json = await this.fetchJson(MODEL_METADATA_URL, 'Mira model metadata');
373
- if (json.code && json.code !== 0) {
374
- throw new Error(`API error ${json.code}: ${json.msg ?? json.message ?? 'unknown'}`);
375
- }
376
- const models = Array.isArray(json.data?.models) ? json.data.models : [];
377
- const enabled = models.filter((model) => model && model.enable !== false);
378
- const selected = enabled.find((model) => model.default === true) ?? enabled[0];
379
- const key = selected?.key;
380
- return typeof key === 'string' && key.trim() ? key.trim() : undefined;
381
- }
382
- async fetchLastRoundFinalText(sessionId) {
383
- for (const delay of LAST_ROUND_RETRY_DELAYS_MS) {
384
- if (delay > 0)
385
- await sleep(delay);
386
- const text = await this.fetchLastRoundFinalTextOnce(sessionId).catch(() => undefined);
387
- if (text)
388
- return text;
389
- }
390
- return undefined;
391
- }
392
- async fetchLastRoundFinalTextOnce(sessionId) {
393
- const url = `${API_BASE_URL}/chat/messages/round/last?session_id=${encodeURIComponent(sessionId)}`;
394
- const json = await this.fetchJson(url, 'Mira last round messages');
395
- if (json.code && json.code !== 0)
396
- return undefined;
397
- return extractMiraHistoryFinalText(json);
398
- }
399
- async fetchJson(url, label) {
400
- const response = await fetch(url, {
401
- method: 'GET',
402
- headers: await this.headers(),
403
- });
404
- const text = await response.text();
405
- if (!response.ok)
406
- throw new Error(`${label} failed (${response.status}): ${text.slice(0, 500)}`);
407
- try {
408
- return JSON.parse(text);
409
- }
410
- catch {
411
- throw new Error(`${label} returned non-JSON: ${text.slice(0, 500)}`);
412
- }
413
- }
414
- }
415
- let args;
416
- try {
417
- args = parseArgs(process.argv.slice(2));
418
- }
419
- catch (err) {
420
- console.error(errorMessage(err));
421
- process.exit(2);
422
- }
423
- const client = new MiraClient(args);
424
- const queue = [];
425
- let inputBuffer = '';
426
- let processing = false;
427
- async function runTurn(content) {
428
- const startedAtMs = Date.now();
429
- writeLine();
430
- writeLine('[user]');
431
- writeLine(content);
432
- writeLine();
433
- writeLine('[mira] thinking...');
434
- const result = await client.complete(content);
435
- const completedAtMs = Date.now();
436
- if (result.finalText) {
437
- writeLine();
438
- writeLine(result.finalText);
439
- emitMarker('final', {
440
- turnId: result.turnId,
441
- content: result.finalText,
442
- startedAtMs,
443
- completedAtMs,
444
- });
445
- }
446
- else {
447
- writeLine('[mira] completed without text output.');
448
- }
449
- }
450
- async function drainQueue() {
451
- if (processing)
452
- return;
453
- processing = true;
454
- try {
455
- while (queue.length > 0) {
456
- const next = queue.shift();
457
- try {
458
- await runTurn(next);
459
- }
460
- catch (err) {
461
- const now = Date.now();
462
- const message = `Mira runner error: ${errorMessage(err)}`;
463
- writeLine(message);
464
- emitMarker('final', {
465
- turnId: `mira-error-${now}`,
466
- content: message,
467
- startedAtMs: now,
468
- completedAtMs: now,
469
- });
470
- }
471
- prompt();
472
- }
473
- }
474
- finally {
475
- processing = false;
476
- }
477
- }
478
- function enqueueLine(line) {
479
- const trimmed = line.trim();
480
- if (!trimmed)
481
- return;
482
- if (trimmed.startsWith('::botmux-mira:')) {
483
- const encoded = trimmed.slice('::botmux-mira:'.length);
484
- try {
485
- const decoded = JSON.parse(Buffer.from(encoded, 'base64').toString('utf8'));
486
- if (decoded?.type === 'message' && typeof decoded.content === 'string') {
487
- queue.push(decoded.content);
488
- void drainQueue();
489
- }
490
- }
491
- catch (err) {
492
- writeLine(`[mira] bad botmux input: ${errorMessage(err)}`);
493
- }
494
- return;
495
- }
496
- queue.push(line);
497
- void drainQueue();
498
- }
499
- function handleInput(data) {
500
- const text = data.toString('utf8');
501
- for (const ch of text) {
502
- if (ch === '\u0003') {
503
- process.exit(130);
504
- }
505
- else if (ch === '\r' || ch === '\n') {
506
- const line = inputBuffer;
507
- inputBuffer = '';
508
- enqueueLine(line);
509
- }
510
- else if (ch === '\u007f' || ch === '\b') {
511
- inputBuffer = inputBuffer.slice(0, -1);
512
- }
513
- else {
514
- inputBuffer += ch;
515
- }
516
- }
517
- }
518
- async function main() {
519
- await client.ensureSession();
520
- writeLine('Mira connected.');
521
- if (process.stdin.isTTY)
522
- process.stdin.setRawMode(true);
523
- process.stdin.resume();
524
- process.stdin.on('data', handleInput);
525
- prompt();
526
- }
527
- process.on('SIGTERM', () => {
528
- process.exit(0);
529
- });
530
- main().catch(err => {
531
- console.error(`Mira runner failed: ${errorMessage(err)}`);
532
- process.exit(1);
533
- });
534
- //# sourceMappingURL=mira-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mira-runner.js","sourceRoot":"","sources":["../src/mira-runner.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- export interface BotOwner {
2
- unionId?: string;
3
- openId?: string;
4
- name?: string;
5
- assignedAt: number;
6
- assignedBy: 'auto' | 'manual';
7
- }
8
- type FileShape = Record<string, BotOwner>;
9
- /** Current owner of a bot, or null. */
10
- export declare function getBotOwner(dataDir: string, larkAppId: string): BotOwner | null;
11
- /**
12
- * Assign a bot's owner. By default does NOT overwrite an existing owner (auto
13
- * assignment on pairing). Pass `override: true` for an explicit claim. Returns
14
- * true if it wrote.
15
- */
16
- export declare function setBotOwner(dataDir: string, larkAppId: string, owner: {
17
- unionId?: string;
18
- openId?: string;
19
- name?: string;
20
- }, opts?: {
21
- override?: boolean;
22
- }, now?: number): boolean;
23
- /** Remove a bot's owner. Returns true if one existed. */
24
- export declare function clearBotOwner(dataDir: string, larkAppId: string): boolean;
25
- /** All owners, keyed by larkAppId. */
26
- export declare function listBotOwners(dataDir: string): FileShape;
27
- export {};
28
- //# sourceMappingURL=bot-owner-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot-owner-store.d.ts","sourceRoot":"","sources":["../../src/services/bot-owner-store.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC/B;AAED,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AA0B1C,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAG/E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,EACjC,GAAG,GAAE,MAAmB,GACvB,OAAO,CAaT;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMzE;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAExD"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Bot ownership store: which team member "owns" each bot, used to group the
3
- * team roster by person (so multi-person teams stay organized).
4
- *
5
- * Ownership is mostly automatic: when a member logs in via pairing through a
6
- * given bot, that bot is assigned to them IF it has no owner yet (we never
7
- * silently steal an existing owner — see setBotOwner override). A member can
8
- * also explicitly claim bots ("归到我名下", override=true).
9
- *
10
- * Identity: union_id is the canonical owner key (stable across apps); openId
11
- * and name are kept for display/fallback only.
12
- *
13
- * Storage: `{dataDir}/bot-owners.json`, atomic writes.
14
- */
15
- import { readFileSync, writeFileSync, existsSync, mkdirSync, renameSync } from 'node:fs';
16
- import { join } from 'node:path';
17
- import { randomUUID } from 'node:crypto';
18
- function filePath(dataDir) { return join(dataDir, 'bot-owners.json'); }
19
- function readFile(dataDir) {
20
- const fp = filePath(dataDir);
21
- if (!existsSync(fp))
22
- return {};
23
- try {
24
- const parsed = JSON.parse(readFileSync(fp, 'utf-8'));
25
- if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
26
- return parsed;
27
- }
28
- catch { /* corrupt */ }
29
- return {};
30
- }
31
- function writeFileAtomic(dataDir, data) {
32
- if (!existsSync(dataDir))
33
- mkdirSync(dataDir, { recursive: true });
34
- const fp = filePath(dataDir);
35
- const tmp = `${fp}.${process.pid}.${randomUUID()}.tmp`;
36
- writeFileSync(tmp, JSON.stringify(data, null, 2) + '\n', 'utf-8');
37
- renameSync(tmp, fp);
38
- }
39
- function hasIdentity(o) {
40
- return !!(o.unionId || o.openId);
41
- }
42
- /** Current owner of a bot, or null. */
43
- export function getBotOwner(dataDir, larkAppId) {
44
- if (!larkAppId)
45
- return null;
46
- return readFile(dataDir)[larkAppId] ?? null;
47
- }
48
- /**
49
- * Assign a bot's owner. By default does NOT overwrite an existing owner (auto
50
- * assignment on pairing). Pass `override: true` for an explicit claim. Returns
51
- * true if it wrote.
52
- */
53
- export function setBotOwner(dataDir, larkAppId, owner, opts = {}, now = Date.now()) {
54
- if (!larkAppId || !hasIdentity(owner))
55
- return false;
56
- const data = readFile(dataDir);
57
- if (data[larkAppId] && !opts.override)
58
- return false; // don't steal an existing owner
59
- data[larkAppId] = {
60
- ...(owner.unionId ? { unionId: owner.unionId } : {}),
61
- ...(owner.openId ? { openId: owner.openId } : {}),
62
- ...(owner.name ? { name: owner.name } : {}),
63
- assignedAt: now,
64
- assignedBy: opts.override ? 'manual' : 'auto',
65
- };
66
- writeFileAtomic(dataDir, data);
67
- return true;
68
- }
69
- /** Remove a bot's owner. Returns true if one existed. */
70
- export function clearBotOwner(dataDir, larkAppId) {
71
- const data = readFile(dataDir);
72
- if (!data[larkAppId])
73
- return false;
74
- delete data[larkAppId];
75
- writeFileAtomic(dataDir, data);
76
- return true;
77
- }
78
- /** All owners, keyed by larkAppId. */
79
- export function listBotOwners(dataDir) {
80
- return readFile(dataDir);
81
- }
82
- //# sourceMappingURL=bot-owner-store.js.map