@wowyuarm/dsh-agent-team 0.1.6 → 0.1.7

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 (85) hide show
  1. package/README.md +11 -5
  2. package/README.zh.md +11 -5
  3. package/package.json +44 -42
  4. package/packages/agent-team/README.md +2 -0
  5. package/packages/agent-team/README.zh.md +2 -0
  6. package/packages/agent-team/lib/index.js +82 -204
  7. package/packages/agent-team/lib/ledger.js +301 -13
  8. package/packages/agent-team/lib/member-context.js +5 -1
  9. package/packages/agent-team/lib/member-runtime.js +229 -0
  10. package/packages/agent-team/lib/preset-roster.js +1 -0
  11. package/packages/agent-team/lib/spec.js +30 -1
  12. package/packages/agent-team/lib/typert.host.js +253 -74
  13. package/packages/agent-team/lib/typert.remote-client.d.ts +5 -1
  14. package/packages/agent-team/lib/typert.remote-client.d.ts.map +1 -1
  15. package/packages/agent-team/lib/typert.remote-client.js +172 -43
  16. package/packages/agent-team/lib/types/entities.js +1 -0
  17. package/packages/agent-team/lib/types/index.d.ts +20 -44
  18. package/packages/agent-team/lib/types/index.d.ts.map +1 -1
  19. package/packages/agent-team/lib/types/ledger.d.ts +34 -1
  20. package/packages/agent-team/lib/types/ledger.d.ts.map +1 -1
  21. package/packages/agent-team/lib/types/member-context.d.ts.map +1 -1
  22. package/packages/agent-team/lib/types/member-runtime.d.ts +108 -0
  23. package/packages/agent-team/lib/types/member-runtime.d.ts.map +1 -0
  24. package/packages/agent-team/lib/types/operations.js +1 -0
  25. package/packages/agent-team/lib/types/preset-roster.d.ts.map +1 -1
  26. package/packages/agent-team/lib/types/requests-results.js +1 -0
  27. package/packages/agent-team/lib/types/spec.d.ts.map +1 -1
  28. package/packages/agent-team/lib/types/types/entities.d.ts +339 -0
  29. package/packages/agent-team/lib/types/types/entities.d.ts.map +1 -0
  30. package/packages/agent-team/lib/types/types/operations.d.ts +303 -0
  31. package/packages/agent-team/lib/types/types/operations.d.ts.map +1 -0
  32. package/packages/agent-team/lib/types/types/requests-results.d.ts +527 -0
  33. package/packages/agent-team/lib/types/types/requests-results.d.ts.map +1 -0
  34. package/packages/agent-team/lib/types/types.d.ts +10 -1070
  35. package/packages/agent-team/lib/types/types.d.ts.map +1 -1
  36. package/packages/agent-team/preset/team-member/agent.cordis.yml +4 -2
  37. package/packages/client-agent-team/README.md +3 -1
  38. package/packages/client-agent-team/README.zh.md +3 -1
  39. package/packages/client-agent-team/lib/client.js +444 -298
  40. package/packages/client-agent-team/lib/client.js.map +1 -1
  41. package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts +3 -2
  42. package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts.map +1 -1
  43. package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.js +30 -7
  44. package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts +1 -1
  45. package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts.map +1 -1
  46. package/packages/client-agent-team/lib/types/client/TeamChannelPage.js +2 -2
  47. package/packages/client-agent-team/lib/types/client/TeamChannelsPanel.d.ts +2 -1
  48. package/packages/client-agent-team/lib/types/client/TeamChannelsPanel.d.ts.map +1 -1
  49. package/packages/client-agent-team/lib/types/client/TeamChannelsPanel.js +31 -5
  50. package/packages/client-agent-team/lib/types/client/TeamComposer.d.ts.map +1 -1
  51. package/packages/client-agent-team/lib/types/client/TeamComposer.js +2 -1
  52. package/packages/client-agent-team/lib/types/client/TeamMemberDock.d.ts +12 -0
  53. package/packages/client-agent-team/lib/types/client/TeamMemberDock.d.ts.map +1 -0
  54. package/packages/client-agent-team/lib/types/client/TeamMemberDock.js +13 -0
  55. package/packages/client-agent-team/lib/types/client/TeamMessage.d.ts.map +1 -1
  56. package/packages/client-agent-team/lib/types/client/TeamMessage.js +10 -3
  57. package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts +1 -1
  58. package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts.map +1 -1
  59. package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.d.ts +1 -1
  60. package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.d.ts.map +1 -1
  61. package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.js +2 -2
  62. package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.d.ts +1 -1
  63. package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.d.ts.map +1 -1
  64. package/packages/client-agent-team/lib/types/client/index.d.ts +1 -1
  65. package/packages/client-agent-team/lib/types/client/index.d.ts.map +1 -1
  66. package/packages/client-agent-team/lib/types/client/index.js +25 -28
  67. package/packages/client-agent-team/lib/types/client/locales.d.ts +28 -0
  68. package/packages/client-agent-team/lib/types/client/locales.d.ts.map +1 -1
  69. package/packages/client-agent-team/lib/types/client/locales.js +28 -0
  70. package/packages/client-agent-team/lib/types/client/member-session-input.d.ts +1 -3
  71. package/packages/client-agent-team/lib/types/client/member-session-input.d.ts.map +1 -1
  72. package/packages/client-agent-team/lib/types/client/member-session-input.js +18 -6
  73. package/packages/client-agent-team/lib/types/client/navigation.d.ts +2 -1
  74. package/packages/client-agent-team/lib/types/client/navigation.d.ts.map +1 -1
  75. package/packages/client-agent-team/lib/types/client/sidebar-order.d.ts +1 -1
  76. package/packages/client-agent-team/lib/types/client/sidebar-order.d.ts.map +1 -1
  77. package/packages/client-agent-team/lib/types/client/sidebar-sections.d.ts +1 -1
  78. package/packages/client-agent-team/lib/types/client/sidebar-sections.d.ts.map +1 -1
  79. package/packages/client-agent-team/lib/types/client/slots.d.ts +3 -1
  80. package/packages/client-agent-team/lib/types/client/slots.d.ts.map +1 -1
  81. package/packages/client-agent-team/lib/types/client/team-membership.d.ts +1 -1
  82. package/packages/client-agent-team/lib/types/client/team-membership.d.ts.map +1 -1
  83. package/packages/client-agent-team/lib/types/client/TeamMemberSessionComposer.d.ts +0 -17
  84. package/packages/client-agent-team/lib/types/client/TeamMemberSessionComposer.d.ts.map +0 -1
  85. package/packages/client-agent-team/lib/types/client/TeamMemberSessionComposer.js +0 -135
@@ -4125,12 +4125,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4125
4125
  "state": union([
4126
4126
  literal("enabled"),
4127
4127
  literal("suspended"),
4128
- literal("inactive")
4128
+ literal("inactive"),
4129
+ literal("archived")
4129
4130
  ]).readonly()
4130
4131
  }).readonly(),
4131
4132
  "availability": union([
4132
4133
  literal("suspended"),
4133
4134
  literal("inactive"),
4135
+ literal("archived"),
4134
4136
  literal("active"),
4135
4137
  literal("unavailable")
4136
4138
  ]).readonly(),
@@ -4147,6 +4149,91 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4147
4149
  }))]).readonly().optional()
4148
4150
  }).readonly()
4149
4151
  });
