botmux 2.44.0 → 2.45.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 (167) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/dist/cli/bots-list-output.d.ts +8 -0
  4. package/dist/cli/bots-list-output.d.ts.map +1 -1
  5. package/dist/cli/bots-list-output.js +9 -0
  6. package/dist/cli/bots-list-output.js.map +1 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +6 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/core/command-handler.d.ts.map +1 -1
  11. package/dist/core/command-handler.js +132 -50
  12. package/dist/core/command-handler.js.map +1 -1
  13. package/dist/core/dashboard-ipc-server.d.ts +2 -0
  14. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  15. package/dist/core/dashboard-ipc-server.js +56 -0
  16. package/dist/core/dashboard-ipc-server.js.map +1 -1
  17. package/dist/core/role-resolver.d.ts +17 -1
  18. package/dist/core/role-resolver.d.ts.map +1 -1
  19. package/dist/core/role-resolver.js +64 -10
  20. package/dist/core/role-resolver.js.map +1 -1
  21. package/dist/core/session-manager.d.ts.map +1 -1
  22. package/dist/core/session-manager.js +14 -9
  23. package/dist/core/session-manager.js.map +1 -1
  24. package/dist/core/trigger-session.d.ts +9 -0
  25. package/dist/core/trigger-session.d.ts.map +1 -0
  26. package/dist/core/trigger-session.js +158 -0
  27. package/dist/core/trigger-session.js.map +1 -0
  28. package/dist/daemon.d.ts.map +1 -1
  29. package/dist/daemon.js +73 -44
  30. package/dist/daemon.js.map +1 -1
  31. package/dist/dashboard/connector-api.d.ts +3 -0
  32. package/dist/dashboard/connector-api.d.ts.map +1 -0
  33. package/dist/dashboard/connector-api.js +351 -0
  34. package/dist/dashboard/connector-api.js.map +1 -0
  35. package/dist/dashboard/federated-group-core.d.ts +54 -0
  36. package/dist/dashboard/federated-group-core.d.ts.map +1 -0
  37. package/dist/dashboard/federated-group-core.js +165 -0
  38. package/dist/dashboard/federated-group-core.js.map +1 -0
  39. package/dist/dashboard/federation-api.d.ts +42 -0
  40. package/dist/dashboard/federation-api.d.ts.map +1 -0
  41. package/dist/dashboard/federation-api.js +408 -0
  42. package/dist/dashboard/federation-api.js.map +1 -0
  43. package/dist/dashboard/federation-spoke-api.d.ts +76 -0
  44. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -0
  45. package/dist/dashboard/federation-spoke-api.js +618 -0
  46. package/dist/dashboard/federation-spoke-api.js.map +1 -0
  47. package/dist/dashboard/team-group.d.ts +18 -0
  48. package/dist/dashboard/team-group.d.ts.map +1 -0
  49. package/dist/dashboard/team-group.js +7 -0
  50. package/dist/dashboard/team-group.js.map +1 -0
  51. package/dist/dashboard/trigger-api.d.ts +13 -0
  52. package/dist/dashboard/trigger-api.d.ts.map +1 -0
  53. package/dist/dashboard/trigger-api.js +77 -0
  54. package/dist/dashboard/trigger-api.js.map +1 -0
  55. package/dist/dashboard/web/app.js +8 -0
  56. package/dist/dashboard/web/app.js.map +1 -1
  57. package/dist/dashboard/web/connectors.d.ts +2 -0
  58. package/dist/dashboard/web/connectors.d.ts.map +1 -0
  59. package/dist/dashboard/web/connectors.js +187 -0
  60. package/dist/dashboard/web/connectors.js.map +1 -0
  61. package/dist/dashboard/web/team-federation.d.ts +3 -0
  62. package/dist/dashboard/web/team-federation.d.ts.map +1 -0
  63. package/dist/dashboard/web/team-federation.js +472 -0
  64. package/dist/dashboard/web/team-federation.js.map +1 -0
  65. package/dist/dashboard/webhook-routes.d.ts +19 -0
  66. package/dist/dashboard/webhook-routes.d.ts.map +1 -0
  67. package/dist/dashboard/webhook-routes.js +321 -0
  68. package/dist/dashboard/webhook-routes.js.map +1 -0
  69. package/dist/dashboard-web/app.js +509 -386
  70. package/dist/dashboard-web/index.html +2 -0
  71. package/dist/dashboard.js +152 -1
  72. package/dist/dashboard.js.map +1 -1
  73. package/dist/i18n/en.d.ts.map +1 -1
  74. package/dist/i18n/en.js +24 -8
  75. package/dist/i18n/en.js.map +1 -1
  76. package/dist/i18n/zh.d.ts.map +1 -1
  77. package/dist/i18n/zh.js +24 -8
  78. package/dist/i18n/zh.js.map +1 -1
  79. package/dist/im/lark/client.d.ts +21 -0
  80. package/dist/im/lark/client.d.ts.map +1 -1
  81. package/dist/im/lark/client.js +86 -18
  82. package/dist/im/lark/client.js.map +1 -1
  83. package/dist/services/bot-owner-store.d.ts +28 -0
  84. package/dist/services/bot-owner-store.d.ts.map +1 -0
  85. package/dist/services/bot-owner-store.js +82 -0
  86. package/dist/services/bot-owner-store.js.map +1 -0
  87. package/dist/services/bot-profile-store.d.ts +16 -0
  88. package/dist/services/bot-profile-store.d.ts.map +1 -0
  89. package/dist/services/bot-profile-store.js +98 -0
  90. package/dist/services/bot-profile-store.js.map +1 -0
  91. package/dist/services/connector-store.d.ts +58 -0
  92. package/dist/services/connector-store.d.ts.map +1 -0
  93. package/dist/services/connector-store.js +79 -0
  94. package/dist/services/connector-store.js.map +1 -0
  95. package/dist/services/deployment-identity.d.ts +22 -0
  96. package/dist/services/deployment-identity.d.ts.map +1 -0
  97. package/dist/services/deployment-identity.js +67 -0
  98. package/dist/services/deployment-identity.js.map +1 -0
  99. package/dist/services/federation-membership-store.d.ts +23 -0
  100. package/dist/services/federation-membership-store.d.ts.map +1 -0
  101. package/dist/services/federation-membership-store.js +66 -0
  102. package/dist/services/federation-membership-store.js.map +1 -0
  103. package/dist/services/federation-roster.d.ts +54 -0
  104. package/dist/services/federation-roster.d.ts.map +1 -0
  105. package/dist/services/federation-roster.js +51 -0
  106. package/dist/services/federation-roster.js.map +1 -0
  107. package/dist/services/federation-store.d.ts +76 -0
  108. package/dist/services/federation-store.d.ts.map +1 -0
  109. package/dist/services/federation-store.js +133 -0
  110. package/dist/services/federation-store.js.map +1 -0
  111. package/dist/services/group-creator.d.ts +6 -0
  112. package/dist/services/group-creator.d.ts.map +1 -1
  113. package/dist/services/group-creator.js +10 -1
  114. package/dist/services/group-creator.js.map +1 -1
  115. package/dist/services/groups-store.d.ts +11 -0
  116. package/dist/services/groups-store.d.ts.map +1 -1
  117. package/dist/services/groups-store.js +42 -0
  118. package/dist/services/groups-store.js.map +1 -1
  119. package/dist/services/invite-store.d.ts +28 -0
  120. package/dist/services/invite-store.d.ts.map +1 -0
  121. package/dist/services/invite-store.js +85 -0
  122. package/dist/services/invite-store.js.map +1 -0
  123. package/dist/services/pairing-store.d.ts +47 -0
  124. package/dist/services/pairing-store.d.ts.map +1 -0
  125. package/dist/services/pairing-store.js +132 -0
  126. package/dist/services/pairing-store.js.map +1 -0
  127. package/dist/services/team-roster.d.ts +38 -0
  128. package/dist/services/team-roster.d.ts.map +1 -0
  129. package/dist/services/team-roster.js +82 -0
  130. package/dist/services/team-roster.js.map +1 -0
  131. package/dist/services/team-store.d.ts +54 -0
  132. package/dist/services/team-store.d.ts.map +1 -0
  133. package/dist/services/team-store.js +156 -0
  134. package/dist/services/team-store.js.map +1 -0
  135. package/dist/services/trigger-log-store.d.ts +46 -0
  136. package/dist/services/trigger-log-store.d.ts.map +1 -0
  137. package/dist/services/trigger-log-store.js +132 -0
  138. package/dist/services/trigger-log-store.js.map +1 -0
  139. package/dist/services/trigger-types.d.ts +57 -0
  140. package/dist/services/trigger-types.d.ts.map +1 -0
  141. package/dist/services/trigger-types.js +28 -0
  142. package/dist/services/trigger-types.js.map +1 -0
  143. package/dist/services/webhook-key.d.ts +16 -0
  144. package/dist/services/webhook-key.d.ts.map +1 -0
  145. package/dist/services/webhook-key.js +123 -0
  146. package/dist/services/webhook-key.js.map +1 -0
  147. package/dist/services/webhook-lifecycle-extractors.d.ts +15 -0
  148. package/dist/services/webhook-lifecycle-extractors.d.ts.map +1 -0
  149. package/dist/services/webhook-lifecycle-extractors.js +59 -0
  150. package/dist/services/webhook-lifecycle-extractors.js.map +1 -0
  151. package/dist/services/webhook-lifecycle-store.d.ts +45 -0
  152. package/dist/services/webhook-lifecycle-store.d.ts.map +1 -0
  153. package/dist/services/webhook-lifecycle-store.js +159 -0
  154. package/dist/services/webhook-lifecycle-store.js.map +1 -0
  155. package/dist/setup/verify-permissions.d.ts.map +1 -1
  156. package/dist/setup/verify-permissions.js +4 -0
  157. package/dist/setup/verify-permissions.js.map +1 -1
  158. package/dist/skills/definitions.d.ts.map +1 -1
  159. package/dist/skills/definitions.js +64 -10
  160. package/dist/skills/definitions.js.map +1 -1
  161. package/dist/workflows/events/payloads.d.ts +2 -2
  162. package/dist/workflows/events/schema.d.ts +8 -8
  163. package/dist/workflows/trigger-from-envelope.d.ts +13 -0
  164. package/dist/workflows/trigger-from-envelope.d.ts.map +1 -0
  165. package/dist/workflows/trigger-from-envelope.js +67 -0
  166. package/dist/workflows/trigger-from-envelope.js.map +1 -0
  167. package/package.json +1 -1
