botmux 2.98.4-canary.2 → 2.99.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 (205) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/adapters/cli/genius.d.ts +4 -0
  4. package/dist/adapters/cli/genius.d.ts.map +1 -0
  5. package/dist/adapters/cli/genius.js +216 -0
  6. package/dist/adapters/cli/genius.js.map +1 -0
  7. package/dist/adapters/cli/registry.d.ts +2 -1
  8. package/dist/adapters/cli/registry.d.ts.map +1 -1
  9. package/dist/adapters/cli/registry.js +3 -1
  10. package/dist/adapters/cli/registry.js.map +1 -1
  11. package/dist/adapters/cli/types.d.ts +1 -1
  12. package/dist/adapters/cli/types.d.ts.map +1 -1
  13. package/dist/core/dashboard-rows.d.ts +1 -1
  14. package/dist/core/dashboard-rows.d.ts.map +1 -1
  15. package/dist/core/dashboard-rows.js +2 -1
  16. package/dist/core/dashboard-rows.js.map +1 -1
  17. package/dist/dashboard/session-card-model.d.ts +2 -2
  18. package/dist/dashboard/session-card-model.d.ts.map +1 -1
  19. package/dist/dashboard/session-card-model.js +5 -2
  20. package/dist/dashboard/session-card-model.js.map +1 -1
  21. package/dist/dashboard/web/app.d.ts.map +1 -1
  22. package/dist/dashboard/web/app.js +28 -63
  23. package/dist/dashboard/web/app.js.map +1 -1
  24. package/dist/dashboard/web/bot-defaults-page.d.ts +3 -0
  25. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -0
  26. package/dist/dashboard/web/bot-defaults-page.js +23 -0
  27. package/dist/dashboard/web/bot-defaults-page.js.map +1 -0
  28. package/dist/dashboard/web/bot-defaults.d.ts +2 -1
  29. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  30. package/dist/dashboard/web/bot-defaults.js +30 -30
  31. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  32. package/dist/dashboard/web/connectors-page.d.ts +14 -0
  33. package/dist/dashboard/web/connectors-page.d.ts.map +1 -0
  34. package/dist/dashboard/web/connectors-page.js +303 -0
  35. package/dist/dashboard/web/connectors-page.js.map +1 -0
  36. package/dist/dashboard/web/connectors.d.ts +1 -12
  37. package/dist/dashboard/web/connectors.d.ts.map +1 -1
  38. package/dist/dashboard/web/connectors.js +1 -325
  39. package/dist/dashboard/web/connectors.js.map +1 -1
  40. package/dist/dashboard/web/dashboard-routes.d.ts +14 -0
  41. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -0
  42. package/dist/dashboard/web/dashboard-routes.js +176 -0
  43. package/dist/dashboard/web/dashboard-routes.js.map +1 -0
  44. package/dist/dashboard/web/groups-page.d.ts +3 -0
  45. package/dist/dashboard/web/groups-page.d.ts.map +1 -0
  46. package/dist/dashboard/web/groups-page.js +26 -0
  47. package/dist/dashboard/web/groups-page.js.map +1 -0
  48. package/dist/dashboard/web/groups.d.ts +1 -1
  49. package/dist/dashboard/web/groups.d.ts.map +1 -1
  50. package/dist/dashboard/web/groups.js +113 -52
  51. package/dist/dashboard/web/groups.js.map +1 -1
  52. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  53. package/dist/dashboard/web/i18n.js +18 -0
  54. package/dist/dashboard/web/i18n.js.map +1 -1
  55. package/dist/dashboard/web/insights-page.d.ts +3 -0
  56. package/dist/dashboard/web/insights-page.d.ts.map +1 -0
  57. package/dist/dashboard/web/insights-page.js +26 -0
  58. package/dist/dashboard/web/insights-page.js.map +1 -0
  59. package/dist/dashboard/web/insights.d.ts +18 -1
  60. package/dist/dashboard/web/insights.d.ts.map +1 -1
  61. package/dist/dashboard/web/insights.js +25 -61
  62. package/dist/dashboard/web/insights.js.map +1 -1
  63. package/dist/dashboard/web/office-page.d.ts +3 -0
  64. package/dist/dashboard/web/office-page.d.ts.map +1 -0
  65. package/dist/dashboard/web/office-page.js +149 -0
  66. package/dist/dashboard/web/office-page.js.map +1 -0
  67. package/dist/dashboard/web/office.d.ts +1 -1
  68. package/dist/dashboard/web/office.d.ts.map +1 -1
  69. package/dist/dashboard/web/office.js +1 -139
  70. package/dist/dashboard/web/office.js.map +1 -1
  71. package/dist/dashboard/web/overview-page.d.ts +3 -0
  72. package/dist/dashboard/web/overview-page.d.ts.map +1 -0
  73. package/dist/dashboard/web/overview-page.js +149 -0
  74. package/dist/dashboard/web/overview-page.js.map +1 -0
  75. package/dist/dashboard/web/overview.d.ts +2 -2
  76. package/dist/dashboard/web/overview.d.ts.map +1 -1
  77. package/dist/dashboard/web/overview.js +14 -3
  78. package/dist/dashboard/web/overview.js.map +1 -1
  79. package/dist/dashboard/web/react-hooks.d.ts +8 -0
  80. package/dist/dashboard/web/react-hooks.d.ts.map +1 -0
  81. package/dist/dashboard/web/react-hooks.js +43 -0
  82. package/dist/dashboard/web/react-hooks.js.map +1 -0
  83. package/dist/dashboard/web/react-mount.d.ts +4 -0
  84. package/dist/dashboard/web/react-mount.d.ts.map +1 -0
  85. package/dist/dashboard/web/react-mount.js +7 -0
  86. package/dist/dashboard/web/react-mount.js.map +1 -0
  87. package/dist/dashboard/web/roles-page.d.ts +4 -0
  88. package/dist/dashboard/web/roles-page.d.ts.map +1 -0
  89. package/dist/dashboard/web/roles-page.js +26 -0
  90. package/dist/dashboard/web/roles-page.js.map +1 -0
  91. package/dist/dashboard/web/roles.d.ts +1 -2
  92. package/dist/dashboard/web/roles.d.ts.map +1 -1
  93. package/dist/dashboard/web/roles.js +189 -135
  94. package/dist/dashboard/web/roles.js.map +1 -1
  95. package/dist/dashboard/web/route-lifecycle.d.ts +14 -0
  96. package/dist/dashboard/web/route-lifecycle.d.ts.map +1 -0
  97. package/dist/dashboard/web/route-lifecycle.js +29 -0
  98. package/dist/dashboard/web/route-lifecycle.js.map +1 -0
  99. package/dist/dashboard/web/schedules-page.d.ts +14 -0
  100. package/dist/dashboard/web/schedules-page.d.ts.map +1 -0
  101. package/dist/dashboard/web/schedules-page.js +84 -0
  102. package/dist/dashboard/web/schedules-page.js.map +1 -0
  103. package/dist/dashboard/web/schedules.d.ts +1 -1
  104. package/dist/dashboard/web/schedules.d.ts.map +1 -1
  105. package/dist/dashboard/web/schedules.js +1 -115
  106. package/dist/dashboard/web/schedules.js.map +1 -1
  107. package/dist/dashboard/web/sessions-page.d.ts +3 -0
  108. package/dist/dashboard/web/sessions-page.d.ts.map +1 -0
  109. package/dist/dashboard/web/sessions-page.js +28 -0
  110. package/dist/dashboard/web/sessions-page.js.map +1 -0
  111. package/dist/dashboard/web/sessions.d.ts +4 -1
  112. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  113. package/dist/dashboard/web/sessions.js +43 -10
  114. package/dist/dashboard/web/sessions.js.map +1 -1
  115. package/dist/dashboard/web/settings-page.d.ts +3 -0
  116. package/dist/dashboard/web/settings-page.d.ts.map +1 -0
  117. package/dist/dashboard/web/settings-page.js +387 -0
  118. package/dist/dashboard/web/settings-page.js.map +1 -0
  119. package/dist/dashboard/web/settings.d.ts +1 -1
  120. package/dist/dashboard/web/settings.d.ts.map +1 -1
  121. package/dist/dashboard/web/settings.js +1 -534
  122. package/dist/dashboard/web/settings.js.map +1 -1
  123. package/dist/dashboard/web/skills-page.d.ts +33 -0
  124. package/dist/dashboard/web/skills-page.d.ts.map +1 -0
  125. package/dist/dashboard/web/skills-page.js +515 -0
  126. package/dist/dashboard/web/skills-page.js.map +1 -0
  127. package/dist/dashboard/web/skills.d.ts +1 -1
  128. package/dist/dashboard/web/skills.d.ts.map +1 -1
  129. package/dist/dashboard/web/skills.js +1 -711
  130. package/dist/dashboard/web/skills.js.map +1 -1
  131. package/dist/dashboard/web/store.d.ts +9 -0
  132. package/dist/dashboard/web/store.d.ts.map +1 -1
  133. package/dist/dashboard/web/store.js +19 -2
  134. package/dist/dashboard/web/store.js.map +1 -1
  135. package/dist/dashboard/web/team-federation-page.d.ts +4 -0
  136. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -0
  137. package/dist/dashboard/web/team-federation-page.js +47 -0
  138. package/dist/dashboard/web/team-federation-page.js.map +1 -0
  139. package/dist/dashboard/web/team-federation.d.ts +2 -2
  140. package/dist/dashboard/web/team-federation.d.ts.map +1 -1
  141. package/dist/dashboard/web/team-federation.js +104 -97
  142. package/dist/dashboard/web/team-federation.js.map +1 -1
  143. package/dist/dashboard/web/v3-page.d.ts +3 -0
  144. package/dist/dashboard/web/v3-page.d.ts.map +1 -0
  145. package/dist/dashboard/web/v3-page.js +27 -0
  146. package/dist/dashboard/web/v3-page.js.map +1 -0
  147. package/dist/dashboard/web/v3.d.ts +2 -1
  148. package/dist/dashboard/web/v3.d.ts.map +1 -1
  149. package/dist/dashboard/web/v3.js +18 -43
  150. package/dist/dashboard/web/v3.js.map +1 -1
  151. package/dist/dashboard/web/whiteboards-page.d.ts +3 -0
  152. package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -0
  153. package/dist/dashboard/web/whiteboards-page.js +203 -0
  154. package/dist/dashboard/web/whiteboards-page.js.map +1 -0
  155. package/dist/dashboard/web/whiteboards.d.ts +1 -1
  156. package/dist/dashboard/web/whiteboards.d.ts.map +1 -1
  157. package/dist/dashboard/web/whiteboards.js +1 -275
  158. package/dist/dashboard/web/whiteboards.js.map +1 -1
  159. package/dist/dashboard-web/app.js +36 -2550
  160. package/dist/dashboard-web/chunks/bot-defaults-page-3EV7K6LJ.js +358 -0
  161. package/dist/dashboard-web/chunks/chunk-5E3MJJL4.js +1 -0
  162. package/dist/dashboard-web/chunks/chunk-76J7PNZI.js +1 -0
  163. package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +1 -0
  164. package/dist/dashboard-web/chunks/chunk-JTSE5VP6.js +54 -0
  165. package/dist/dashboard-web/chunks/chunk-JXLHRRJD.js +31 -0
  166. package/dist/dashboard-web/chunks/chunk-NASYW5FD.js +1 -0
  167. package/dist/dashboard-web/chunks/connectors-XPZKEHF6.js +1 -0
  168. package/dist/dashboard-web/chunks/groups-page-C54PVKYP.js +207 -0
  169. package/dist/dashboard-web/chunks/insights-page-BBQYR7WY.js +309 -0
  170. package/dist/dashboard-web/chunks/office-page-6DXYOG55.js +1 -0
  171. package/dist/dashboard-web/chunks/overview-page-5PJCAMID.js +1 -0
  172. package/dist/dashboard-web/chunks/roles-page-APUDLPVM.js +98 -0
  173. package/dist/dashboard-web/chunks/schedules-WG2UKHSO.js +1 -0
  174. package/dist/dashboard-web/chunks/sessions-page-F3U5NFPD.js +238 -0
  175. package/dist/dashboard-web/chunks/settings-page-OSBZNCXL.js +2 -0
  176. package/dist/dashboard-web/chunks/skills-page-Y3VUAOYG.js +2 -0
  177. package/dist/dashboard-web/chunks/team-federation-page-CRH3WZPH.js +10 -0
  178. package/dist/dashboard-web/chunks/v3-page-FVPUL665.js +149 -0
  179. package/dist/dashboard-web/chunks/whiteboards-page-HLCTYSSV.js +1 -0
  180. package/dist/dashboard-web/chunks/workflows-UB7OPYGI.js +184 -0
  181. package/dist/dashboard-web/index.html +1 -1
  182. package/dist/dashboard-web/style.css +82 -1
  183. package/dist/dashboard.js +5 -6
  184. package/dist/dashboard.js.map +1 -1
  185. package/dist/i18n/en.d.ts.map +1 -1
  186. package/dist/i18n/en.js +1 -0
  187. package/dist/i18n/en.js.map +1 -1
  188. package/dist/i18n/zh.d.ts.map +1 -1
  189. package/dist/i18n/zh.js +1 -0
  190. package/dist/i18n/zh.js.map +1 -1
  191. package/dist/im/lark/card-builder.d.ts.map +1 -1
  192. package/dist/im/lark/card-builder.js +1 -0
  193. package/dist/im/lark/card-builder.js.map +1 -1
  194. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  195. package/dist/im/lark/event-dispatcher.js +7 -0
  196. package/dist/im/lark/event-dispatcher.js.map +1 -1
  197. package/dist/im/lark/sessions-card.d.ts.map +1 -1
  198. package/dist/im/lark/sessions-card.js +4 -1
  199. package/dist/im/lark/sessions-card.js.map +1 -1
  200. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  201. package/dist/setup/bot-config-editor.js +16 -14
  202. package/dist/setup/bot-config-editor.js.map +1 -1
  203. package/dist/worker.js +1 -1
  204. package/dist/worker.js.map +1 -1
  205. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/dashboard/web/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/dashboard/web/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -5,16 +5,25 @@ type Session = Record<string, any> & {
5
5
  type Schedule = Record<string, any> & {
6
6
  id: string;
7
7
  };
8
+ export interface StoreSnapshot {
9
+ sessions: ReadonlyMap<string, Session>;
10
+ schedules: ReadonlyMap<string, Schedule>;
11
+ online: boolean;
12
+ version: number;
13
+ }
8
14
  declare class Store {
9
15
  sessions: Map<string, Session>;
10
16
  schedules: Map<string, Schedule>;
11
17
  online: boolean;
18
+ private version;
19
+ private snapshot;
12
20
  private listeners;
13
21
  upsertSessions(rows: Session[]): void;
14
22
  upsertSchedules(rows: Schedule[]): void;
15
23
  applySse(type: string, body: any): void;
16
24
  setOnline(v: boolean): void;
17
25
  on(fn: () => void): () => boolean;
26
+ getSnapshot(): StoreSnapshot;
18
27
  private emit;
19
28
  }
20
29
  export declare const store: Store;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/store.ts"],"names":[],"mappings":"AACA,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3E,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,cAAM,KAAK;IACT,QAAQ,uBAA8B;IACtC,SAAS,wBAA+B;IACxC,MAAM,UAAQ;IACd,OAAO,CAAC,SAAS,CAAyB;IAE1C,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;IAI9B,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;IAIhC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAqBhC,SAAS,CAAC,CAAC,EAAE,OAAO;IAGpB,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI;IACjB,OAAO,CAAC,IAAI;CACb;AAED,eAAO,MAAM,KAAK,OAAc,CAAC;AAEjC,wBAAsB,SAAS,kBAwB9B"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/store.ts"],"names":[],"mappings":"AACA,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3E,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAM,KAAK;IACT,QAAQ,uBAA8B;IACtC,SAAS,wBAA+B;IACxC,MAAM,UAAQ;IACd,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAKd;IACF,OAAO,CAAC,SAAS,CAAyB;IAE1C,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;IAI9B,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;IAIhC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAqBhC,SAAS,CAAC,CAAC,EAAE,OAAO;IAGpB,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI;IACjB,WAAW,IAAI,aAAa;IAC5B,OAAO,CAAC,IAAI;CAUb;AAED,eAAO,MAAM,KAAK,OAAc,CAAC;AAEjC,wBAAsB,SAAS,kBAwB9B"}