4152
+ const _wowyuarm_dsh_agent_team_agentTeam_archiveChannel_parameter_0$schema = object({
4153
+ "requestId": intersection(string(), unknown()).readonly(),
4154
+ "workspaceId": intersection(string(), unknown()).readonly(),
4155
+ "channelRef": intersection(string(), unknown()).readonly()
4156
+ });
4157
+ const _wowyuarm_dsh_agent_team_agentTeam_archiveChannel_result$schema = object({
4158
+ "receipt": object({
4159
+ "operationId": intersection(string(), unknown()).readonly(),
4160
+ "requestId": intersection(string(), unknown()).readonly(),
4161
+ "sequence": number().readonly()
4162
+ }).readonly(),
4163
+ "channel": object({
4164
+ "channelRef": intersection(string(), unknown()).readonly(),
4165
+ "workspaceId": intersection(string(), unknown()).readonly(),
4166
+ "name": string().readonly(),
4167
+ "description": string().readonly(),
4168
+ "createdAtSequence": number().readonly(),
4169
+ "state": union([literal("archived"), literal("active")]).readonly()
4170
+ }).readonly(),
4171
+ "releasedClaims": array(object({
4172
+ "claimRef": intersection(string(), unknown()).readonly(),
4173
+ "taskRef": intersection(string(), unknown()).readonly(),
4174
+ "threadRef": intersection(string(), unknown()).readonly(),
4175
+ "owner": intersection(string(), unknown()).readonly(),
4176
+ "direction": string().readonly(),
4177
+ "normalizedDirection": string().readonly(),
4178
+ "state": union([
4179
+ literal("active"),
4180
+ literal("done"),
4181
+ literal("released")
4182
+ ]).readonly()
4183
+ })).readonly()
4184
+ });
4185
+ const _wowyuarm_dsh_agent_team_agentTeam_archiveMember_parameter_0$schema = object({
4186
+ "requestId": intersection(string(), unknown()).readonly(),
4187
+ "memberId": intersection(string(), unknown()).readonly()
4188
+ });
4189
+ const _wowyuarm_dsh_agent_team_agentTeam_archiveMember_result$schema = object({
4190
+ "receipt": object({
4191
+ "operationId": intersection(string(), unknown()).readonly(),
4192
+ "requestId": intersection(string(), unknown()).readonly(),
4193
+ "sequence": number().readonly()
4194
+ }).readonly(),
4195
+ "member": object({
4196
+ "memberId": intersection(string(), unknown()).readonly(),
4197
+ "sessionId": intersection(string(), unknown()).readonly(),
4198
+ "workspaceId": intersection(string(), unknown()).readonly(),
4199
+ "handle": string().readonly(),
4200
+ "description": string().readonly(),
4201
+ "presetId": string().readonly(),
4202
+ "model": union([_undefined(), object({
4203
+ "provider": string().readonly(),
4204
+ "model": string().readonly(),
4205
+ "reasoningEffort": intersection(string(), unknown()).readonly().optional()
4206
+ })]).readonly().optional(),
4207
+ "capabilities": union([_undefined(), object({
4208
+ "tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
4209
+ "skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
4210
+ })]).readonly().optional(),
4211
+ "privateMemoryPath": string().readonly(),
4212
+ "state": union([
4213
+ literal("enabled"),
4214
+ literal("suspended"),
4215
+ literal("inactive"),
4216
+ literal("archived")
4217
+ ]).readonly()
4218
+ }).readonly(),
4219
+ "releasedClaims": array(object({
4220
+ "claimRef": intersection(string(), unknown()).readonly(),
4221
+ "taskRef": intersection(string(), unknown()).readonly(),
4222
+ "threadRef": intersection(string(), unknown()).readonly(),
4223
+ "owner": intersection(string(), unknown()).readonly(),
4224
+ "direction": string().readonly(),
4225
+ "normalizedDirection": string().readonly(),
4226
+ "state": union([
4227
+ literal("active"),
4228
+ literal("done"),
4229
+ literal("released")
4230
+ ]).readonly()
4231
+ })).readonly(),
4232
+ "removedAttention": array(object({
4233
+ "memberId": intersection(string(), unknown()).readonly(),
4234
+ "threadRef": intersection(string(), unknown()).readonly()
4235
+ })).readonly()
4236
+ });
4150
4237
  const _wowyuarm_dsh_agent_team_agentTeam_changeAttention_parameter_0$schema = object({
4151
4238
  "requestId": intersection(string(), unknown()).readonly(),
4152
4239
  "workspaceId": intersection(string(), unknown()).readonly(),
@@ -4165,10 +4252,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4165
4252
  "channelRef": intersection(string(), unknown()).readonly(),
4166
4253
  "threadRef": intersection(string(), unknown()).readonly(),
4167
4254
  "status": union([
4255
+ literal("done"),
4168
4256
  literal("todo"),
4169
4257
  literal("in_progress"),
4170
4258
  literal("in_review"),
4171
- literal("done"),
4172
4259
  literal("closed")
4173
4260
  ]).readonly(),
4174
4261
  "resolution": union([
@@ -4246,10 +4333,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4246
4333
  "channelRef": intersection(string(), unknown()).readonly(),
4247
4334
  "threadRef": intersection(string(), unknown()).readonly(),
4248
4335
  "status": union([
4336
+ literal("done"),
4249
4337
  literal("todo"),
4250
4338
  literal("in_progress"),
4251
4339
  literal("in_review"),
4252
- literal("done"),
4253
4340
  literal("closed")
4254
4341
  ]).readonly(),
4255
4342
  "resolution": union([
@@ -4325,12 +4412,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4325
4412
  "state": union([
4326
4413
  literal("enabled"),
4327
4414
  literal("suspended"),
4328
- literal("inactive")
4415
+ literal("inactive"),
4416
+ literal("archived")
4329
4417
  ]).readonly()
4330
4418
  }).readonly(),
4331
4419
  "availability": union([
4332
4420
  literal("suspended"),
4333
4421
  literal("inactive"),
4422
+ literal("archived"),
4334
4423
  literal("active"),
4335
4424
  literal("unavailable")
4336
4425
  ]).readonly(),
@@ -4365,7 +4454,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4365
4454
  "workspaceId": intersection(string(), unknown()).readonly(),
4366
4455
  "name": string().readonly(),
4367
4456
  "description": string().readonly(),
4368
- "createdAtSequence": number().readonly()
4457
+ "createdAtSequence": number().readonly(),
4458
+ "state": union([literal("archived"), literal("active")]).readonly()
4369
4459
  }).readonly(),
4370
4460
  "memberIds": array(intersection(string(), unknown())).readonly()
4371
4461
  });
@@ -4388,10 +4478,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4388
4478
  "channelRef": intersection(string(), unknown()).readonly(),
4389
4479
  "threadRef": intersection(string(), unknown()).readonly(),
4390
4480
  "status": union([
4481
+ literal("done"),
4391
4482
  literal("todo"),
4392
4483
  literal("in_progress"),
4393
4484
  literal("in_review"),
4394
- literal("done"),
4395
4485
  literal("closed")
4396
4486
  ]).readonly(),
4397
4487
  "resolution": union([
@@ -4454,12 +4544,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4454
4544
  "state": union([
4455
4545
  literal("enabled"),
4456
4546
  literal("suspended"),
4457
- literal("inactive")
4547
+ literal("inactive"),
4548
+ literal("archived")
4458
4549
  ]).readonly()
4459
4550
  }).readonly(),
4460
4551
  "availability": union([
4461
4552
  literal("suspended"),
4462
4553
  literal("inactive"),
4554
+ literal("archived"),
4463
4555
  literal("active"),
4464
4556
  literal("unavailable")
4465
4557
  ]).readonly(),
@@ -4524,10 +4616,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4524
4616
  "channelRef": intersection(string(), unknown()).readonly(),
4525
4617
  "threadRef": intersection(string(), unknown()).readonly(),
4526
4618
  "status": union([
4619
+ literal("done"),
4527
4620
  literal("todo"),
4528
4621
  literal("in_progress"),
4529
4622
  literal("in_review"),
4530
- literal("done"),
4531
4623
  literal("closed")
4532
4624
  ]).readonly(),
4533
4625
  "resolution": union([
@@ -4574,10 +4666,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4574
4666
  "channelRef": intersection(string(), unknown()).readonly(),
4575
4667
  "threadRef": intersection(string(), unknown()).readonly(),
4576
4668
  "status": union([
4669
+ literal("done"),
4577
4670
  literal("todo"),
4578
4671
  literal("in_progress"),
4579
4672
  literal("in_review"),
4580
- literal("done"),
4581
4673
  literal("closed")
4582
4674
  ]).readonly(),
4583
4675
  "resolution": union([
@@ -4731,12 +4823,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4731
4823
  "state": union([
4732
4824
  literal("enabled"),
4733
4825
  literal("suspended"),
4734
- literal("inactive")
4826
+ literal("inactive"),
4827
+ literal("archived")
4735
4828
  ]).readonly()
4736
4829
  }).readonly(),
4737
4830
  "availability": union([
4738
4831
  literal("suspended"),
4739
4832
  literal("inactive"),
4833
+ literal("archived"),
4740
4834
  literal("active"),
4741
4835
  literal("unavailable")
4742
4836
  ]).readonly(),
@@ -4860,10 +4954,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4860
4954
  "channelRef": intersection(string(), unknown()).readonly(),
4861
4955
  "threadRef": intersection(string(), unknown()).readonly(),
4862
4956
  "status": union([
4957
+ literal("done"),
4863
4958
  literal("todo"),
4864
4959
  literal("in_progress"),
4865
4960
  literal("in_review"),
4866
- literal("done"),
4867
4961
  literal("closed")
4868
4962
  ]).readonly(),
4869
4963
  "resolution": union([
@@ -4942,10 +5036,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4942
5036
  "channelRef": intersection(string(), unknown()).readonly(),
4943
5037
  "threadRef": intersection(string(), unknown()).readonly(),
4944
5038
  "status": union([
5039
+ literal("done"),
4945
5040
  literal("todo"),
4946
5041
  literal("in_progress"),
4947
5042
  literal("in_review"),
4948
- literal("done"),
4949
5043
  literal("closed")
4950
5044
  ]).readonly(),
4951
5045
  "resolution": union([
@@ -5005,10 +5099,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5005
5099
  "channelRef": intersection(string(), unknown()).readonly(),
5006
5100
  "threadRef": intersection(string(), unknown()).readonly(),
5007
5101
  "status": union([
5102
+ literal("done"),
5008
5103
  literal("todo"),
5009
5104
  literal("in_progress"),
5010
5105
  literal("in_review"),
5011
- literal("done"),
5012
5106
  literal("closed")
5013
5107
  ]).readonly(),
5014
5108
  "resolution": union([
@@ -5151,7 +5245,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5151
5245
  "workspaceId": intersection(string(), unknown()).readonly(),
5152
5246
  "name": string().readonly(),
5153
5247
  "description": string().readonly(),
5154
- "createdAtSequence": number().readonly()
5248
+ "createdAtSequence": number().readonly(),
5249
+ "state": union([literal("archived"), literal("active")]).readonly()
5155
5250
  }).readonly()
5156
5251
  });
5157
5252
  const _wowyuarm_dsh_agent_team_agentTeam_updateMember_parameter_0$schema = object({
@@ -5196,12 +5291,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5196
5291
  "state": union([
5197
5292
  literal("enabled"),
5198
5293
  literal("suspended"),
5199
- literal("inactive")
5294
+ literal("inactive"),
5295
+ literal("archived")
5200
5296
  ]).readonly()
5201
5297
  }).readonly(),
5202
5298
  "availability": union([
5203
5299
  literal("suspended"),
5204
5300
  literal("inactive"),
5301
+ literal("archived"),
5205
5302
  literal("active"),
5206
5303
  literal("unavailable")
5207
5304
  ]).readonly(),
@@ -5235,7 +5332,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5235
5332
  "workspaceId": intersection(string(), unknown()).readonly(),
5236
5333
  "name": string().readonly(),
5237
5334
  "description": string().readonly(),
5238
- "createdAtSequence": number().readonly()
5335
+ "createdAtSequence": number().readonly(),
5336
+ "state": union([literal("archived"), literal("active")]).readonly()
5239
5337
  })).readonly(),
5240
5338
  "members": array(object({
5241
5339
  "channelRef": intersection(string(), unknown()).readonly(),
@@ -5246,10 +5344,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5246
5344
  "channelRef": intersection(string(), unknown()).readonly(),
5247
5345
  "threadRef": intersection(string(), unknown()).readonly(),
5248
5346
  "status": union([
5347
+ literal("done"),
5249
5348
  literal("todo"),
5250
5349
  literal("in_progress"),
5251
5350
  literal("in_review"),
5252
- literal("done"),
5253
5351
  literal("closed")
5254
5352
  ]).readonly(),
5255
5353
  "resolution": union([
@@ -5291,10 +5389,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5291
5389
  "channelRef": intersection(string(), unknown()).readonly(),
5292
5390
  "threadRef": intersection(string(), unknown()).readonly(),
5293
5391
  "status": union([
5392
+ literal("done"),
5294
5393
  literal("todo"),
5295
5394
  literal("in_progress"),
5296
5395
  literal("in_review"),
5297
- literal("done"),
5298
5396
  literal("closed")
5299
5397
  ]).readonly(),
5300
5398
  "resolution": union([
@@ -5392,7 +5490,61 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5392
5490
  },
5393
5491
  sourceLocation: {
5394
5492
  "file": "packages/agent-team/src/index.ts",
5395
- "line": 460,
5493
+ "line": 438,
5494
+ "column": 9
5495
+ }
5496
+ },
5497
+ {
5498
+ id: "@wowyuarm/dsh-agent-team#agentTeam/archiveChannel",
5499
+ service: "agentTeam",
5500
+ namespace: "agentTeam",
5501
+ method: "archiveChannel",
5502
+ invocation: { kind: "direct" },
5503
+ parameters: [{
5504
+ name: "request",
5505
+ wire: "request",
5506
+ source: "json",
5507
+ codec: {
5508
+ mode: "strict",
5509
+ typeSymbol: "@wowyuarm/dsh-agent-team/types#AgentTeamArchiveChannelRequest",
5510
+ schema: _wowyuarm_dsh_agent_team_agentTeam_archiveChannel_parameter_0$schema
5511
+ }
5512
+ }],
5513
+ result: {
5514
+ mode: "strict",
5515
+ typeSymbol: "@wowyuarm/dsh-agent-team/types#AgentTeamArchiveChannelResult",
5516
+ schema: _wowyuarm_dsh_agent_team_agentTeam_archiveChannel_result$schema
5517
+ },
5518
+ sourceLocation: {
5519
+ "file": "packages/agent-team/src/index.ts",
5520
+ "line": 428,
5521
+ "column": 9
5522
+ }
5523
+ },
5524
+ {
5525
+ id: "@wowyuarm/dsh-agent-team#agentTeam/archiveMember",
5526
+ service: "agentTeam",
5527
+ namespace: "agentTeam",
5528
+ method: "archiveMember",
5529
+ invocation: { kind: "direct" },
5530
+ parameters: [{
5531
+ name: "request",
5532
+ wire: "request",
5533
+ source: "json",
5534
+ codec: {
5535
+ mode: "strict",
5536
+ typeSymbol: "@wowyuarm/dsh-agent-team/types#AgentTeamArchiveMemberRequest",
5537
+ schema: _wowyuarm_dsh_agent_team_agentTeam_archiveMember_parameter_0$schema
5538
+ }
5539
+ }],
5540
+ result: {
5541
+ mode: "strict",
5542
+ typeSymbol: "@wowyuarm/dsh-agent-team/types#AgentTeamArchiveMemberResult",
5543
+ schema: _wowyuarm_dsh_agent_team_agentTeam_archiveMember_result$schema
5544
+ },
5545
+ sourceLocation: {
5546
+ "file": "packages/agent-team/src/index.ts",
5547
+ "line": 701,
5396
5548
  "column": 9
5397
5549
  }
5398
5550
  },
@@ -5419,7 +5571,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5419
5571
  },
5420
5572
  sourceLocation: {
5421
5573
  "file": "packages/agent-team/src/index.ts",
5422
- "line": 848,
5574
+ "line": 823,
5423
5575
  "column": 9
5424
5576
  }
5425
5577
  },
@@ -5447,7 +5599,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5447
5599
  },
5448
5600
  sourceLocation: {
5449
5601
  "file": "packages/agent-team/src/index.ts",
5450
- "line": 397,
5602
+ "line": 360,
5451
5603
  "column": 9
5452
5604
  }
5453
5605
  },
@@ -5474,7 +5626,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5474
5626
  },
5475
5627
  sourceLocation: {
5476
5628
  "file": "packages/agent-team/src/index.ts",
5477
- "line": 738,
5629
+ "line": 713,
5478
5630
  "column": 9
5479
5631
  }
5480
5632
  },
