bazilion 0.7.0 → 0.9.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 (166) hide show
  1. package/README.md +47 -5
  2. package/dist/cli.js +1257 -638
  3. package/dist/cli.js.map +1 -1
  4. package/dist/daemon.js +5334 -1594
  5. package/dist/daemon.js.map +1 -1
  6. package/dist/migrations/0001_init.sql +318 -88
  7. package/dist/web/client/assets/{FieldRow-CNKma5LE.js → FieldRow-DmwAFfbF.js} +1 -1
  8. package/dist/web/client/assets/ProductionTeamPolicyEditor-1a5jQqUB.js +7 -0
  9. package/dist/web/client/assets/ProductionTeamPolicyEditor-DLioOiRN.css +1 -0
  10. package/dist/web/client/assets/ProfileCommunicationEditor-D1OZ8WE5.js +1 -0
  11. package/dist/web/client/assets/RecoveryState-QfMSuwy3.js +1 -0
  12. package/dist/web/client/assets/TeamTabs-BViZ4sti.js +1 -0
  13. package/dist/web/client/assets/TemplatesTabs-DVcY9pMD.js +1 -0
  14. package/dist/web/client/assets/_id-8P7brhGy.js +1 -0
  15. package/dist/web/client/assets/_id-C3o3MHq8.js +1 -0
  16. package/dist/web/client/assets/_id-DGRrSF1e.js +1 -0
  17. package/dist/web/client/assets/_id-DGyKURCp.js +1 -0
  18. package/dist/web/client/assets/_id-KnJe-aW9.js +1 -0
  19. package/dist/web/client/assets/activity-DJuhhQCb.js +1 -0
  20. package/dist/web/client/assets/activity-WWvJSo4t.js +1 -0
  21. package/dist/web/client/assets/agents-C32T1voV.js +1 -0
  22. package/dist/web/client/assets/agents-nH4m4gZ1.js +1 -0
  23. package/dist/web/client/assets/approvals-DGi0PSx8.js +1 -0
  24. package/dist/web/client/assets/approvals-l8jIZjqz.js +1 -0
  25. package/dist/web/client/assets/{config-BSAVT-17.js → config-C7wvi1nR.js} +2 -2
  26. package/dist/web/client/assets/context-BEGWE3RC.js +1 -0
  27. package/dist/web/client/assets/inbox--4aBaAgG.js +1 -0
  28. package/dist/web/client/assets/index-BCXoh1c8.js +12 -0
  29. package/dist/web/client/assets/{login-D8lNr2SX.js → login-Bk2wwIHQ.js} +1 -1
  30. package/dist/web/client/assets/{mcp-BLnngDsj.js → mcp-vM7xgh9e.js} +1 -1
  31. package/dist/web/client/assets/members-cPKfnrSL.js +1 -0
  32. package/dist/web/client/assets/memory-BOcsaemD.js +1 -0
  33. package/dist/web/client/assets/policy-BGLCJYvS.js +1 -0
  34. package/dist/web/client/assets/policy-K4hIbbIN.js +1 -0
  35. package/dist/web/client/assets/{preload-helper-CvnapA2_.js → preload-helper-eOOCz1Fu.js} +1 -1
  36. package/dist/web/client/assets/routes-DnrP3dwv.js +1 -0
  37. package/dist/web/client/assets/services-C2_O3ifw.js +1 -0
  38. package/dist/web/client/assets/skills-B__fLZjx.js +1 -0
  39. package/dist/web/client/assets/styles-Dn24-ZvP.css +2 -0
  40. package/dist/web/client/assets/team-policy-BdX340m4.js +1 -0
  41. package/dist/web/client/assets/teams-CSNyLz3l.js +1 -0
  42. package/dist/web/client/assets/teams-DZMB4_iw.js +1 -0
  43. package/dist/web/client/assets/teams-rpaYKNIb.js +1 -0
  44. package/dist/web/client/assets/telegram-B1O4Ko0V.js +1 -0
  45. package/dist/web/client/assets/{tokens-D2_O9ARe.js → tokens-D7FH9VgA.js} +1 -1
  46. package/dist/web/client/assets/triggers-3PLy2_Fo.js +1 -0
  47. package/dist/web/client/assets/welcome-B-QQobzq.js +1 -0
  48. package/dist/web/client/assets/{ChatPane-DzEgOEqS.js → wire-constants-BY9Q9Z7d.js} +4 -4
  49. package/dist/web/server/assets/{ChatPane-BvpswYvF.js → ChatPane-Dh3qxzdb.js} +23 -12
  50. package/dist/web/server/assets/ProductionTeamPolicyEditor-Bke5doyl.js +1009 -0
  51. package/dist/web/server/assets/ProfileCommunicationEditor-C2RU-2QB.js +107 -0
  52. package/dist/web/server/assets/RecoveryState-B2SG-mrY.js +37 -0
  53. package/dist/web/server/assets/{Sidebar-DmEiewRN.js → Sidebar-CGmtCnYU.js} +372 -48
  54. package/dist/web/server/assets/TeamTabs-BPxDBfqy.js +50 -0
  55. package/dist/web/server/assets/{TemplatesTabs---7h5GYa.js → TemplatesTabs-zf4YhStd.js} +6 -6
  56. package/dist/web/server/assets/{_id-CXg-Blec.js → _id-5lLzLwcv.js} +52 -40
  57. package/dist/web/server/assets/_id-A8Xiv6Lc.js +11 -0
  58. package/dist/web/server/assets/{_id-BqnDy_Ca.js → _id-B04VaQlh.js} +6 -5
  59. package/dist/web/server/assets/{_id-D0ytyXGY.js → _id-B6g9wmPR.js} +167 -31
  60. package/dist/web/server/assets/_id-ButXHnRH.js +14 -0
  61. package/dist/web/server/assets/_id-C4AOhstq.js +44 -0
  62. package/dist/web/server/assets/{_id-DDixKEud.js → _id-CCHA0gdR.js} +72 -12
  63. package/dist/web/server/assets/{_id-D_Ew11ED.js → _id-CUWgTqMS.js} +8 -8
  64. package/dist/web/server/assets/_id-DJkzwHjM.js +42 -0
  65. package/dist/web/server/assets/{_id-CnQflrRv.js → _id-DdC9wpNN.js} +5 -5
  66. package/dist/web/server/assets/{_id-81NrHA5d.js → _id-DkFgCIb-.js} +9 -1
  67. package/dist/web/server/assets/{_id-D8duqgd5.js → _id-_nFwi9gD.js} +5 -4
  68. package/dist/web/server/assets/{_id-Sjw0zhA6.js → _id-fpFQ9_Ya.js} +4 -4
  69. package/dist/web/server/assets/_tanstack-start-manifest_v-Div-TukY.js +241 -0
  70. package/dist/web/server/assets/activity-C2ZKg1Q9.js +170 -0
  71. package/dist/web/server/assets/activity-CGCf8BQf.js +11 -0
  72. package/dist/web/server/assets/activity-DedraoFj.js +14 -0
  73. package/dist/web/server/assets/activity-GPx8NCeB.js +12 -0
  74. package/dist/web/server/assets/{profiles-CZ5NkmVw.js → agents-B8kinIPW.js} +4 -4
  75. package/dist/web/server/assets/{agents-k5QURC4I.js → agents-BR2qXlXF.js} +4 -4
  76. package/dist/web/server/assets/{agents-ChcAJUI5.js → agents-Bp1nsVs2.js} +1 -1
  77. package/dist/web/server/assets/{profiles-LxcC_L6n.js → agents-CUQmWhTp.js} +36 -10
  78. package/dist/web/server/assets/{agents-C7SBPN0M.js → agents-DU9Hqs58.js} +51 -12
  79. package/dist/web/server/assets/{profiles-C6a3RKgu.js → agents-LHowEI6S.js} +4 -4
  80. package/dist/web/server/assets/approvals-CbFXFvG8.js +11 -0
  81. package/dist/web/server/assets/approvals-DHgARzd8.js +242 -0
  82. package/dist/web/server/assets/approvals-Dw2LJoSA.js +14 -0
  83. package/dist/web/server/assets/approvals-VPc0YpLN.js +12 -0
  84. package/dist/web/server/assets/{auth-DzRAMwVt.js → auth-l-Vf8wlu.js} +5 -1
  85. package/dist/web/server/assets/{config-CdVjqjin.js → config-BvKctDOX.js} +4 -4
  86. package/dist/web/server/assets/{config-Bq3o924J.js → config-QvHaxGlP.js} +1 -1
  87. package/dist/web/server/assets/context-5lrf2ame.js +12 -0
  88. package/dist/web/server/assets/context-CEr4-xiA.js +49 -0
  89. package/dist/web/server/assets/context-D3Egm-vY.js +12 -0
  90. package/dist/web/server/assets/members-40DxRdVj.js +48 -0
  91. package/dist/web/server/assets/members-DlGBKZNl.js +12 -0
  92. package/dist/web/server/assets/members-ksELRsyk.js +12 -0
  93. package/dist/web/server/assets/{memory-Ns2-Z31p.js → memory-B5moRnnp.js} +5 -5
  94. package/dist/web/server/assets/{memory-BaYnfm7K.js → memory-CO0jKGzJ.js} +8 -8
  95. package/dist/web/server/assets/memory-CiTl4cN9.js +289 -0
  96. package/dist/web/server/assets/policy-BYVXqsan.js +11 -0
  97. package/dist/web/server/assets/policy-DNcGZLOB.js +21 -0
  98. package/dist/web/server/assets/policy-Dr55y-Mh.js +496 -0
  99. package/dist/web/server/assets/policy-Dxs78_GO.js +40 -0
  100. package/dist/web/server/assets/{router-BpBZgRwn.js → router-_izWQUeG.js} +156 -101
  101. package/dist/web/server/assets/{routes-Ce2VWrU9.js → routes-BSSKp3Rv.js} +4 -4
  102. package/dist/web/server/assets/{routes-C61gBiXa.js → routes-BrTOoeth.js} +5 -5
  103. package/dist/web/server/assets/{routes-V9URcp1v.js → routes-DOj6ljcm.js} +1 -1
  104. package/dist/web/server/assets/{services-B91w2f-X.js → services-CHe4ihJk.js} +11 -11
  105. package/dist/web/server/assets/{services-Ccc5s2bS.js → services-Pv_V88VA.js} +3 -3
  106. package/dist/web/server/assets/{skills-dLyBZb3B.js → skills-D89ND2kR.js} +67 -7
  107. package/dist/web/server/assets/{skills-CpsyR_WA.js → skills-l2cyQ3zS.js} +1 -1
  108. package/dist/web/server/assets/{start-CYDpZ6cb.js → start-DlHq0RaQ.js} +1 -1
  109. package/dist/web/server/assets/team-policy-Csvc5EDd.js +180 -0
  110. package/dist/web/server/assets/teams-35Oprf6e.js +14 -0
  111. package/dist/web/server/assets/teams-3im0oQnS.js +11 -0
  112. package/dist/web/server/assets/teams-B5IF65p2.js +12 -0
  113. package/dist/web/server/assets/teams-B9O-WDH5.js +108 -0
  114. package/dist/web/server/assets/teams-DFkN7ic7.js +36 -0
  115. package/dist/web/server/assets/teams-DH1CvWmT.js +12 -0
  116. package/dist/web/server/assets/teams-zcm9XaQU.js +174 -0
  117. package/dist/web/server/assets/{telegram-DfAddLdv.js → telegram-C9sQFwWj.js} +7 -7
  118. package/dist/web/server/assets/{telegram-T3l9KtiE.js → telegram-mTnJCOmn.js} +1 -1
  119. package/dist/web/server/assets/{welcome-CP4CZ9B6.js → welcome-CDGE2Sdk.js} +2 -2
  120. package/dist/web/server/assets/{wire-constants-Deb4NxBb.js → wire-constants-C8nBJcU3.js} +3 -3
  121. package/dist/web/server/server.js +64 -42
  122. package/dist/worker.js +180 -128
  123. package/dist/worker.js.map +1 -1
  124. package/package.json +7 -7
  125. package/dist/migrations/0002_profile_groups.sql +0 -38
  126. package/dist/migrations/0003_agent_telegram.sql +0 -40
  127. package/dist/migrations/0004_agent_mirror_mode.sql +0 -17
  128. package/dist/migrations/0005_group_topic_name_format.sql +0 -15
  129. package/dist/migrations/0006_telegram_acl.sql +0 -18
  130. package/dist/migrations/0007_mcp_servers.sql +0 -30
  131. package/dist/migrations/0008_seed_user_md.sql +0 -39
  132. package/dist/web/client/assets/MembersEditor-C6UpqDdV.js +0 -1
  133. package/dist/web/client/assets/SpawnTeamModal-BEkNCKXm.js +0 -1
  134. package/dist/web/client/assets/TemplatesTabs-Da7mg9FI.js +0 -1
  135. package/dist/web/client/assets/_id-BdKmo0gb.js +0 -1
  136. package/dist/web/client/assets/_id-LT6Ejjr0.js +0 -1
  137. package/dist/web/client/assets/_id-MR2XjWh0.js +0 -1
  138. package/dist/web/client/assets/_id-_6jIt0_-.js +0 -1
  139. package/dist/web/client/assets/agents-0arKbVYG.js +0 -1
  140. package/dist/web/client/assets/groups-BqTkhHes.js +0 -1
  141. package/dist/web/client/assets/inbox-ozoCXzr5.js +0 -1
  142. package/dist/web/client/assets/index-iayCEuU2.js +0 -12
  143. package/dist/web/client/assets/memory-D1GQjEvN.js +0 -1
  144. package/dist/web/client/assets/profile-groups-C2yJPTaE.js +0 -1
  145. package/dist/web/client/assets/profiles-BV7AAZjj.js +0 -1
  146. package/dist/web/client/assets/routes-DSHQLA7K.js +0 -1
  147. package/dist/web/client/assets/services-BbCJe1Du.js +0 -1
  148. package/dist/web/client/assets/skills-C6czKR5I.js +0 -1
  149. package/dist/web/client/assets/styles-C06axZZk.css +0 -2
  150. package/dist/web/client/assets/telegram-gE4j8gte.js +0 -1
  151. package/dist/web/client/assets/triggers-WljnfEfJ.js +0 -1
  152. package/dist/web/client/assets/welcome-Dn-zvmBE.js +0 -1
  153. package/dist/web/client/assets/wire-constants-BkT5-597.js +0 -1
  154. package/dist/web/server/assets/MembersEditor-BWQztvrX.js +0 -131
  155. package/dist/web/server/assets/SpawnTeamModal-dSN421k_.js +0 -107
  156. package/dist/web/server/assets/_id-BKev9H1p.js +0 -12
  157. package/dist/web/server/assets/_id-BNwlbWHP.js +0 -24
  158. package/dist/web/server/assets/_id-CRqqi8IE.js +0 -161
  159. package/dist/web/server/assets/_tanstack-start-manifest_v-DBlFH2gg.js +0 -178
  160. package/dist/web/server/assets/groups-CbSwND2r.js +0 -12
  161. package/dist/web/server/assets/groups-CeRRlZaZ.js +0 -150
  162. package/dist/web/server/assets/groups-pk4CYSuf.js +0 -21
  163. package/dist/web/server/assets/memory-CQaqWnyM.js +0 -284
  164. package/dist/web/server/assets/profile-groups-CiU06yN1.js +0 -28
  165. package/dist/web/server/assets/profile-groups-D21MYoLM.js +0 -208
  166. package/dist/web/server/assets/profile-groups-aoJleXHP.js +0 -12