@@ -2,6 +2,13 @@ class Store {
2
2
  sessions = new Map();
3
3
  schedules = new Map();
4
4
  online = true;
5
+ version = 0;
6
+ snapshot = {
7
+ sessions: this.sessions,
8
+ schedules: this.schedules,
9
+ online: this.online,
10
+ version: this.version,
11
+ };
5
12
  listeners = new Set();
6
13
  upsertSessions(rows) {
7
14
  for (const r of rows)
@@ -50,8 +57,18 @@ class Store {
50
57
  }
51
58
  }
52
59
  on(fn) { this.listeners.add(fn); return () => this.listeners.delete(fn); }
53
- emit() { for (const fn of this.listeners)
54
- fn(); }
60
+ getSnapshot() { return this.snapshot; }
61
+ emit() {
62
+ this.version += 1;
63
+ this.snapshot = {
64
+ sessions: this.sessions,
65
+ schedules: this.schedules,
66
+ online: this.online,
67
+ version: this.version,
68
+ };
69
+ for (const fn of this.listeners)
70
+ fn();
71
+ }
55
72
  }
56
73
  export const store = new Store();
57
74
  export async function bootstrap() {
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/dashboard/web/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/dashboard/web/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type PageDisposer } from './react-mount.js';
2
+ export declare function renderTeamFederationPage(root: HTMLElement): PageDisposer;
3
+ export declare function renderTeamManagePage(root: HTMLElement): PageDisposer;
4
+ //# sourceMappingURL=team-federation-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-federation-page.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/team-federation-page.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAoHrE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAExE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAEpE"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { useT } from './react-hooks.js';
4
+ import { mountReactPage } from './react-mount.js';
5
+ import { wireTeamFederationPage, wireTeamManagePage } from './team-federation.js';
6
+ function TeamSubNav(props) {
7
+ const tr = useT();
8
+ const tabStyle = (on) => ({
9
+ padding: '6px 14px',
10
+ borderRadius: '8px',
11
+ textDecoration: 'none',
12
+ fontSize: '14px',
13
+ fontWeight: 600,
14
+ background: on ? 'var(--accent)' : 'var(--surface-muted)',
15
+ color: on ? 'var(--on-accent)' : 'var(--muted)',
16
+ });
17
+ return (_jsxs("div", { style: { display: 'flex', gap: '8px', marginBottom: '14px' }, children: [_jsx("a", { href: "#/team", style: tabStyle(props.active === 'home'), children: tr('team.navHome') }), _jsx("a", { href: "#/team/manage", style: tabStyle(props.active === 'manage'), children: tr('team.navManage') })] }));
18
+ }
19
+ // Render-once scaffold: React owns the translated route shell, while the
20
+ // federation controller owns roster rendering and async action flows.
21
+ function TeamHomePage() {
22
+ const tr = useT();
23
+ const rootRef = useRef(null);
24
+ useEffect(() => {
25
+ if (!rootRef.current)
26
+ return undefined;
27
+ return wireTeamFederationPage(rootRef.current);
28
+ }, []);
29
+ return (_jsxs("section", { className: "page", ref: rootRef, children: [_jsx("div", { className: "page-heading", children: _jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: tr('team.eyebrow') }), _jsx("h1", { children: tr('team.homeTitle') }), _jsx("p", { className: "tf-lede", children: tr('team.homeLede') })] }) }), _jsx(TeamSubNav, { active: "home" }), _jsxs("div", { className: "card", style: { marginBottom: '16px' }, children: [_jsx("h2", { style: { marginTop: 0 }, children: tr('team.localDeployTitle') }), _jsxs("p", { children: [tr('team.myIdentity'), _jsx("b", { id: "tf-owner", children: tr('team.unbound') }), _jsx("button", { type: "button", id: "tf-autobind", className: "primary", style: { marginLeft: '8px' }, children: tr('team.bindBtn') }), _jsx("span", { className: "muted", style: { fontSize: '13px' }, children: tr('team.bindHint') })] }), _jsx("div", { id: "tf-bind-out", style: { display: 'none', marginTop: '6px' } })] }), _jsxs("div", { className: "card", children: [_jsxs("h2", { style: { marginTop: 0 }, children: [tr('team.myTeams'), " ", _jsx("span", { className: "muted", id: "tf-count", style: { fontSize: '13px' } })] }), _jsxs("div", { style: { display: 'flex', gap: '8px', alignItems: 'center', flexWrap: 'wrap', marginBottom: '8px', fontSize: '13px' }, children: [_jsx("input", { id: "tf-search", placeholder: tr('team.searchPh'), style: { padding: '5px 9px', minWidth: '180px' } }), _jsx("select", { id: "tf-cli", style: { padding: '5px' }, children: _jsx("option", { value: "", children: tr('team.allCli') }) }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", id: "tf-fcap" }), " ", tr('team.hasCap')] }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", id: "tf-frole" }), " ", tr('team.hasRole')] })] }), _jsx("p", { className: "muted", style: { fontSize: '13px', margin: '0 0 4px' }, children: tr('team.teamsHint') }), _jsx("div", { id: "tf-teams", children: tr('team.loading') })] }), _jsx("div", { id: "tf-modal", style: { display: 'none', position: 'fixed', inset: 0, background: 'rgba(0,0,0,.5)', alignItems: 'center', justifyContent: 'center', zIndex: 50 }, children: _jsxs("div", { style: { background: 'var(--surface)', color: 'var(--fg)', border: '1px solid var(--border)', borderRadius: '10px', padding: '18px 20px', width: 'min(560px,92vw)' }, children: [_jsx("h2", { id: "tf-modal-title", style: { marginTop: 0 }, children: tr('team.roleModalTitle') }), _jsx("p", { className: "muted", style: { fontSize: '13px' }, children: tr('team.roleModalHint') }), _jsx("textarea", { id: "tf-modal-text", readOnly: true, style: { width: '100%', minHeight: '200px', font: '13px/1.5 ui-monospace,Menlo,monospace', padding: '10px', boxSizing: 'border-box' } }), _jsx("div", { style: { display: 'flex', justifyContent: 'flex-end', gap: '8px', marginTop: '12px' }, children: _jsx("button", { type: "button", id: "tf-modal-cancel", children: tr('team.close') }) })] }) })] }));
30
+ }
31
+ function TeamManagePage() {
32
+ const tr = useT();
33
+ const rootRef = useRef(null);
34
+ useEffect(() => {
35
+ if (!rootRef.current)
36
+ return undefined;
37
+ return wireTeamManagePage(rootRef.current);
38
+ }, []);
39
+ return (_jsxs("section", { className: "page", ref: rootRef, children: [_jsx("div", { className: "page-heading", children: _jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: tr('team.eyebrow') }), _jsx("h1", { children: tr('team.manageTitle') }), _jsx("p", { className: "tf-lede", children: tr('team.manageLede') })] }) }), _jsx(TeamSubNav, { active: "manage" }), _jsxs("div", { className: "card", style: { marginBottom: '16px' }, children: [_jsx("h2", { style: { marginTop: 0 }, children: tr('team.hostedTitle') }), _jsxs("p", { style: { display: 'flex', gap: '8px', flexWrap: 'wrap', alignItems: 'center', marginBottom: '6px' }, children: [_jsx("input", { id: "tm-newname", placeholder: tr('team.newTeamPh'), style: { minWidth: '200px' } }), _jsx("button", { type: "button", id: "tm-create", className: "primary", children: tr('team.createTeamBtn') }), _jsx("span", { className: "muted tm-cout", style: { fontSize: '13px' } })] }), _jsx("div", { id: "tm-list", children: tr('team.loading') })] }), _jsxs("div", { className: "card", children: [_jsx("h2", { style: { marginTop: 0 }, children: tr('team.joinTitle') }), _jsxs("p", { style: { display: 'flex', gap: '8px', flexWrap: 'wrap', alignItems: 'center' }, children: [_jsx("input", { id: "tm-hub", placeholder: tr('team.hubPh'), style: { flex: 1, minWidth: '240px' } }), _jsx("input", { id: "tm-code", placeholder: tr('team.codePh'), style: { minWidth: '160px' } }), _jsx("button", { type: "button", id: "tm-join", className: "primary", children: tr('team.joinBtn') })] }), _jsx("div", { id: "tm-join-out", style: { display: 'none', marginTop: '6px' } })] })] }));
40
+ }
41
+ export function renderTeamFederationPage(root) {
42
+ return mountReactPage(root, _jsx(TeamHomePage, {}));
43
+ }
44
+ export function renderTeamManagePage(root) {
45
+ return mountReactPage(root, _jsx(TeamManagePage, {}));
46
+ }
47
+ //# sourceMappingURL=team-federation-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-federation-page.js","sourceRoot":"","sources":["../../../src/dashboard/web/team-federation-page.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAqB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAIlF,SAAS,UAAU,CAAC,KAA0B;IAC5C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAClB,MAAM,QAAQ,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB;QACzD,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc;KAChD,CAAC,CAAC;IACH,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAC/D,YAAG,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,YAAG,EAAE,CAAC,cAAc,CAAC,GAAK,EACnF,YAAG,IAAI,EAAC,eAAe,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,YAAG,EAAE,CAAC,gBAAgB,CAAC,GAAK,IAC1F,CACP,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,sEAAsE;AACtE,SAAS,YAAY;IACnB,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,mBAAS,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,OAAO,aACpC,cAAK,SAAS,EAAC,cAAc,YAAC,0BAC5B,YAAG,SAAS,EAAC,SAAS,YAAE,EAAE,CAAC,cAAc,CAAC,GAAK,EAC/C,uBAAK,EAAE,CAAC,gBAAgB,CAAC,GAAM,EAC/B,YAAG,SAAS,EAAC,SAAS,YAAE,EAAE,CAAC,eAAe,CAAC,GAAK,IAC5C,GAAM,EACZ,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,GAAG,EAC5B,eAAK,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aACnD,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAG,EAAE,CAAC,uBAAuB,CAAC,GAAM,EAC/D,wBACG,EAAE,CAAC,iBAAiB,CAAC,EAAC,YAAG,EAAE,EAAC,UAAU,YAAE,EAAE,CAAC,cAAc,CAAC,GAAK,EAChE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,aAAa,EAAC,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,YAAG,EAAE,CAAC,cAAc,CAAC,GAAU,EACtH,eAAM,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAG,EAAE,CAAC,eAAe,CAAC,GAAQ,IAC/E,EACJ,cAAK,EAAE,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAI,IAClE,EACN,eAAK,SAAS,EAAC,MAAM,aACnB,cAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,aAAG,EAAE,CAAC,cAAc,CAAC,OAAE,eAAM,SAAS,EAAC,OAAO,EAAC,EAAE,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAI,IAAK,EAC5H,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aACxH,gBAAO,EAAE,EAAC,WAAW,EAAC,WAAW,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAI,EAC5G,iBAAQ,EAAE,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAE,iBAAQ,KAAK,EAAC,EAAE,YAAE,EAAE,CAAC,aAAa,CAAC,GAAU,GAAS,EACrG,4BAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,SAAS,GAAG,OAAE,EAAE,CAAC,aAAa,CAAC,IAAS,EACzE,4BAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,UAAU,GAAG,OAAE,EAAE,CAAC,cAAc,CAAC,IAAS,IACvE,EACN,YAAG,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAG,EAAE,CAAC,gBAAgB,CAAC,GAAK,EAC/F,cAAK,EAAE,EAAC,UAAU,YAAE,EAAE,CAAC,cAAc,CAAC,GAAO,IACzC,EACN,cAAK,EAAE,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,YAClK,eAAK,KAAK,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,aACvK,aAAI,EAAE,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAG,EAAE,CAAC,qBAAqB,CAAC,GAAM,EACjF,YAAG,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAG,EAAE,CAAC,oBAAoB,CAAC,GAAK,EAChF,mBAAU,EAAE,EAAC,eAAe,EAAC,QAAQ,QAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,uCAAuC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAI,EAC/K,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YACxF,iBAAQ,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,iBAAiB,YAAE,EAAE,CAAC,YAAY,CAAC,GAAU,GAClE,IACF,GACF,IACE,CACX,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAClB,MAAM,OAAO,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,mBAAS,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,OAAO,aACpC,cAAK,SAAS,EAAC,cAAc,YAAC,0BAC5B,YAAG,SAAS,EAAC,SAAS,YAAE,EAAE,CAAC,cAAc,CAAC,GAAK,EAC/C,uBAAK,EAAE,CAAC,kBAAkB,CAAC,GAAM,EACjC,YAAG,SAAS,EAAC,SAAS,YAAE,EAAE,CAAC,iBAAiB,CAAC,GAAK,IAC9C,GAAM,EACZ,KAAC,UAAU,IAAC,MAAM,EAAC,QAAQ,GAAG,EAC9B,eAAK,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aACnD,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAG,EAAE,CAAC,kBAAkB,CAAC,GAAM,EAC1D,aAAG,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,aACpG,gBAAO,EAAE,EAAC,YAAY,EAAC,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAI,EAC1F,iBAAQ,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,WAAW,EAAC,SAAS,EAAC,SAAS,YAAE,EAAE,CAAC,oBAAoB,CAAC,GAAU,EAC5F,eAAM,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAI,IAC7D,EACJ,cAAK,EAAE,EAAC,SAAS,YAAE,EAAE,CAAC,cAAc,CAAC,GAAO,IACxC,EACN,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAG,EAAE,CAAC,gBAAgB,CAAC,GAAM,EACxD,aAAG,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC/E,gBAAO,EAAE,EAAC,QAAQ,EAAC,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAI,EAC3F,gBAAO,EAAE,EAAC,SAAS,EAAC,WAAW,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAI,EACpF,iBAAQ,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,YAAE,EAAE,CAAC,cAAc,CAAC,GAAU,IAClF,EACJ,cAAK,EAAE,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAI,IAClE,IACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAiB;IACxD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAC,YAAY,KAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAiB;IACpD,OAAO,cAAc,CAAC,IAAI,EAAE,KAAC,cAAc,KAAG,CAAC,CAAC;AAClD,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare function renderTeamFederationPage(root: HTMLElement): void;
2
- export declare function renderTeamManagePage(root: HTMLElement): void;
1
+ export declare function wireTeamFederationPage(root: HTMLElement): () => void;
2
+ export declare function wireTeamManagePage(root: HTMLElement): () => void;
3
3
  //# sourceMappingURL=team-federation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"team-federation.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/team-federation.ts"],"names":[],"mappings":"AAgTA,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAQhE;AAyED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA0B5D"}