@@ -5501,7 +5653,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5501
5653
  },
5502
5654
  sourceLocation: {
5503
5655
  "file": "packages/agent-team/src/index.ts",
5504
- "line": 553,
5656
+ "line": 531,
5505
5657
  "column": 9
5506
5658
  }
5507
5659
  },
@@ -5528,7 +5680,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5528
5680
  },
5529
5681
  sourceLocation: {
5530
5682
  "file": "packages/agent-team/src/index.ts",
5531
- "line": 438,
5683
+ "line": 401,
5532
5684
  "column": 9
5533
5685
  }
5534
5686
  },
@@ -5555,7 +5707,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5555
5707
  },
5556
5708
  sourceLocation: {
5557
5709
  "file": "packages/agent-team/src/index.ts",
5558
- "line": 834,
5710
+ "line": 809,
5559
5711
  "column": 9
5560
5712
  }
5561
5713
  },
@@ -5582,7 +5734,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5582
5734
  },
5583
5735
  sourceLocation: {
5584
5736
  "file": "packages/agent-team/src/index.ts",
5585
- "line": 857,
5737
+ "line": 832,
5586
5738
  "column": 3
5587
5739
  }
5588
5740
  },
@@ -5609,7 +5761,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5609
5761
  },
5610
5762
  sourceLocation: {
5611
5763
  "file": "packages/agent-team/src/index.ts",
5612
- "line": 758,
5764
+ "line": 733,
5613
5765
  "column": 9
5614
5766
  }
5615
5767
  },
@@ -5637,7 +5789,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5637
5789
  },
5638
5790
  sourceLocation: {
5639
5791
  "file": "packages/agent-team/src/index.ts",
5640
- "line": 388,
5792
+ "line": 351,
5641
5793
  "column": 3
5642
5794
  }
5643
5795
  },
@@ -5664,7 +5816,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5664
5816
  },
5665
5817
  sourceLocation: {
5666
5818
  "file": "packages/agent-team/src/index.ts",
5667
- "line": 748,
5819
+ "line": 723,
5668
5820
  "column": 9
5669
5821
  }
5670
5822
  },
@@ -5691,7 +5843,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5691
5843
  },
5692
5844
  sourceLocation: {
5693
5845
  "file": "packages/agent-team/src/index.ts",
5694
- "line": 821,
5846
+ "line": 796,
5695
5847
  "column": 9
5696
5848
  }
5697
5849
  },
@@ -5718,7 +5870,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5718
5870
  },
5719
5871
  sourceLocation: {
5720
5872
  "file": "packages/agent-team/src/index.ts",
5721
- "line": 864,
5873
+ "line": 839,
5722
5874
  "column": 9
5723
5875
  }
5724
5876
  },
@@ -5745,7 +5897,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5745
5897
  },
5746
5898
  sourceLocation: {
5747
5899
  "file": "packages/agent-team/src/index.ts",
5748
- "line": 514,
5900
+ "line": 492,
5749
5901
  "column": 9
5750
5902
  }
5751
5903
  },
@@ -5772,7 +5924,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5772
5924
  },
5773
5925
  sourceLocation: {
5774
5926
  "file": "packages/agent-team/src/index.ts",
5775
- "line": 769,
5927
+ "line": 744,
5776
5928
  "column": 9
5777
5929
  }
5778
5930
  },
@@ -5799,7 +5951,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5799
5951
  },
5800
5952
  sourceLocation: {
5801
5953
  "file": "packages/agent-team/src/index.ts",
5802
- "line": 842,
5954
+ "line": 817,
5803
5955
  "column": 9
5804
5956
  }
5805
5957
  },
@@ -5826,7 +5978,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5826
5978
  },
5827
5979
  sourceLocation: {
5828
5980
  "file": "packages/agent-team/src/index.ts",
5829
- "line": 375,
5981
+ "line": 338,
5830
5982
  "column": 3
5831
5983
  }
5832
5984
  },
@@ -5853,7 +6005,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5853
6005
  },
5854
6006
  sourceLocation: {
5855
6007
  "file": "packages/agent-team/src/index.ts",
5856
- "line": 778,
6008
+ "line": 753,
5857
6009
  "column": 9
5858
6010
  }
5859
6011
  },
@@ -5880,7 +6032,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5880
6032
  },
5881
6033
  sourceLocation: {
5882
6034
  "file": "packages/agent-team/src/index.ts",
5883
- "line": 880,
6035
+ "line": 855,
5884
6036
  "column": 3
5885
6037
  }
5886
6038
  },
@@ -5907,7 +6059,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5907
6059
  },
5908
6060
  sourceLocation: {
5909
6061
  "file": "packages/agent-team/src/index.ts",
5910
- "line": 873,
6062
+ "line": 848,
5911
6063
  "column": 3
5912
6064
  }
5913
6065
  },
@@ -5934,7 +6086,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5934
6086
  },
5935
6087
  sourceLocation: {
5936
6088
  "file": "packages/agent-team/src/index.ts",
5937
- "line": 450,
6089
+ "line": 413,
5938
6090
  "column": 9
5939
6091
  }
5940
6092
  },
@@ -5961,7 +6113,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5961
6113
  },
5962
6114
  sourceLocation: {
5963
6115
  "file": "packages/agent-team/src/index.ts",
5964
- "line": 665,
6116
+ "line": 641,
5965
6117
  "column": 9
5966
6118
  }
5967
6119
  },
@@ -5988,7 +6140,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5988
6140
  },
5989
6141
  sourceLocation: {
5990
6142
  "file": "packages/agent-team/src/index.ts",
5991
- "line": 887,
6143
+ "line": 862,
5992
6144
  "column": 3
5993
6145
  }
5994
6146
  }
@@ -6608,7 +6760,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6608
6760
  const mintRequestId = () => crypto.randomUUID();
6609
6761
  //#endregion
6610
6762
  //#region \0dsh-css:/home/yu/projects/dsh-agent-team/packages/client-agent-team/src/client/composer.module.css.mjs