@@ -16,10 +16,10 @@ var fetchAgent = createServerFn({ method: "POST" }).inputValidator((d) => d).han
16
16
  if (err instanceof ApiClientError && err.status === 404) return null;
17
17
  throw err;
18
18
  }
19
- const [msgs, head, groups, skills, models, telegramConfig] = await Promise.all([
19
+ const [msgs, head, teams, skills, models, telegramConfig] = await Promise.all([
20
20
  c.get(`/api/agents/${encodeURIComponent(resolved.agent.id)}/sessions/messages`),
21
21
  c.get(`/api/agents/${encodeURIComponent(resolved.agent.id)}/sessions/head`),
22
- c.get("/api/groups"),
22
+ c.get("/api/teams"),
23
23
  c.get("/api/skills"),
24
24
  c.get("/api/config/available-models"),
25
25
  c.get("/api/config/telegram").catch(() => ({ configured: false }))
@@ -28,9 +28,9 @@ var fetchAgent = createServerFn({ method: "POST" }).inputValidator((d) => d).han
28
28
  resolved,
29
29
  initialMessages: msgs.messages,
30
30
  sessionHead: head,
31
- groups,
31
+ teams,
32
32
  skills,
33
- modelGroups: models.groups,
33
+ modelGroups: models.teams,
34
34
  telegramConfigured: telegramConfig.configured
35
35
  };
36
36
  });
@@ -0,0 +1,241 @@
1
+ //#region \0tanstack-start-manifest:v
2
+ var tsrStartManifest = () => ({ routes: {
3
+ __root__: {
4
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/__root.tsx",
5
+ children: [
6
+ "/",
7
+ "/login",
8
+ "/welcome",
9
+ "/api/$",
10
+ "/config/mcp",
11
+ "/config/services",
12
+ "/config/tokens",
13
+ "/agents/",
14
+ "/approvals/",
15
+ "/config/",
16
+ "/skills/",
17
+ "/teams/",
18
+ "/templates/",
19
+ "/agents/$id/inbox",
20
+ "/agents/$id/triggers",
21
+ "/config/integrations/telegram",
22
+ "/teams/$id/activity",
23
+ "/teams/$id/context",
24
+ "/teams/$id/members",
25
+ "/teams/$id/memory",
26
+ "/teams/$id/policy",
27
+ "/agents/$id/",
28
+ "/teams/$id/",
29
+ "/templates/agents/",
30
+ "/templates/teams/",
31
+ "/templates/agents/$id/",
32
+ "/templates/teams/$id/"
33
+ ],
34
+ preloads: [
35
+ "/assets/index-BCXoh1c8.js",
36
+ "/assets/jsx-runtime-DGeXAQPT.js",
37
+ "/assets/preload-helper-eOOCz1Fu.js"
38
+ ],
39
+ scripts: [{ attrs: {
40
+ type: "module",
41
+ async: !0,
42
+ src: "/assets/index-BCXoh1c8.js"
43
+ } }]
44
+ },
45
+ "/": {
46
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/index.tsx",
47
+ children: void 0,
48
+ preloads: [
49
+ "/assets/routes-DnrP3dwv.js",
50
+ "/assets/Button-ByiV6fpd.js",
51
+ "/assets/wire-constants-BY9Q9Z7d.js"
52
+ ]
53
+ },
54
+ "/login": {
55
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/login.tsx",
56
+ children: void 0,
57
+ preloads: ["/assets/login-Bk2wwIHQ.js"]
58
+ },
59
+ "/welcome": {
60
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/welcome.tsx",
61
+ children: void 0,
62
+ preloads: ["/assets/welcome-B-QQobzq.js"]
63
+ },
64
+ "/config/mcp": {
65
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/config/mcp.tsx",
66
+ children: void 0,
67
+ preloads: ["/assets/mcp-vM7xgh9e.js", "/assets/ConfigTabs-pY-V0Rie.js"]
68
+ },
69
+ "/config/services": {
70
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/config/services.tsx",
71
+ children: void 0,
72
+ preloads: [
73
+ "/assets/services-C2_O3ifw.js",
74
+ "/assets/ConfigTabs-pY-V0Rie.js",
75
+ "/assets/FieldRow-DmwAFfbF.js"
76
+ ]
77
+ },
78
+ "/config/tokens": {
79
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/config/tokens.tsx",
80
+ children: void 0,
81
+ preloads: ["/assets/tokens-D7FH9VgA.js", "/assets/ConfigTabs-pY-V0Rie.js"]
82
+ },
83
+ "/agents/": {
84
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/agents/index.tsx",
85
+ children: void 0,
86
+ preloads: ["/assets/agents-C32T1voV.js", "/assets/AgentAvatar-JYijLvZ2.js"]
87
+ },
88
+ "/approvals/": {
89
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/approvals/index.tsx",
90
+ children: void 0,
91
+ preloads: [
92
+ "/assets/approvals-DGi0PSx8.js",
93
+ "/assets/RecoveryState-QfMSuwy3.js",
94
+ "/assets/approvals-l8jIZjqz.js",
95
+ "/assets/Button-ByiV6fpd.js"
96
+ ]
97
+ },
98
+ "/config/": {
99
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/config/index.tsx",
100
+ children: void 0,
101
+ preloads: [
102
+ "/assets/config-C7wvi1nR.js",
103
+ "/assets/ConfigTabs-pY-V0Rie.js",
104
+ "/assets/FieldRow-DmwAFfbF.js"
105
+ ]
106
+ },
107
+ "/skills/": {
108
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/skills/index.tsx",
109
+ children: void 0,
110
+ preloads: ["/assets/skills-B__fLZjx.js"]
111
+ },
112
+ "/teams/": {
113
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/index.tsx",
114
+ children: void 0,
115
+ preloads: [
116
+ "/assets/teams-CSNyLz3l.js",
117
+ "/assets/RecoveryState-QfMSuwy3.js",
118
+ "/assets/teams-rpaYKNIb.js"
119
+ ]
120
+ },
121
+ "/agents/$id/inbox": {
122
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/agents/$id/inbox.tsx",
123
+ children: void 0,
124
+ preloads: ["/assets/inbox--4aBaAgG.js", "/assets/AgentTabs-DioGqUVR.js"]
125
+ },
126
+ "/agents/$id/triggers": {
127
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/agents/$id/triggers.tsx",
128
+ children: void 0,
129
+ preloads: ["/assets/triggers-3PLy2_Fo.js", "/assets/AgentTabs-DioGqUVR.js"]
130
+ },
131
+ "/config/integrations/telegram": {
132
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/config/integrations/telegram.tsx",
133
+ children: void 0,
134
+ preloads: [
135
+ "/assets/telegram-B1O4Ko0V.js",
136
+ "/assets/Button-ByiV6fpd.js",
137
+ "/assets/ConfigTabs-pY-V0Rie.js"
138
+ ]
139
+ },
140
+ "/teams/$id/activity": {
141
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/$id/activity.tsx",
142
+ children: void 0,
143
+ preloads: [
144
+ "/assets/activity-DJuhhQCb.js",
145
+ "/assets/RecoveryState-QfMSuwy3.js",
146
+ "/assets/activity-WWvJSo4t.js",
147
+ "/assets/Button-ByiV6fpd.js",
148
+ "/assets/TeamTabs-BViZ4sti.js"
149
+ ]
150
+ },
151
+ "/teams/$id/context": {
152
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/$id/context.tsx",
153
+ children: void 0,
154
+ preloads: ["/assets/context-BEGWE3RC.js", "/assets/TeamTabs-BViZ4sti.js"]
155
+ },
156
+ "/teams/$id/members": {
157
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/$id/members.tsx",
158
+ children: void 0,
159
+ preloads: ["/assets/members-cPKfnrSL.js", "/assets/TeamTabs-BViZ4sti.js"]
160
+ },
161
+ "/teams/$id/memory": {
162
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/$id/memory.tsx",
163
+ children: void 0,
164
+ preloads: ["/assets/memory-BOcsaemD.js", "/assets/TeamTabs-BViZ4sti.js"]
165
+ },
166
+ "/teams/$id/policy": {
167
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/$id/policy.tsx",
168
+ children: void 0,
169
+ css: ["/assets/ProductionTeamPolicyEditor-DLioOiRN.css"],
170
+ preloads: [
171
+ "/assets/policy-BGLCJYvS.js",
172
+ "/assets/Button-ByiV6fpd.js",
173
+ "/assets/RecoveryState-QfMSuwy3.js",
174
+ "/assets/TeamTabs-BViZ4sti.js",
175
+ "/assets/ProductionTeamPolicyEditor-1a5jQqUB.js",
176
+ "/assets/policy-K4hIbbIN.js"
177
+ ]
178
+ },
179
+ "/agents/$id/": {
180
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/agents/$id/index.tsx",
181
+ children: void 0,
182
+ preloads: [
183
+ "/assets/_id-DGRrSF1e.js",
184
+ "/assets/AgentAvatar-JYijLvZ2.js",
185
+ "/assets/AgentTabs-DioGqUVR.js",
186
+ "/assets/wire-constants-BY9Q9Z7d.js"
187
+ ]
188
+ },
189
+ "/teams/$id/": {
190
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/teams/$id/index.tsx",
191
+ children: void 0,
192
+ preloads: [
193
+ "/assets/_id-C3o3MHq8.js",
194
+ "/assets/Button-ByiV6fpd.js",
195
+ "/assets/TeamTabs-BViZ4sti.js"
196
+ ]
197
+ },
198
+ "/templates/agents/": {
199
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/templates/agents/index.tsx",
200
+ children: void 0,
201
+ preloads: [
202
+ "/assets/agents-nH4m4gZ1.js",
203
+ "/assets/Button-ByiV6fpd.js",
204
+ "/assets/TemplatesTabs-DVcY9pMD.js",
205
+ "/assets/ProfileCommunicationEditor-D1OZ8WE5.js",
206
+ "/assets/team-policy-BdX340m4.js"
207
+ ]
208
+ },
209
+ "/templates/teams/": {
210
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/templates/teams/index.tsx",
211
+ children: void 0,
212
+ preloads: [
213
+ "/assets/teams-DZMB4_iw.js",
214
+ "/assets/Button-ByiV6fpd.js",
215
+ "/assets/TemplatesTabs-DVcY9pMD.js"
216
+ ]
217
+ },
218
+ "/templates/agents/$id/": {
219
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/templates/agents/$id/index.tsx",
220
+ children: void 0,
221
+ preloads: [
222
+ "/assets/_id-KnJe-aW9.js",
223
+ "/assets/ProfileCommunicationEditor-D1OZ8WE5.js",
224
+ "/assets/team-policy-BdX340m4.js"
225
+ ]
226
+ },
227
+ "/templates/teams/$id/": {
228
+ filePath: "/home/runner/work/bazilion/bazilion/apps/web/src/routes/templates/teams/$id/index.tsx",
229
+ children: void 0,
230
+ css: ["/assets/ProductionTeamPolicyEditor-DLioOiRN.css"],
231
+ preloads: [
232
+ "/assets/_id-8P7brhGy.js",
233
+ "/assets/RecoveryState-QfMSuwy3.js",
234
+ "/assets/TemplatesTabs-DVcY9pMD.js",
235
+ "/assets/ProductionTeamPolicyEditor-1a5jQqUB.js",
236
+ "/assets/_id-DGyKURCp.js"
237
+ ]
238
+ }
239
+ } });
240
+ //#endregion
241
+ export { tsrStartManifest };
@@ -0,0 +1,170 @@
1
+ import { t as Route } from "./activity-DedraoFj.js";
2
+ import { t as Button } from "./Button-Dsnw22OF.js";
3
+ import { t as TeamTabs } from "./TeamTabs-BPxDBfqy.js";
4
+ import { useState } from "react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { ChevronDown } from "lucide-react";
7
+ //#region src/routes/teams/$id/activity.tsx?tsr-split=component
8
+ function ActivityPage() {
9
+ const initial = Route.useLoaderData();
10
+ const { id } = Route.useParams();
11
+ const [page, setPage] = useState(initial);
12
+ const [loading, setLoading] = useState(false);
13
+ const [error, setError] = useState(null);
14
+ const loadMore = async () => {
15
+ if (!page.nextCursor) return;
16
+ setLoading(true);
17
+ setError(null);
18
+ try {
19
+ const response = await fetch(`/api/teams/${encodeURIComponent(id)}/policy/blocks?limit=25&cursor=${encodeURIComponent(page.nextCursor)}`);
20
+ if (!response.ok) throw new Error(`Could not load activity (${response.status})`);
21
+ const next = await response.json();
22
+ setPage({
23
+ blocks: [...page.blocks, ...next.blocks],
24
+ nextCursor: next.nextCursor
25
+ });
26
+ } catch (cause) {
27
+ setError(cause instanceof Error ? cause.message : String(cause));
28
+ } finally {
29
+ setLoading(false);
30
+ }
31
+ };
32
+ return /* @__PURE__ */ jsxs("div", {
33
+ className: "mx-auto max-w-5xl space-y-5 px-4 py-6 sm:px-6",
34
+ children: [
35
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", { children: "blocked communication" }), /* @__PURE__ */ jsx("p", {
36
+ className: "muted",
37
+ children: "Durable denial evidence. Diagnostic simulations never create these records."
38
+ })] }),
39
+ /* @__PURE__ */ jsx(TeamTabs, { teamId: id }),
40
+ /* @__PURE__ */ jsxs("div", {
41
+ className: "space-y-3",
42
+ children: [page.blocks.map((block) => /* @__PURE__ */ jsx(BlockCard, { block }, block.id)), page.blocks.length === 0 && /* @__PURE__ */ jsx("p", {
43
+ className: "card muted",
44
+ children: "No blocked communication has been recorded for this team."
45
+ })]
46
+ }),
47
+ error && /* @__PURE__ */ jsx("p", {
48
+ role: "alert",
49
+ className: "err",
50
+ children: error
51
+ }),
52
+ page.nextCursor && /* @__PURE__ */ jsx(Button, {
53
+ variant: "ghost",
54
+ disabled: loading,
55
+ onClick: loadMore,
56
+ children: loading ? "Loading…" : "Load older evidence"
57
+ })
58
+ ]
59
+ });
60
+ }
61
+ function BlockCard({ block }) {
62
+ return /* @__PURE__ */ jsxs("details", {
63
+ className: "card team",
64
+ children: [
65
+ /* @__PURE__ */ jsxs("summary", {
66
+ className: "flex cursor-pointer list-none flex-wrap items-center gap-2",
67
+ children: [
68
+ /* @__PURE__ */ jsx("strong", {
69
+ className: "mr-auto break-all",
70
+ children: block.reason_code
71
+ }),
72
+ /* @__PURE__ */ jsx("time", {
73
+ className: "text-xs text-mocha-light",
74
+ children: new Date(block.created_at).toLocaleString()
75
+ }),
76
+ /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 transition-transform team-open:rotate-180" })
77
+ ]
78
+ }),
79
+ /* @__PURE__ */ jsxs("dl", {
80
+ className: "mt-4 grid gap-3 text-sm sm:grid-cols-2",
81
+ children: [
82
+ /* @__PURE__ */ jsx(Fact, {
83
+ label: "Path",
84
+ value: `${endpoint(block.source_kind, block.source_id)} → ${endpoint(block.target_kind, block.target_id)}`
85
+ }),
86
+ /* @__PURE__ */ jsx(Fact, {
87
+ label: "Channel / origin",
88
+ value: `${block.channel} · ${block.origin}`
89
+ }),
90
+ /* @__PURE__ */ jsx(Fact, {
91
+ label: "Operation",
92
+ value: block.operation
93
+ }),
94
+ /* @__PURE__ */ jsx(Fact, {
95
+ label: "Attempt identity",
96
+ value: `${block.attempt_kind}:${block.attempt_id}`,
97
+ code: true
98
+ }),
99
+ /* @__PURE__ */ jsx(Fact, {
100
+ label: "Reason",
101
+ value: block.reason,
102
+ wide: true
103
+ })
104
+ ]
105
+ }),
106
+ /* @__PURE__ */ jsx("h3", {
107
+ className: "mt-5 text-sm",
108
+ children: "Policy revisions"
109
+ }),
110
+ /* @__PURE__ */ jsx("ul", {
111
+ className: "mt-2 text-sm",
112
+ children: block.policyRefs.map((ref) => /* @__PURE__ */ jsxs("li", { children: [
113
+ /* @__PURE__ */ jsx("code", { children: ref.teamId }),
114
+ " revision ",
115
+ ref.revision
116
+ ] }, `${ref.teamId}:${ref.revision}`))
117
+ }),
118
+ block.componentOutcomes.length > 1 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("h3", {
119
+ className: "mt-5 text-sm",
120
+ children: "Cross-Team consent components"
121
+ }), /* @__PURE__ */ jsx("div", {
122
+ className: "mt-2 overflow-x-auto",
123
+ children: /* @__PURE__ */ jsxs("table", { children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
124
+ /* @__PURE__ */ jsx("th", { children: "Team" }),
125
+ /* @__PURE__ */ jsx("th", { children: "Required edge" }),
126
+ /* @__PURE__ */ jsx("th", { children: "Matched" })
127
+ ] }) }), /* @__PURE__ */ jsx("tbody", { children: block.componentOutcomes.map((item) => /* @__PURE__ */ jsxs("tr", { children: [
128
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("code", { children: item.teamId }) }),
129
+ /* @__PURE__ */ jsx("td", {
130
+ className: "break-all",
131
+ children: /* @__PURE__ */ jsx("code", { children: item.edge })
132
+ }),
133
+ /* @__PURE__ */ jsx("td", { children: item.matched ? "yes" : "no" })
134
+ ] }, `${item.teamId}:${item.edge}`)) })] })
135
+ })] }),
136
+ /* @__PURE__ */ jsxs("div", {
137
+ className: "mt-4 grid gap-3 sm:grid-cols-2",
138
+ children: [/* @__PURE__ */ jsx(Fact, {
139
+ label: "Required edges",
140
+ value: block.requiredEdgeIds.join(", ") || "none",
141
+ code: true
142
+ }), /* @__PURE__ */ jsx(Fact, {
143
+ label: "Matched edges",
144
+ value: block.matchedEdgeIds.join(", ") || "none",
145
+ code: true
146
+ })]
147
+ })
148
+ ]
149
+ });
150
+ }
151
+ function Fact({ label, value, code = false, wide = false }) {
152
+ return /* @__PURE__ */ jsxs("div", {
153
+ className: wide ? "sm:col-span-2" : "",
154
+ children: [/* @__PURE__ */ jsx("dt", {
155
+ className: "text-xs font-semibold uppercase text-mocha-light",
156
+ children: label
157
+ }), /* @__PURE__ */ jsx("dd", {
158
+ className: "mt-1 break-words",
159
+ children: code ? /* @__PURE__ */ jsx("code", {
160
+ className: "break-all",
161
+ children: value
162
+ }) : value
163
+ })]
164
+ });
165
+ }
166
+ function endpoint(kind, id) {
167
+ return id ? `${kind}:${id}` : kind;
168
+ }
169
+ //#endregion
170
+ export { ActivityPage as component };
@@ -0,0 +1,11 @@
1
+ import { t as RecoveryState } from "./RecoveryState-B2SG-mrY.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/routes/teams/$id/activity.tsx?tsr-split=errorComponent
4
+ var SplitErrorComponent = ({ error, reset }) => /* @__PURE__ */ jsx(RecoveryState, {
5
+ title: "Policy activity unavailable",
6
+ error,
7
+ reset,
8
+ fallbackHref: "/teams"
9
+ });
10
+ //#endregion
11
+ export { SplitErrorComponent as errorComponent };
@@ -0,0 +1,14 @@
1
+ import { t as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
3
+ import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
+ //#region src/routes/teams/$id/activity.tsx
5
+ var $$splitErrorComponentImporter = () => import("./activity-CGCf8BQf.js");
6
+ var $$splitComponentImporter = () => import("./activity-C2ZKg1Q9.js");
7
+ var fetchActivity = createServerFn({ method: "POST" }).validator((data) => data).handler(createSsrRpc("5cdb81f2b930818ee9ab1d626ac99828ea652ff447fcbfc21b24dea415f8b39e"));
8
+ var Route = createFileRoute("/teams/$id/activity")({
9
+ loader: ({ params }) => fetchActivity({ data: params }),
10
+ component: lazyRouteComponent($$splitComponentImporter, "component"),
11
+ errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent")
12
+ });
13
+ //#endregion
14
+ export { Route as t };
@@ -0,0 +1,12 @@
1
+ import { t as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-CeKECg65.js";
3
+ import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
4
+ //#region src/routes/teams/$id/activity.tsx?tss-serverfn-split
5
+ var fetchActivity_createServerFn_handler = createServerRpc({
6
+ id: "5cdb81f2b930818ee9ab1d626ac99828ea652ff447fcbfc21b24dea415f8b39e",
7
+ name: "fetchActivity",
8
+ filename: "src/routes/teams/$id/activity.tsx"
9
+ }, (opts) => fetchActivity.__executeServer(opts));
10
+ var fetchActivity = createServerFn({ method: "POST" }).validator((data) => data).handler(fetchActivity_createServerFn_handler, ({ data }) => daemonClient().get(`/api/teams/${encodeURIComponent(data.id)}/policy/blocks?limit=25`));
11
+ //#endregion
12
+ export { fetchActivity_createServerFn_handler };
@@ -1,10 +1,10 @@
1
1
  import { t as createServerFn } from "../server.js";
2
2
  import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
- //#region src/routes/profiles/index.tsx
5
- var $$splitComponentImporter = () => import("./profiles-LxcC_L6n.js");
6
- var fetchProfiles = createServerFn({ method: "GET" }).handler(createSsrRpc("d3850ae8e275fc6af55540b50dd3cc6e84712ae5b9621a8a79b24514a1271cfb"));
7
- var Route = createFileRoute("/profiles/")({
4
+ //#region src/routes/templates/agents/index.tsx
5
+ var $$splitComponentImporter = () => import("./agents-CUQmWhTp.js");
6
+ var fetchProfiles = createServerFn({ method: "GET" }).handler(createSsrRpc("bc31355f2be9889a616d03c35062d483ea77c3f967af9432d721626a81078ef3"));
7
+ var Route = createFileRoute("/templates/agents/")({
8
8
  loader: () => fetchProfiles(),
9
9
  component: lazyRouteComponent($$splitComponentImporter, "component")
10
10
  });
@@ -9,17 +9,17 @@ var fetchAgents_createServerFn_handler = createServerRpc({
9
9
  }, (opts) => fetchAgents.__executeServer(opts));
10
10
  var fetchAgents = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchAgents_createServerFn_handler, async ({ data }) => {
11
11
  const c = daemonClient();
12
- const [agents, profiles, groups, models] = await Promise.all([
12
+ const [agents, profiles, teams, models] = await Promise.all([
13
13
  c.get(`/api/agents?includeArchived=${data.all}`),
14
14
  c.get("/api/profiles"),
15
- c.get("/api/groups"),
15
+ c.get("/api/teams"),
16
16
  c.get("/api/config/available-models")
17
17
  ]);
18
18
  return {
19
19
  agents,
20
20
  profiles,
21
- groups,
22
- modelGroups: models.groups
21
+ teams,
22
+ modelGroups: models.teams
23
23
  };
24
24
  });
25
25
  //#endregion
@@ -2,7 +2,7 @@ import { t as createServerFn } from "../server.js";
2
2
  import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  //#region src/routes/agents/index.tsx
5
- var $$splitComponentImporter = () => import("./agents-C7SBPN0M.js");
5
+ var $$splitComponentImporter = () => import("./agents-DU9Hqs58.js");
6
6
  var fetchAgents = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("f715bab0037380aa3db7e237e7cf1e74168c363f48a960bb1ddfa5560de3a74e"));
7
7
  var Route = createFileRoute("/agents/")({
8
8
  validateSearch: (s) => ({ all: s.all === "1" ? "1" : void 0 }),
@@ -1,10 +1,12 @@
1
- import { t as Route } from "./profiles-CZ5NkmVw.js";
1
+ import { t as Route } from "./agents-B8kinIPW.js";
2
2
  import { t as Button } from "./Button-Dsnw22OF.js";
3
- import { t as TemplatesTabs } from "./TemplatesTabs---7h5GYa.js";
3
+ import { t as DEFAULT_PROFILE_COMMUNICATION } from "./team-policy-Csvc5EDd.js";
4
+ import { t as ProfileCommunicationEditor } from "./ProfileCommunicationEditor-C2RU-2QB.js";
5
+ import { t as TemplatesTabs } from "./TemplatesTabs-zf4YhStd.js";
4
6
  import { useState } from "react";
5
7
  import { useRouter } from "@tanstack/react-router";
6
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
- //#region src/routes/profiles/index.tsx?tsr-split=component
9
+ //#region src/routes/templates/agents/index.tsx?tsr-split=component
8
10
  function ProfilesPage() {
9
11
  const { profiles, modelGroups, skills, templates } = Route.useLoaderData();
10
12
  const router = useRouter();
@@ -20,10 +22,10 @@ function ProfilesPage() {
20
22
  }
21
23
  return /* @__PURE__ */ jsxs("div", { children: [
22
24
  /* @__PURE__ */ jsx(TemplatesTabs, {}),
23
- /* @__PURE__ */ jsx("h1", { children: "profiles" }),
25
+ /* @__PURE__ */ jsx("h1", { children: "agent templates" }),
24
26
  /* @__PURE__ */ jsx("p", {
25
27
  className: "muted",
26
- children: "A profile is a spawn template — SOUL/IDENTITY templates, a default model, a skills policy. Agents choose a group at spawn time, independent of their profile."
28
+ children: "An agent template is a spawn template — SOUL/IDENTITY templates, a default model, a skills policy. Agents choose a Team at spawn time, independent of their Agent template."
27
29
  }),
28
30
  /* @__PURE__ */ jsx(CreateProfileForm, {
29
31
  modelGroups,
@@ -41,12 +43,12 @@ function ProfilesPage() {
41
43
  ] }) }), /* @__PURE__ */ jsxs("tbody", { children: [profiles.length === 0 && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
42
44
  colSpan: 6,
43
45
  className: "muted",
44
- children: "no profiles yet"
46
+ children: "no agent templates yet"
45
47
  }) }), profiles.map((p) => {
46
48
  const skillsLabel = p.skillsMode === "all" ? "all" : p.defaultSkills.length === 0 ? "—" : p.defaultSkills.join(", ");
47
49
  return /* @__PURE__ */ jsxs("tr", { children: [
48
50
  /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("a", {
49
- href: `/profiles/${p.id}`,
51
+ href: `/templates/agents/${p.id}`,
50
52
  children: /* @__PURE__ */ jsx("code", { children: p.id })
51
53
  }) }),
52
54
  /* @__PURE__ */ jsx("td", { children: p.name }),
@@ -89,6 +91,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
89
91
  if (!on && tab === key) setTab("basics");
90
92
  }
91
93
  const [skillsMode, setSkillsMode] = useState("all");
94
+ const [communication, setCommunication] = useState(DEFAULT_PROFILE_COMMUNICATION);
92
95
  const [picked, setPicked] = useState(/* @__PURE__ */ new Set());
93
96
  const [error, setError] = useState(null);
94
97
  const [submitting, setSubmitting] = useState(false);
@@ -124,7 +127,8 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
124
127
  bootstrap: enableBootstrap ? bootstrap : null,
125
128
  agents: enableAgents ? agentsTpl : null,
126
129
  tools: enableTools ? toolsTpl : null,
127
- heartbeat: enableHeartbeat ? heartbeatTpl : null
130
+ heartbeat: enableHeartbeat ? heartbeatTpl : null,
131
+ communicationDefaults: communication
128
132
  };
129
133
  const res = await fetch("/api/profiles", {
130
134
  method: "POST",
@@ -147,6 +151,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
147
151
  setEnableHeartbeat(false);
148
152
  setPicked(/* @__PURE__ */ new Set());
149
153
  setSkillsMode("all");
154
+ setCommunication(DEFAULT_PROFILE_COMMUNICATION);
150
155
  setTab("basics");
151
156
  onCreated();
152
157
  } catch (err) {
@@ -159,7 +164,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
159
164
  className: "card",
160
165
  onSubmit: submit,
161
166
  children: [
162
- /* @__PURE__ */ jsx("h3", { children: "create profile" }),
167
+ /* @__PURE__ */ jsx("h3", { children: "create agent template" }),
163
168
  error && /* @__PURE__ */ jsx("div", {
164
169
  className: "err",
165
170
  children: error
@@ -201,6 +206,10 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
201
206
  {
202
207
  id: "skills",
203
208
  label: "skills"
209
+ },
210
+ {
211
+ id: "communication",
212
+ label: "communication"
204
213
  }
205
214
  ],
206
215
  active: tab,
@@ -270,7 +279,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
270
279
  }),
271
280
  /* @__PURE__ */ jsx("p", {
272
281
  className: "muted mt-2 text-[0.8em]",
273
- children: "Disabled files aren't created for this profile. Each spawned agent gets its own copy of the enabled files at spawn time."
282
+ children: "Disabled files aren't created for this Agent template. Each spawned agent gets its own copy of the enabled files at spawn time."
274
283
  })
275
284
  ]
276
285
  }),
@@ -410,6 +419,23 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
410
419
  }, s.name))
411
420
  })
412
421
  ] }),
422
+ tab === "communication" && /* @__PURE__ */ jsxs("div", { children: [
423
+ /* @__PURE__ */ jsx("div", {
424
+ className: "mb-3 flex items-center gap-2",
425
+ children: /* @__PURE__ */ jsx("h4", {
426
+ className: "text-sm font-semibold text-chocolate",
427
+ children: "Communication defaults"
428
+ })
429
+ }),
430
+ /* @__PURE__ */ jsx("p", {
431
+ className: "muted mb-4",
432
+ children: "Materialized when a Team or live policy snapshot is created. Existing snapshots never inherit later changes."
433
+ }),
434
+ /* @__PURE__ */ jsx(ProfileCommunicationEditor, {
435
+ value: communication,
436
+ onChange: setCommunication
437
+ })
438
+ ] }),
413
439
  /* @__PURE__ */ jsx("div", {
414
440
  className: "mt-5 flex gap-2",
415
441
  children: /* @__PURE__ */ jsx(Button, {