package/README.en.md CHANGED
@@ -307,10 +307,9 @@ Send these straight into a topic — the daemon intercepts them (no clash with t
307
307
 
308
308
  | Command | Description |
309
309
  |---------|-------------|
310
- | `/repo` | Show project selector card (interactive dropdown + text list) |
310
+ | `/repo` | While a repo is pending selection, launch in the default workingDir; mid-session, show the project selector card (interactive dropdown + text list) |
311
311
  | `/repo <N>` | Switch to Nth project from last scan |
312
312
  | `/repo <path\|name>` | Skip the selector card; pass a path (relative/absolute) or a first-level project name under workingDir |
313
- | `/skip` | Skip the repo selector card, start the session in the default dir |
314
313
  | `/cd <path>` | Change working directory and restart the CLI process |
315
314
  | `/status` | Show session info (uptime, terminal URL, etc.) |
316
315
  | `/restart` | Restart CLI process (keeps the session context) |
package/README.md CHANGED
@@ -301,10 +301,9 @@ botmux autostart enable
301
301
 
302
302
  | 命令 | 说明 |
303
303
  |------|------|
304
- | `/repo` | 显示项目选择卡片(交互式下拉 + 文本列表) |
304
+ | `/repo` | 仓库待选时直接用默认 workingDir 启动会话;会话进行中则弹出项目选择卡片(交互式下拉 + 文本列表) |
305
305
  | `/repo <N>` | 切换到上次扫描的第 N 个项目 |
306
306
  | `/repo <路径\|项目名>` | 跳过选择卡片,直接指定路径(相对/绝对)或 workingDir 下的一级项目名 |
307
- | `/skip` | 跳过仓库选择卡片,直接用默认目录开启会话 |
308
307
  | `/cd <路径>` | 切换工作目录并重启 CLI 进程 |
309
308
  | `/status` | 查看会话信息(运行时间、终端地址等) |
310
309
  | `/restart` | 重启 CLI 进程(保留 session 上下文) |
@@ -15,6 +15,14 @@ export type BotListOutputEntry = {
15
15
  larkAppId: string;
16
16
  /** Alias for workflow authors. Equal to larkAppId when locally configured. */
17
17
  workflowBot: string | null;
18
+ /** Short capability label (team-level), for picking who to hand off to. */
19
+ capability: string | null;
20
+ /** Whether this bot has a team-level role registered. */
21
+ hasTeamRole: boolean;
22
+ /** Whether YOU (the listing bot) can reliably @-mention it from here. */
23
+ mentionable: boolean;
24
+ /** How the @-mention handle was resolved. */
25
+ mentionSource: 'cross-ref' | 'self' | 'observed' | 'fallback';
18
26
  };
19
27
  export declare function formatChatBotsForCli(chatBots: ChatBotMember[], currentLarkAppId: string): BotListOutputEntry[];
20
28
  export declare function formatBotInfoEntriesForCli(botEntries: BotInfoEntryForList[], currentLarkAppId: string): BotListOutputEntry[];
@@ -1 +1 @@
1
- {"version":3,"file":"bots-list-output.d.ts","sourceRoot":"","sources":["../../src/cli/bots-list-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,YAAY,GAAG,WAAW,CAAC;IACnC,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,EAAE,CAStB;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,mBAAmB,EAAE,EACjC,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,EAAE,CAWtB"}
1
+ {"version":3,"file":"bots-list-output.d.ts","sourceRoot":"","sources":["../../src/cli/bots-list-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,YAAY,GAAG,WAAW,CAAC;IACnC,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,aAAa,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;CAC/D,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,EAAE,CAatB;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,mBAAmB,EAAE,EACjC,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,EAAE,CAgBtB"}
@@ -6,6 +6,10 @@ export function formatChatBotsForCli(chatBots, currentLarkAppId) {
6
6
  source: cb.source,
7
7
  larkAppId: cb.larkAppId,
8
8
  workflowBot: cb.larkAppId || null,
9
+ capability: cb.capability ?? null,
10
+ hasTeamRole: cb.hasTeamRole,
11
+ mentionable: cb.mentionable,
12
+ mentionSource: cb.mentionSource,
9
13
  }));
10
14
  }