6611
- const css$5 = ".x9jGQq_root{padding:0 var(--dsh-composer-side-clearance,16px) 8px;flex-direction:column;align-items:center;display:flex}.x9jGQq_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width,780px);border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1));box-shadow:var(--dsw-shadow-lv2);border-radius:22px;flex-direction:column;gap:6px;padding:10px 0 0;display:flex;position:relative}.x9jGQq_inputArea{min-height:28px;position:relative}.x9jGQq_inputArea textarea{box-sizing:border-box;resize:none;width:100%;min-height:28px;max-height:336px;color:var(--dsw-alias-label-primary,var(--dsw-alias-label-primary));font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;background:0 0;border:0;outline:0;padding:4px 12px 0 16px;font-size:15px;line-height:24px;display:block;overflow-y:auto}.x9jGQq_inputArea textarea::placeholder{color:var(--dsw-alias-label-caption,var(--dsw-alias-label-tertiary))}.x9jGQq_memberSessionRoot{padding:0 var(--dsh-composer-side-clearance) 8px}.x9jGQq_memberSessionCard{font-family:var(--dsw-font-family);gap:6px;padding-top:10px;font-size:16px;line-height:24px}.x9jGQq_memberSessionInputArea textarea{min-height:28px;color:var(--dsw-alias-label-primary);caret-color:var(--dsw-alias-state-business-primary);font-family:var(--dsw-font-family);font-size:inherit;line-height:inherit;padding:4px 12px 0 16px}.x9jGQq_memberSessionStatus{width:100%;max-width:var(--dsh-composer-card-max-width);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-error-primary);border-radius:8px;margin:0 0 6px;padding:4px 8px;font-size:12px;line-height:18px}.x9jGQq_memberSessionToolbar{min-width:0;padding:2px 8px 6px}.x9jGQq_memberSessionPrimary{background:var(--dsw-alias-button-info-fill);border-radius:999px;place-items:center;display:grid;transform:translateY(-2px)}.x9jGQq_memberSessionPrimary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.x9jGQq_memberSessionPrimary:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.x9jGQq_memberSessionPrimary:disabled{cursor:default;opacity:.4}.x9jGQq_inputArea textarea:disabled{cursor:not-allowed;opacity:.55}.x9jGQq_mentionMenu{z-index:10;border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);max-height:min(320px,40vh);box-shadow:var(--dsw-shadow-lv3);border-radius:12px;padding:4px;position:absolute;bottom:calc(100% + 12px);left:0;right:0;overflow-y:auto}.x9jGQq_mentionOption{width:100%;min-height:40px;color:var(--dsw-alias-label-primary,var(--dsw-alias-label-primary));cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:16px minmax(0,auto) minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;font-size:14px;line-height:22px;display:grid}.x9jGQq_mentionOption:hover,.x9jGQq_mentionOption[aria-selected=true]{background:var(--dsw-alias-interactive-bg-hover)}.x9jGQq_mentionName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x9jGQq_mentionAllDot{background:var(--dsw-alias-label-primary);border-radius:50%;justify-self:center;width:8px;height:8px}.x9jGQq_mentionDescription{min-width:0;color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-tertiary));text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x9jGQq_toolbar{justify-content:flex-end;align-items:center;gap:6px;min-height:34px;padding:2px 8px 6px;display:flex}.x9jGQq_asTaskOn[aria-pressed=true],.x9jGQq_asTaskOn[aria-pressed=true]:hover:not(:disabled){background:var(--dsw-alias-button-primary-fill);border-color:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.x9jGQq_attachButton{background:var(--dsw-specific-selector);color:var(--dsw-alias-label-primary);cursor:pointer;border:0;border-radius:999px;flex:none;place-items:center;width:28px;height:28px;margin-right:auto;display:grid}.x9jGQq_attachButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.x9jGQq_attachButton:disabled{cursor:default;opacity:.5}.x9jGQq_attachButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,var(--dsw-specific-selector));outline-offset:1px}.x9jGQq_fileInput{display:none}.x9jGQq_fileChips{flex-wrap:wrap;gap:4px;margin:0;padding:4px 8px 0;list-style:none;display:flex}.x9jGQq_fileChip{background:var(--dsw-alias-interactive-bg-hover);border-radius:6px;align-items:center;gap:4px;max-width:100%;padding:2px 4px 2px 8px;display:inline-flex}.x9jGQq_fileChipSize{color:var(--dsw-alias-label-tertiary);margin-left:6px}.x9jGQq_imageChip{align-items:center;display:flex}.x9jGQq_imageChipPreview{border:1px solid var(--dsw-alias-border-l2);object-fit:cover;border-radius:4px;width:56px;height:40px}.x9jGQq_fileChipName{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:11px;line-height:16px;overflow:hidden}.x9jGQq_fileChipRemove{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:12px;display:inline-flex}.x9jGQq_fileChipRemove:hover,.x9jGQq_fileChipRemove:focus-visible{color:var(--dsw-alias-label-primary);outline:none}.x9jGQq_sendButton{background:var(--dsw-alias-button-info-fill,var(--dsw-alias-button-primary-fill));color:#fff;cursor:pointer;border:0;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;padding:0;transition:background-color .1s,opacity .1s;display:inline-flex}.x9jGQq_sendButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover,var(--dsw-alias-button-primary-hover))}.x9jGQq_sendButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.x9jGQq_sendButton:disabled{cursor:not-allowed;opacity:.4}.x9jGQq_confirmation{color:var(--dsw-alias-label-tertiary);align-self:stretch;margin:0;padding:0 16px;font-size:12px;line-height:18px}.x9jGQq_notifyRow{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-tertiary));overflow-wrap:anywhere;margin:0;padding:0 16px;font-size:12px;line-height:18px}.x9jGQq_error{color:var(--dsw-alias-state-error-primary);align-self:stretch;margin:0;padding:0 4px 2px;font-size:12px;line-height:18px}@media (width<=600px){.x9jGQq_mentionOption{grid-template-columns:16px minmax(0,1fr);min-height:36px;padding-block:6px}.x9jGQq_mentionDescription{display:none}}@media (prefers-reduced-motion:reduce){.x9jGQq_sendButton{transition:none}}";
6763
+ const css$5 = ".x9jGQq_root{padding:0 var(--dsh-composer-side-clearance,16px) 8px;flex-direction:column;align-items:center;display:flex}.x9jGQq_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width,780px);border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1));box-shadow:var(--dsw-shadow-lv2);border-radius:22px;flex-direction:column;gap:6px;padding:10px 0 0;display:flex;position:relative}.x9jGQq_inputArea{min-height:28px;position:relative}.x9jGQq_inputArea textarea{box-sizing:border-box;resize:none;width:100%;min-height:28px;max-height:336px;color:var(--dsw-alias-label-primary,var(--dsw-alias-label-primary));font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;background:0 0;border:0;outline:0;padding:4px 12px 0 16px;font-size:15px;line-height:24px;display:block;overflow-y:auto}.x9jGQq_inputArea textarea::placeholder{color:var(--dsw-alias-label-caption,var(--dsw-alias-label-tertiary))}.x9jGQq_memberSessionRoot{padding:0 var(--dsh-composer-side-clearance) 8px}.x9jGQq_memberSessionCard{font-family:var(--dsw-font-family);gap:6px;padding-top:10px;font-size:16px;line-height:24px}.x9jGQq_memberSessionInputArea textarea{min-height:28px;color:var(--dsw-alias-label-primary);caret-color:var(--dsw-alias-state-business-primary);font-family:var(--dsw-font-family);font-size:inherit;line-height:inherit;padding:4px 12px 0 16px}.x9jGQq_memberSessionStatus{width:100%;max-width:var(--dsh-composer-card-max-width);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-state-error-primary);border-radius:8px;margin:0 0 6px;padding:4px 8px;font-size:12px;line-height:18px}.x9jGQq_memberSessionToolbar{min-width:0;padding:2px 8px 6px}.x9jGQq_memberSessionPrimary{background:var(--dsw-alias-button-info-fill);border-radius:999px;place-items:center;display:grid;transform:translateY(-2px)}.x9jGQq_memberSessionPrimary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.x9jGQq_memberSessionPrimary:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.x9jGQq_memberSessionPrimary:disabled{cursor:default;opacity:.4}.x9jGQq_inputArea textarea:disabled{cursor:not-allowed;opacity:.55}.x9jGQq_mentionMenu{z-index:10;border:1px solid var(--dsw-alias-border-inverted);background:var(--dsw-specific-menu);max-height:min(320px,40vh);box-shadow:var(--dsw-shadow-lv3);border-radius:12px;padding:4px;position:absolute;bottom:calc(100% + 12px);left:0;right:0;overflow-y:auto}.x9jGQq_mentionOption{width:100%;min-height:40px;color:var(--dsw-alias-label-primary,var(--dsw-alias-label-primary));cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:16px minmax(0,auto) minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;font-size:14px;line-height:22px;display:grid}.x9jGQq_mentionOption:hover,.x9jGQq_mentionOption[aria-selected=true]{background:var(--dsw-alias-interactive-bg-hover)}.x9jGQq_mentionName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x9jGQq_mentionAllDot{background:var(--dsw-alias-label-primary);border-radius:50%;justify-self:center;width:8px;height:8px}.x9jGQq_mentionDescription{min-width:0;color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-tertiary));text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x9jGQq_toolbar{justify-content:flex-end;align-items:center;gap:6px;min-height:34px;padding:2px 8px 6px;display:flex}.x9jGQq_asTaskOn[aria-pressed=true],.x9jGQq_asTaskOn[aria-pressed=true]:hover:not(:disabled){background:var(--dsw-alias-button-primary-fill);border-color:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.x9jGQq_attachButton{background:var(--dsw-specific-selector);color:var(--dsw-alias-label-primary);cursor:pointer;border:0;border-radius:999px;flex:none;place-items:center;width:28px;height:28px;margin-right:auto;display:grid}.x9jGQq_attachButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.x9jGQq_attachButton:disabled{cursor:default;opacity:.5}.x9jGQq_attachButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,var(--dsw-specific-selector));outline-offset:1px}.x9jGQq_fileInput{display:none}.x9jGQq_fileChips{flex-wrap:wrap;gap:4px;margin:0;padding:4px 8px 0;list-style:none;display:flex}.x9jGQq_fileChip{background:var(--dsw-alias-interactive-bg-hover);border-radius:6px;align-items:center;gap:4px;max-width:100%;padding:2px 4px 2px 8px;display:inline-flex}.x9jGQq_fileChipSize{color:var(--dsw-alias-label-tertiary);margin-left:6px}.x9jGQq_imageChip{align-items:center;display:flex}.x9jGQq_imageChipPreview{border:1px solid var(--dsw-alias-border-l2);object-fit:cover;border-radius:4px;width:56px;height:40px}.x9jGQq_fileChipName{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:11px;line-height:16px;overflow:hidden}.x9jGQq_fileChipRemove{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:12px;display:inline-flex}.x9jGQq_fileChipRemove:hover,.x9jGQq_fileChipRemove:focus-visible{color:var(--dsw-alias-label-primary);outline:none}.x9jGQq_sendButton{background:var(--dsw-alias-button-info-fill,var(--dsw-alias-button-primary-fill));color:#fff;cursor:pointer;border:0;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;padding:0;transition:background-color .1s,opacity .1s;display:inline-flex}.x9jGQq_sendButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover,var(--dsw-alias-button-primary-hover))}.x9jGQq_sendButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.x9jGQq_sendButton:disabled{cursor:not-allowed;opacity:.4}.x9jGQq_confirmation{color:var(--dsw-alias-label-tertiary);align-self:stretch;margin:0;padding:0 16px;font-size:12px;line-height:18px}.x9jGQq_notifyRow{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-tertiary));overflow-wrap:anywhere;margin:0;padding:0 16px;font-size:12px;line-height:18px}.x9jGQq_error{color:var(--dsw-alias-state-error-primary);align-self:stretch;margin:0;padding:0 4px 2px;font-size:12px;line-height:18px}@media (width<=600px){.x9jGQq_mentionOption{grid-template-columns:16px minmax(0,1fr);min-height:36px;padding-block:6px}.x9jGQq_mentionDescription{display:none}}@media (prefers-reduced-motion:reduce){.x9jGQq_sendButton{transition:none}}.x9jGQq_memberSessionDock{flex-direction:column;gap:4px;padding:4px 2px 0;display:flex}.x9jGQq_memberSessionHint{color:var(--dsw-alias-text-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;line-height:1.4;overflow:hidden}";
6612
6764
  const tagId$5 = "@wowyuarm/dsh-agent-team/composer.module.css";