1
+ {"version":3,"file":"team-federation.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/team-federation.ts"],"names":[],"mappings":"AAyRA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CAyBpE;AAgDD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CAuChE"}
@@ -21,6 +21,14 @@ const pickedByTeam = new Map();
21
21
  const gnameByTeam = new Map(); // group-name draft per team — survives renderTeams() re-render
22
22
  const expandedTeams = new Set(); // default empty → all teams collapsed; click a team header to expand
23
23
  const expandedDeps = new Set(); // `${team.key}::${dep.id}` — default empty → deployment groups collapsed too
24
+ let activeTeamGeneration = 0;
25
+ function nextTeamGeneration() {
26
+ activeTeamGeneration += 1;
27
+ return activeTeamGeneration;
28
+ }
29
+ function isTeamGeneration(generation) {
30
+ return activeTeamGeneration === generation;
31
+ }
24
32
  function $(id) { return document.getElementById(id); }
25
33
  function allTeams() { return [...localTeams, ...remoteTeams]; }
26
34
  function pickedSet(key) { let s = pickedByTeam.get(key); if (!s) {
@@ -28,48 +36,7 @@ function pickedSet(key) { let s = pickedByTeam.get(key); if (!s) {
28
36
  pickedByTeam.set(key, s);
29
37
  } return s; }
30
38
  function teamByKey(key) { return allTeams().find(t => t.key === key); }
31
- function subNav(active) {
32
- const tab = (href, label, on) => `<a href="${href}" style="padding:6px 14px;border-radius:8px;text-decoration:none;font-size:14px;font-weight:600;${on ? 'background:var(--accent);color:var(--on-accent)' : 'color:var(--muted);background:var(--surface-muted)'}">${label}</a>`;
33
- return `<div style="display:flex;gap:8px;margin-bottom:14px">${tab('#/team', t('team.navHome'), active === 'home')}${tab('#/team/manage', t('team.navManage'), active === 'manage')}</div>`;
34
- }
35
39
  // ─────────────────────────── #/team (my team) ───────────────────────────
36
- function homeHtml() {
37
- return `<section class="page">
38
- <div class="page-heading"><div>
39
- <p class="eyebrow">${t('team.eyebrow')}</p><h1>${t('team.homeTitle')}</h1>
40
- <p class="tf-lede">${t('team.homeLede')}</p>
41
- </div></div>
42
- ${subNav('home')}
43
- <div class="card" style="margin-bottom:16px">
44
- <h2 style="margin-top:0">${t('team.localDeployTitle')}</h2>
45
- <p>${t('team.myIdentity')}<b id="tf-owner">${t('team.unbound')}</b>
46
- <button id="tf-autobind" class="primary" style="margin-left:8px">${t('team.bindBtn')}</button>
47
- <span class="muted" style="font-size:13px">${t('team.bindHint')}</span></p>
48
- <div id="tf-bind-out" style="display:none;margin-top:6px"></div>
49
- </div>
50
- <div class="card">
51
- <h2 style="margin-top:0">${t('team.myTeams')} <span class="muted" id="tf-count" style="font-size:13px"></span></h2>
52
- <div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px;font-size:13px">
53
- <input id="tf-search" placeholder="${t('team.searchPh')}" style="padding:5px 9px;min-width:180px">
54
- <select id="tf-cli" style="padding:5px"><option value="">${t('team.allCli')}</option></select>
55
- <label><input type="checkbox" id="tf-fcap"> ${t('team.hasCap')}</label>
56
- <label><input type="checkbox" id="tf-frole"> ${t('team.hasRole')}</label>
57
- </div>
58
- <p class="muted" style="font-size:13px;margin:0 0 4px">${t('team.teamsHint')}</p>
59
- <div id="tf-teams">${t('team.loading')}</div>
60
- </div>
61
- <div id="tf-modal" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);align-items:center;justify-content:center;z-index:50">
62
- <div style="background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:10px;padding:18px 20px;width:min(560px,92vw)">
63
- <h2 id="tf-modal-title" style="margin-top:0">${t('team.roleModalTitle')}</h2>
64
- <p class="muted" style="font-size:13px">${t('team.roleModalHint')}</p>
65
- <textarea id="tf-modal-text" readonly style="width:100%;min-height:200px;font:13px/1.5 ui-monospace,Menlo,monospace;padding:10px;box-sizing:border-box"></textarea>
66
- <div style="display:flex;justify-content:flex-end;gap:8px;margin-top:12px">
67
- <button id="tf-modal-cancel">${t('team.close')}</button>
68
- </div>
69
- </div>
70
- </div>
71
- </section>`;
72
- }
73
40
  function botMatch(b) {
74
41
  const q = (($('tf-search').value) || '').trim().toLowerCase();
75
42
  if (q && !((b.name || '') + ' ' + (b.cliId || '') + ' ' + (b.capability || '')).toLowerCase().includes(q))
@@ -167,9 +134,9 @@ function renderTeams() {
167
134
  const acrossTeams = teams.length > 1 ? t('team.acrossTeams', { n: teams.length }) : '';
168
135
  const numStr = shownIds.size === totalIds.size ? `${totalIds.size}` : `${shownIds.size} / ${totalIds.size}`;
169
136
  $('tf-count').textContent = `· ${numStr} ${t('team.botsWord')}${acrossTeams}`;
170
- wireTeams();
137
+ wireTeams(activeTeamGeneration);
171
138
  }
172
- function wireTeams() {
139
+ function wireTeams(generation = activeTeamGeneration) {
173
140
  const el = $('tf-teams');
174
141
  el.querySelectorAll('.tf-team-h').forEach(h => {
175
142
  h.onclick = () => { const k = h.dataset.tk; if (expandedTeams.has(k))
@@ -196,18 +163,22 @@ function wireTeams() {
196
163
  inp.onchange = async () => {
197
164
  const app = inp.dataset.app, valv = inp.value;
198
165
  await jput('/api/team/local-bots/' + encodeURIComponent(app) + '/capability', { capability: valv });
166
+ if (!isTeamGeneration(generation))
167
+ return;
199
168
  allTeams().forEach(t2 => { const bb = t2.bots.find(b => b.larkAppId === app); if (bb)
200
169
  bb.capability = valv.trim() || null; });
201
170
  };
202
171
  });
203
- el.querySelectorAll('.tf-role').forEach(btn => { btn.onclick = () => openRoleModal(btn.dataset.app, btn.dataset.name || ''); });
172
+ el.querySelectorAll('.tf-role').forEach(btn => { btn.onclick = () => openRoleModal(btn.dataset.app, btn.dataset.name || '', generation); });
204
173
  el.querySelectorAll('.tf-rmmember').forEach(btn => {
205
174
  btn.onclick = async (e) => {
206
175
  e.stopPropagation(); // inside the clickable dep header — don't toggle collapse
207
176
  if (!confirm(t('team.removeMemberConfirm', { name: btn.dataset.name || '' })))
208
177
  return;
209
178
  await jsend('DELETE', `/api/team/hosted/${encodeURIComponent(btn.dataset.team)}/members/${encodeURIComponent(btn.dataset.dep)}`);
210
- loadLocal();
179
+ if (!isTeamGeneration(generation))
180
+ return;
181
+ void loadLocal(generation);
211
182
  };
212
183
  });
213
184
  el.querySelectorAll('.tf-grp').forEach(btn => {
@@ -227,6 +198,8 @@ function wireTeams() {
227
198
  const r = t2.kind === 'local'
228
199
  ? await jpost('/api/team/federated-group', { name, larkAppIds: apps, teamId: t2.teamId })
229
200
  : await jpost('/api/team/remote-group', { hubUrl: t2.hubUrl, teamId: t2.teamId, name, larkAppIds: apps });
201
+ if (!isTeamGeneration(generation))
202
+ return;
230
203
  renderGroupResult(out, r.body, r.status);
231
204
  if (r.body?.ok) {
232
205
  pickedSet(k).clear();
@@ -234,10 +207,15 @@ function wireTeams() {
234
207
  // Re-render so the form (group name + checkboxes) clears consistently for both
235
208
  // local & remote, then restore the success message/link a plain re-render would wipe.
236
209
  const resultHtml = out.innerHTML;
237
- const restore = () => { const o = el.querySelector(`.tf-gout[data-tk="${CSS.escape(k)}"]`); if (o)
238
- o.innerHTML = resultHtml; };
210
+ const restore = () => {
211
+ if (!isTeamGeneration(generation))
212
+ return;
213
+ const o = el.querySelector(`.tf-gout[data-tk="${CSS.escape(k)}"]`);
214
+ if (o)
215
+ o.innerHTML = resultHtml;
216
+ };
239
217
  if (t2.kind === 'local')
240
- void loadLocal().then(restore);
218
+ void loadLocal(generation).then(restore);
241
219
  else {
242
220
  renderTeams();
243
221
  restore();
@@ -266,8 +244,10 @@ function renderGroupResult(out, b, status) {
266
244
  out.innerHTML = `<span class="err">${escapeHtml(String(msg))}</span>`;
267
245
  }
268
246
  }
269
- async function openRoleModal(app, name) {
247
+ async function openRoleModal(app, name, generation = activeTeamGeneration) {
270
248
  const r = await jget('/api/team/local-bots/' + encodeURIComponent(app) + '/role');
249
+ if (!isTeamGeneration(generation))
250
+ return;
271
251
  $('tf-modal-title').textContent = t('team.roleModalTitleName', { name });
272
252
  $('tf-modal-text').value = r.body?.role || '';
273
253
  $('tf-modal').dataset.app = app;
@@ -280,8 +260,10 @@ function refreshCliOptions() {
280
260
  sel.innerHTML = `<option value="">${t('team.allCli')}</option>` + clis.map(c => `<option value="${escapeHtml(c)}">${escapeHtml(c)}</option>`).join('');
281
261
  sel.value = cur;
282
262
  }
283
- async function loadLocal() {
263
+ async function loadLocal(generation = activeTeamGeneration) {
284
264
  const r = await jget('/api/team/hosted');
265
+ if (!isTeamGeneration(generation))
266
+ return;
285
267
  const b = r.body;
286
268
  if (!b?.ok) {
287
269
  localTeams = [];
@@ -299,8 +281,10 @@ async function loadLocal() {
299
281
  refreshCliOptions();
300
282
  renderTeams();
301
283
  }
302
- async function loadRemote() {
284
+ async function loadRemote(generation = activeTeamGeneration) {
303
285
  const r = await jget('/api/team/remote-roster');
286
+ if (!isTeamGeneration(generation))
287
+ return;
304
288
  const list = r.body?.memberships || [];
305
289
  remoteTeams = list.map((m) => {
306
290
  const deployments = m.roster?.deployments || [];
@@ -314,48 +298,46 @@ async function loadRemote() {
314
298
  refreshCliOptions();
315
299
  renderTeams();
316
300
  }
317
- export function renderTeamFederationPage(root) {
318
- root.innerHTML = homeHtml();
301
+ export function wireTeamFederationPage(root) {
302
+ const generation = nextTeamGeneration();
303
+ const cleanups = [];
304
+ const on = (el, type, listener) => {
305
+ if (!el)
306
+ return;
307
+ el.addEventListener(type, listener);
308
+ cleanups.push(() => el.removeEventListener(type, listener));
309
+ };
319
310
  pickedByTeam.clear();
320
311
  gnameByTeam.clear();
321
312
  expandedTeams.clear();
322
313
  expandedDeps.clear();
323
- ['tf-search', 'tf-cli', 'tf-fcap', 'tf-frole'].forEach(id => { const el = $(id); el.oninput = renderTeams; el.onchange = renderTeams; });
324
- $('tf-modal-cancel').onclick = () => { $('tf-modal').style.display = 'none'; };
325
- wireBind();
326
- void loadLocal();
327
- void loadRemote();
314
+ ['tf-search', 'tf-cli', 'tf-fcap', 'tf-frole'].forEach(id => {
315
+ const el = document.getElementById(id);
316
+ on(el, 'input', () => { if (isTeamGeneration(generation))
317
+ renderTeams(); });
318
+ on(el, 'change', () => { if (isTeamGeneration(generation))
319
+ renderTeams(); });
320
+ });
321
+ on(document.getElementById('tf-modal-cancel'), 'click', () => { if (isTeamGeneration(generation))
322
+ $('tf-modal').style.display = 'none'; });
323
+ wireBind(generation);
324
+ void loadLocal(generation);
325
+ void loadRemote(generation);
326
+ return () => {
327
+ if (isTeamGeneration(generation))
328
+ activeTeamGeneration += 1;
329
+ for (const cleanup of cleanups.splice(0))
330
+ cleanup();
331
+ const modal = root.querySelector('#tf-modal');
332
+ if (modal)
333
+ modal.style.display = 'none';
334
+ };
328
335
  }
329
336
  // ───────────────────────── #/team/manage (team management) ─────────────────────────
330
- function manageHtml() {
331
- return `<section class="page">
332
- <div class="page-heading"><div>
333
- <p class="eyebrow">${t('team.eyebrow')}</p><h1>${t('team.manageTitle')}</h1>
334
- <p class="tf-lede">${t('team.manageLede')}</p>
335
- </div></div>
336
- ${subNav('manage')}
337
- <div class="card" style="margin-bottom:16px">
338
- <h2 style="margin-top:0">${t('team.hostedTitle')}</h2>
339
- <p style="display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:6px">
340
- <input id="tm-newname" placeholder="${t('team.newTeamPh')}" style="min-width:200px">
341
- <button id="tm-create" class="primary">${t('team.createTeamBtn')}</button>
342
- <span class="muted tm-cout" style="font-size:13px"></span>
343
- </p>
344
- <div id="tm-list">${t('team.loading')}</div>
345
- </div>
346
- <div class="card">
347
- <h2 style="margin-top:0">${t('team.joinTitle')}</h2>
348
- <p style="display:flex;gap:8px;flex-wrap:wrap;align-items:center">
349
- <input id="tm-hub" placeholder="${t('team.hubPh')}" style="flex:1;min-width:240px">
350
- <input id="tm-code" placeholder="${t('team.codePh')}" style="min-width:160px">
351
- <button id="tm-join" class="primary">${t('team.joinBtn')}</button>
352
- </p>
353
- <div id="tm-join-out" style="display:none;margin-top:6px"></div>
354
- </div>
355
- </section>`;
356
- }
357
- async function loadManageList() {
337
+ async function loadManageList(generation = activeTeamGeneration) {
358
338
  const r = await jget('/api/team/hosted');
339
+ if (!isTeamGeneration(generation))
340
+ return;
359
341
  const b = r.body;
360
342
  const el = $('tm-list');
361
343
  suggestedHubUrl = b?.suggestedHubUrl || suggestedHubUrl;
@@ -384,6 +366,8 @@ async function loadManageList() {
384
366
  out.style.display = '';
385
367
  out.innerHTML = `<span class="muted">${t('team.generating')}</span>`;
386
368
  const r2 = await jpost('/api/team/local-invite', { teamId: team });
369
+ if (!isTeamGeneration(generation))
370
+ return;
387
371
  if (r2.body?.code) {
388
372
  out.innerHTML = `${t('team.inviteResultLede')}<br>${t('team.inviteHub')}<code>${escapeHtml(suggestedHubUrl)}</code><br>${t('team.inviteCode')}<code style="font-size:15px">${escapeHtml(r2.body.code)}</code>`;
389
373
  }
@@ -397,13 +381,22 @@ async function loadManageList() {
397
381
  if (!confirm(t('team.delConfirm', { name: btn.dataset.name || '' })))
398
382
  return;
399
383
  await jsend('DELETE', '/api/team/hosted/' + encodeURIComponent(btn.dataset.team));
400
- loadManageList();
384
+ if (!isTeamGeneration(generation))
385
+ return;
386
+ void loadManageList(generation);
401
387
  };
402
388
  });
403
389
  }
404
- export function renderTeamManagePage(root) {
405
- root.innerHTML = manageHtml();
406
- $('tm-create').onclick = async () => {
390
+ export function wireTeamManagePage(root) {
391
+ const generation = nextTeamGeneration();
392
+ const cleanups = [];
393
+ const on = (el, type, listener) => {
394
+ if (!el)
395
+ return;
396
+ el.addEventListener(type, listener);
397
+ cleanups.push(() => el.removeEventListener(type, listener));
398
+ };
399
+ on(document.getElementById('tm-create'), 'click', async () => {
407
400
  const name = $('tm-newname').value.trim();
408
401
  const out = root.querySelector('.tm-cout');
409
402
  if (!name) {
@@ -412,16 +405,18 @@ export function renderTeamManagePage(root) {
412
405
  }
413
406
  out.innerHTML = `<span class="muted">${t('team.creating')}</span>`;
414
407
  const r = await jpost('/api/team/hosted', { name });
408
+ if (!isTeamGeneration(generation))
409
+ return;
415
410
  if (r.body?.ok) {
416
411
  out.innerHTML = `<span class="ok">${t('team.created')}</span>`;
417
412
  $('tm-newname').value = '';
418
- loadManageList();
413
+ void loadManageList(generation);
419
414
  }
420
415
  else {
421
416
  out.innerHTML = `<span class="err">${t('team.createFail', { error: escapeHtml(String(r.body?.error || r.status)) })}</span>`;
422
417
  }
423
- };
424
- $('tm-join').onclick = async () => {
418
+ });
419
+ on(document.getElementById('tm-join'), 'click', async () => {
425
420
  const hubUrl = $('tm-hub').value.trim();
426
421
  const inviteCode = $('tm-code').value.trim();
427
422
  const out = $('tm-join-out');
@@ -432,6 +427,8 @@ export function renderTeamManagePage(root) {
432
427
  }
433
428
  out.innerHTML = `<span class="muted">${t('team.joining')}</span>`;
434
429
  const r = await jpost('/api/team/join-remote', { hubUrl, inviteCode });
430
+ if (!isTeamGeneration(generation))
431
+ return;
435
432
  if (r.body?.ok) {
436
433
  out.innerHTML = `<span class="ok">${t('team.joined', { name: escapeHtml(r.body.teamName || '') })}</span>`;
437
434
  $('tm-code').value = '';
@@ -441,20 +438,28 @@ export function renderTeamManagePage(root) {
441
438
  const msg = e === 'cannot_join_self' ? t('team.joinErrSelf') : e === 'deployment_already_joined' ? t('team.joinErrAlready') : e === 'hub_unreachable' ? t('team.joinErrUnreachable') : e === 'hub_timeout' ? t('team.joinErrTimeout') : t('team.joinErrGeneric', { error: String(e) });
442
439
  out.innerHTML = `<span class="err">${escapeHtml(String(msg))}</span>`;
443
440
  }
441
+ });
442
+ void loadManageList(generation);
443
+ return () => {
444
+ if (isTeamGeneration(generation))
445
+ activeTeamGeneration += 1;
446
+ for (const cleanup of cleanups.splice(0))
447
+ cleanup();
444
448
  };
445
- void loadManageList();
446
449
  }
447
450
  // ───────────────────────────── identity bind ─────────────────────────────
448
- function wireBind() {
451
+ function wireBind(generation = activeTeamGeneration) {
449
452
  $('tf-autobind').onclick = async () => {
450
453
  const out = $('tf-bind-out');
451
454
  out.style.display = '';
452
455
  out.innerHTML = `<span class="muted">${t('team.identifying')}</span>`;
453
456
  const r = await jpost('/api/team/identity/auto-bind');
457
+ if (!isTeamGeneration(generation))
458
+ return;
454
459
  const b = r.body;
455
460
  if (b?.ok && b.owner) {
456
461
  out.innerHTML = `<span class="ok">${t('team.bound2', { name: escapeHtml(b.owner.name || b.owner.unionId) })}</span>`;
457
- loadLocal();
462
+ void loadLocal(generation);
458
463
  return;
459
464
  }
460
465
  if (b?.ok && b.needChoice && Array.isArray(b.candidates)) {
@@ -464,10 +469,12 @@ function wireBind() {
464
469
  btn.onclick = async () => {
465
470
  out.innerHTML = `<span class="muted">${t('team.binding')}</span>`;
466
471
  const r2 = await jpost('/api/team/identity/auto-bind', { unionId: btn.dataset.union });
472
+ if (!isTeamGeneration(generation))
473
+ return;
467
474
  const b2 = r2.body;
468
475
  if (b2?.ok && b2.owner) {
469
476
  out.innerHTML = `<span class="ok">${t('team.bound2', { name: escapeHtml(b2.owner.name || b2.owner.unionId) })}</span>`;
470
- loadLocal();
477
+ void loadLocal(generation);
471
478
  }
472
479
  else {
473
480
  out.innerHTML = `<span class="err">${t('team.bindFail', { error: escapeHtml(String(b2?.error || 'unknown')) })}</span>`;