11
15
  export function formatBotInfoEntriesForCli(botEntries, currentLarkAppId) {
@@ -18,6 +22,11 @@ export function formatBotInfoEntriesForCli(botEntries, currentLarkAppId) {
18
22
  source: 'configured',
19
23
  larkAppId: b.larkAppId,
20
24
  workflowBot: b.larkAppId,
25
+ // Local fallback path (no live chat query): we only know self reliably.
26
+ capability: null,
27
+ hasTeamRole: false,
28
+ mentionable: b.larkAppId === currentLarkAppId,
29
+ mentionSource: (b.larkAppId === currentLarkAppId ? 'self' : 'fallback'),
21
30
  }));
22
31
  }
23
32
  //# sourceMappingURL=bots-list-output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bots-list-output.js","sourceRoot":"","sources":["../../src/cli/bots-list-output.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,gBAAwB;IAExB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,EAAE,CAAC,WAAW;QACpB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,MAAM,EAAE,EAAE,CAAC,SAAS,KAAK,gBAAgB;QACzC,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,WAAW,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI;KAClC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAiC,EACjC,gBAAwB;IAExB,OAAO,UAAU;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK;QAC1B,MAAM,EAAE,CAAC,CAAC,SAAU;QACpB,MAAM,EAAE,CAAC,CAAC,SAAS,KAAK,gBAAgB;QACxC,MAAM,EAAE,YAAqB;QAC7B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,WAAW,EAAE,CAAC,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"bots-list-output.js","sourceRoot":"","sources":["../../src/cli/bots-list-output.ts"],"names":[],"mappings":"AA6BA,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,gBAAwB;IAExB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,EAAE,CAAC,WAAW;QACpB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,MAAM,EAAE,EAAE,CAAC,SAAS,KAAK,gBAAgB;QACzC,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,WAAW,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI;QACjC,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI;QACjC,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,aAAa,EAAE,EAAE,CAAC,aAAa;KAChC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAiC,EACjC,gBAAwB;IAExB,OAAO,UAAU;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK;QAC1B,MAAM,EAAE,CAAC,CAAC,SAAU;QACpB,MAAM,EAAE,CAAC,CAAC,SAAS,KAAK,gBAAgB;QACxC,MAAM,EAAE,YAAqB;QAC7B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,WAAW,EAAE,CAAC,CAAC,SAAS;QACxB,wEAAwE;QACxE,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,CAAC,CAAC,SAAS,KAAK,gBAAgB;QAC7C,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAwB;KAC/F,CAAC,CAAC,CAAC;AACR,CAAC"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAs6GA;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+F7B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA46GA;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+F7B"}
package/dist/cli.js CHANGED
@@ -243,6 +243,12 @@ function ecosystemConfig() {
243
243
  out_file: join(LOG_DIR, 'dashboard-out.log'),
244
244
  merge_logs: true,
245
245
  env: {
246
+ // MUST match the bot daemons' SESSION_DATA_DIR: the dashboard shares
247
+ // pairings/federations/memberships with them via {dataDir}/*.json. Without
248
+ // it the dashboard falls back to an install-relative ../data and reads a
249
+ // DIFFERENT store → /pair「配对码无效」, auto-bind hubsSynced:0,
250
+ // remote-group not_a_member (cross-deployment 拉群 silently broken).
251
+ SESSION_DATA_DIR: DATA_DIR,
246
252
  BOTMUX_DASHBOARD_HOST: process.env.BOTMUX_DASHBOARD_HOST ?? '0.0.0.0',
247
253
  BOTMUX_DASHBOARD_PORT: process.env.BOTMUX_DASHBOARD_PORT ?? '7891',
248
254
  },