6613
6765
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
6614
6766
  const tag = document.createElement("style");
@@ -6633,6 +6785,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6633
6785
  "imageChipPreview": "x9jGQq_imageChipPreview",
6634
6786
  "inputArea": "x9jGQq_inputArea",
6635
6787
  "memberSessionCard": "x9jGQq_memberSessionCard",
6788
+ "memberSessionDock": "x9jGQq_memberSessionDock",
6789
+ "memberSessionHint": "x9jGQq_memberSessionHint",
6636
6790
  "memberSessionInputArea": "x9jGQq_memberSessionInputArea",
6637
6791
  "memberSessionPrimary": "x9jGQq_memberSessionPrimary",
6638
6792
  "memberSessionRoot": "x9jGQq_memberSessionRoot",
@@ -6672,11 +6826,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6672
6826
  }
6673
6827
  function mentionCandidates(members, query) {
6674
6828
  const normalized = query.toLocaleLowerCase();
6675
- return members.filter((status) => status.presence !== "unavailable" && status.member.state !== "inactive" && status.member.handle.toLocaleLowerCase().startsWith(normalized));
6829
+ return members.filter((status) => status.presence !== "unavailable" && status.member.state !== "inactive" && status.member.state !== "archived" && status.member.handle.toLocaleLowerCase().startsWith(normalized));
6676
6830
  }
6677
6831
  /** Every member a manual handle pick could reach: the @all expansion snapshot. */
6678
6832
  function allMentionMembers(members) {
6679
- return members.filter((status) => status.presence !== "unavailable" && status.member.state !== "inactive");
6833
+ return members.filter((status) => status.presence !== "unavailable" && status.member.state !== "inactive" && status.member.state !== "archived");
6680
6834
  }
6681
6835
  function containsAllMention(draft) {
6682
6836
  return /(?:^|[^\p{L}\p{N}_])@all(?=$|[^\p{L}\p{N}_])/u.test(draft);
@@ -7425,6 +7579,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7425
7579
  ]);
7426
7580
  const taskLabel = (0, react.useCallback)((taskNumber) => t?.("taskLabel", { number: taskNumber }) ?? `Task #${taskNumber}`, [t]);
7427
7581
  const refLabel = (0, react.useCallback)((ref) => ref.startsWith("thread:") ? t?.("threadLabel") ?? "Thread" : ref.startsWith("channel:") ? t?.("channels") ?? "Channels" : ref, [t]);
7582
+ const markdownLabels = (0, react.useMemo)(() => ({
7583
+ code: {
7584
+ copyLabel: t?.("copyCode") ?? "Copy",
7585
+ copiedLabel: t?.("copiedCode") ?? "Copied"
7586
+ },
7587
+ footnotes: t?.("markdownFootnotes") ?? "Footnotes"
7588
+ }), [t]);
7428
7589
  const [expanded, setExpanded] = (0, react.useState)(false);
7429
7590
  const clampable = shouldClampMessage(displayBody);
7430
7591
  const clamped = clampable && !expanded;
@@ -7480,7 +7641,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7480
7641
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7481
7642
  ref: markdownRef,
7482
7643
  className: conversation_module_css_default.messageMarkdown,
7483
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, { text: displayBody }, `${displayBody}:${onOpenRef === void 0 ? "literal" : "refs"}`)
7644
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
7645
+ text: displayBody,
7646
+ labels: markdownLabels
7647
+ }, `${displayBody}:${onOpenRef === void 0 ? "literal" : "refs"}`)
7484
7648
  });
7485
7649
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
7486
7650
  className: conversation_module_css_default.messageRow,
@@ -7671,6 +7835,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7671
7835
  open: true,
7672
7836
  ...conversation_module_css_default.attachmentModal === void 0 ? {} : { className: conversation_module_css_default.attachmentModal },
7673
7837
  title: zoomed.name,
7838
+ closeLabel: t?.("close") ?? "Close",
7674
7839
  onClose: () => {
7675
7840
  setZoomed(void 0);
7676
7841
  },
@@ -8039,7 +8204,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8039
8204
  const timeline = useTimelineScroll(`${view?.items.length ?? 0}:${channelLastItem?.message.messageRef ?? ""}`);
8040
8205
  const channel = view?.channels.find((item) => item.channelRef === channelRef);
8041
8206
  const channelMemberIds = new Set(view?.members.filter((item) => item.channelRef === channelRef).map((item) => item.memberId) ?? []);
8042
- const channelMembers = members.filter((status) => channelMemberIds.has(status.member.memberId) && status.member.state !== "inactive");
8207
+ const channelMembers = members.filter((status) => channelMemberIds.has(status.member.memberId) && status.member.state !== "inactive" && status.member.state !== "archived");
8043
8208
  const onlineCount = channelMembers.filter((status) => status.presence === "available" || status.presence === "working").length;
8044
8209
  const messageSender = (item) => item.message.sender;
8045
8210
  const mentionHandlesMap = new Map(members.map((status) => [status.member.memberId, status.member.handle.replace(/^@/, "")]));
@@ -8268,7 +8433,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8268
8433
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
8269
8434
  ref: memberListRef,
8270
8435
  className: channel_module_css_default.memberList,
8271
- children: members.filter((status) => status.member.state !== "inactive").map((status) => {
8436
+ children: members.filter((status) => status.member.state !== "inactive" && status.member.state !== "archived").map((status) => {
8272
8437
  const joined = channelMemberIds.has(status.member.memberId);
8273
8438
  const rowPending = membership.pending.has(status.member.memberId);
8274
8439
  const disabled = rowPending || !joined && status.presence === "unavailable";
@@ -10287,7 +10452,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10287
10452
  }
10288
10453
  //#endregion
10289
10454
  //#region src/client/TeamAgentsPanel.tsx
10290
- function TeamAgentsPanel({ workspaceId, loadMembers, subscribeChanges, addMember, updateMember, recoverMember, clearMemberContext, loadModels, memberSessionId, openMemberSession, onCreatingChange, t }) {
10455
+ function TeamAgentsPanel({ workspaceId, loadMembers, subscribeChanges, addMember, updateMember, recoverMember, clearMemberContext, archiveMember, loadModels, memberSessionId, openMemberSession, onCreatingChange, t }) {
10291
10456
  const [members, setMembers] = (0, react.useState)([]);
10292
10457
  const [loading, setLoading] = (0, react.useState)(true);
10293
10458
  const [error, setError] = (0, react.useState)();
@@ -10315,7 +10480,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10315
10480
  setLoading(true);
10316
10481
  const result = await loadMembers({ workspaceId });
10317
10482
  if (result.ok) {
10318
- setMembers(result.value);
10483
+ setMembers(result.value.filter((status) => status.member.state !== "inactive" && status.member.state !== "archived"));
10319
10484
  setError(void 0);
10320
10485
  } else setError(result.error.message);
10321
10486
  setLoading(false);
@@ -10353,7 +10518,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10353
10518
  const result = await addMember(request);
10354
10519
  if (result.ok) {
10355
10520
  setMembers((current) => {
10356
- return [...current.filter((status) => status.member.memberId !== result.value.status.member.memberId), result.value.status];
10521
+ const retained = current.filter((status) => status.member.memberId !== result.value.status.member.memberId);
10522
+ return result.value.status.member.state === "inactive" || result.value.status.member.state === "archived" ? retained : [...retained, result.value.status];
10357
10523
  });
10358
10524
  setHandle("");
10359
10525
  setDescription("");
@@ -10501,6 +10667,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10501
10667
  updateMember,
10502
10668
  recoverMember,
10503
10669
  clearMemberContext,
10670
+ archiveMember,
10504
10671
  loadModels,
10505
10672
  openMemberSession,
10506
10673
  onUpdated: () => {
@@ -10533,10 +10700,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10533
10700
  * conversation page, the avatar carries identity plus the presence badge, and
10534
10701
  * the row menu opens the editor.
10535
10702
  */
10536
- function AgentRow({ status, current, updateMember, recoverMember, clearMemberContext, loadModels, openMemberSession, onUpdated, t }) {
10703
+ function AgentRow({ status, current, updateMember, recoverMember, clearMemberContext, archiveMember, loadModels, openMemberSession, onUpdated, t }) {
10537
10704
  const [menuOpen, setMenuOpen] = (0, react.useState)(false);
10538
10705
  const [editing, setEditing] = (0, react.useState)(false);
10539
10706
  const [clearing, setClearing] = (0, react.useState)(false);
10707
+ const [archiving, setArchiving] = (0, react.useState)(false);
10540
10708
  const [rowAlert, setRowAlert] = (0, react.useState)();
10541
10709
  const recover = async () => {
10542
10710
  try {
@@ -10579,6 +10747,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10579
10747
  }
10580
10748
  };
10581
10749
  const contextClearable = status.presence === "available" || status.presence === "error";
10750
+ const archive = async () => {
10751
+ try {
10752
+ const result = await archiveMember({
10753
+ requestId: mintRequestId(),
10754
+ memberId: status.member.memberId
10755
+ });
10756
+ await onUpdated();
10757
+ if (!result.ok) setRowAlert(t("archiveAgentFailed", { message: result.error.message }));
10758
+ } catch (cause) {
10759
+ setRowAlert(t("archiveAgentFailed", { message: cause instanceof Error ? cause.message : String(cause) }));
10760
+ }
10761
+ };
10582
10762
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
10583
10763
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
10584
10764
  className: sidebar_module_css_default.agentRow,
@@ -10630,11 +10810,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10630
10810
  type: "label",
10631
10811
  id: "clear-context-reason",
10632
10812
  text: status.presence === "working" ? t("clearContextWorkingReason") : t("clearContextUnavailableReason")
10633
- }] : []
10813
+ }] : [],
10814
+ {
10815
+ id: "archive",
10816
+ label: t("archiveAgent"),
10817
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconArchiveOutline20, { size: 16 }),
10818
+ danger: true
10819
+ }
10634
10820
  ],
10635
10821
  onSelect: (id) => {
10636
10822
  if (id === "edit") setEditing(true);
10637
10823
  else if (id === "clear-context") setClearing(true);
10824
+ else if (id === "archive") setArchiving(true);
10638
10825
  else recover();
10639
10826
  },
10640
10827
  onOpenChange: setMenuOpen
@@ -10673,6 +10860,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10673
10860
  children: t("clearContextNotice", { name: status.member.handle })
10674
10861
  })
10675
10862
  }),
