@wowyuarm/dsh-agent-team 0.1.5 → 0.1.6
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.
- package/README.md +15 -1
- package/README.zh.md +15 -1
- package/package.json +7 -2
- package/packages/agent-team/README.md +6 -0
- package/packages/agent-team/README.zh.md +6 -0
- package/packages/agent-team/core-skills/member-skill-manager/SKILL.md +41 -0
- package/packages/agent-team/core-skills/member-skill-manager/references/auth-and-config.md +30 -0
- package/packages/agent-team/core-skills/member-skill-manager/references/writing-great-skills.md +17 -0
- package/packages/agent-team/lib/index.js +255 -2
- package/packages/agent-team/lib/ledger.js +139 -5
- package/packages/agent-team/lib/member-context.js +2 -2
- package/packages/agent-team/lib/member-skills.js +94 -0
- package/packages/agent-team/lib/spec.js +26 -0
- package/packages/agent-team/lib/typert.host.js +131 -28
- package/packages/agent-team/lib/typert.remote-client.d.ts.map +1 -1
- package/packages/agent-team/lib/typert.remote-client.js +99 -23
- package/packages/agent-team/lib/types/index.d.ts +69 -1
- package/packages/agent-team/lib/types/index.d.ts.map +1 -1
- package/packages/agent-team/lib/types/ledger.d.ts +29 -1
- package/packages/agent-team/lib/types/ledger.d.ts.map +1 -1
- package/packages/agent-team/lib/types/member-skills.d.ts +45 -0
- package/packages/agent-team/lib/types/member-skills.d.ts.map +1 -0
- package/packages/agent-team/lib/types/spec.d.ts.map +1 -1
- package/packages/agent-team/lib/types/types.d.ts +87 -2
- package/packages/agent-team/lib/types/types.d.ts.map +1 -1
- package/packages/agent-team/preset/team-member/agent.cordis.yml +7 -4
- package/packages/client-agent-team/README.md +1 -1
- package/packages/client-agent-team/README.zh.md +1 -1
- package/packages/client-agent-team/lib/client.js +217 -299
- package/packages/client-agent-team/lib/client.js.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts +1 -4
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.js +11 -23
- package/packages/client-agent-team/lib/types/client/TeamMemberEditor.d.ts +4 -8
- package/packages/client-agent-team/lib/types/client/TeamMemberEditor.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamMemberEditor.js +7 -40
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.js +61 -20
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.js +1 -1
- package/packages/client-agent-team/lib/types/client/locales.d.ts +4 -16
- package/packages/client-agent-team/lib/types/client/locales.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/locales.js +4 -16
- package/packages/client-agent-team/lib/types/client/timeline-scroll.d.ts +5 -7
- package/packages/client-agent-team/lib/types/client/timeline-scroll.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/timeline-scroll.js +9 -22
- package/packages/tool-agent-team/lib/index.js +25 -5
- package/packages/tool-agent-team/lib/types/index.d.ts.map +1 -1
|
@@ -4092,6 +4092,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4092
4092
|
"model": string().readonly(),
|
|
4093
4093
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
4094
4094
|
}).readonly().optional(),
|
|
4095
|
+
"capabilities": object({
|
|
4096
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
4097
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
4098
|
+
}).readonly().optional(),
|
|
4095
4099
|
"channelRefs": array(intersection(string(), unknown())).readonly()
|
|
4096
4100
|
});
|
|
4097
4101
|
const _wowyuarm_dsh_agent_team_agentTeam_addMember_result$schema = object({
|
|
@@ -4113,6 +4117,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4113
4117
|
"model": string().readonly(),
|
|
4114
4118
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
4115
4119
|
})]).readonly().optional(),
|
|
4120
|
+
"capabilities": union([_undefined(), object({
|
|
4121
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
4122
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
4123
|
+
})]).readonly().optional(),
|
|
4116
4124
|
"privateMemoryPath": string().readonly(),
|
|
4117
4125
|
"state": union([
|
|
4118
4126
|
literal("enabled"),
|
|
@@ -4132,7 +4140,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4132
4140
|
literal("working"),
|
|
4133
4141
|
literal("error")
|
|
4134
4142
|
]).readonly(),
|
|
4135
|
-
"diagnostic": string().readonly().optional()
|
|
4143
|
+
"diagnostic": string().readonly().optional(),
|
|
4144
|
+
"capabilityWarnings": union([_undefined(), array(object({
|
|
4145
|
+
"name": string().readonly(),
|
|
4146
|
+
"knownNames": array(string()).readonly()
|
|
4147
|
+
}))]).readonly().optional()
|
|
4136
4148
|
}).readonly()
|
|
4137
4149
|
});
|
|
4138
4150
|
const _wowyuarm_dsh_agent_team_agentTeam_changeAttention_parameter_0$schema = object({
|
|
@@ -4305,6 +4317,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4305
4317
|
"model": string().readonly(),
|
|
4306
4318
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
4307
4319
|
})]).readonly().optional(),
|
|
4320
|
+
"capabilities": union([_undefined(), object({
|
|
4321
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
4322
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
4323
|
+
})]).readonly().optional(),
|
|
4308
4324
|
"privateMemoryPath": string().readonly(),
|
|
4309
4325
|
"state": union([
|
|
4310
4326
|
literal("enabled"),
|
|
@@ -4324,7 +4340,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4324
4340
|
literal("working"),
|
|
4325
4341
|
literal("error")
|
|
4326
4342
|
]).readonly(),
|
|
4327
|
-
"diagnostic": string().readonly().optional()
|
|
4343
|
+
"diagnostic": string().readonly().optional(),
|
|
4344
|
+
"capabilityWarnings": union([_undefined(), array(object({
|
|
4345
|
+
"name": string().readonly(),
|
|
4346
|
+
"knownNames": array(string()).readonly()
|
|
4347
|
+
}))]).readonly().optional()
|
|
4328
4348
|
}).readonly()
|
|
4329
4349
|
});
|
|
4330
4350
|
const _wowyuarm_dsh_agent_team_agentTeam_createChannel_parameter_0$schema = object({
|
|
@@ -4427,6 +4447,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4427
4447
|
"model": string().readonly(),
|
|
4428
4448
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
4429
4449
|
})]).readonly().optional(),
|
|
4450
|
+
"capabilities": union([_undefined(), object({
|
|
4451
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
4452
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
4453
|
+
})]).readonly().optional(),
|
|
4430
4454
|
"state": union([
|
|
4431
4455
|
literal("enabled"),
|
|
4432
4456
|
literal("suspended"),
|
|
@@ -4445,7 +4469,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4445
4469
|
literal("working"),
|
|
4446
4470
|
literal("error")
|
|
4447
4471
|
]).readonly(),
|
|
4448
|
-
"diagnostic": string().readonly().optional()
|
|
4472
|
+
"diagnostic": string().readonly().optional(),
|
|
4473
|
+
"capabilityWarnings": union([_undefined(), array(object({
|
|
4474
|
+
"name": string().readonly(),
|
|
4475
|
+
"knownNames": array(string()).readonly()
|
|
4476
|
+
}))]).readonly().optional()
|
|
4449
4477
|
}));
|
|
4450
4478
|
const _wowyuarm_dsh_agent_team_agentTeam_promoteThread_parameter_0$schema = object({
|
|
4451
4479
|
"requestId": intersection(string(), unknown()).readonly(),
|
|
@@ -4695,6 +4723,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4695
4723
|
"model": string().readonly(),
|
|
4696
4724
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
4697
4725
|
})]).readonly().optional(),
|
|
4726
|
+
"capabilities": union([_undefined(), object({
|
|
4727
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
4728
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
4729
|
+
})]).readonly().optional(),
|
|
4698
4730
|
"privateMemoryPath": string().readonly(),
|
|
4699
4731
|
"state": union([
|
|
4700
4732
|
literal("enabled"),
|
|
@@ -4714,7 +4746,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4714
4746
|
literal("working"),
|
|
4715
4747
|
literal("error")
|
|
4716
4748
|
]).readonly(),
|
|
4717
|
-
"diagnostic": string().readonly().optional()
|
|
4749
|
+
"diagnostic": string().readonly().optional(),
|
|
4750
|
+
"capabilityWarnings": union([_undefined(), array(object({
|
|
4751
|
+
"name": string().readonly(),
|
|
4752
|
+
"knownNames": array(string()).readonly()
|
|
4753
|
+
}))]).readonly().optional()
|
|
4718
4754
|
}).readonly() });
|
|
4719
4755
|
const _wowyuarm_dsh_agent_team_agentTeam_removeChannelMember_parameter_0$schema = object({
|
|
4720
4756
|
"requestId": intersection(string(), unknown()).readonly(),
|
|
@@ -5127,6 +5163,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5127
5163
|
"provider": string().readonly(),
|
|
5128
5164
|
"model": string().readonly(),
|
|
5129
5165
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
5166
|
+
}).readonly().optional(),
|
|
5167
|
+
"capabilities": object({
|
|
5168
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
5169
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
5130
5170
|
}).readonly().optional()
|
|
5131
5171
|
});
|
|
5132
5172
|
const _wowyuarm_dsh_agent_team_agentTeam_updateMember_result$schema = object({
|
|
@@ -5148,6 +5188,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5148
5188
|
"model": string().readonly(),
|
|
5149
5189
|
"reasoningEffort": intersection(string(), unknown()).readonly().optional()
|
|
5150
5190
|
})]).readonly().optional(),
|
|
5191
|
+
"capabilities": union([_undefined(), object({
|
|
5192
|
+
"tools": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional(),
|
|
5193
|
+
"skills": union([_undefined(), object({ "allow": array(string()).readonly().optional() })]).readonly().optional()
|
|
5194
|
+
})]).readonly().optional(),
|
|
5151
5195
|
"privateMemoryPath": string().readonly(),
|
|
5152
5196
|
"state": union([
|
|
5153
5197
|
literal("enabled"),
|
|
@@ -5167,7 +5211,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5167
5211
|
literal("working"),
|
|
5168
5212
|
literal("error")
|
|
5169
5213
|
]).readonly(),
|
|
5170
|
-
"diagnostic": string().readonly().optional()
|
|
5214
|
+
"diagnostic": string().readonly().optional(),
|
|
5215
|
+
"capabilityWarnings": union([_undefined(), array(object({
|
|
5216
|
+
"name": string().readonly(),
|
|
5217
|
+
"knownNames": array(string()).readonly()
|
|
5218
|
+
}))]).readonly().optional()
|
|
5171
5219
|
}).readonly()
|
|
5172
5220
|
});
|
|
5173
5221
|
const _wowyuarm_dsh_agent_team_agentTeam_view_parameter_0$schema = object({
|
|
@@ -5344,7 +5392,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5344
5392
|
},
|
|
5345
5393
|
sourceLocation: {
|
|
5346
5394
|
"file": "packages/agent-team/src/index.ts",
|
|
5347
|
-
"line":
|
|
5395
|
+
"line": 460,
|
|
5348
5396
|
"column": 9
|
|
5349
5397
|
}
|
|
5350
5398
|
},
|
|
@@ -5371,7 +5419,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5371
5419
|
},
|
|
5372
5420
|
sourceLocation: {
|
|
5373
5421
|
"file": "packages/agent-team/src/index.ts",
|
|
5374
|
-
"line":
|
|
5422
|
+
"line": 848,
|
|
5375
5423
|
"column": 9
|
|
5376
5424
|
}
|
|
5377
5425
|
},
|
|
@@ -5399,7 +5447,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5399
5447
|
},
|
|
5400
5448
|
sourceLocation: {
|
|
5401
5449
|
"file": "packages/agent-team/src/index.ts",
|
|
5402
|
-
"line":
|
|
5450
|
+
"line": 397,
|
|
5403
5451
|
"column": 9
|
|
5404
5452
|
}
|
|
5405
5453
|
},
|
|
@@ -5426,7 +5474,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5426
5474
|
},
|
|
5427
5475
|
sourceLocation: {
|
|
5428
5476
|
"file": "packages/agent-team/src/index.ts",
|
|
5429
|
-
"line":
|
|
5477
|
+
"line": 738,
|
|
5430
5478
|
"column": 9
|
|
5431
5479
|
}
|
|
5432
5480
|
},
|
|
@@ -5453,7 +5501,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5453
5501
|
},
|
|
5454
5502
|
sourceLocation: {
|
|
5455
5503
|
"file": "packages/agent-team/src/index.ts",
|
|
5456
|
-
"line":
|
|
5504
|
+
"line": 553,
|
|
5457
5505
|
"column": 9
|
|
5458
5506
|
}
|
|
5459
5507
|
},
|
|
@@ -5480,7 +5528,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5480
5528
|
},
|
|
5481
5529
|
sourceLocation: {
|
|
5482
5530
|
"file": "packages/agent-team/src/index.ts",
|
|
5483
|
-
"line":
|
|
5531
|
+
"line": 438,
|
|
5484
5532
|
"column": 9
|
|
5485
5533
|
}
|
|
5486
5534
|
},
|
|
@@ -5507,7 +5555,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5507
5555
|
},
|
|
5508
5556
|
sourceLocation: {
|
|
5509
5557
|
"file": "packages/agent-team/src/index.ts",
|
|
5510
|
-
"line":
|
|
5558
|
+
"line": 834,
|
|
5511
5559
|
"column": 9
|
|
5512
5560
|
}
|
|
5513
5561
|
},
|
|
@@ -5534,7 +5582,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5534
5582
|
},
|
|
5535
5583
|
sourceLocation: {
|
|
5536
5584
|
"file": "packages/agent-team/src/index.ts",
|
|
5537
|
-
"line":
|
|
5585
|
+
"line": 857,
|
|
5538
5586
|
"column": 3
|
|
5539
5587
|
}
|
|
5540
5588
|
},
|
|
@@ -5561,7 +5609,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5561
5609
|
},
|
|
5562
5610
|
sourceLocation: {
|
|
5563
5611
|
"file": "packages/agent-team/src/index.ts",
|
|
5564
|
-
"line":
|
|
5612
|
+
"line": 758,
|
|
5565
5613
|
"column": 9
|
|
5566
5614
|
}
|
|
5567
5615
|
},
|
|
@@ -5589,7 +5637,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5589
5637
|
},
|
|
5590
5638
|
sourceLocation: {
|
|
5591
5639
|
"file": "packages/agent-team/src/index.ts",
|
|
5592
|
-
"line":
|
|
5640
|
+
"line": 388,
|
|
5593
5641
|
"column": 3
|
|
5594
5642
|
}
|
|
5595
5643
|
},
|
|
@@ -5616,7 +5664,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5616
5664
|
},
|
|
5617
5665
|
sourceLocation: {
|
|
5618
5666
|
"file": "packages/agent-team/src/index.ts",
|
|
5619
|
-
"line":
|
|
5667
|
+
"line": 748,
|
|
5620
5668
|
"column": 9
|
|
5621
5669
|
}
|
|
5622
5670
|
},
|
|
@@ -5643,7 +5691,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5643
5691
|
},
|
|
5644
5692
|
sourceLocation: {
|
|
5645
5693
|
"file": "packages/agent-team/src/index.ts",
|
|
5646
|
-
"line":
|
|
5694
|
+
"line": 821,
|
|
5647
5695
|
"column": 9
|
|
5648
5696
|
}
|
|
5649
5697
|
},
|
|
@@ -5670,7 +5718,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5670
5718
|
},
|
|
5671
5719
|
sourceLocation: {
|
|
5672
5720
|
"file": "packages/agent-team/src/index.ts",
|
|
5673
|
-
"line":
|
|
5721
|
+
"line": 864,
|
|
5674
5722
|
"column": 9
|
|
5675
5723
|
}
|
|
5676
5724
|
},
|
|
@@ -5697,7 +5745,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5697
5745
|
},
|
|
5698
5746
|
sourceLocation: {
|
|
5699
5747
|
"file": "packages/agent-team/src/index.ts",
|
|
5700
|
-
"line":
|
|
5748
|
+
"line": 514,
|
|
5701
5749
|
"column": 9
|
|
5702
5750
|
}
|
|
5703
5751
|
},
|
|
@@ -5724,7 +5772,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5724
5772
|
},
|
|
5725
5773
|
sourceLocation: {
|
|
5726
5774
|
"file": "packages/agent-team/src/index.ts",
|
|
5727
|
-
"line":
|
|
5775
|
+
"line": 769,
|
|
5728
5776
|
"column": 9
|
|
5729
5777
|
}
|
|
5730
5778
|
},
|
|
@@ -5751,7 +5799,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5751
5799
|
},
|
|
5752
5800
|
sourceLocation: {
|
|
5753
5801
|
"file": "packages/agent-team/src/index.ts",
|
|
5754
|
-
"line":
|
|
5802
|
+
"line": 842,
|
|
5755
5803
|
"column": 9
|
|
5756
5804
|
}
|
|
5757
5805
|
},
|
|
@@ -5778,7 +5826,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5778
5826
|
},
|
|
5779
5827
|
sourceLocation: {
|
|
5780
5828
|
"file": "packages/agent-team/src/index.ts",
|
|
5781
|
-
"line":
|
|
5829
|
+
"line": 375,
|
|
5782
5830
|
"column": 3
|
|
5783
5831
|
}
|
|
5784
5832
|
},
|
|
@@ -5805,7 +5853,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5805
5853
|
},
|
|
5806
5854
|
sourceLocation: {
|
|
5807
5855
|
"file": "packages/agent-team/src/index.ts",
|
|
5808
|
-
"line":
|
|
5856
|
+
"line": 778,
|
|
5809
5857
|
"column": 9
|
|
5810
5858
|
}
|
|
5811
5859
|
},
|
|
@@ -5832,7 +5880,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5832
5880
|
},
|
|
5833
5881
|
sourceLocation: {
|
|
5834
5882
|
"file": "packages/agent-team/src/index.ts",
|
|
5835
|
-
"line":
|
|
5883
|
+
"line": 880,
|
|
5836
5884
|
"column": 3
|
|
5837
5885
|
}
|
|
5838
5886
|
},
|
|
@@ -5859,7 +5907,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5859
5907
|
},
|
|
5860
5908
|
sourceLocation: {
|
|
5861
5909
|
"file": "packages/agent-team/src/index.ts",
|
|
5862
|
-
"line":
|
|
5910
|
+
"line": 873,
|
|
5863
5911
|
"column": 3
|
|
5864
5912
|
}
|
|
5865
5913
|
},
|
|
@@ -5886,7 +5934,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5886
5934
|
},
|
|
5887
5935
|
sourceLocation: {
|
|
5888
5936
|
"file": "packages/agent-team/src/index.ts",
|
|
5889
|
-
"line":
|
|
5937
|
+
"line": 450,
|
|
5890
5938
|
"column": 9
|
|
5891
5939
|
}
|
|
5892
5940
|
},
|
|
@@ -5913,7 +5961,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5913
5961
|
},
|
|
5914
5962
|
sourceLocation: {
|
|
5915
5963
|
"file": "packages/agent-team/src/index.ts",
|
|
5916
|
-
"line":
|
|
5964
|
+
"line": 665,
|
|
5917
5965
|
"column": 9
|
|
5918
5966
|
}
|
|
5919
5967
|
},
|
|
@@ -5940,7 +5988,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5940
5988
|
},
|
|
5941
5989
|
sourceLocation: {
|
|
5942
5990
|
"file": "packages/agent-team/src/index.ts",
|
|
5943
|
-
"line":
|
|
5991
|
+
"line": 887,
|
|
5944
5992
|
"column": 3
|
|
5945
5993
|
}
|
|
5946
5994
|
}
|
|
@@ -7750,46 +7798,32 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7750
7798
|
//#endregion
|
|
7751
7799
|
//#region src/client/timeline-scroll.ts
|
|
7752
7800
|
const BOTTOM_MARGIN_PX = 48;
|
|
7753
|
-
const BOUNDARY_OFFSET_PX = 12;
|
|
7754
7801
|
/**
|
|
7755
7802
|
* Chat-timeline scroll policy shared by the Channel and Thread pages: follow
|
|
7756
|
-
* new facts only while the reader stays pinned to the bottom, keep
|
|
7757
|
-
* history visually stable
|
|
7758
|
-
*
|
|
7803
|
+
* new facts only while the reader stays pinned to the bottom, and keep
|
|
7804
|
+
* prepended history visually stable. The content key must change whenever
|
|
7805
|
+
* rendered facts change.
|
|
7759
7806
|
*/
|
|
7760
7807
|
function useTimelineScroll(contentKey) {
|
|
7761
7808
|
const ref = (0, react.useRef)(null);
|
|
7762
7809
|
const pinnedRef = (0, react.useRef)(true);
|
|
7763
7810
|
const heightRef = (0, react.useRef)(0);
|
|
7764
|
-
const jumpRef = (0, react.useRef)();
|
|
7765
7811
|
const onScroll = (0, react.useCallback)(() => {
|
|
7766
7812
|
const element = ref.current;
|
|
7767
7813
|
if (element === null) return;
|
|
7768
7814
|
pinnedRef.current = element.scrollHeight - element.scrollTop - element.clientHeight < BOTTOM_MARGIN_PX;
|
|
7769
7815
|
}, []);
|
|
7770
|
-
const
|
|
7771
|
-
|
|
7772
|
-
pinnedRef.current = false;
|
|
7773
|
-
}, []);
|
|
7774
|
-
const jumpToLatest = (0, react.useCallback)(() => {
|
|
7775
|
-
jumpRef.current = "latest";
|
|
7816
|
+
const scrollToBottom = (0, react.useCallback)(() => {
|
|
7817
|
+
const element = ref.current;
|
|
7776
7818
|
pinnedRef.current = true;
|
|
7819
|
+
if (element !== null) element.scrollTop = element.scrollHeight;
|
|
7777
7820
|
}, []);
|
|
7778
7821
|
(0, react.useEffect)(() => {
|
|
7779
7822
|
const element = ref.current;
|
|
7780
7823
|
if (element === null) return;
|
|
7781
7824
|
const previousHeight = heightRef.current;
|
|
7782
7825
|
heightRef.current = element.scrollHeight;
|
|
7783
|
-
|
|
7784
|
-
jumpRef.current = void 0;
|
|
7785
|
-
if (jump === "boundary") {
|
|
7786
|
-
const marker = element.querySelector("[data-thread-boundary]");
|
|
7787
|
-
if (marker !== null) {
|
|
7788
|
-
element.scrollTop += marker.getBoundingClientRect().top - element.getBoundingClientRect().top - BOUNDARY_OFFSET_PX;
|
|
7789
|
-
return;
|
|
7790
|
-
}
|
|
7791
|
-
}
|
|
7792
|
-
if (jump === "latest" || pinnedRef.current) {
|
|
7826
|
+
if (pinnedRef.current) {
|
|
7793
7827
|
element.scrollTop = element.scrollHeight;
|
|
7794
7828
|
return;
|
|
7795
7829
|
}
|
|
@@ -7799,8 +7833,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7799
7833
|
ref,
|
|
7800
7834
|
onScroll,
|
|
7801
7835
|
isPinned: () => pinnedRef.current,
|
|
7802
|
-
|
|
7803
|
-
jumpToLatest
|
|
7836
|
+
scrollToBottom
|
|
7804
7837
|
};
|
|
7805
7838
|
}
|
|
7806
7839
|
/**
|
|
@@ -7900,7 +7933,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7900
7933
|
};
|
|
7901
7934
|
//#endregion
|
|
7902
7935
|
//#region \0dsh-css:/home/yu/projects/dsh-agent-team/packages/client-agent-team/src/client/thread.module.css.mjs
|
|
7903
|
-
const css$2 = ".-Qiwua_titleLine{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.-Qiwua_titleLine h1{margin:0}.-Qiwua_workSection{border-top:1px solid var(--dsw-alias-border-l2);max-width:880px;margin:12px auto 0;padding-top:8px}.-Qiwua_riskSection{border-top:1px solid var(--dsw-alias-border-l2);max-width:880px;margin:12px auto 0;padding-top:10px}.-Qiwua_riskSection h2{color:var(--dsw-alias-state-error-primary);margin:0 0 5px;font-size:12px;font-weight:600;line-height:18px}.-Qiwua_riskRow{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin:3px 0;font-size:12px;line-height:18px;display:flex}.-Qiwua_claimList{gap:4px;padding:4px 0 2px 22px;display:grid}.-Qiwua_claimRow{border-radius:6px;grid-template-columns:14px minmax(96px,auto) minmax(0,1fr) auto auto;align-items:center;gap:4px 8px;min-height:36px;padding:4px 6px;display:grid}.-Qiwua_claimRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.-Qiwua_claimOwner{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:18px;overflow:hidden}.-Qiwua_claimDirection{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;min-width:0;font-size:12px;line-height:18px}.-Qiwua_claimState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px;line-height:18px}.-Qiwua_emptyClaims{color:var(--dsw-alias-label-tertiary);margin:0;padding:5px 6px;font-size:11px;line-height:18px}.-Qiwua_activityRow{color:var(--dsw-alias-label-tertiary);text-align:center;justify-content:center;align-items:center;gap:8px;max-width:100%;margin:4px auto;padding:5px 12px;font-size:11px;line-height:18px;display:flex}.-Qiwua_activityText{overflow-wrap:anywhere;min-width:0}.-Qiwua_activityMark{background:var(--dsw-alias-border-l3);border-radius:50%;flex:0 0 5px;width:5px;height:5px}.-Qiwua_activityRow:has(+.-Qiwua_activityRow),.-Qiwua_activityRow+.-Qiwua_activityRow{text-align:left;justify-content:flex-start;padding-left:38px}.-Qiwua_historySection{border-bottom:1px solid var(--dsw-alias-border-l2);max-width:100%;margin:0 auto 12px;padding-bottom:10px}.-Qiwua_historySection h2{color:var(--dsw-alias-label-tertiary);letter-spacing:.02em;text-transform:uppercase;margin:0 0 4px;font-size:11px;font-weight:600;line-height:16px}.-Qiwua_publicSection{min-width:0}.-Qiwua_unreadBoundary{color:var(--dsw-alias-label-tertiary);align-items:center;gap:10px;margin:10px 0 6px;font-size:11px;line-height:16px;display:flex}.-Qiwua_unreadBoundary:before,.-Qiwua_unreadBoundary:after{background:var(--dsw-alias-border-l3);content:\"\";flex:1;height:1px}.-Qiwua_unreadBoundary span{flex:none}.-Qiwua_daySeparator{color:var(--dsw-alias-label-tertiary);letter-spacing:.02em;align-items:center;gap:10px;margin:12px 0 4px;font-size:11px;line-height:16px;display:flex}.-Qiwua_daySeparator:before,.-Qiwua_daySeparator:after{background:var(--dsw-alias-border-l2);content:\"\";flex:1;height:1px}.-Qiwua_daySeparator span{flex:none}.-Qiwua_newUpdates{background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1));border:1px solid var(--dsw-alias-border-l2-darkmode-thin);box-shadow:var(--dsw-shadow-lv2);
|
|
7936
|
+
const css$2 = ".-Qiwua_titleLine{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.-Qiwua_titleLine h1{margin:0}.-Qiwua_workSection{border-top:1px solid var(--dsw-alias-border-l2);max-width:880px;margin:12px auto 0;padding-top:8px}.-Qiwua_riskSection{border-top:1px solid var(--dsw-alias-border-l2);max-width:880px;margin:12px auto 0;padding-top:10px}.-Qiwua_riskSection h2{color:var(--dsw-alias-state-error-primary);margin:0 0 5px;font-size:12px;font-weight:600;line-height:18px}.-Qiwua_riskRow{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin:3px 0;font-size:12px;line-height:18px;display:flex}.-Qiwua_claimList{gap:4px;padding:4px 0 2px 22px;display:grid}.-Qiwua_claimRow{border-radius:6px;grid-template-columns:14px minmax(96px,auto) minmax(0,1fr) auto auto;align-items:center;gap:4px 8px;min-height:36px;padding:4px 6px;display:grid}.-Qiwua_claimRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.-Qiwua_claimOwner{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;line-height:18px;overflow:hidden}.-Qiwua_claimDirection{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;min-width:0;font-size:12px;line-height:18px}.-Qiwua_claimState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px;line-height:18px}.-Qiwua_emptyClaims{color:var(--dsw-alias-label-tertiary);margin:0;padding:5px 6px;font-size:11px;line-height:18px}.-Qiwua_activityRow{color:var(--dsw-alias-label-tertiary);text-align:center;justify-content:center;align-items:center;gap:8px;max-width:100%;margin:4px auto;padding:5px 12px;font-size:11px;line-height:18px;display:flex}.-Qiwua_activityText{overflow-wrap:anywhere;min-width:0}.-Qiwua_activityMark{background:var(--dsw-alias-border-l3);border-radius:50%;flex:0 0 5px;width:5px;height:5px}.-Qiwua_activityRow:has(+.-Qiwua_activityRow),.-Qiwua_activityRow+.-Qiwua_activityRow{text-align:left;justify-content:flex-start;padding-left:38px}.-Qiwua_historySection{border-bottom:1px solid var(--dsw-alias-border-l2);max-width:100%;margin:0 auto 12px;padding-bottom:10px}.-Qiwua_historySection h2{color:var(--dsw-alias-label-tertiary);letter-spacing:.02em;text-transform:uppercase;margin:0 0 4px;font-size:11px;font-weight:600;line-height:16px}.-Qiwua_publicSection{min-width:0}.-Qiwua_unreadBoundary{color:var(--dsw-alias-label-tertiary);align-items:center;gap:10px;margin:10px 0 6px;font-size:11px;line-height:16px;display:flex}.-Qiwua_unreadBoundary:before,.-Qiwua_unreadBoundary:after{background:var(--dsw-alias-border-l3);content:\"\";flex:1;height:1px}.-Qiwua_unreadBoundary span{flex:none}.-Qiwua_daySeparator{color:var(--dsw-alias-label-tertiary);letter-spacing:.02em;align-items:center;gap:10px;margin:12px 0 4px;font-size:11px;line-height:16px;display:flex}.-Qiwua_daySeparator:before,.-Qiwua_daySeparator:after{background:var(--dsw-alias-border-l2);content:\"\";flex:1;height:1px}.-Qiwua_daySeparator span{flex:none}.-Qiwua_newUpdates{background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1));border:1px solid var(--dsw-alias-border-l2-darkmode-thin);box-shadow:var(--dsw-shadow-lv2);z-index:2;border-radius:999px;justify-content:center;align-items:center;width:fit-content;margin:8px auto;padding:4px 12px;font-size:12px;line-height:18px;display:flex;position:sticky;bottom:8px}.-Qiwua_newUpdatesJump{color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;line-height:inherit;background:0 0;border:0;padding:0}.-Qiwua_newUpdatesJump:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px;border-radius:6px}.-Qiwua_taskTitle{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:2px 0 0;font-size:13px;line-height:20px;display:-webkit-box;overflow:hidden}.-Qiwua_closedBar{flex-direction:column;align-items:center;display:flex}.-Qiwua_closedNotice{color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:10px 16px 14px;font-size:13px;line-height:20px;display:flex}@media (width<=600px){.-Qiwua_claimRow{grid-template-columns:14px minmax(0,1fr) auto;align-items:start}.-Qiwua_claimState{grid-area:1/3;justify-self:end}.-Qiwua_claimDirection{grid-column:2/-1}.-Qiwua_activityRow{padding-inline:0}.-Qiwua_newUpdates{max-width:calc(100% - 16px)}}";
|
|
7904
7937
|
const tagId$2 = "@wowyuarm/dsh-agent-team/thread.module.css";
|
|
7905
7938
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
7906
7939
|
const tag = document.createElement("style");
|
|
@@ -7924,6 +7957,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7924
7957
|
"emptyClaims": "-Qiwua_emptyClaims",
|
|
7925
7958
|
"historySection": "-Qiwua_historySection",
|
|
7926
7959
|
"newUpdates": "-Qiwua_newUpdates",
|
|
7960
|
+
"newUpdatesJump": "-Qiwua_newUpdatesJump",
|
|
7927
7961
|
"publicSection": "-Qiwua_publicSection",
|
|
7928
7962
|
"riskRow": "-Qiwua_riskRow",
|
|
7929
7963
|
"riskSection": "-Qiwua_riskSection",
|
|
@@ -8487,7 +8521,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8487
8521
|
const [readFacts, setReadFacts] = (0, react.useState)([]);
|
|
8488
8522
|
const [historyCursor, setHistoryCursor] = (0, react.useState)();
|
|
8489
8523
|
const [historyHasMore, setHistoryHasMore] = (0, react.useState)(false);
|
|
8490
|
-
const
|
|
8524
|
+
const MAX_AUTO_READ_ROUNDS = 50;
|
|
8525
|
+
const [autoReadExhausted, setAutoReadExhausted] = (0, react.useState)(false);
|
|
8491
8526
|
const [newFactsCount, setNewFactsCount] = (0, react.useState)(0);
|
|
8492
8527
|
const draftKey = `thread:${threadRef}`;
|
|
8493
8528
|
const { draft, recipients } = (0, react.useSyncExternalStore)(drafts.subscribe, () => drafts.getSnapshot(draftKey));
|
|
@@ -8507,20 +8542,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8507
8542
|
const currentFactsRef = (0, react.useRef)([]);
|
|
8508
8543
|
const sequenceRef = (0, react.useRef)(0);
|
|
8509
8544
|
const readRequestIdRef = (0, react.useRef)(mintRequestId());
|
|
8545
|
+
const projectionRef = (0, react.useRef)();
|
|
8510
8546
|
const mutationRequests = (0, react.useRef)(/* @__PURE__ */ new Map());
|
|
8511
8547
|
const threadLastFact = currentFacts[currentFacts.length - 1];
|
|
8512
8548
|
const timeline = useTimelineScroll(`${currentFacts.length}:${olderFacts.length}:${threadLastFact === void 0 ? "" : factKey(threadLastFact)}`);
|
|
8513
8549
|
const updateProjection = (next) => {
|
|
8550
|
+
projectionRef.current = next;
|
|
8514
8551
|
setProjection(next);
|
|
8515
8552
|
setReadFacts(next.facts);
|
|
8516
|
-
setRemainingUnreadCount(next.remainingUnreadCount);
|
|
8517
8553
|
const batch = [messageFact(next.anchor, next.anchorMentions), ...next.facts.map((fact) => fact.fact)];
|
|
8518
8554
|
setCurrentFacts((current) => {
|
|
8519
8555
|
const merged = mergeFacts(current, batch);
|
|
8520
8556
|
currentFactsRef.current = merged;
|
|
8521
8557
|
return merged;
|
|
8522
8558
|
});
|
|
8523
|
-
|
|
8559
|
+
};
|
|
8560
|
+
const drainUnread = async () => {
|
|
8561
|
+
for (let round = 1; round <= MAX_AUTO_READ_ROUNDS; round += 1) {
|
|
8562
|
+
const snapshot = projectionRef.current;
|
|
8563
|
+
if (snapshot === void 0 || snapshot.remainingUnreadCount <= 0) return;
|
|
8564
|
+
const beforeSequence = sequenceRef.current;
|
|
8565
|
+
if (!await readCurrent(true)) return;
|
|
8566
|
+
if (!mountedRef.current || sequenceRef.current !== beforeSequence + 1) return;
|
|
8567
|
+
if (projectionRef.current?.remainingUnreadCount === snapshot.remainingUnreadCount) return;
|
|
8568
|
+
}
|
|
8569
|
+
setAutoReadExhausted(true);
|
|
8524
8570
|
};
|
|
8525
8571
|
const readCurrent = async (newRequest = false) => {
|
|
8526
8572
|
if (!mountedRef.current) return false;
|
|
@@ -8586,17 +8632,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8586
8632
|
currentFactsRef.current = merged;
|
|
8587
8633
|
return merged;
|
|
8588
8634
|
});
|
|
8589
|
-
setProjection((current) =>
|
|
8590
|
-
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
|
|
8635
|
+
setProjection((current) => {
|
|
8636
|
+
const next = current === void 0 ? current : {
|
|
8637
|
+
...current,
|
|
8638
|
+
...result.value.task === void 0 ? {} : { task: result.value.task },
|
|
8639
|
+
thread: result.value.thread,
|
|
8640
|
+
claims: result.value.claims
|
|
8641
|
+
};
|
|
8642
|
+
if (next !== void 0) projectionRef.current = next;
|
|
8643
|
+
return next;
|
|
8594
8644
|
});
|
|
8595
8645
|
if (additions.length === 0) return;
|
|
8596
|
-
if (!timeline.isPinned())
|
|
8597
|
-
setNewFactsCount((current) => current + additions.length);
|
|
8598
|
-
return;
|
|
8599
|
-
}
|
|
8646
|
+
if (!timeline.isPinned()) setNewFactsCount((current) => current + additions.length);
|
|
8600
8647
|
const priorSequence = sequenceRef.current;
|
|
8601
8648
|
if (await readCurrent(true)) return;
|
|
8602
8649
|
if (!mountedRef.current || sequenceRef.current !== priorSequence + 1) return;
|
|
@@ -8605,6 +8652,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8605
8652
|
};
|
|
8606
8653
|
(0, react.useEffect)(() => {
|
|
8607
8654
|
mountedRef.current = true;
|
|
8655
|
+
projectionRef.current = void 0;
|
|
8608
8656
|
setProjection(void 0);
|
|
8609
8657
|
setChannelView(void 0);
|
|
8610
8658
|
setMembers([]);
|
|
@@ -8614,7 +8662,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8614
8662
|
setReadFacts([]);
|
|
8615
8663
|
setHistoryCursor(void 0);
|
|
8616
8664
|
setHistoryHasMore(false);
|
|
8617
|
-
|
|
8665
|
+
setAutoReadExhausted(false);
|
|
8618
8666
|
setNewFactsCount(0);
|
|
8619
8667
|
setError(void 0);
|
|
8620
8668
|
setStatusMessage(void 0);
|
|
@@ -8638,7 +8686,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8638
8686
|
return;
|
|
8639
8687
|
}
|
|
8640
8688
|
updateProjection(read.value);
|
|
8641
|
-
|
|
8689
|
+
timeline.scrollToBottom();
|
|
8642
8690
|
if (history !== void 0 && history.ok) {
|
|
8643
8691
|
setCurrentFacts((current) => {
|
|
8644
8692
|
const merged = mergeFacts(current, history.value.facts);
|
|
@@ -8650,6 +8698,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8650
8698
|
}
|
|
8651
8699
|
setError(void 0);
|
|
8652
8700
|
setLoading(false);
|
|
8701
|
+
await drainUnread();
|
|
8653
8702
|
})();
|
|
8654
8703
|
refreshSupplemental();
|
|
8655
8704
|
const disposers = [subscribeChanges({
|
|
@@ -8683,6 +8732,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8683
8732
|
taskRef,
|
|
8684
8733
|
threadRef
|
|
8685
8734
|
]);
|
|
8735
|
+
(0, react.useEffect)(() => {
|
|
8736
|
+
if (newFactsCount > 0 && timeline.isPinned()) setNewFactsCount(0);
|
|
8737
|
+
}, [
|
|
8738
|
+
newFactsCount,
|
|
8739
|
+
currentFacts,
|
|
8740
|
+
olderFacts,
|
|
8741
|
+
timeline
|
|
8742
|
+
]);
|
|
8686
8743
|
const loadOlder = async () => {
|
|
8687
8744
|
if (historyHasMore === false && historyCursor === void 0) return;
|
|
8688
8745
|
const beforeSequence = historyCursor ?? minSequence(currentFactsRef.current);
|
|
@@ -8831,7 +8888,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8831
8888
|
if (boundaryIndex === index) nodes.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
8832
8889
|
className: thread_module_css_default.unreadBoundary,
|
|
8833
8890
|
role: "separator",
|
|
8834
|
-
"data-thread-boundary": true,
|
|
8835
8891
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("unreadBoundary") })
|
|
8836
8892
|
}, `boundary-${index}`));
|
|
8837
8893
|
if (sender !== void 0) run.push(fact);
|
|
@@ -8841,9 +8897,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8841
8897
|
return nodes;
|
|
8842
8898
|
};
|
|
8843
8899
|
const refreshAfterFence = async () => {
|
|
8844
|
-
timeline.
|
|
8900
|
+
timeline.scrollToBottom();
|
|
8845
8901
|
await readCurrent(true);
|
|
8846
8902
|
await refreshSupplemental();
|
|
8903
|
+
await drainUnread();
|
|
8847
8904
|
};
|
|
8848
8905
|
const convertToTask = async () => {
|
|
8849
8906
|
if (pending || thread === void 0 || task !== void 0) return;
|
|
@@ -9280,32 +9337,28 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9280
9337
|
className: thread_module_css_default.publicSection,
|
|
9281
9338
|
children: renderFactBlocks(currentFactsWithAnchor, unreadBoundary)
|
|
9282
9339
|
}),
|
|
9283
|
-
|
|
9284
|
-
className: thread_module_css_default.newUpdates,
|
|
9285
|
-
role: "status",
|
|
9286
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("readNewUpdates", { count: newFactsCount }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9287
|
-
size: "sm",
|
|
9288
|
-
variant: "outline",
|
|
9289
|
-
disabled: loading,
|
|
9290
|
-
onClick: () => {
|
|
9291
|
-
timeline.jumpToLatest();
|
|
9292
|
-
readCurrent(true);
|
|
9293
|
-
},
|
|
9294
|
-
children: t("markRead")
|
|
9295
|
-
})]
|
|
9296
|
-
}),
|
|
9297
|
-
remainingUnreadCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9340
|
+
autoReadExhausted && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9298
9341
|
className: conversation_module_css_default.timelineAction,
|
|
9299
|
-
role: "
|
|
9300
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("
|
|
9342
|
+
role: "alert",
|
|
9343
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("autoReadIncomplete") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
9301
9344
|
size: "sm",
|
|
9302
9345
|
onClick: () => {
|
|
9303
|
-
|
|
9304
|
-
|
|
9346
|
+
setAutoReadExhausted(false);
|
|
9347
|
+
drainUnread();
|
|
9305
9348
|
},
|
|
9306
9349
|
disabled: loading,
|
|
9307
|
-
children: t("
|
|
9350
|
+
children: t("retry")
|
|
9308
9351
|
})]
|
|
9352
|
+
}),
|
|
9353
|
+
newFactsCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
9354
|
+
className: thread_module_css_default.newUpdates,
|
|
9355
|
+
role: "status",
|
|
9356
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
9357
|
+
type: "button",
|
|
9358
|
+
className: thread_module_css_default.newUpdatesJump,
|
|
9359
|
+
onClick: timeline.scrollToBottom,
|
|
9360
|
+
children: t("newUpdatesJump", { count: newFactsCount })
|
|
9361
|
+
})
|
|
9309
9362
|
})
|
|
9310
9363
|
]
|
|
9311
9364
|
})
|
|
@@ -9952,69 +10005,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9952
10005
|
"unavailableDot": "_1henIG_unavailableDot"
|
|
9953
10006
|
};
|
|
9954
10007
|
//#endregion
|
|
9955
|
-
//#region src/client/multi-menu-field.tsx
|
|
9956
|
-
/**
|
|
9957
|
-
* Render the labeled multi-select Menu field.
|
|
9958
|
-
* @param props.label - field caption; doubles as the trigger's accessible name.
|
|
9959
|
-
* @param props.options - selectable entries in display order.
|
|
9960
|
-
* @param props.selected - currently checked ids.
|
|
9961
|
-
* @param props.onToggle - invoked with an id when its row is clicked.
|
|
9962
|
-
* @param props.disabled - disables the trigger while a mutation is in flight.
|
|
9963
|
-
* @param props.emptyText - shown instead of the picker when there is nothing to pick.
|
|
9964
|
-
* @param props.triggerEmptyLabel - trigger caption when nothing is selected.
|
|
9965
|
-
* @param props.formatCount - builds the trigger caption for N selections.
|
|
9966
|
-
*/
|
|
9967
|
-
function MultiMenuField({ label, options, selected, onToggle, disabled = false, emptyText, triggerEmptyLabel, formatCount }) {
|
|
9968
|
-
const [open, setOpen] = (0, react.useState)(false);
|
|
9969
|
-
const items = options.map((option) => ({
|
|
9970
|
-
id: option.id,
|
|
9971
|
-
label: option.hint === void 0 ? option.label : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [option.label, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
9972
|
-
className: sidebar_module_css_default.menuHint,
|
|
9973
|
-
children: ` ${option.hint}`
|
|
9974
|
-
})] }),
|
|
9975
|
-
...option.disabled === true ? { disabled: true } : {},
|
|
9976
|
-
...option.icon === void 0 ? {} : { icon: option.icon }
|
|
9977
|
-
}));
|
|
9978
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9979
|
-
className: create_module_css_default.field,
|
|
9980
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label }), options.length === 0 && emptyText !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
9981
|
-
className: sidebar_module_css_default.editHint,
|
|
9982
|
-
children: emptyText
|
|
9983
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
9984
|
-
open,
|
|
9985
|
-
portal: true,
|
|
9986
|
-
className: create_module_css_default.menuCap,
|
|
9987
|
-
items,
|
|
9988
|
-
selectedIds: selected,
|
|
9989
|
-
onSelect: (id) => {
|
|
9990
|
-
onToggle(id);
|
|
9991
|
-
},
|
|
9992
|
-
onClose: () => {
|
|
9993
|
-
setOpen(false);
|
|
9994
|
-
},
|
|
9995
|
-
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
9996
|
-
type: "button",
|
|
9997
|
-
className: create_module_css_default.selectTrigger,
|
|
9998
|
-
"aria-label": label,
|
|
9999
|
-
"aria-haspopup": "listbox",
|
|
10000
|
-
"aria-expanded": open,
|
|
10001
|
-
disabled,
|
|
10002
|
-
onClick: () => {
|
|
10003
|
-
setOpen((value) => !value);
|
|
10004
|
-
},
|
|
10005
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10006
|
-
className: create_module_css_default.selectValue,
|
|
10007
|
-
children: selected.length === 0 ? triggerEmptyLabel : formatCount(selected.length)
|
|
10008
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10009
|
-
className: `${create_module_css_default.chevron} ${open ? create_module_css_default.chevronOpen : ""}`,
|
|
10010
|
-
"aria-hidden": true,
|
|
10011
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {})
|
|
10012
|
-
})]
|
|
10013
|
-
})
|
|
10014
|
-
})]
|
|
10015
|
-
});
|
|
10016
|
-
}
|
|
10017
|
-
//#endregion
|
|
10018
10008
|
//#region src/client/TeamMemberEditor.tsx
|
|
10019
10009
|
/** Model option key inside one editor; opaque and resolved against the loaded groups. */
|
|
10020
10010
|
function modelKey(provider, model) {
|
|
@@ -10175,10 +10165,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10175
10165
|
}
|
|
10176
10166
|
/**
|
|
10177
10167
|
* Agent editor: handle, description, and per-Member model selection commit
|
|
10178
|
-
* through one durable update
|
|
10179
|
-
*
|
|
10168
|
+
* through one durable update. Channel membership is managed from the Channel
|
|
10169
|
+
* side, not here.
|
|
10180
10170
|
*/
|
|
10181
|
-
function AgentEditorDialog({ status,
|
|
10171
|
+
function AgentEditorDialog({ status, updateMember, loadModels, onCommitted, onClose, t }) {
|
|
10182
10172
|
const memberId = status.member.memberId;
|
|
10183
10173
|
const [handle, setHandle] = (0, react.useState)(status.member.handle);
|
|
10184
10174
|
const [description, setDescription] = (0, react.useState)(status.member.description);
|
|
@@ -10186,39 +10176,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10186
10176
|
const [saving, setSaving] = (0, react.useState)(false);
|
|
10187
10177
|
const [error, setError] = (0, react.useState)();
|
|
10188
10178
|
const pendingRequest = (0, react.useRef)();
|
|
10189
|
-
const [memberships, setMemberships] = (0, react.useState)();
|
|
10190
|
-
const [loadError, setLoadError] = (0, react.useState)();
|
|
10191
|
-
(0, react.useEffect)(() => {
|
|
10192
|
-
let mounted = true;
|
|
10193
|
-
loadChannels({
|
|
10194
|
-
workspaceId: status.member.workspaceId,
|
|
10195
|
-
topLevelOnly: true,
|
|
10196
|
-
includeActivities: false,
|
|
10197
|
-
limit: 1
|
|
10198
|
-
}).then((result) => {
|
|
10199
|
-
if (!mounted) return;
|
|
10200
|
-
if (result.ok) {
|
|
10201
|
-
setMemberships(result.value.members);
|
|
10202
|
-
setLoadError(void 0);
|
|
10203
|
-
} else setLoadError(result.error.message);
|
|
10204
|
-
});
|
|
10205
|
-
return () => {
|
|
10206
|
-
mounted = false;
|
|
10207
|
-
};
|
|
10208
|
-
}, [loadChannels, status.member.workspaceId]);
|
|
10209
|
-
const membership = useChannelMembership({
|
|
10210
|
-
joinChannel,
|
|
10211
|
-
removeChannelMember
|
|
10212
|
-
}, (change) => change.channelRef, (change) => {
|
|
10213
|
-
setMemberships((current) => {
|
|
10214
|
-
const base = current ?? [];
|
|
10215
|
-
return change.joined ? base.filter((item) => !(item.channelRef === change.channelRef && item.memberId === change.memberId)) : [...base, {
|
|
10216
|
-
channelRef: change.channelRef,
|
|
10217
|
-
memberId: change.memberId
|
|
10218
|
-
}];
|
|
10219
|
-
});
|
|
10220
|
-
});
|
|
10221
|
-
const joinedChannels = new Set((memberships ?? []).filter((item) => item.memberId === memberId).map((item) => item.channelRef));
|
|
10222
10179
|
const dirty = handle.trim() !== status.member.handle || description.trim() !== status.member.description || !sameModel(model, status.member.model);
|
|
10223
10180
|
const submit = async (event) => {
|
|
10224
10181
|
event.preventDefault();
|
|
@@ -10229,7 +10186,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10229
10186
|
memberId,
|
|
10230
10187
|
handle: normalizedHandle,
|
|
10231
10188
|
description: normalizedDescription,
|
|
10232
|
-
...model === void 0 ? {} : { model }
|
|
10189
|
+
...model === void 0 ? {} : { model },
|
|
10190
|
+
...status.member.capabilities === void 0 ? {} : { capabilities: status.member.capabilities }
|
|
10233
10191
|
};
|
|
10234
10192
|
const request = pendingRequest.current !== void 0 && pendingRequest.current.memberId === payload.memberId && pendingRequest.current.handle === payload.handle && pendingRequest.current.description === payload.description && sameModel(pendingRequest.current.model, model) ? pendingRequest.current : {
|
|
10235
10193
|
requestId: mintRequestId(),
|
|
@@ -10313,53 +10271,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10313
10271
|
disabled: saving,
|
|
10314
10272
|
t
|
|
10315
10273
|
}),
|
|
10316
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
10317
|
-
className: create_module_css_default.memberPicker,
|
|
10318
|
-
disabled: saving,
|
|
10319
|
-
children: [
|
|
10320
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", { children: t("channelMembersSection") }),
|
|
10321
|
-
channels.map((channel) => {
|
|
10322
|
-
const joined = joinedChannels.has(channel.channelRef);
|
|
10323
|
-
const rowPending = membership.pending.has(channel.channelRef);
|
|
10324
|
-
const disabled = rowPending || !joined && status.presence === "unavailable";
|
|
10325
|
-
const rowError = membership.errors.get(channel.channelRef);
|
|
10326
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10327
|
-
className: `${sidebar_module_css_default.editMemberRow} ${sidebar_module_css_default.editMemberRowChannels}`,
|
|
10328
|
-
children: [
|
|
10329
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("strong", {
|
|
10330
|
-
className: sidebar_module_css_default.editChannelName,
|
|
10331
|
-
children: ["# ", channel.name]
|
|
10332
|
-
}),
|
|
10333
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
10334
|
-
size: "sm",
|
|
10335
|
-
variant: "outline",
|
|
10336
|
-
disabled,
|
|
10337
|
-
onClick: () => {
|
|
10338
|
-
membership.change({
|
|
10339
|
-
workspaceId: status.member.workspaceId,
|
|
10340
|
-
channelRef: channel.channelRef,
|
|
10341
|
-
memberId,
|
|
10342
|
-
joined
|
|
10343
|
-
});
|
|
10344
|
-
},
|
|
10345
|
-
children: rowPending ? t("membershipUpdating") : joined ? t("removeFromChannel") : t("addToChannel")
|
|
10346
|
-
}),
|
|
10347
|
-
rowError !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10348
|
-
className: sidebar_module_css_default.rowError,
|
|
10349
|
-
role: "alert",
|
|
10350
|
-
children: rowError
|
|
10351
|
-
})
|
|
10352
|
-
]
|
|
10353
|
-
}, channel.channelRef);
|
|
10354
|
-
}),
|
|
10355
|
-
channels.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: t("noChannelsForAgent") }),
|
|
10356
|
-
loadError !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10357
|
-
className: sidebar_module_css_default.rowError,
|
|
10358
|
-
role: "alert",
|
|
10359
|
-
children: loadError
|
|
10360
|
-
})
|
|
10361
|
-
]
|
|
10362
|
-
}),
|
|
10363
10274
|
error !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10364
10275
|
className: create_module_css_default.error,
|
|
10365
10276
|
role: "alert",
|
|
@@ -10376,10 +10287,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10376
10287
|
}
|
|
10377
10288
|
//#endregion
|
|
10378
10289
|
//#region src/client/TeamAgentsPanel.tsx
|
|
10379
|
-
function TeamAgentsPanel({ workspaceId, loadMembers, subscribeChanges,
|
|
10290
|
+
function TeamAgentsPanel({ workspaceId, loadMembers, subscribeChanges, addMember, updateMember, recoverMember, clearMemberContext, loadModels, memberSessionId, openMemberSession, onCreatingChange, t }) {
|
|
10380
10291
|
const [members, setMembers] = (0, react.useState)([]);
|
|
10381
|
-
const [channels, setChannels] = (0, react.useState)([]);
|
|
10382
|
-
const [channelRefs, setChannelRefs] = (0, react.useState)([]);
|
|
10383
10292
|
const [loading, setLoading] = (0, react.useState)(true);
|
|
10384
10293
|
const [error, setError] = (0, react.useState)();
|
|
10385
10294
|
const [formOpen, setFormOpen] = (0, react.useState)(false);
|
|
@@ -10414,18 +10323,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10414
10323
|
(0, react.useEffect)(() => {
|
|
10415
10324
|
refresh();
|
|
10416
10325
|
}, [refresh]);
|
|
10417
|
-
const loadWorkspaceChannels = (0, react.useCallback)(async () => {
|
|
10418
|
-
const result = await loadChannels({
|
|
10419
|
-
workspaceId,
|
|
10420
|
-
topLevelOnly: true,
|
|
10421
|
-
includeActivities: false,
|
|
10422
|
-
limit: 1
|
|
10423
|
-
});
|
|
10424
|
-
if (result.ok) setChannels(result.value.channels);
|
|
10425
|
-
}, [loadChannels, workspaceId]);
|
|
10426
|
-
(0, react.useEffect)(() => {
|
|
10427
|
-
loadWorkspaceChannels();
|
|
10428
|
-
}, [loadWorkspaceChannels]);
|
|
10429
10326
|
(0, react.useEffect)(() => subscribeChanges({
|
|
10430
10327
|
kind: "workspace",
|
|
10431
10328
|
workspaceId
|
|
@@ -10435,11 +10332,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10435
10332
|
return;
|
|
10436
10333
|
}
|
|
10437
10334
|
refresh();
|
|
10438
|
-
loadWorkspaceChannels();
|
|
10439
10335
|
}), [
|
|
10440
10336
|
subscribeChanges,
|
|
10441
10337
|
refresh,
|
|
10442
|
-
loadWorkspaceChannels,
|
|
10443
10338
|
workspaceId
|
|
10444
10339
|
]);
|
|
10445
10340
|
const closeForm = () => {
|
|
@@ -10463,7 +10358,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10463
10358
|
setHandle("");
|
|
10464
10359
|
setDescription("");
|
|
10465
10360
|
setModel(void 0);
|
|
10466
|
-
setChannelRefs([]);
|
|
10467
10361
|
setFormOpen(false);
|
|
10468
10362
|
if (result.value.status.presence === "unavailable") setError(result.value.status.diagnostic ?? t("statusUnavailable"));
|
|
10469
10363
|
else setRetryRequest(void 0);
|
|
@@ -10486,13 +10380,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10486
10380
|
const normalizedHandle = handle.trim();
|
|
10487
10381
|
const normalizedDescription = description.trim();
|
|
10488
10382
|
if (normalizedHandle.length === 0 || creating) return;
|
|
10489
|
-
provision(retryRequest !== void 0 && retryRequest.workspaceId === workspaceId && retryRequest.handle === normalizedHandle && retryRequest.description === normalizedDescription && sameModel(retryRequest.model, model) && retryRequest.channelRefs.length ===
|
|
10383
|
+
provision(retryRequest !== void 0 && retryRequest.workspaceId === workspaceId && retryRequest.handle === normalizedHandle && retryRequest.description === normalizedDescription && sameModel(retryRequest.model, model) && retryRequest.channelRefs.length === 0 ? retryRequest : {
|
|
10490
10384
|
requestId: mintRequestId(),
|
|
10491
10385
|
workspaceId,
|
|
10492
10386
|
handle: normalizedHandle,
|
|
10493
10387
|
description: normalizedDescription,
|
|
10494
10388
|
presetId: "team-member",
|
|
10495
|
-
channelRefs,
|
|
10389
|
+
channelRefs: [],
|
|
10496
10390
|
...model === void 0 ? {} : { model }
|
|
10497
10391
|
});
|
|
10498
10392
|
};
|
|
@@ -10558,22 +10452,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10558
10452
|
disabled: creating,
|
|
10559
10453
|
t
|
|
10560
10454
|
}),
|
|
10561
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MultiMenuField, {
|
|
10562
|
-
label: `${t("initialChannels")}${t("optionalSuffix")}`,
|
|
10563
|
-
disabled: creating,
|
|
10564
|
-
options: channels.map((channel) => ({
|
|
10565
|
-
id: channel.channelRef,
|
|
10566
|
-
label: channel.name
|
|
10567
|
-
})),
|
|
10568
|
-
selected: channelRefs,
|
|
10569
|
-
onToggle: (ref) => {
|
|
10570
|
-
setChannelRefs((current) => current.includes(ref) ? current.filter((item) => item !== ref) : [...current, ref]);
|
|
10571
|
-
setRetryRequest(void 0);
|
|
10572
|
-
},
|
|
10573
|
-
emptyText: t("noChannelsForAgent"),
|
|
10574
|
-
triggerEmptyLabel: t("channelsPickerEmpty"),
|
|
10575
|
-
formatCount: (count) => t("channelsPickerCount", { count })
|
|
10576
|
-
}),
|
|
10577
10455
|
formOpen && error !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
10578
10456
|
className: create_module_css_default.error,
|
|
10579
10457
|
role: "alert",
|
|
@@ -10620,13 +10498,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10620
10498
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AgentRow, {
|
|
10621
10499
|
status,
|
|
10622
10500
|
...memberSessionId === void 0 ? {} : { current: status.member.sessionId === memberSessionId },
|
|
10623
|
-
channels,
|
|
10624
|
-
loadChannels,
|
|
10625
10501
|
updateMember,
|
|
10626
10502
|
recoverMember,
|
|
10627
10503
|
clearMemberContext,
|
|
10628
|
-
joinChannel,
|
|
10629
|
-
removeChannelMember,
|
|
10630
10504
|
loadModels,
|
|
10631
10505
|
openMemberSession,
|
|
10632
10506
|
onUpdated: () => {
|
|
@@ -10659,7 +10533,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10659
10533
|
* conversation page, the avatar carries identity plus the presence badge, and
|
|
10660
10534
|
* the row menu opens the editor.
|
|
10661
10535
|
*/
|
|
10662
|
-
function AgentRow({ status, current,
|
|
10536
|
+
function AgentRow({ status, current, updateMember, recoverMember, clearMemberContext, loadModels, openMemberSession, onUpdated, t }) {
|
|
10663
10537
|
const [menuOpen, setMenuOpen] = (0, react.useState)(false);
|
|
10664
10538
|
const [editing, setEditing] = (0, react.useState)(false);
|
|
10665
10539
|
const [clearing, setClearing] = (0, react.useState)(false);
|
|
@@ -10801,11 +10675,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10801
10675
|
}),
|
|
10802
10676
|
editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AgentEditorDialog, {
|
|
10803
10677
|
status,
|
|
10804
|
-
channels,
|
|
10805
|
-
loadChannels,
|
|
10806
10678
|
updateMember,
|
|
10807
|
-
joinChannel,
|
|
10808
|
-
removeChannelMember,
|
|
10809
10679
|
loadModels,
|
|
10810
10680
|
onCommitted: onUpdated,
|
|
10811
10681
|
onClose: () => {
|
|
@@ -10816,6 +10686,69 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10816
10686
|
] });
|
|
10817
10687
|
}
|
|
10818
10688
|
//#endregion
|
|
10689
|
+
//#region src/client/multi-menu-field.tsx
|
|
10690
|
+
/**
|
|
10691
|
+
* Render the labeled multi-select Menu field.
|
|
10692
|
+
* @param props.label - field caption; doubles as the trigger's accessible name.
|
|
10693
|
+
* @param props.options - selectable entries in display order.
|
|
10694
|
+
* @param props.selected - currently checked ids.
|
|
10695
|
+
* @param props.onToggle - invoked with an id when its row is clicked.
|
|
10696
|
+
* @param props.disabled - disables the trigger while a mutation is in flight.
|
|
10697
|
+
* @param props.emptyText - shown instead of the picker when there is nothing to pick.
|
|
10698
|
+
* @param props.triggerEmptyLabel - trigger caption when nothing is selected.
|
|
10699
|
+
* @param props.formatCount - builds the trigger caption for N selections.
|
|
10700
|
+
*/
|
|
10701
|
+
function MultiMenuField({ label, options, selected, onToggle, disabled = false, emptyText, triggerEmptyLabel, formatCount }) {
|
|
10702
|
+
const [open, setOpen] = (0, react.useState)(false);
|
|
10703
|
+
const items = options.map((option) => ({
|
|
10704
|
+
id: option.id,
|
|
10705
|
+
label: option.hint === void 0 ? option.label : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [option.label, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
10706
|
+
className: sidebar_module_css_default.menuHint,
|
|
10707
|
+
children: ` ${option.hint}`
|
|
10708
|
+
})] }),
|
|
10709
|
+
...option.disabled === true ? { disabled: true } : {},
|
|
10710
|
+
...option.icon === void 0 ? {} : { icon: option.icon }
|
|
10711
|
+
}));
|
|
10712
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
10713
|
+
className: create_module_css_default.field,
|
|
10714
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label }), options.length === 0 && emptyText !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
10715
|
+
className: sidebar_module_css_default.editHint,
|
|
10716
|
+
children: emptyText
|
|
10717
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
10718
|
+
open,
|
|
10719
|
+
portal: true,
|
|
10720
|
+
className: create_module_css_default.menuCap,
|
|
10721
|
+
items,
|
|
10722
|
+
selectedIds: selected,
|
|
10723
|
+
onSelect: (id) => {
|
|
10724
|
+
onToggle(id);
|
|
10725
|
+
},
|
|
10726
|
+
onClose: () => {
|
|
10727
|
+
setOpen(false);
|
|
10728
|
+
},
|
|
10729
|
+
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
10730
|
+
type: "button",
|
|
10731
|
+
className: create_module_css_default.selectTrigger,
|
|
10732
|
+
"aria-label": label,
|
|
10733
|
+
"aria-haspopup": "listbox",
|
|
10734
|
+
"aria-expanded": open,
|
|
10735
|
+
disabled,
|
|
10736
|
+
onClick: () => {
|
|
10737
|
+
setOpen((value) => !value);
|
|
10738
|
+
},
|
|
10739
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10740
|
+
className: create_module_css_default.selectValue,
|
|
10741
|
+
children: selected.length === 0 ? triggerEmptyLabel : formatCount(selected.length)
|
|
10742
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
10743
|
+
className: `${create_module_css_default.chevron} ${open ? create_module_css_default.chevronOpen : ""}`,
|
|
10744
|
+
"aria-hidden": true,
|
|
10745
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {})
|
|
10746
|
+
})]
|
|
10747
|
+
})
|
|
10748
|
+
})]
|
|
10749
|
+
});
|
|
10750
|
+
}
|
|
10751
|
+
//#endregion
|
|
10819
10752
|
//#region src/client/TeamChannelsPanel.tsx
|
|
10820
10753
|
function TeamChannelsPanel(props) {
|
|
10821
10754
|
const { workspaceId, loadMembers, loadChannels, subscribeChanges, createChannel, updateChannel, creatingAgents, selectedChannelRef, selectChannel, t } = props;
|
|
@@ -11404,13 +11337,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11404
11337
|
workspaceId: selectedId,
|
|
11405
11338
|
loadMembers,
|
|
11406
11339
|
subscribeChanges,
|
|
11407
|
-
loadChannels,
|
|
11408
11340
|
addMember,
|
|
11409
11341
|
updateMember,
|
|
11410
11342
|
recoverMember,
|
|
11411
11343
|
clearMemberContext,
|
|
11412
|
-
joinChannel,
|
|
11413
|
-
removeChannelMember,
|
|
11414
11344
|
loadModels,
|
|
11415
11345
|
...navigationState.memberSessionId === void 0 ? {} : { memberSessionId: navigationState.memberSessionId },
|
|
11416
11346
|
openMemberSession,
|
|
@@ -11707,8 +11637,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11707
11637
|
retry: "重试",
|
|
11708
11638
|
agentName: "名称",
|
|
11709
11639
|
agentDescription: "说明",
|
|
11710
|
-
initialChannels: "初始频道",
|
|
11711
|
-
noChannelsForAgent: "请先创建至少一个频道",
|
|
11712
11640
|
createAgent: "创建 Agent",
|
|
11713
11641
|
creatingAgent: "正在创建…",
|
|
11714
11642
|
loadingAgents: "正在加载 Agents…",
|
|
@@ -11741,8 +11669,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11741
11669
|
clearContextFailed: "清空上下文失败:{message}",
|
|
11742
11670
|
optionalSuffix: "(可选)",
|
|
11743
11671
|
agentDescriptionPlaceholder: "留空则暂无描述",
|
|
11744
|
-
channelsPickerEmpty: "选择初始频道",
|
|
11745
|
-
channelsPickerCount: "已选 {count} 个频道",
|
|
11746
11672
|
membersPickerEmpty: "选择初始成员",
|
|
11747
11673
|
membersPickerCount: "已选 {count} 个成员",
|
|
11748
11674
|
reasoningEffort: "推理强度",
|
|
@@ -11804,10 +11730,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11804
11730
|
backToWorkspace: "返回工作区",
|
|
11805
11731
|
loadingThread: "正在加载 Thread…",
|
|
11806
11732
|
unreadBoundary: "以下是本次打开收到的更新",
|
|
11807
|
-
|
|
11808
|
-
|
|
11809
|
-
remainingUnread: "还有 {count} 条未读更新",
|
|
11810
|
-
continueReading: "继续阅读",
|
|
11733
|
+
newUpdatesJump: "↓ {count} 条新更新",
|
|
11734
|
+
autoReadIncomplete: "仍有未读更新未能自动读取",
|
|
11811
11735
|
olderHistory: "更早历史",
|
|
11812
11736
|
runtimeRisk: "当前运行风险",
|
|
11813
11737
|
runtimeRiskDetail: "@{member} 当前不可用:{diagnostic}",
|
|
@@ -11855,8 +11779,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11855
11779
|
retry: "Retry",
|
|
11856
11780
|
agentName: "Name",
|
|
11857
11781
|
agentDescription: "Description",
|
|
11858
|
-
initialChannels: "Initial Channels",
|
|
11859
|
-
noChannelsForAgent: "Create at least one Channel first",
|
|
11860
11782
|
createAgent: "Create Agent",
|
|
11861
11783
|
creatingAgent: "Creating…",
|
|
11862
11784
|
loadingAgents: "Loading Agents…",
|
|
@@ -11889,8 +11811,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11889
11811
|
clearContextFailed: "Failed to clear context: {message}",
|
|
11890
11812
|
optionalSuffix: " (optional)",
|
|
11891
11813
|
agentDescriptionPlaceholder: "Leave empty if not needed",
|
|
11892
|
-
channelsPickerEmpty: "Choose initial channels",
|
|
11893
|
-
channelsPickerCount: "{count} selected",
|
|
11894
11814
|
membersPickerEmpty: "Choose initial members",
|
|
11895
11815
|
membersPickerCount: "{count} selected",
|
|
11896
11816
|
reasoningEffort: "Reasoning effort",
|
|
@@ -11952,10 +11872,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11952
11872
|
backToWorkspace: "Back to Workspace",
|
|
11953
11873
|
loadingThread: "Loading Thread…",
|
|
11954
11874
|
unreadBoundary: "Updates received when you opened this Thread",
|
|
11955
|
-
|
|
11956
|
-
|
|
11957
|
-
remainingUnread: "{count} unread update(s) remain",
|
|
11958
|
-
continueReading: "Continue reading",
|
|
11875
|
+
newUpdatesJump: "↓ {count} new update(s)",
|
|
11876
|
+
autoReadIncomplete: "Some unread updates could not be read automatically",
|
|
11959
11877
|
olderHistory: "Older history",
|
|
11960
11878
|
runtimeRisk: "Current runtime risk",
|
|
11961
11879
|
runtimeRiskDetail: "@{member} is unavailable: {diagnostic}",
|