10863
+ archiving && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
10864
+ open: true,
10865
+ onClose: () => {
10866
+ setArchiving(false);
10867
+ },
10868
+ title: t("archiveAgentTitle", { name: status.member.handle }),
10869
+ closeLabel: t("close"),
10870
+ contentClassName: create_module_css_default.dialogContent,
10871
+ footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
10872
+ variant: "outline",
10873
+ onClick: () => {
10874
+ setArchiving(false);
10875
+ },
10876
+ children: t("cancel")
10877
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
10878
+ variant: "primary",
10879
+ onClick: () => {
10880
+ setArchiving(false);
10881
+ archive();
10882
+ },
10883
+ children: t("archiveAgentConfirm")
10884
+ })] }),
10885
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
10886
+ className: create_module_css_default.error,
10887
+ children: t("archiveAgentNotice", { name: status.member.handle })
10888
+ })
10889
+ }),
10676
10890
  editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AgentEditorDialog, {
10677
10891
  status,
10678
10892
  updateMember,
@@ -10785,7 +10999,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10785
10999
  }), loadMembers({ workspaceId })]);
10786
11000
  if (channelResult.ok && memberResult.ok) {
10787
11001
  setView(channelResult.value);
10788
- const visibleMembers = memberResult.value.filter((status) => status.member.state !== "inactive");
11002
+ const visibleMembers = memberResult.value.filter((status) => status.member.state !== "inactive" && status.member.state !== "archived");
10789
11003
  setMembers(visibleMembers);
10790
11004
  const selectable = new Set(visibleMembers.filter((status) => status.presence !== "unavailable").map((status) => status.member.memberId));
10791
11005
  setSelected((current) => new Set([...current].filter((memberId) => selectable.has(memberId))));
@@ -11010,6 +11224,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11010
11224
  joinedIds: joined,
11011
11225
  selected: selectedChannelRef === channel.channelRef,
11012
11226
  updateChannel,
11227
+ archiveChannel: props.archiveChannel,
11013
11228
  joinChannel: props.joinChannel,
11014
11229
  removeChannelMember: props.removeChannelMember,
11015
11230
  onCommitted: () => {
@@ -11035,52 +11250,108 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11035
11250
  * One sidebar Channel row: the select button keeps the `#` identity while the
11036
11251
  * row menu carries the entry point; editing covers display facts and membership.
11037
11252
  */
11038
- function ChannelRow({ channel, members, joinedIds, selected, updateChannel, joinChannel, removeChannelMember, onCommitted, selectChannel, t }) {
11253
+ function ChannelRow({ channel, members, joinedIds, selected, updateChannel, archiveChannel, joinChannel, removeChannelMember, onCommitted, selectChannel, t }) {
11039
11254
  const [menuOpen, setMenuOpen] = (0, react.useState)(false);
11040
11255
  const [editing, setEditing] = (0, react.useState)(false);
11041
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
11042
- className: sidebar_module_css_default.channelRow,
11043
- "data-menu-open": menuOpen || void 0,
11044
- "aria-current": selected ? "page" : void 0,
11045
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11046
- type: "button",
11047
- className: sidebar_module_css_default.channelSelect,
11048
- "aria-label": `# ${channel.name}`,
11049
- onClick: () => {
11050
- selectChannel(channel.channelRef);
11256
+ const [archiving, setArchiving] = (0, react.useState)(false);
11257
+ const [rowAlert, setRowAlert] = (0, react.useState)();
11258
+ const archive = async () => {
11259
+ try {
11260
+ const result = await archiveChannel({
11261
+ requestId: mintRequestId(),
11262
+ workspaceId: channel.workspaceId,
11263
+ channelRef: channel.channelRef
11264
+ });
11265
+ await onCommitted();
11266
+ if (!result.ok) setRowAlert(t("archiveChannelFailed", { message: result.error.message }));
11267
+ } catch (cause) {
11268
+ setRowAlert(t("archiveChannelFailed", { message: cause instanceof Error ? cause.message : String(cause) }));
11269
+ }
11270
+ };
11271
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
11272
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
11273
+ className: sidebar_module_css_default.channelRow,
11274
+ "data-menu-open": menuOpen || void 0,
11275
+ "aria-current": selected ? "page" : void 0,
11276
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11277
+ type: "button",
11278
+ className: sidebar_module_css_default.channelSelect,
11279
+ "aria-label": `# ${channel.name}`,
11280
+ onClick: () => {
11281
+ selectChannel(channel.channelRef);
11282
+ },
11283
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("strong", {
11284
+ className: sidebar_module_css_default.channelName,
11285
+ children: ["# ", channel.name]
11286
+ })
11287
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11288
+ className: sidebar_module_css_default.rowMenu,
11289
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TeamRowMenu, {
11290
+ label: t("actionsChannel", { name: channel.name }),
11291
+ items: [{
11292
+ id: "edit",
11293
+ label: t("editChannel"),
11294
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutline16, {})
11295
+ }, {
11296
+ id: "archive",
11297
+ label: t("archiveChannel"),
11298
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconArchiveOutline20, { size: 16 }),
11299
+ danger: true
11300
+ }],
11301
+ onSelect: (id) => {
11302
+ if (id === "edit") setEditing(true);
11303
+ else setArchiving(true);
11304
+ },
11305
+ onOpenChange: setMenuOpen
11306
+ })
11307
+ })]
11308
+ }),
11309
+ rowAlert !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11310
+ className: sidebar_module_css_default.rowAlert,
11311
+ role: "alert",
11312
+ children: rowAlert
11313
+ }),
11314
+ archiving && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
11315
+ open: true,
11316
+ onClose: () => {
11317
+ setArchiving(false);
11051
11318
  },
11052
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("strong", {
11053
- className: sidebar_module_css_default.channelName,
11054
- children: ["# ", channel.name]
11055
- })
11056
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11057
- className: sidebar_module_css_default.rowMenu,
11058
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TeamRowMenu, {
11059
- label: t("actionsChannel", { name: channel.name }),
11060
- items: [{
11061
- id: "edit",
11062
- label: t("editChannel"),
11063
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutline16, {})
11064
- }],
11065
- onSelect: () => {
11066
- setEditing(true);
11319
+ title: t("archiveChannelTitle", { name: channel.name }),
11320
+ closeLabel: t("close"),
11321
+ contentClassName: create_module_css_default.dialogContent,
11322
+ footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
11323
+ variant: "outline",
11324
+ onClick: () => {
11325
+ setArchiving(false);
11067
11326
  },
11068
- onOpenChange: setMenuOpen
11327
+ children: t("cancel")
11328
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
11329
+ variant: "primary",
11330
+ onClick: () => {
11331
+ setArchiving(false);
11332
+ archive();
11333
+ },
11334
+ children: t("archiveChannelConfirm")
11335
+ })] }),
11336
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
11337
+ className: create_module_css_default.error,
11338
+ children: t("archiveChannelNotice", { name: channel.name })
11069
11339
  })
11070
- })]
11071
- }), editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChannelEditorDialog, {
11072
- channel,
11073
- members,
11074
- joinedIds,
11075
- updateChannel,
11076
- joinChannel,
11077
- removeChannelMember,
11078
- onCommitted,
11079
- onClose: () => {
11080
- setEditing(false);
11081
- },
11082
- t
11083
- })] });
11340
+ }),
11341
+ editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChannelEditorDialog, {
11342
+ channel,
11343
+ members,
11344
+ joinedIds,
11345
+ updateChannel,
11346
+ joinChannel,
11347
+ removeChannelMember,
11348
+ onCommitted,
11349
+ onClose: () => {
11350
+ setEditing(false);
11351
+ },
11352
+ t
11353
+ })
11354
+ ] });
11084
11355
  }
11085
11356
  /**
11086
11357
  * Channel editor: name and description commit through one durable update;
@@ -11232,7 +11503,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11232
11503
  }
11233
11504
  //#endregion
11234
11505
  //#region src/client/TeamWorkspaceBrowser.tsx
11235
- function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWorkspace, selectChannel, t, useWorkspaces, loadMembers, subscribeChanges, addMember, loadChannels, createChannel, updateChannel, updateMember, recoverMember, clearMemberContext, joinChannel, removeChannelMember, loadModels, openMemberSession }) {
11506
+ function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWorkspace, selectChannel, t, useWorkspaces, loadMembers, subscribeChanges, addMember, loadChannels, createChannel, updateChannel, archiveChannel, updateMember, recoverMember, clearMemberContext, archiveMember, joinChannel, removeChannelMember, loadModels, openMemberSession }) {
11236
11507
  const navigationState = (0, react.useSyncExternalStore)(navigation.subscribe, navigation.getSnapshot, navigation.getSnapshot);
11237
11508
  const workspaces = useWorkspaces((state) => state.items);
11238
11509
  const selected = navigationState.workspaceId;
@@ -11324,6 +11595,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11324
11595
  subscribeChanges,
11325
11596
  createChannel,
11326
11597
  updateChannel,
11598
+ archiveChannel,
11327
11599
  joinChannel,
11328
11600
  removeChannelMember,
11329
11601
  creatingAgents: creatingAgents.filter((request) => request.workspaceId === selectedId),
@@ -11341,6 +11613,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11341
11613
  updateMember,
11342
11614
  recoverMember,
11343
11615
  clearMemberContext,
11616
+ archiveMember,
11344
11617
  loadModels,
11345
11618
  ...navigationState.memberSessionId === void 0 ? {} : { memberSessionId: navigationState.memberSessionId },
11346
11619
  openMemberSession,
@@ -11354,6 +11627,30 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11354
11627
  });
11355
11628
  }
11356
11629
  //#endregion
11630
+ //#region src/client/TeamMemberDock.tsx
11631
+ /**
11632
+ * Team-owned strip above the shipped composer while a Member Session is
11633
+ * embedded. The shipped InputBar keeps the whole input surface (draft,
11634
+ * trigger menus, submit); this dock only carries what the shipped bar cannot
11635
+ * know — the Member-Session vocabulary hint and the Member turn's prompt
11636
+ * error, read through the standard useSession hook.
11637
+ */
11638
+ function TeamMemberDock({ t, useSession }) {
11639
+ const promptError = useSession((state) => state.promptError ?? null);
11640
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11641
+ className: composer_module_css_default.memberSessionDock,
11642
+ "data-team-member-dock": "true",
11643
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
11644
+ className: composer_module_css_default.memberSessionHint,
11645
+ children: t("memberSessionHint")
11646
+ }), promptError !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
11647
+ className: composer_module_css_default.memberSessionStatus,
11648
+ role: "alert",
11649
+ children: promptError.error.message
11650
+ })]
11651
+ });
11652
+ }
11653
+ //#endregion
11357
11654
  //#region src/client/member-session-input.ts
11358
11655
  const TEAM_COMMAND_SOURCE = "agent-team-command";
11359
11656
  const TEAM_MEMBER_SOURCE = "agent-team-member";
@@ -11392,6 +11689,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11392
11689
  token: "/compact",
11393
11690
  submit: async () => options.executeCompact(session.sessionId)
11394
11691
  } };
11692
+ },
11693
+ async matchEnter(session, line) {
11694
+ if (!options.isEmbeddedMemberSession(session.sessionId)) return void 0;
11695
+ if (line.trim() !== "/compact") return void 0;
11696
+ return { claim: {
11697
+ token: "/compact",
11698
+ submit: async () => options.executeCompact(session.sessionId)
11699
+ } };
11395
11700
  }
11396
11701
  }, {
11397
11702
  trigger: "@",
@@ -11402,7 +11707,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11402
11707
  const normalized = query.toLocaleLowerCase();
11403
11708
  const members = await options.members();
11404
11709
  if (signal.aborted) return [];
11405
- return members.filter((status) => status.member.sessionId !== session.sessionId && status.member.state !== "inactive").filter((status) => status.member.handle.toLocaleLowerCase().startsWith(normalized)).map((status) => {
11710
+ return members.filter((status) => status.member.sessionId !== session.sessionId && status.member.state !== "inactive" && status.member.state !== "archived").filter((status) => status.member.handle.toLocaleLowerCase().startsWith(normalized)).map((status) => {
11406
11711
  labels.set(status.member.memberId, `@${status.member.handle}`);
11407
11712
  return {
11408
11713
  name: `@${status.member.handle}`,
@@ -11433,10 +11738,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11433
11738
  }
11434
11739
  }];
11435
11740
  }
11436
- /** Unknown leading slash must never fall into the shipped global palette. */
11437
- function allowsMemberSessionSubmit(draft, claimToken) {
11438
- return !draft.trimStart().startsWith("/") || claimToken === "/compact";
11439
- }
11440
11741
  function escapeText(value) {
11441
11742
  return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
11442
11743
  }
@@ -11444,181 +11745,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11444
11745
  return escapeText(value).replaceAll("\"", "&quot;").replaceAll("'", "&#39;");
11445
11746
  }
11446
11747
  //#endregion
11447
- //#region src/client/TeamMemberSessionComposer.tsx
11448
- /**
11449
- * Narrow, Team-owned member-session composer. It deliberately uses the public
11450
- * input state/actions and trigger controller rather than the shipped InputBar;
11451
- * owner-provided overlay remains inside the card so the shared menu renders.
11452
- */
11453
- function TeamMemberSessionComposer({ controller, inputActions, overlay, placeholder, disabled, blocked, stop, submitInput, useInput, useSession }) {
11454
- const input = useInput((state) => state);
11455
- const session = useSession((state) => state);
11456
- const textarea = (0, react.useRef)(null);
11457
- const editedByHuman = (0, react.useRef)(void 0);
11458
- const compactWasSubmitting = (0, react.useRef)(false);
11459
- const composing = (0, react.useRef)(false);
11460
- const [submissionNotice, setSubmissionNotice] = (0, react.useState)();
11461
- const draft = input?.draft ?? "";
11462
- const isLocked = disabled === true || blocked !== void 0 || inputActions === void 0 || input === void 0;
11463
- (0, react.useEffect)(() => {
11464
- if (isLocked) return;
11465
- const active = document.activeElement;
11466
- if (active !== document.body && active?.closest("[aria-current=\"page\"]") === null) return;
11467
- textarea.current?.focus({ preventScroll: true });
11468
- }, [isLocked]);
11469
- (0, react.useLayoutEffect)(() => {
11470
- const element = textarea.current;
11471
- if (element === null) return;
11472
- element.style.height = "auto";
11473
- element.style.height = `${Math.min(element.scrollHeight, 336)}px`;
11474
- }, [draft]);
11475
- (0, react.useEffect)(() => {
11476
- if (input === void 0) return;
11477
- if (input.phase === "submitting" && input.claim?.token === "/compact") {
11478
- compactWasSubmitting.current = true;
11479
- return;
11480
- }
11481
- if (input.phase === "claimed" && input.claim?.token === "/compact" && compactWasSubmitting.current) {
11482
- compactWasSubmitting.current = false;
11483
- setSubmissionNotice("Compact 未执行,请重试。");
11484
- return;
11485
- }
11486
- if (input.phase === "plain") {
11487
- if (compactWasSubmitting.current) setSubmissionNotice(void 0);
11488
- compactWasSubmitting.current = false;
11489
- }
11490
- }, [input?.claim?.token, input?.phase]);
11491
- (0, react.useEffect)(() => {
11492
- if (input === void 0) return;
11493
- const edit = editedByHuman.current;
11494
- if (edit === void 0 || edit.draft !== input.draft) return;
11495
- editedByHuman.current = void 0;
11496
- const hit = triggerHit(input.draft, edit.caret, input.draftRev);
11497
- controller.dismiss();
11498
- if (hit !== void 0) controller.toggleSource(hit.trigger === "/" ? TEAM_COMMAND_SOURCE : TEAM_MEMBER_SOURCE, hit);
11499
- }, [
11500
- controller,
11501
- input?.draft,
11502
- input?.draftRev
11503
- ]);
11504
- const onChange = (event) => {
11505
- const caret = event.currentTarget.selectionStart;
11506
- editedByHuman.current = {
11507
- draft: event.currentTarget.value,
11508
- caret
11509
- };
11510
- setSubmissionNotice(void 0);
11511
- inputActions?.setDraft(event.currentTarget.value);
11512
- };
11513
- const submit = () => {
11514
- if (input === void 0 || inputActions === void 0) return;
11515
- if (!allowsMemberSessionSubmit(input.draft, input.claim?.token)) {
11516
- setSubmissionNotice("此 Member Session 仅支持 /compact 命令。");
11517
- return;
11518
- }
11519
- setSubmissionNotice(void 0);
11520
- submitInput(running ? "steer" : "queue");
11521
- };
11522
- const onKeyDown = (event) => {
11523
- if (event.key === "Enter" && event.shiftKey) return;
11524
- if (event.repeat || composing.current || event.nativeEvent.isComposing || event.nativeEvent.keyCode === 229) return;
11525
- if (event.key === "Tab" && !event.shiftKey) {
11526
- const highlight = controller.menu.getSnapshot().highlight;
11527
- if (highlight !== null) {
11528
- event.preventDefault();
11529
- controller.pick(highlight.source, highlight.index);
11530
- }
11531
- return;
11532
- }
11533
- const key = event.key === "ArrowUp" ? "up" : event.key === "ArrowDown" ? "down" : event.key === "Escape" ? "escape" : event.key === "Enter" ? "enter" : void 0;
11534
- if (key !== void 0) {
11535
- if (controller.arbitrate(key, false) !== "pass") {
11536
- event.preventDefault();
11537
- return;
11538
- }
11539
- }
11540
- if (event.key === "Enter") {
11541
- event.preventDefault();
11542
- submit();
11543
- }
11544
- };
11545
- const running = session?.running ?? false;
11546
- const promptError = session?.promptError;
11547
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11548
- className: `${composer_module_css_default.root} ${composer_module_css_default.memberSessionRoot}`,
11549
- "data-team-member-composer": "true",
11550
- children: [(submissionNotice !== void 0 || promptError !== null && promptError !== void 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
11551
- className: composer_module_css_default.memberSessionStatus,
11552
- role: "alert",
11553
- children: submissionNotice ?? promptError?.error.message
11554
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11555
- className: `${composer_module_css_default.card} ${composer_module_css_default.memberSessionCard}`,
11556
- "data-composer-card": "true",
11557
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11558
- className: `${composer_module_css_default.inputArea} ${composer_module_css_default.memberSessionInputArea}`,
11559
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
11560
- ref: textarea,
11561
- value: draft,
11562
- disabled: isLocked,
11563
- placeholder: blocked?.reason ?? placeholder ?? "给成员发送直接消息",
11564
- onChange,
11565
- onKeyDown,
11566
- onCompositionStart: () => {
11567
- composing.current = true;
11568
- },
11569
- onCompositionEnd: () => {
11570
- composing.current = false;
11571
- }
11572
- }), overlay]
11573
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11574
- className: `${composer_module_css_default.toolbar} ${composer_module_css_default.memberSessionToolbar}`,
11575
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11576
- className: `${composer_module_css_default.sendButton} ${composer_module_css_default.memberSessionPrimary}`,
11577
- type: "button",
11578
- "aria-label": running ? "停止生成" : "发送消息",
11579
- disabled: isLocked || !running && draft.trim() === "",
11580
- onClick: () => {
11581
- if (running) stop?.();
11582
- else submit();
11583
- },
11584
- children: running ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconStopFill16, { size: 16 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSendOutline16, { size: 16 })
11585
- })
11586
- })]
11587
- })]
11588
- });
11589
- }
11590
- function triggerHit(draft, caret, draftRev) {
11591
- const before = draft.slice(0, caret);
11592
- const leading = before.match(/^\s*\/([^\s]*)$/u);
11593
- if (leading !== null) {
11594
- const start = before.indexOf("/");
11595
- return {
11596
- trigger: "/",
11597
- query: leading[1],
11598
- quoted: false,
11599
- position: "leading",
11600
- span: {
11601
- start,
11602
- end: caret,
11603
- draftRev
11604
- }
11605
- };
11606
- }
11607
- const at = before.lastIndexOf("@");
11608
- if (at < 0 || /[\p{L}\p{N}_]/u.test(before[at - 1] ?? "") || /\s/u.test(before.slice(at + 1))) return void 0;
11609
- return {
11610
- trigger: "@",
11611
- query: before.slice(at + 1),
11612
- quoted: false,
11613
- position: "inline",
11614
- span: {
11615
- start: at,
11616
- end: caret,
11617
- draftRev
11618
- }
11619
- };
11620
- }
11621
- //#endregion
11622
11748
  //#region src/client/locales.ts
11623
11749
  const zh = {
11624
11750
  team: "团队",
@@ -11634,6 +11760,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11634
11760
  addAgent: "添加 Agent",
11635
11761
  cancel: "取消",
11636
11762
  close: "关闭",
11763
+ memberSessionHint: "成员会话:/compact 压缩上下文 · @成员 引用;普通消息直接发给该成员。",
11764
+ copyCode: "复制",
11765
+ copiedCode: "已复制",
11766
+ markdownFootnotes: "脚注",
11637
11767
  retry: "重试",
11638
11768
  agentName: "名称",
11639
11769
  agentDescription: "说明",
@@ -11667,6 +11797,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11667
11797
  clearContextNotice: "将结束 {name} 当前的会话上下文并从空白开始:旧对话会归档保留在会话记录中。{name} 的身份、私有记忆与 notes、频道和会话绑定都保持不变,后续协作从新上下文继续累积。",
11668
11798
  clearContextConfirm: "开始全新上下文",
11669
11799
  clearContextFailed: "清空上下文失败:{message}",
11800
+ archiveAgent: "归档",
11801
+ archiveAgentTitle: "归档 Agent:{name}",
11802
+ archiveAgentNotice: "将把 {name} 从所有列表收起:会话与私有记忆保留在磁盘上、活跃 Claim 会释放,但暂无恢复入口。",
11803
+ archiveAgentConfirm: "归档",
11804
+ archiveAgentFailed: "归档失败:{message}",
11805
+ archiveChannel: "归档频道",
11806
+ archiveChannelTitle: "归档频道:{name}",
11807
+ archiveChannelNotice: "将把 {name} 及其全部讨论从所有列表收起:数据保留、所有成员在此频道的活跃 Claim 会释放,但暂无恢复入口。",
11808
+ archiveChannelConfirm: "归档频道",
11809
+ archiveChannelFailed: "归档频道失败:{message}",
11670
11810
  optionalSuffix: "(可选)",
11671
11811
  agentDescriptionPlaceholder: "留空则暂无描述",
11672
11812
  membersPickerEmpty: "选择初始成员",
@@ -11776,6 +11916,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11776
11916
  addAgent: "Add Agent",
11777
11917
  cancel: "Cancel",
11778
11918
  close: "Close",
11919
+ memberSessionHint: "Member session: /compact compresses context · @member inserts a reference; plain messages go straight to the member.",
11920
+ copyCode: "Copy",
11921
+ copiedCode: "Copied",
11922
+ markdownFootnotes: "Footnotes",
11779
11923
  retry: "Retry",
11780
11924
  agentName: "Name",
11781
11925
  agentDescription: "Description",
@@ -11809,6 +11953,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11809
11953
  clearContextNotice: "This ends {name}'s current session context and starts blank: the previous conversation is archived and stays in the session history. {name}'s identity, private memory and notes, channel and session bindings are untouched, and future collaboration accumulates from the new context.",
11810
11954
  clearContextConfirm: "Start from new context",
11811
11955
  clearContextFailed: "Failed to clear context: {message}",
11956
+ archiveAgent: "Archive",
11957
+ archiveAgentTitle: "Archive Agent: {name}",
11958
+ archiveAgentNotice: "This hides {name} from every list: the session log and private memory stay on disk and active Claims release, but there is no restore entry point yet.",
11959
+ archiveAgentConfirm: "Archive",
11960
+ archiveAgentFailed: "Failed to archive: {message}",
11961
+ archiveChannel: "Archive Channel",
11962
+ archiveChannelTitle: "Archive Channel: {name}",
11963
+ archiveChannelNotice: "This hides {name} and all of its discussions from every list: the data stays, every Member's active Claims in this Channel release, but there is no restore entry point yet.",
11964
+ archiveChannelConfirm: "Archive Channel",
11965
+ archiveChannelFailed: "Failed to archive Channel: {message}",
11812
11966
  optionalSuffix: " (optional)",
11813
11967
  agentDescriptionPlaceholder: "Leave empty if not needed",
11814
11968
  membersPickerEmpty: "Choose initial members",
@@ -11912,6 +12066,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11912
12066
  "workspaces",
11913
12067
  "locale",
11914
12068
  "remote",
12069
+ "remote.session",
11915
12070
  "sessions",
11916
12071
  "connection",
11917
12072
  "conversation",
@@ -11934,12 +12089,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11934
12089
  joinChannel: (request) => ctx.remote.agentTeam.joinChannel(request),
11935
12090
  removeChannelMember: (request) => ctx.remote.agentTeam.removeChannelMember(request),
11936
12091
  updateChannel: (request) => ctx.remote.agentTeam.updateChannel(request),
12092
+ archiveChannel: (request) => ctx.remote.agentTeam.archiveChannel(request),
11937
12093
  updateMember: (request) => ctx.remote.agentTeam.updateMember(request),
11938
12094
  recoverMember: (request) => ctx.remote.agentTeam.recoverMember(request),
11939
12095
  clearMemberContext: (request) => ctx.remote.agentTeam.clearMemberContext(request),
11940
- loadModels: async () => {
11941
- return (await ctx.get("connection").api.llm.models({})).result;
11942
- },
12096
+ archiveMember: (request) => ctx.remote.agentTeam.archiveMember(request),
12097
+ loadModels: () => ctx.remote.session.modelCatalog(),
11943
12098
  openMemberSession: openMemberSessionImpl
11944
12099
  };
11945
12100
  ctx.slots.inject(name, () => {
@@ -11987,8 +12142,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11987
12142
  };
11988
12143
  });
11989
12144
  }
11990
- function registerMemberSessionComposer(ctx, navigation) {
11991
- ctx.slots.inject("conversation.composer.bar", () => {
12145
+ function registerMemberSessionDock(ctx, navigation) {
12146
+ ctx.slots.inject("conversation.input.dock", () => {
11992
12147
  let dispose;
11993
12148
  let registeredSessionId;
11994
12149
  const reconcile = () => {
@@ -12001,23 +12156,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
12001
12156
  }
12002
12157
  if (active && dispose === void 0) {
12003
12158
  registeredSessionId = memberSessionId;
12159
+ const sessions = ctx.sessions;
12004
12160
  dispose = ctx.slots.register({
12005
- name: "conversation.composer.bar",
12006
- priority: -100,
12007
- select: () => ctx.sessions.list.getSnapshot().current === memberSessionId ? {} : null,
12008
- inject: (sessionId) => {
12009
- const actx = ctx.sessions.scope(sessionId);
12010
- if (actx === void 0) throw new Error(`agent-team: Member session ${String(sessionId)} has no client scope`);
12011
- const sessions = ctx.sessions;
12012
- return {
12013
- controller: ctx.get("inputTriggers").sessionOf(actx),
12014
- stop: () => {
12015
- sessions.sessionOf(actx)?.cancel();
12016
- },
12017
- submitInput: (mode) => ctx.conversation.input.for(actx).submit(mode)
12018
- };
12019
- }
12020
- }, TeamMemberSessionComposer);
12161
+ name: "conversation.input.dock",
12162
+ id: "agent-team-member",
12163
+ locale: NS,
12164
+ select: () => sessions.list.getSnapshot().current === memberSessionId ? {} : null
12165
+ }, TeamMemberDock);
12021
12166
  }
12022
12167
  };
12023
12168
  const offNavigation = navigation.subscribe(reconcile);
@@ -12076,10 +12221,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
12076
12221
  return (await Promise.all(workspaces.map(async (workspace) => {
12077
12222
  const result = await ctx.remote.agentTeam.members({ workspaceId: workspace.workspaceId });
12078
12223
  if (!result.ok) throw new Error(result.error.message);
12224
+ const members = result.value.filter((status) => status.member.state !== "inactive" && status.member.state !== "archived");
12079
12225
  return {
12080
12226
  workspaceId: workspace.workspaceId,
12081
12227
  workspaceTitle: workspace.title,
12082
- members: result.value
12228
+ members
12083
12229
  };
12084
12230
  }))).filter((group) => group.members.length > 0);
12085
12231
  };
@@ -12107,7 +12253,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
12107
12253
  }, TeamFooterAction));
12108
12254
  registerModeShadow(ctx, navigation, changes, drafts, "sidebar.workspaces", TeamWorkspaceBrowser);
12109
12255
  registerModeShadow(ctx, navigation, changes, drafts, "conversation", TeamConversation);
12110
- registerMemberSessionComposer(ctx, navigation);
12256
+ registerMemberSessionDock(ctx, navigation);
12111
12257
  registerModeShadow(ctx, navigation, changes, drafts, "sidebar.settings", TeamSettings, () => ({ loadMemberGroups }));
12112
12258
  }
12113
12259
  async function apply(ctx) {