@khorsheed/dsh-room 0.2.4 → 0.2.5
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/CHANGELOG.md +13 -0
- package/lib/client.js +2256 -1074
- package/lib/index.js +548 -36
- package/lib/typert.host.js +249 -65
- package/lib/typert.remote-client.d.ts +4 -1
- package/lib/typert.remote-client.js +208 -53
- package/lib/types/client/InviteDialog.js +11 -4
- package/lib/types/client/RoomAttachments.d.ts +20 -0
- package/lib/types/client/RoomAttachments.js +36 -0
- package/lib/types/client/RoomComposer.d.ts +6 -12
- package/lib/types/client/RoomComposer.js +116 -12
- package/lib/types/client/RoomQuestionView.d.ts +10 -2
- package/lib/types/client/RoomQuestionView.js +18 -5
- package/lib/types/client/RoomRunView.d.ts +1 -1
- package/lib/types/client/RoomRunView.js +15 -5
- package/lib/types/client/RoomSpeechView.d.ts +24 -1
- package/lib/types/client/RoomSpeechView.js +39 -3
- package/lib/types/client/RoomStatsLine.d.ts +3 -1
- package/lib/types/client/RoomStatsLine.js +3 -1
- package/lib/types/client/RoomTaskCapsule.d.ts +6 -1
- package/lib/types/client/RoomTaskCapsule.js +2 -2
- package/lib/types/client/TasksView.js +1 -1
- package/lib/types/client/TeamView.js +1 -1
- package/lib/types/client/icons.d.ts +2 -1
- package/lib/types/client/icons.js +1 -0
- package/lib/types/client/index.js +94 -15
- package/lib/types/client/locales.d.ts +44 -0
- package/lib/types/client/locales.js +44 -0
- package/lib/types/client/nodes.d.ts +22 -3
- package/lib/types/client/nodes.js +28 -5
- package/lib/types/client/path-mentions.d.ts +34 -0
- package/lib/types/client/path-mentions.js +39 -0
- package/lib/types/client/slots.d.ts +51 -1
- package/lib/types/dispatch.d.ts +50 -0
- package/lib/types/dispatch.js +115 -1
- package/lib/types/index.d.ts +69 -1
- package/lib/types/index.js +362 -20
- package/lib/types/jobs.js +7 -3
- package/lib/types/journal.d.ts +1 -1
- package/lib/types/journal.js +18 -2
- package/lib/types/types.d.ts +77 -0
- package/package.json +10 -6
- package/lib/journal-B4FOGO6S.js +0 -482
- package/lib/journal-BWL3-i0s.js +0 -462
- package/lib/journal-Rid9AAnD.js +0 -485
package/lib/client.js
CHANGED
|
@@ -18846,7 +18846,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18846
18846
|
xor: () => xor
|
|
18847
18847
|
});
|
|
18848
18848
|
//#endregion
|
|
18849
|
-
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-typert-protocol@0.2.1-rc.
|
|
18849
|
+
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-typert-protocol@0.2.1-rc.3_@deepseek-ai+cordis@4.0.4/node_modules/@deepseek-ai/dsh-typert-protocol/lib/types/remote-info.js
|
|
18850
18850
|
/** Lazy assembly of generated Remote definitions using caller-supplied Zod; no runtime imports. */
|
|
18851
18851
|
/**
|
|
18852
18852
|
* Retain one generated definition per endpoint without constructing parsers or projections.
|
|
@@ -19043,6 +19043,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19043
19043
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19044
19044
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19045
19045
|
object({ "code": literal("empty-text").readonly() }),
|
|
19046
|
+
object({
|
|
19047
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19048
|
+
"message": string$1().readonly()
|
|
19049
|
+
}),
|
|
19046
19050
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19047
19051
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19048
19052
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19111,6 +19115,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19111
19115
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19112
19116
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19113
19117
|
object({ "code": literal("empty-text").readonly() }),
|
|
19118
|
+
object({
|
|
19119
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19120
|
+
"message": string$1().readonly()
|
|
19121
|
+
}),
|
|
19114
19122
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19115
19123
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19116
19124
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19179,6 +19187,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19179
19187
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19180
19188
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19181
19189
|
object({ "code": literal("empty-text").readonly() }),
|
|
19190
|
+
object({
|
|
19191
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19192
|
+
"message": string$1().readonly()
|
|
19193
|
+
}),
|
|
19182
19194
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19183
19195
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19184
19196
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19245,6 +19257,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19245
19257
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19246
19258
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19247
19259
|
object({ "code": literal("empty-text").readonly() }),
|
|
19260
|
+
object({
|
|
19261
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19262
|
+
"message": string$1().readonly()
|
|
19263
|
+
}),
|
|
19248
19264
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19249
19265
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19250
19266
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19311,6 +19327,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19311
19327
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19312
19328
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19313
19329
|
object({ "code": literal("empty-text").readonly() }),
|
|
19330
|
+
object({
|
|
19331
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19332
|
+
"message": string$1().readonly()
|
|
19333
|
+
}),
|
|
19314
19334
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19315
19335
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19316
19336
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19375,6 +19395,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19375
19395
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19376
19396
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19377
19397
|
object({ "code": literal("empty-text").readonly() }),
|
|
19398
|
+
object({
|
|
19399
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19400
|
+
"message": string$1().readonly()
|
|
19401
|
+
}),
|
|
19378
19402
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19379
19403
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19380
19404
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19441,6 +19465,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19441
19465
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19442
19466
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19443
19467
|
object({ "code": literal("empty-text").readonly() }),
|
|
19468
|
+
object({
|
|
19469
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19470
|
+
"message": string$1().readonly()
|
|
19471
|
+
}),
|
|
19444
19472
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19445
19473
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19446
19474
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19481,6 +19509,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19481
19509
|
const _khorsheed_dsh_room_room_getState_result$schema = () => _khorsheed_dsh_room_room_getState_result$schema$value ??= union([object({
|
|
19482
19510
|
"ok": literal(true).readonly(),
|
|
19483
19511
|
"value": object({
|
|
19512
|
+
"askLog": array(object({
|
|
19513
|
+
"id": string$1().readonly(),
|
|
19514
|
+
"member": string$1().readonly(),
|
|
19515
|
+
"questions": array(object({
|
|
19516
|
+
"id": string$1().readonly(),
|
|
19517
|
+
"question": string$1().readonly(),
|
|
19518
|
+
"header": string$1().readonly().optional(),
|
|
19519
|
+
"options": array(object({
|
|
19520
|
+
"label": string$1().readonly(),
|
|
19521
|
+
"description": string$1().readonly().optional()
|
|
19522
|
+
})).readonly().optional(),
|
|
19523
|
+
"multiSelect": boolean$1().readonly().optional()
|
|
19524
|
+
})).readonly(),
|
|
19525
|
+
"state": union([
|
|
19526
|
+
literal("cancelled"),
|
|
19527
|
+
literal("pending"),
|
|
19528
|
+
literal("answered")
|
|
19529
|
+
]).readonly(),
|
|
19530
|
+
"answers": array(object({
|
|
19531
|
+
"id": string$1().readonly(),
|
|
19532
|
+
"selected": array(string$1()).readonly(),
|
|
19533
|
+
"custom": string$1().readonly().optional()
|
|
19534
|
+
})).readonly().optional(),
|
|
19535
|
+
"late": literal(true).readonly().optional(),
|
|
19536
|
+
"consent": literal(true).readonly().optional(),
|
|
19537
|
+
"runId": string$1().readonly().optional(),
|
|
19538
|
+
"time": number$1().readonly()
|
|
19539
|
+
})).readonly().optional().describe("All question cards with their outcomes (inline blocks in run cards and replies)."),
|
|
19484
19540
|
"executions": array(object({
|
|
19485
19541
|
"id": string$1().readonly(),
|
|
19486
19542
|
"memberId": string$1().readonly().optional(),
|
|
@@ -19782,13 +19838,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19782
19838
|
"id": string$1().readonly(),
|
|
19783
19839
|
"time": number$1().readonly(),
|
|
19784
19840
|
"text": string$1().readonly(),
|
|
19841
|
+
"from": string$1().readonly().optional(),
|
|
19785
19842
|
"by": union([
|
|
19786
19843
|
literal("model"),
|
|
19787
19844
|
literal("human"),
|
|
19788
19845
|
literal("coordinator")
|
|
19789
19846
|
]).readonly().optional(),
|
|
19790
19847
|
"probability": number$1().readonly().optional()
|
|
19791
|
-
})).readonly(),
|
|
19848
|
+
})).readonly().describe("`from`: the member id a member/coordinator dispatch came from; absent = the human."),
|
|
19792
19849
|
"status": union([
|
|
19793
19850
|
literal("running"),
|
|
19794
19851
|
literal("stopped"),
|
|
@@ -19865,6 +19922,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19865
19922
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19866
19923
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19867
19924
|
object({ "code": literal("empty-text").readonly() }),
|
|
19925
|
+
object({
|
|
19926
|
+
"code": literal("attachment-invalid").readonly(),
|
|
19927
|
+
"message": string$1().readonly()
|
|
19928
|
+
}),
|
|
19868
19929
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19869
19930
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19870
19931
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -19946,6 +20007,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19946
20007
|
object({ "code": literal("empty-provider").readonly() }),
|
|
19947
20008
|
object({ "code": literal("member-not-found").readonly() }),
|
|
19948
20009
|
object({ "code": literal("empty-text").readonly() }),
|
|
20010
|
+
object({
|
|
20011
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20012
|
+
"message": string$1().readonly()
|
|
20013
|
+
}),
|
|
19949
20014
|
object({ "code": literal("role-too-long").readonly() }),
|
|
19950
20015
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
19951
20016
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20014,6 +20079,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20014
20079
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20015
20080
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20016
20081
|
object({ "code": literal("empty-text").readonly() }),
|
|
20082
|
+
object({
|
|
20083
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20084
|
+
"message": string$1().readonly()
|
|
20085
|
+
}),
|
|
20017
20086
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20018
20087
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20019
20088
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20068,6 +20137,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20068
20137
|
})).readonly().optional().describe("The host's agent presets a native DSH member may compose; absent when the composition mounts no preset registry (native members then run the plain composition)."),
|
|
20069
20138
|
"sessionPreset": string$1().readonly().optional().describe("The requested session's own mode (preset id), when known: the dialog's default mode.")
|
|
20070
20139
|
});
|
|
20140
|
+
let _khorsheed_dsh_room_room_pendingCards_parameter_0$schema$value;
|
|
20141
|
+
const _khorsheed_dsh_room_room_pendingCards_parameter_0$schema = () => _khorsheed_dsh_room_room_pendingCards_parameter_0$schema$value ??= object({ "sessionId": string$1().readonly().optional() });
|
|
20142
|
+
let _khorsheed_dsh_room_room_pendingCards_result$schema$value;
|
|
20143
|
+
const _khorsheed_dsh_room_room_pendingCards_result$schema = () => _khorsheed_dsh_room_room_pendingCards_result$schema$value ??= array(object({
|
|
20144
|
+
"sessionId": string$1().readonly(),
|
|
20145
|
+
"id": string$1().readonly(),
|
|
20146
|
+
"kind": union([literal("approval"), literal("question")]).readonly()
|
|
20147
|
+
}));
|
|
20071
20148
|
let _khorsheed_dsh_room_room_planCommand_parameter_0$schema$value;
|
|
20072
20149
|
const _khorsheed_dsh_room_room_planCommand_parameter_0$schema = () => _khorsheed_dsh_room_room_planCommand_parameter_0$schema$value ??= object({
|
|
20073
20150
|
"sessionId": string$1(),
|
|
@@ -20084,7 +20161,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20084
20161
|
"sessionId": string$1().readonly().describe("Room session."),
|
|
20085
20162
|
"text": string$1().readonly().describe("Raw composer text: leading `@name` tokens address members."),
|
|
20086
20163
|
"targets": array(string$1()).readonly().optional().describe("Menu-picked addressees (the room composer's mention menu records a pick as explicit addressing even when the `@name` sits mid-sentence). Unioned with the parsed leading tokens and validated against the roster the same way; the text itself is dispatched verbatim either way."),
|
|
20087
|
-
"task": string$1().readonly().optional().describe("The composer's task tag: `new` or a task root id (see RoomSetTaskHintRequest).")
|
|
20164
|
+
"task": string$1().readonly().optional().describe("The composer's task tag: `new` or a task root id (see RoomSetTaskHintRequest)."),
|
|
20165
|
+
"attachments": array(union([object({
|
|
20166
|
+
"type": literal("image").readonly(),
|
|
20167
|
+
"data": string$1().readonly(),
|
|
20168
|
+
"mediaType": string$1().readonly(),
|
|
20169
|
+
"name": string$1().readonly().optional()
|
|
20170
|
+
}), object({
|
|
20171
|
+
"type": literal("file").readonly(),
|
|
20172
|
+
"receiptId": string$1().readonly()
|
|
20173
|
+
})])).readonly().optional().describe("Draft attachments in the official composer's wire form: an image's base64 bytes, or a file's upload receipt (uploaded to this room session on pick). The host admits them into the human message; members get them by local path.")
|
|
20088
20174
|
});
|
|
20089
20175
|
let _khorsheed_dsh_room_room_postMessage_result$schema$value;
|
|
20090
20176
|
const _khorsheed_dsh_room_room_postMessage_result$schema = () => _khorsheed_dsh_room_room_postMessage_result$schema$value ??= union([object({
|
|
@@ -20119,6 +20205,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20119
20205
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20120
20206
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20121
20207
|
object({ "code": literal("empty-text").readonly() }),
|
|
20208
|
+
object({
|
|
20209
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20210
|
+
"message": string$1().readonly()
|
|
20211
|
+
}),
|
|
20122
20212
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20123
20213
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20124
20214
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20185,6 +20275,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20185
20275
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20186
20276
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20187
20277
|
object({ "code": literal("empty-text").readonly() }),
|
|
20278
|
+
object({
|
|
20279
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20280
|
+
"message": string$1().readonly()
|
|
20281
|
+
}),
|
|
20188
20282
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20189
20283
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20190
20284
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20250,6 +20344,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20250
20344
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20251
20345
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20252
20346
|
object({ "code": literal("empty-text").readonly() }),
|
|
20347
|
+
object({
|
|
20348
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20349
|
+
"message": string$1().readonly()
|
|
20350
|
+
}),
|
|
20253
20351
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20254
20352
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20255
20353
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20316,6 +20414,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20316
20414
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20317
20415
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20318
20416
|
object({ "code": literal("empty-text").readonly() }),
|
|
20417
|
+
object({
|
|
20418
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20419
|
+
"message": string$1().readonly()
|
|
20420
|
+
}),
|
|
20319
20421
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20320
20422
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20321
20423
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20387,6 +20489,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20387
20489
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20388
20490
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20389
20491
|
object({ "code": literal("empty-text").readonly() }),
|
|
20492
|
+
object({
|
|
20493
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20494
|
+
"message": string$1().readonly()
|
|
20495
|
+
}),
|
|
20390
20496
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20391
20497
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20392
20498
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20453,6 +20559,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20453
20559
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20454
20560
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20455
20561
|
object({ "code": literal("empty-text").readonly() }),
|
|
20562
|
+
object({
|
|
20563
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20564
|
+
"message": string$1().readonly()
|
|
20565
|
+
}),
|
|
20456
20566
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20457
20567
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20458
20568
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20526,6 +20636,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20526
20636
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20527
20637
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20528
20638
|
object({ "code": literal("empty-text").readonly() }),
|
|
20639
|
+
object({
|
|
20640
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20641
|
+
"message": string$1().readonly()
|
|
20642
|
+
}),
|
|
20529
20643
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20530
20644
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20531
20645
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20592,6 +20706,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20592
20706
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20593
20707
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20594
20708
|
object({ "code": literal("empty-text").readonly() }),
|
|
20709
|
+
object({
|
|
20710
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20711
|
+
"message": string$1().readonly()
|
|
20712
|
+
}),
|
|
20595
20713
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20596
20714
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20597
20715
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20674,6 +20792,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20674
20792
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20675
20793
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20676
20794
|
object({ "code": literal("empty-text").readonly() }),
|
|
20795
|
+
object({
|
|
20796
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20797
|
+
"message": string$1().readonly()
|
|
20798
|
+
}),
|
|
20677
20799
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20678
20800
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20679
20801
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20747,6 +20869,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20747
20869
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20748
20870
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20749
20871
|
object({ "code": literal("empty-text").readonly() }),
|
|
20872
|
+
object({
|
|
20873
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20874
|
+
"message": string$1().readonly()
|
|
20875
|
+
}),
|
|
20750
20876
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20751
20877
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20752
20878
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20811,6 +20937,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20811
20937
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20812
20938
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20813
20939
|
object({ "code": literal("empty-text").readonly() }),
|
|
20940
|
+
object({
|
|
20941
|
+
"code": literal("attachment-invalid").readonly(),
|
|
20942
|
+
"message": string$1().readonly()
|
|
20943
|
+
}),
|
|
20814
20944
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20815
20945
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20816
20946
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20883,6 +21013,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20883
21013
|
object({ "code": literal("empty-provider").readonly() }),
|
|
20884
21014
|
object({ "code": literal("member-not-found").readonly() }),
|
|
20885
21015
|
object({ "code": literal("empty-text").readonly() }),
|
|
21016
|
+
object({
|
|
21017
|
+
"code": literal("attachment-invalid").readonly(),
|
|
21018
|
+
"message": string$1().readonly()
|
|
21019
|
+
}),
|
|
20886
21020
|
object({ "code": literal("role-too-long").readonly() }),
|
|
20887
21021
|
object({ "code": literal("invalid-settings").readonly() }),
|
|
20888
21022
|
object({ "code": literal("self-message").readonly() }),
|
|
@@ -20989,6 +21123,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
20989
21123
|
});
|
|
20990
21124
|
let _khorsheed_dsh_room_room_listProviders_parameter_0_strict$schema$value;
|
|
20991
21125
|
const _khorsheed_dsh_room_room_listProviders_parameter_0_strict$schema = () => _khorsheed_dsh_room_room_listProviders_parameter_0_strict$schema$value ??= strictObject({ "sessionId": string$1().readonly().optional().describe("The session the invite is for: the result then carries its mode (`sessionPreset`).") });
|
|
21126
|
+
let _khorsheed_dsh_room_room_pendingCards_parameter_0_strict$schema$value;
|
|
21127
|
+
const _khorsheed_dsh_room_room_pendingCards_parameter_0_strict$schema = () => _khorsheed_dsh_room_room_pendingCards_parameter_0_strict$schema$value ??= strictObject({ "sessionId": string$1().readonly().optional() });
|
|
20992
21128
|
let _khorsheed_dsh_room_room_planCommand_parameter_0_strict$schema$value;
|
|
20993
21129
|
const _khorsheed_dsh_room_room_planCommand_parameter_0_strict$schema = () => _khorsheed_dsh_room_room_planCommand_parameter_0_strict$schema$value ??= strictObject({
|
|
20994
21130
|
"sessionId": string$1(),
|
|
@@ -21000,7 +21136,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21000
21136
|
"sessionId": string$1().readonly().describe("Room session."),
|
|
21001
21137
|
"text": string$1().readonly().describe("Raw composer text: leading `@name` tokens address members."),
|
|
21002
21138
|
"targets": array(string$1()).readonly().optional().describe("Menu-picked addressees (the room composer's mention menu records a pick as explicit addressing even when the `@name` sits mid-sentence). Unioned with the parsed leading tokens and validated against the roster the same way; the text itself is dispatched verbatim either way."),
|
|
21003
|
-
"task": string$1().readonly().optional().describe("The composer's task tag: `new` or a task root id (see RoomSetTaskHintRequest).")
|
|
21139
|
+
"task": string$1().readonly().optional().describe("The composer's task tag: `new` or a task root id (see RoomSetTaskHintRequest)."),
|
|
21140
|
+
"attachments": array(union([strictObject({
|
|
21141
|
+
"type": literal("image").readonly(),
|
|
21142
|
+
"data": string$1().readonly(),
|
|
21143
|
+
"mediaType": string$1().readonly(),
|
|
21144
|
+
"name": string$1().readonly().optional()
|
|
21145
|
+
}), strictObject({
|
|
21146
|
+
"type": literal("file").readonly(),
|
|
21147
|
+
"receiptId": string$1().readonly()
|
|
21148
|
+
})])).readonly().optional().describe("Draft attachments in the official composer's wire form: an image's base64 bytes, or a file's upload receipt (uploaded to this room session on pick). The host admits them into the human message; members get them by local path.")
|
|
21004
21149
|
});
|
|
21005
21150
|
let _khorsheed_dsh_room_room_prepareMember_parameter_0_strict$schema$value;
|
|
21006
21151
|
const _khorsheed_dsh_room_room_prepareMember_parameter_0_strict$schema = () => _khorsheed_dsh_room_room_prepareMember_parameter_0_strict$schema$value ??= strictObject({
|
|
@@ -21315,6 +21460,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21315
21460
|
"required": ["code"],
|
|
21316
21461
|
"additionalProperties": true
|
|
21317
21462
|
},
|
|
21463
|
+
{
|
|
21464
|
+
"type": "object",
|
|
21465
|
+
"properties": {
|
|
21466
|
+
"code": {
|
|
21467
|
+
"type": "string",
|
|
21468
|
+
"const": "attachment-invalid"
|
|
21469
|
+
},
|
|
21470
|
+
"message": { "type": "string" }
|
|
21471
|
+
},
|
|
21472
|
+
"required": ["code", "message"],
|
|
21473
|
+
"additionalProperties": true
|
|
21474
|
+
},
|
|
21318
21475
|
{
|
|
21319
21476
|
"type": "object",
|
|
21320
21477
|
"properties": { "code": {
|
|
@@ -21516,7 +21673,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21516
21673
|
},
|
|
21517
21674
|
sourceLocation: {
|
|
21518
21675
|
"file": "packages/room/src/index.ts",
|
|
21519
|
-
"line":
|
|
21676
|
+
"line": 2004,
|
|
21520
21677
|
"column": 9
|
|
21521
21678
|
}
|
|
21522
21679
|
},
|
|
@@ -21777,6 +21934,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21777
21934
|
"required": ["code"],
|
|
21778
21935
|
"additionalProperties": true
|
|
21779
21936
|
},
|
|
21937
|
+
{
|
|
21938
|
+
"type": "object",
|
|
21939
|
+
"properties": {
|
|
21940
|
+
"code": {
|
|
21941
|
+
"type": "string",
|
|
21942
|
+
"const": "attachment-invalid"
|
|
21943
|
+
},
|
|
21944
|
+
"message": { "type": "string" }
|
|
21945
|
+
},
|
|
21946
|
+
"required": ["code", "message"],
|
|
21947
|
+
"additionalProperties": true
|
|
21948
|
+
},
|
|
21780
21949
|
{
|
|
21781
21950
|
"type": "object",
|
|
21782
21951
|
"properties": { "code": {
|
|
@@ -21978,7 +22147,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21978
22147
|
},
|
|
21979
22148
|
sourceLocation: {
|
|
21980
22149
|
"file": "packages/room/src/index.ts",
|
|
21981
|
-
"line":
|
|
22150
|
+
"line": 2068,
|
|
21982
22151
|
"column": 9
|
|
21983
22152
|
}
|
|
21984
22153
|
},
|
|
@@ -22232,6 +22401,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22232
22401
|
"required": ["code"],
|
|
22233
22402
|
"additionalProperties": true
|
|
22234
22403
|
},
|
|
22404
|
+
{
|
|
22405
|
+
"type": "object",
|
|
22406
|
+
"properties": {
|
|
22407
|
+
"code": {
|
|
22408
|
+
"type": "string",
|
|
22409
|
+
"const": "attachment-invalid"
|
|
22410
|
+
},
|
|
22411
|
+
"message": { "type": "string" }
|
|
22412
|
+
},
|
|
22413
|
+
"required": ["code", "message"],
|
|
22414
|
+
"additionalProperties": true
|
|
22415
|
+
},
|
|
22235
22416
|
{
|
|
22236
22417
|
"type": "object",
|
|
22237
22418
|
"properties": { "code": {
|
|
@@ -22433,7 +22614,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22433
22614
|
},
|
|
22434
22615
|
sourceLocation: {
|
|
22435
22616
|
"file": "packages/room/src/index.ts",
|
|
22436
|
-
"line":
|
|
22617
|
+
"line": 2450,
|
|
22437
22618
|
"column": 9
|
|
22438
22619
|
}
|
|
22439
22620
|
},
|
|
@@ -22663,6 +22844,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22663
22844
|
"required": ["code"],
|
|
22664
22845
|
"additionalProperties": true
|
|
22665
22846
|
},
|
|
22847
|
+
{
|
|
22848
|
+
"type": "object",
|
|
22849
|
+
"properties": {
|
|
22850
|
+
"code": {
|
|
22851
|
+
"type": "string",
|
|
22852
|
+
"const": "attachment-invalid"
|
|
22853
|
+
},
|
|
22854
|
+
"message": { "type": "string" }
|
|
22855
|
+
},
|
|
22856
|
+
"required": ["code", "message"],
|
|
22857
|
+
"additionalProperties": true
|
|
22858
|
+
},
|
|
22666
22859
|
{
|
|
22667
22860
|
"type": "object",
|
|
22668
22861
|
"properties": { "code": {
|
|
@@ -22864,7 +23057,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22864
23057
|
},
|
|
22865
23058
|
sourceLocation: {
|
|
22866
23059
|
"file": "packages/room/src/index.ts",
|
|
22867
|
-
"line":
|
|
23060
|
+
"line": 2485,
|
|
22868
23061
|
"column": 9
|
|
22869
23062
|
}
|
|
22870
23063
|
},
|
|
@@ -23105,6 +23298,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
23105
23298
|
"required": ["code"],
|
|
23106
23299
|
"additionalProperties": true
|
|
23107
23300
|
},
|
|
23301
|
+
{
|
|
23302
|
+
"type": "object",
|
|
23303
|
+
"properties": {
|
|
23304
|
+
"code": {
|
|
23305
|
+
"type": "string",
|
|
23306
|
+
"const": "attachment-invalid"
|
|
23307
|
+
},
|
|
23308
|
+
"message": { "type": "string" }
|
|
23309
|
+
},
|
|
23310
|
+
"required": ["code", "message"],
|
|
23311
|
+
"additionalProperties": true
|
|
23312
|
+
},
|
|
23108
23313
|
{
|
|
23109
23314
|
"type": "object",
|
|
23110
23315
|
"properties": { "code": {
|
|
@@ -23306,7 +23511,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
23306
23511
|
},
|
|
23307
23512
|
sourceLocation: {
|
|
23308
23513
|
"file": "packages/room/src/index.ts",
|
|
23309
|
-
"line":
|
|
23514
|
+
"line": 2240,
|
|
23310
23515
|
"column": 9
|
|
23311
23516
|
}
|
|
23312
23517
|
},
|
|
@@ -23541,6 +23746,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
23541
23746
|
"required": ["code"],
|
|
23542
23747
|
"additionalProperties": true
|
|
23543
23748
|
},
|
|
23749
|
+
{
|
|
23750
|
+
"type": "object",
|
|
23751
|
+
"properties": {
|
|
23752
|
+
"code": {
|
|
23753
|
+
"type": "string",
|
|
23754
|
+
"const": "attachment-invalid"
|
|
23755
|
+
},
|
|
23756
|
+
"message": { "type": "string" }
|
|
23757
|
+
},
|
|
23758
|
+
"required": ["code", "message"],
|
|
23759
|
+
"additionalProperties": true
|
|
23760
|
+
},
|
|
23544
23761
|
{
|
|
23545
23762
|
"type": "object",
|
|
23546
23763
|
"properties": { "code": {
|
|
@@ -23742,7 +23959,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
23742
23959
|
},
|
|
23743
23960
|
sourceLocation: {
|
|
23744
23961
|
"file": "packages/room/src/index.ts",
|
|
23745
|
-
"line":
|
|
23962
|
+
"line": 2387,
|
|
23746
23963
|
"column": 9
|
|
23747
23964
|
}
|
|
23748
23965
|
},
|
|
@@ -23983,6 +24200,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
23983
24200
|
"required": ["code"],
|
|
23984
24201
|
"additionalProperties": true
|
|
23985
24202
|
},
|
|
24203
|
+
{
|
|
24204
|
+
"type": "object",
|
|
24205
|
+
"properties": {
|
|
24206
|
+
"code": {
|
|
24207
|
+
"type": "string",
|
|
24208
|
+
"const": "attachment-invalid"
|
|
24209
|
+
},
|
|
24210
|
+
"message": { "type": "string" }
|
|
24211
|
+
},
|
|
24212
|
+
"required": ["code", "message"],
|
|
24213
|
+
"additionalProperties": true
|
|
24214
|
+
},
|
|
23986
24215
|
{
|
|
23987
24216
|
"type": "object",
|
|
23988
24217
|
"properties": { "code": {
|
|
@@ -24184,7 +24413,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
24184
24413
|
},
|
|
24185
24414
|
sourceLocation: {
|
|
24186
24415
|
"file": "packages/room/src/index.ts",
|
|
24187
|
-
"line":
|
|
24416
|
+
"line": 2402,
|
|
24188
24417
|
"column": 9
|
|
24189
24418
|
}
|
|
24190
24419
|
},
|
|
@@ -24237,7 +24466,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
24237
24466
|
},
|
|
24238
24467
|
sourceLocation: {
|
|
24239
24468
|
"file": "packages/room/src/index.ts",
|
|
24240
|
-
"line":
|
|
24469
|
+
"line": 927,
|
|
24241
24470
|
"column": 9
|
|
24242
24471
|
}
|
|
24243
24472
|
},
|
|
@@ -24589,6 +24818,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
24589
24818
|
"required": ["code"],
|
|
24590
24819
|
"additionalProperties": true
|
|
24591
24820
|
},
|
|
24821
|
+
{
|
|
24822
|
+
"type": "object",
|
|
24823
|
+
"properties": {
|
|
24824
|
+
"code": {
|
|
24825
|
+
"type": "string",
|
|
24826
|
+
"const": "attachment-invalid"
|
|
24827
|
+
},
|
|
24828
|
+
"message": { "type": "string" }
|
|
24829
|
+
},
|
|
24830
|
+
"required": ["code", "message"],
|
|
24831
|
+
"additionalProperties": true
|
|
24832
|
+
},
|
|
24592
24833
|
{
|
|
24593
24834
|
"type": "object",
|
|
24594
24835
|
"properties": { "code": {
|
|
@@ -24790,17 +25031,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
24790
25031
|
},
|
|
24791
25032
|
sourceLocation: {
|
|
24792
25033
|
"file": "packages/room/src/index.ts",
|
|
24793
|
-
"line":
|
|
25034
|
+
"line": 1075,
|
|
24794
25035
|
"column": 3
|
|
24795
25036
|
}
|
|
24796
25037
|
},
|
|
24797
25038
|
"room/isRoom": {
|
|
24798
25039
|
service: "room",
|
|
24799
|
-
description: "Probe whether a session is a room: replay its event log looking for the `room/created` marker. Side-effect-free: a cold session answers from a persistence inspection, so opening any session never resumes its agent.",
|
|
24800
25040
|
invocation: { kind: "direct" },
|
|
24801
25041
|
parameters: [{
|
|
24802
25042
|
name: "request",
|
|
24803
|
-
description: "session identity.",
|
|
24804
25043
|
source: "json",
|
|
24805
25044
|
codec: {
|
|
24806
25045
|
mode: "strict",
|
|
@@ -24838,12 +25077,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
24838
25077
|
typeSymbol: "@khorsheed/dsh-room#room/isRoom:result",
|
|
24839
25078
|
create: _khorsheed_dsh_room_room_isRoom_result$schema,
|
|
24840
25079
|
schema: _khorsheed_dsh_room_room_isRoom_result$schema(),
|
|
24841
|
-
description: "true when the session carries the marker (false for unknown sessions too).",
|
|
24842
25080
|
jsonSchema: { "type": "boolean" }
|
|
24843
25081
|
},
|
|
24844
25082
|
sourceLocation: {
|
|
24845
25083
|
"file": "packages/room/src/index.ts",
|
|
24846
|
-
"line":
|
|
25084
|
+
"line": 587,
|
|
24847
25085
|
"column": 9
|
|
24848
25086
|
}
|
|
24849
25087
|
},
|
|
@@ -25078,6 +25316,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25078
25316
|
"required": ["code"],
|
|
25079
25317
|
"additionalProperties": true
|
|
25080
25318
|
},
|
|
25319
|
+
{
|
|
25320
|
+
"type": "object",
|
|
25321
|
+
"properties": {
|
|
25322
|
+
"code": {
|
|
25323
|
+
"type": "string",
|
|
25324
|
+
"const": "attachment-invalid"
|
|
25325
|
+
},
|
|
25326
|
+
"message": { "type": "string" }
|
|
25327
|
+
},
|
|
25328
|
+
"required": ["code", "message"],
|
|
25329
|
+
"additionalProperties": true
|
|
25330
|
+
},
|
|
25081
25331
|
{
|
|
25082
25332
|
"type": "object",
|
|
25083
25333
|
"properties": { "code": {
|
|
@@ -25279,7 +25529,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25279
25529
|
},
|
|
25280
25530
|
sourceLocation: {
|
|
25281
25531
|
"file": "packages/room/src/index.ts",
|
|
25282
|
-
"line":
|
|
25532
|
+
"line": 2353,
|
|
25283
25533
|
"column": 9
|
|
25284
25534
|
}
|
|
25285
25535
|
},
|
|
@@ -25391,7 +25641,73 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25391
25641
|
},
|
|
25392
25642
|
sourceLocation: {
|
|
25393
25643
|
"file": "packages/room/src/index.ts",
|
|
25394
|
-
"line":
|
|
25644
|
+
"line": 636,
|
|
25645
|
+
"column": 9
|
|
25646
|
+
}
|
|
25647
|
+
},
|
|
25648
|
+
"room/pendingCards": {
|
|
25649
|
+
service: "room",
|
|
25650
|
+
description: "The question/approval cards waiting for the human across live rooms — the browser publishes them as the session list's 等你处理 status.",
|
|
25651
|
+
invocation: { kind: "direct" },
|
|
25652
|
+
parameters: [{
|
|
25653
|
+
name: "request",
|
|
25654
|
+
description: "optionally one room only.",
|
|
25655
|
+
source: "json",
|
|
25656
|
+
codec: {
|
|
25657
|
+
mode: "strict",
|
|
25658
|
+
typeSymbol: "@khorsheed/dsh-room/types#RoomPendingCardsRequest",
|
|
25659
|
+
create: _khorsheed_dsh_room_room_pendingCards_parameter_0$schema,
|
|
25660
|
+
schema: _khorsheed_dsh_room_room_pendingCards_parameter_0$schema(),
|
|
25661
|
+
jsonSchema: {
|
|
25662
|
+
"type": "object",
|
|
25663
|
+
"properties": { "sessionId": { "type": "string" } },
|
|
25664
|
+
"required": [],
|
|
25665
|
+
"additionalProperties": true
|
|
25666
|
+
}
|
|
25667
|
+
},
|
|
25668
|
+
strictCodec: {
|
|
25669
|
+
mode: "strict",
|
|
25670
|
+
typeSymbol: "@khorsheed/dsh-room/types#RoomPendingCardsRequest",
|
|
25671
|
+
create: _khorsheed_dsh_room_room_pendingCards_parameter_0_strict$schema,
|
|
25672
|
+
schema: _khorsheed_dsh_room_room_pendingCards_parameter_0_strict$schema(),
|
|
25673
|
+
jsonSchema: {
|
|
25674
|
+
"type": "object",
|
|
25675
|
+
"properties": { "sessionId": { "type": "string" } },
|
|
25676
|
+
"required": [],
|
|
25677
|
+
"additionalProperties": false
|
|
25678
|
+
}
|
|
25679
|
+
}
|
|
25680
|
+
}],
|
|
25681
|
+
result: {
|
|
25682
|
+
mode: "strict",
|
|
25683
|
+
typeSymbol: "@khorsheed/dsh-room#room/pendingCards:result",
|
|
25684
|
+
create: _khorsheed_dsh_room_room_pendingCards_result$schema,
|
|
25685
|
+
schema: _khorsheed_dsh_room_room_pendingCards_result$schema(),
|
|
25686
|
+
description: "the waiting cards.",
|
|
25687
|
+
jsonSchema: {
|
|
25688
|
+
"type": "array",
|
|
25689
|
+
"items": {
|
|
25690
|
+
"type": "object",
|
|
25691
|
+
"properties": {
|
|
25692
|
+
"sessionId": { "type": "string" },
|
|
25693
|
+
"id": { "type": "string" },
|
|
25694
|
+
"kind": {
|
|
25695
|
+
"type": "string",
|
|
25696
|
+
"enum": ["approval", "question"]
|
|
25697
|
+
}
|
|
25698
|
+
},
|
|
25699
|
+
"required": [
|
|
25700
|
+
"sessionId",
|
|
25701
|
+
"id",
|
|
25702
|
+
"kind"
|
|
25703
|
+
],
|
|
25704
|
+
"additionalProperties": true
|
|
25705
|
+
}
|
|
25706
|
+
}
|
|
25707
|
+
},
|
|
25708
|
+
sourceLocation: {
|
|
25709
|
+
"file": "packages/room/src/index.ts",
|
|
25710
|
+
"line": 581,
|
|
25395
25711
|
"column": 9
|
|
25396
25712
|
}
|
|
25397
25713
|
},
|
|
@@ -25461,7 +25777,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25461
25777
|
},
|
|
25462
25778
|
sourceLocation: {
|
|
25463
25779
|
"file": "packages/room/src/index.ts",
|
|
25464
|
-
"line":
|
|
25780
|
+
"line": 1904,
|
|
25465
25781
|
"column": 9
|
|
25466
25782
|
}
|
|
25467
25783
|
},
|
|
@@ -25498,6 +25814,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25498
25814
|
"task": {
|
|
25499
25815
|
"type": "string",
|
|
25500
25816
|
"description": "The composer's task tag: `new` or a task root id (see RoomSetTaskHintRequest)."
|
|
25817
|
+
},
|
|
25818
|
+
"attachments": {
|
|
25819
|
+
"type": "array",
|
|
25820
|
+
"items": { "oneOf": [{
|
|
25821
|
+
"type": "object",
|
|
25822
|
+
"properties": {
|
|
25823
|
+
"type": {
|
|
25824
|
+
"type": "string",
|
|
25825
|
+
"const": "image"
|
|
25826
|
+
},
|
|
25827
|
+
"data": { "type": "string" },
|
|
25828
|
+
"mediaType": { "type": "string" },
|
|
25829
|
+
"name": { "type": "string" }
|
|
25830
|
+
},
|
|
25831
|
+
"required": [
|
|
25832
|
+
"type",
|
|
25833
|
+
"data",
|
|
25834
|
+
"mediaType"
|
|
25835
|
+
],
|
|
25836
|
+
"additionalProperties": true
|
|
25837
|
+
}, {
|
|
25838
|
+
"type": "object",
|
|
25839
|
+
"properties": {
|
|
25840
|
+
"type": {
|
|
25841
|
+
"type": "string",
|
|
25842
|
+
"const": "file"
|
|
25843
|
+
},
|
|
25844
|
+
"receiptId": { "type": "string" }
|
|
25845
|
+
},
|
|
25846
|
+
"required": ["type", "receiptId"],
|
|
25847
|
+
"additionalProperties": true
|
|
25848
|
+
}] },
|
|
25849
|
+
"description": "Draft attachments in the official composer's wire form: an image's base64 bytes, or a file's upload receipt (uploaded to this room session on pick). The host admits them into the human message; members get them by local path."
|
|
25501
25850
|
}
|
|
25502
25851
|
},
|
|
25503
25852
|
"required": ["sessionId", "text"],
|
|
@@ -25529,14 +25878,47 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25529
25878
|
"task": {
|
|
25530
25879
|
"type": "string",
|
|
25531
25880
|
"description": "The composer's task tag: `new` or a task root id (see RoomSetTaskHintRequest)."
|
|
25532
|
-
}
|
|
25533
|
-
|
|
25534
|
-
|
|
25535
|
-
|
|
25536
|
-
|
|
25537
|
-
|
|
25538
|
-
|
|
25539
|
-
|
|
25881
|
+
},
|
|
25882
|
+
"attachments": {
|
|
25883
|
+
"type": "array",
|
|
25884
|
+
"items": { "oneOf": [{
|
|
25885
|
+
"type": "object",
|
|
25886
|
+
"properties": {
|
|
25887
|
+
"type": {
|
|
25888
|
+
"type": "string",
|
|
25889
|
+
"const": "image"
|
|
25890
|
+
},
|
|
25891
|
+
"data": { "type": "string" },
|
|
25892
|
+
"mediaType": { "type": "string" },
|
|
25893
|
+
"name": { "type": "string" }
|
|
25894
|
+
},
|
|
25895
|
+
"required": [
|
|
25896
|
+
"type",
|
|
25897
|
+
"data",
|
|
25898
|
+
"mediaType"
|
|
25899
|
+
],
|
|
25900
|
+
"additionalProperties": false
|
|
25901
|
+
}, {
|
|
25902
|
+
"type": "object",
|
|
25903
|
+
"properties": {
|
|
25904
|
+
"type": {
|
|
25905
|
+
"type": "string",
|
|
25906
|
+
"const": "file"
|
|
25907
|
+
},
|
|
25908
|
+
"receiptId": { "type": "string" }
|
|
25909
|
+
},
|
|
25910
|
+
"required": ["type", "receiptId"],
|
|
25911
|
+
"additionalProperties": false
|
|
25912
|
+
}] },
|
|
25913
|
+
"description": "Draft attachments in the official composer's wire form: an image's base64 bytes, or a file's upload receipt (uploaded to this room session on pick). The host admits them into the human message; members get them by local path."
|
|
25914
|
+
}
|
|
25915
|
+
},
|
|
25916
|
+
"required": ["sessionId", "text"],
|
|
25917
|
+
"additionalProperties": false
|
|
25918
|
+
}
|
|
25919
|
+
}
|
|
25920
|
+
}],
|
|
25921
|
+
result: {
|
|
25540
25922
|
mode: "strict",
|
|
25541
25923
|
typeSymbol: "@khorsheed/dsh-room/types#RoomPostMessageResult",
|
|
25542
25924
|
create: _khorsheed_dsh_room_room_postMessage_result$schema,
|
|
@@ -25743,6 +26125,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25743
26125
|
"required": ["code"],
|
|
25744
26126
|
"additionalProperties": true
|
|
25745
26127
|
},
|
|
26128
|
+
{
|
|
26129
|
+
"type": "object",
|
|
26130
|
+
"properties": {
|
|
26131
|
+
"code": {
|
|
26132
|
+
"type": "string",
|
|
26133
|
+
"const": "attachment-invalid"
|
|
26134
|
+
},
|
|
26135
|
+
"message": { "type": "string" }
|
|
26136
|
+
},
|
|
26137
|
+
"required": ["code", "message"],
|
|
26138
|
+
"additionalProperties": true
|
|
26139
|
+
},
|
|
25746
26140
|
{
|
|
25747
26141
|
"type": "object",
|
|
25748
26142
|
"properties": { "code": {
|
|
@@ -25944,7 +26338,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
25944
26338
|
},
|
|
25945
26339
|
sourceLocation: {
|
|
25946
26340
|
"file": "packages/room/src/index.ts",
|
|
25947
|
-
"line":
|
|
26341
|
+
"line": 1353,
|
|
25948
26342
|
"column": 9
|
|
25949
26343
|
}
|
|
25950
26344
|
},
|
|
@@ -26171,6 +26565,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
26171
26565
|
"required": ["code"],
|
|
26172
26566
|
"additionalProperties": true
|
|
26173
26567
|
},
|
|
26568
|
+
{
|
|
26569
|
+
"type": "object",
|
|
26570
|
+
"properties": {
|
|
26571
|
+
"code": {
|
|
26572
|
+
"type": "string",
|
|
26573
|
+
"const": "attachment-invalid"
|
|
26574
|
+
},
|
|
26575
|
+
"message": { "type": "string" }
|
|
26576
|
+
},
|
|
26577
|
+
"required": ["code", "message"],
|
|
26578
|
+
"additionalProperties": true
|
|
26579
|
+
},
|
|
26174
26580
|
{
|
|
26175
26581
|
"type": "object",
|
|
26176
26582
|
"properties": { "code": {
|
|
@@ -26372,7 +26778,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
26372
26778
|
},
|
|
26373
26779
|
sourceLocation: {
|
|
26374
26780
|
"file": "packages/room/src/index.ts",
|
|
26375
|
-
"line":
|
|
26781
|
+
"line": 1153,
|
|
26376
26782
|
"column": 9
|
|
26377
26783
|
}
|
|
26378
26784
|
},
|
|
@@ -26611,6 +27017,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
26611
27017
|
"required": ["code"],
|
|
26612
27018
|
"additionalProperties": true
|
|
26613
27019
|
},
|
|
27020
|
+
{
|
|
27021
|
+
"type": "object",
|
|
27022
|
+
"properties": {
|
|
27023
|
+
"code": {
|
|
27024
|
+
"type": "string",
|
|
27025
|
+
"const": "attachment-invalid"
|
|
27026
|
+
},
|
|
27027
|
+
"message": { "type": "string" }
|
|
27028
|
+
},
|
|
27029
|
+
"required": ["code", "message"],
|
|
27030
|
+
"additionalProperties": true
|
|
27031
|
+
},
|
|
26614
27032
|
{
|
|
26615
27033
|
"type": "object",
|
|
26616
27034
|
"properties": { "code": {
|
|
@@ -26812,7 +27230,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
26812
27230
|
},
|
|
26813
27231
|
sourceLocation: {
|
|
26814
27232
|
"file": "packages/room/src/index.ts",
|
|
26815
|
-
"line":
|
|
27233
|
+
"line": 1179,
|
|
26816
27234
|
"column": 9
|
|
26817
27235
|
}
|
|
26818
27236
|
},
|
|
@@ -27041,6 +27459,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27041
27459
|
"required": ["code"],
|
|
27042
27460
|
"additionalProperties": true
|
|
27043
27461
|
},
|
|
27462
|
+
{
|
|
27463
|
+
"type": "object",
|
|
27464
|
+
"properties": {
|
|
27465
|
+
"code": {
|
|
27466
|
+
"type": "string",
|
|
27467
|
+
"const": "attachment-invalid"
|
|
27468
|
+
},
|
|
27469
|
+
"message": { "type": "string" }
|
|
27470
|
+
},
|
|
27471
|
+
"required": ["code", "message"],
|
|
27472
|
+
"additionalProperties": true
|
|
27473
|
+
},
|
|
27044
27474
|
{
|
|
27045
27475
|
"type": "object",
|
|
27046
27476
|
"properties": { "code": {
|
|
@@ -27242,7 +27672,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27242
27672
|
},
|
|
27243
27673
|
sourceLocation: {
|
|
27244
27674
|
"file": "packages/room/src/index.ts",
|
|
27245
|
-
"line":
|
|
27675
|
+
"line": 2285,
|
|
27246
27676
|
"column": 9
|
|
27247
27677
|
}
|
|
27248
27678
|
},
|
|
@@ -27503,6 +27933,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27503
27933
|
"required": ["code"],
|
|
27504
27934
|
"additionalProperties": true
|
|
27505
27935
|
},
|
|
27936
|
+
{
|
|
27937
|
+
"type": "object",
|
|
27938
|
+
"properties": {
|
|
27939
|
+
"code": {
|
|
27940
|
+
"type": "string",
|
|
27941
|
+
"const": "attachment-invalid"
|
|
27942
|
+
},
|
|
27943
|
+
"message": { "type": "string" }
|
|
27944
|
+
},
|
|
27945
|
+
"required": ["code", "message"],
|
|
27946
|
+
"additionalProperties": true
|
|
27947
|
+
},
|
|
27506
27948
|
{
|
|
27507
27949
|
"type": "object",
|
|
27508
27950
|
"properties": { "code": {
|
|
@@ -27704,7 +28146,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27704
28146
|
},
|
|
27705
28147
|
sourceLocation: {
|
|
27706
28148
|
"file": "packages/room/src/index.ts",
|
|
27707
|
-
"line":
|
|
28149
|
+
"line": 1264,
|
|
27708
28150
|
"column": 9
|
|
27709
28151
|
}
|
|
27710
28152
|
},
|
|
@@ -27933,6 +28375,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27933
28375
|
"required": ["code"],
|
|
27934
28376
|
"additionalProperties": true
|
|
27935
28377
|
},
|
|
28378
|
+
{
|
|
28379
|
+
"type": "object",
|
|
28380
|
+
"properties": {
|
|
28381
|
+
"code": {
|
|
28382
|
+
"type": "string",
|
|
28383
|
+
"const": "attachment-invalid"
|
|
28384
|
+
},
|
|
28385
|
+
"message": { "type": "string" }
|
|
28386
|
+
},
|
|
28387
|
+
"required": ["code", "message"],
|
|
28388
|
+
"additionalProperties": true
|
|
28389
|
+
},
|
|
27936
28390
|
{
|
|
27937
28391
|
"type": "object",
|
|
27938
28392
|
"properties": { "code": {
|
|
@@ -28134,7 +28588,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28134
28588
|
},
|
|
28135
28589
|
sourceLocation: {
|
|
28136
28590
|
"file": "packages/room/src/index.ts",
|
|
28137
|
-
"line":
|
|
28591
|
+
"line": 1303,
|
|
28138
28592
|
"column": 9
|
|
28139
28593
|
}
|
|
28140
28594
|
},
|
|
@@ -28386,6 +28840,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28386
28840
|
"required": ["code"],
|
|
28387
28841
|
"additionalProperties": true
|
|
28388
28842
|
},
|
|
28843
|
+
{
|
|
28844
|
+
"type": "object",
|
|
28845
|
+
"properties": {
|
|
28846
|
+
"code": {
|
|
28847
|
+
"type": "string",
|
|
28848
|
+
"const": "attachment-invalid"
|
|
28849
|
+
},
|
|
28850
|
+
"message": { "type": "string" }
|
|
28851
|
+
},
|
|
28852
|
+
"required": ["code", "message"],
|
|
28853
|
+
"additionalProperties": true
|
|
28854
|
+
},
|
|
28389
28855
|
{
|
|
28390
28856
|
"type": "object",
|
|
28391
28857
|
"properties": { "code": {
|
|
@@ -28587,7 +29053,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28587
29053
|
},
|
|
28588
29054
|
sourceLocation: {
|
|
28589
29055
|
"file": "packages/room/src/index.ts",
|
|
28590
|
-
"line":
|
|
29056
|
+
"line": 1196,
|
|
28591
29057
|
"column": 9
|
|
28592
29058
|
}
|
|
28593
29059
|
},
|
|
@@ -28828,6 +29294,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28828
29294
|
"required": ["code"],
|
|
28829
29295
|
"additionalProperties": true
|
|
28830
29296
|
},
|
|
29297
|
+
{
|
|
29298
|
+
"type": "object",
|
|
29299
|
+
"properties": {
|
|
29300
|
+
"code": {
|
|
29301
|
+
"type": "string",
|
|
29302
|
+
"const": "attachment-invalid"
|
|
29303
|
+
},
|
|
29304
|
+
"message": { "type": "string" }
|
|
29305
|
+
},
|
|
29306
|
+
"required": ["code", "message"],
|
|
29307
|
+
"additionalProperties": true
|
|
29308
|
+
},
|
|
28831
29309
|
{
|
|
28832
29310
|
"type": "object",
|
|
28833
29311
|
"properties": { "code": {
|
|
@@ -29029,7 +29507,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
29029
29507
|
},
|
|
29030
29508
|
sourceLocation: {
|
|
29031
29509
|
"file": "packages/room/src/index.ts",
|
|
29032
|
-
"line":
|
|
29510
|
+
"line": 2431,
|
|
29033
29511
|
"column": 9
|
|
29034
29512
|
}
|
|
29035
29513
|
},
|
|
@@ -29320,6 +29798,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
29320
29798
|
"required": ["code"],
|
|
29321
29799
|
"additionalProperties": true
|
|
29322
29800
|
},
|
|
29801
|
+
{
|
|
29802
|
+
"type": "object",
|
|
29803
|
+
"properties": {
|
|
29804
|
+
"code": {
|
|
29805
|
+
"type": "string",
|
|
29806
|
+
"const": "attachment-invalid"
|
|
29807
|
+
},
|
|
29808
|
+
"message": { "type": "string" }
|
|
29809
|
+
},
|
|
29810
|
+
"required": ["code", "message"],
|
|
29811
|
+
"additionalProperties": true
|
|
29812
|
+
},
|
|
29323
29813
|
{
|
|
29324
29814
|
"type": "object",
|
|
29325
29815
|
"properties": { "code": {
|
|
@@ -29521,7 +30011,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
29521
30011
|
},
|
|
29522
30012
|
sourceLocation: {
|
|
29523
30013
|
"file": "packages/room/src/index.ts",
|
|
29524
|
-
"line":
|
|
30014
|
+
"line": 2301,
|
|
29525
30015
|
"column": 9
|
|
29526
30016
|
}
|
|
29527
30017
|
},
|
|
@@ -29594,7 +30084,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
29594
30084
|
},
|
|
29595
30085
|
sourceLocation: {
|
|
29596
30086
|
"file": "packages/room/src/index.ts",
|
|
29597
|
-
"line":
|
|
30087
|
+
"line": 742,
|
|
29598
30088
|
"column": 9
|
|
29599
30089
|
}
|
|
29600
30090
|
},
|
|
@@ -29829,6 +30319,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
29829
30319
|
"required": ["code"],
|
|
29830
30320
|
"additionalProperties": true
|
|
29831
30321
|
},
|
|
30322
|
+
{
|
|
30323
|
+
"type": "object",
|
|
30324
|
+
"properties": {
|
|
30325
|
+
"code": {
|
|
30326
|
+
"type": "string",
|
|
30327
|
+
"const": "attachment-invalid"
|
|
30328
|
+
},
|
|
30329
|
+
"message": { "type": "string" }
|
|
30330
|
+
},
|
|
30331
|
+
"required": ["code", "message"],
|
|
30332
|
+
"additionalProperties": true
|
|
30333
|
+
},
|
|
29832
30334
|
{
|
|
29833
30335
|
"type": "object",
|
|
29834
30336
|
"properties": { "code": {
|
|
@@ -30030,7 +30532,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
30030
30532
|
},
|
|
30031
30533
|
sourceLocation: {
|
|
30032
30534
|
"file": "packages/room/src/index.ts",
|
|
30033
|
-
"line":
|
|
30535
|
+
"line": 757,
|
|
30034
30536
|
"column": 9
|
|
30035
30537
|
}
|
|
30036
30538
|
},
|
|
@@ -30265,6 +30767,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
30265
30767
|
"required": ["code"],
|
|
30266
30768
|
"additionalProperties": true
|
|
30267
30769
|
},
|
|
30770
|
+
{
|
|
30771
|
+
"type": "object",
|
|
30772
|
+
"properties": {
|
|
30773
|
+
"code": {
|
|
30774
|
+
"type": "string",
|
|
30775
|
+
"const": "attachment-invalid"
|
|
30776
|
+
},
|
|
30777
|
+
"message": { "type": "string" }
|
|
30778
|
+
},
|
|
30779
|
+
"required": ["code", "message"],
|
|
30780
|
+
"additionalProperties": true
|
|
30781
|
+
},
|
|
30268
30782
|
{
|
|
30269
30783
|
"type": "object",
|
|
30270
30784
|
"properties": { "code": {
|
|
@@ -30466,7 +30980,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
30466
30980
|
},
|
|
30467
30981
|
sourceLocation: {
|
|
30468
30982
|
"file": "packages/room/src/index.ts",
|
|
30469
|
-
"line":
|
|
30983
|
+
"line": 2372,
|
|
30470
30984
|
"column": 9
|
|
30471
30985
|
}
|
|
30472
30986
|
},
|
|
@@ -30785,6 +31299,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
30785
31299
|
"required": ["code"],
|
|
30786
31300
|
"additionalProperties": true
|
|
30787
31301
|
},
|
|
31302
|
+
{
|
|
31303
|
+
"type": "object",
|
|
31304
|
+
"properties": {
|
|
31305
|
+
"code": {
|
|
31306
|
+
"type": "string",
|
|
31307
|
+
"const": "attachment-invalid"
|
|
31308
|
+
},
|
|
31309
|
+
"message": { "type": "string" }
|
|
31310
|
+
},
|
|
31311
|
+
"required": ["code", "message"],
|
|
31312
|
+
"additionalProperties": true
|
|
31313
|
+
},
|
|
30788
31314
|
{
|
|
30789
31315
|
"type": "object",
|
|
30790
31316
|
"properties": { "code": {
|
|
@@ -30986,14 +31512,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
30986
31512
|
},
|
|
30987
31513
|
sourceLocation: {
|
|
30988
31514
|
"file": "packages/room/src/index.ts",
|
|
30989
|
-
"line":
|
|
31515
|
+
"line": 1098,
|
|
30990
31516
|
"column": 9
|
|
30991
31517
|
}
|
|
30992
31518
|
}
|
|
30993
31519
|
}
|
|
30994
31520
|
}, external_exports);
|
|
30995
31521
|
//#endregion
|
|
30996
|
-
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-agent-preset-registry@0.2.1-rc.
|
|
31522
|
+
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-agent-preset-registry@0.2.1-rc.3_f0b1e46d03a32439f6304e29d5883ea2/node_modules/@deepseek-ai/dsh-agent-preset-registry/lib/types/display.js
|
|
30997
31523
|
/**
|
|
30998
31524
|
* Display resolution for roster presets, shared by every surface that renders
|
|
30999
31525
|
* preset names: shipped presets resolve through locale dictionary keys, and
|
|
@@ -31072,6 +31598,68 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31072
31598
|
}
|
|
31073
31599
|
};
|
|
31074
31600
|
//#endregion
|
|
31601
|
+
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-util-workspace-path@0.2.1-rc.3_@deepseek-ai+cordis@4.0.4/node_modules/@deepseek-ai/dsh-util-workspace-path/lib/index.js
|
|
31602
|
+
/**
|
|
31603
|
+
* The `dsh-resource://file/…` address grammar: how a file is named across the
|
|
31604
|
+
* Sidebar and the resource model, built and parsed without touching a
|
|
31605
|
+
* filesystem.
|
|
31606
|
+
* @module
|
|
31607
|
+
*/
|
|
31608
|
+
/** The scheme and type every file address opens with. */
|
|
31609
|
+
const FILE_ADDRESS_PREFIX = "dsh-resource://file/";
|
|
31610
|
+
/** Component-encode one id or path segment, keeping `:` literal for drive letters. */
|
|
31611
|
+
function encodeSegment(segment) {
|
|
31612
|
+
return encodeURIComponent(segment).replace(/%3A/gi, ":");
|
|
31613
|
+
}
|
|
31614
|
+
/** Encode a `/`-separated path segment by segment. */
|
|
31615
|
+
function encodePath(path) {
|
|
31616
|
+
return path.split("/").map(encodeSegment).join("/");
|
|
31617
|
+
}
|
|
31618
|
+
/**
|
|
31619
|
+
* Build the address of a file read through one Session.
|
|
31620
|
+
* @param sessionId - the Session whose Host workspace resolves the path.
|
|
31621
|
+
* @param path - absolute or workspace-relative path; backslashes are normalized to `/`, and leading `./` prefixes are dropped.
|
|
31622
|
+
* @returns the `dsh-resource://file/session/<sessionId>/<path>` address.
|
|
31623
|
+
*/
|
|
31624
|
+
function sessionFileAddress(sessionId, path) {
|
|
31625
|
+
const normalized = path.replace(/\\/g, "/").replace(/^(?:\.\/)+/, "");
|
|
31626
|
+
return `${FILE_ADDRESS_PREFIX}session/${encodeSegment(sessionId)}/${encodePath(normalized)}`;
|
|
31627
|
+
}
|
|
31628
|
+
/**
|
|
31629
|
+
* Browser-safe Workspace path and display helpers.
|
|
31630
|
+
* @module @deepseek-ai/dsh-util-workspace-path
|
|
31631
|
+
*/
|
|
31632
|
+
/** Whether a path uses a Windows drive or UNC prefix. */
|
|
31633
|
+
function isWindowsStylePath(value) {
|
|
31634
|
+
return /^[A-Za-z]:[/\\]/.test(value) || value.startsWith("\\\\");
|
|
31635
|
+
}
|
|
31636
|
+
/**
|
|
31637
|
+
* Whether a path is absolute in either spelling the Host accepts: POSIX (`/a/b`) or Windows drive or UNC.
|
|
31638
|
+
* @param path - the path to classify.
|
|
31639
|
+
* @returns `true` for an absolute path; `false` for a Workspace-relative one.
|
|
31640
|
+
*/
|
|
31641
|
+
function isAbsoluteWorkspacePath(path) {
|
|
31642
|
+
return path.startsWith("/") || isWindowsStylePath(path);
|
|
31643
|
+
}
|
|
31644
|
+
/**
|
|
31645
|
+
* The address for a path as a caller holds it: a relative path, or an absolute
|
|
31646
|
+
* path inside the Session's workspace, becomes a `session`-scoped address; an
|
|
31647
|
+
* absolute path outside it, or one whose workspace root is unknown, keeps its
|
|
31648
|
+
* absolute path in that Session's address.
|
|
31649
|
+
* @param sessionId - the Session the path is read in.
|
|
31650
|
+
* @param cwd - that Session's workspace root, when known.
|
|
31651
|
+
* @param path - absolute or workspace-relative path, in either separator spelling.
|
|
31652
|
+
* @returns the `dsh-resource://file/…` address.
|
|
31653
|
+
*/
|
|
31654
|
+
function fileAddressFor(sessionId, cwd, path) {
|
|
31655
|
+
const normalized = path.replace(/\\/g, "/");
|
|
31656
|
+
if (!isAbsoluteWorkspacePath(normalized)) return sessionFileAddress(sessionId, normalized);
|
|
31657
|
+
const root = cwd === void 0 ? "" : cwd.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
31658
|
+
if (root !== "" && normalized === root) return sessionFileAddress(sessionId, "");
|
|
31659
|
+
if (root !== "" && normalized.startsWith(`${root}/`)) return sessionFileAddress(sessionId, normalized.slice(root.length + 1));
|
|
31660
|
+
return sessionFileAddress(sessionId, normalized);
|
|
31661
|
+
}
|
|
31662
|
+
//#endregion
|
|
31075
31663
|
//#region src/client/locales.ts
|
|
31076
31664
|
/** `room` namespace dictionaries. */
|
|
31077
31665
|
/** Simplified Chinese dictionary (the key-set source of truth). */
|
|
@@ -31169,6 +31757,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31169
31757
|
"composer.stop": "停止生成",
|
|
31170
31758
|
"composer.error.unknownTargets": "未知成员:{names}",
|
|
31171
31759
|
"composer.error.generic": "发送失败,请重试",
|
|
31760
|
+
"composer.interrupted": "{count} 位成员被重启打断:{names}",
|
|
31761
|
+
"composer.continueAll": "全部继续",
|
|
31762
|
+
"composer.continueText": "继续",
|
|
31763
|
+
"composer.error.attachment": "附件没能发送:{reason}",
|
|
31764
|
+
"attach.add": "添加图片或文件",
|
|
31765
|
+
"attach.remove": "移除 {name}",
|
|
31766
|
+
"attach.uploading": "上传中…",
|
|
31767
|
+
"attach.failed": "上传失败,点击重试",
|
|
31768
|
+
"attach.retry": "重新上传 {name}",
|
|
31769
|
+
"attach.open": "查看原图 {name}",
|
|
31770
|
+
"attach.preview": "原图预览",
|
|
31771
|
+
"attach.closePreview": "关闭原图预览",
|
|
31772
|
+
"attach.drop": "松开即可添加到消息",
|
|
31773
|
+
"attach.unsupported": "仅支持 PNG、JPG、WebP、GIF 格式的图片",
|
|
31172
31774
|
"composer.model.picker": "DSH 模型",
|
|
31173
31775
|
"composer.model.select": "选择模型",
|
|
31174
31776
|
"composer.model.loading": "正在加载模型…",
|
|
@@ -31207,6 +31809,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31207
31809
|
"usage.output": "输出",
|
|
31208
31810
|
"usage.duration": "耗时",
|
|
31209
31811
|
"run.working": "{member} 正在工作…",
|
|
31812
|
+
"run.waiting": "{member} 在等你回答",
|
|
31210
31813
|
"run.failed": "{member} 运行失败",
|
|
31211
31814
|
"run.stop": "停止",
|
|
31212
31815
|
"run.durationUnknown": "耗时未知",
|
|
@@ -31424,6 +32027,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31424
32027
|
"job.status.stopped": "已停止",
|
|
31425
32028
|
"job.elapsed": "用时 {time}",
|
|
31426
32029
|
"job.you": "你:",
|
|
32030
|
+
"job.from": "{name}:",
|
|
31427
32031
|
"job.by.human": "你指定的",
|
|
31428
32032
|
"job.by.coordinator": "协调者归入",
|
|
31429
32033
|
"job.by.model": "决策模型归入 · {probability}",
|
|
@@ -31509,12 +32113,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31509
32113
|
"decision.rule.failure": "成员没有正常完成",
|
|
31510
32114
|
"decision.rule.last": "最后一个结果",
|
|
31511
32115
|
"question.title": "{member} 问你",
|
|
32116
|
+
"question.waiting": "{member} 在等你回答",
|
|
32117
|
+
"question.asked": "问你",
|
|
32118
|
+
"question.midRound": "提问于这一轮中途",
|
|
32119
|
+
"question.capsule": "{member} 等你回答 ↑",
|
|
31512
32120
|
"question.other": "其他",
|
|
31513
32121
|
"question.otherPlaceholder": "写下你的回答…",
|
|
31514
32122
|
"question.submit": "提交回答",
|
|
31515
32123
|
"question.multi": "可多选",
|
|
31516
32124
|
"question.answered": "已回答",
|
|
31517
32125
|
"question.cancelled": "已过期,未作答",
|
|
32126
|
+
"question.lateOpen": "已过期,仍可回答",
|
|
32127
|
+
"question.answeredLate": "已补答",
|
|
31518
32128
|
"question.answer": "你的回答:{answer}",
|
|
31519
32129
|
"question.expired": "这组问题已经结束了",
|
|
31520
32130
|
"invite.modelLabel": "模型",
|
|
@@ -31615,6 +32225,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31615
32225
|
"composer.stop": "Stop generating",
|
|
31616
32226
|
"composer.error.unknownTargets": "Unknown members: {names}",
|
|
31617
32227
|
"composer.error.generic": "Could not send; please retry",
|
|
32228
|
+
"composer.interrupted": "{count} member(s) interrupted by a restart: {names}",
|
|
32229
|
+
"composer.continueAll": "Continue all",
|
|
32230
|
+
"composer.continueText": "Continue",
|
|
32231
|
+
"composer.error.attachment": "An attachment could not be sent: {reason}",
|
|
32232
|
+
"attach.add": "Add images or files",
|
|
32233
|
+
"attach.remove": "Remove {name}",
|
|
32234
|
+
"attach.uploading": "Uploading…",
|
|
32235
|
+
"attach.failed": "Upload failed — click to retry",
|
|
32236
|
+
"attach.retry": "Upload {name} again",
|
|
32237
|
+
"attach.open": "View the original of {name}",
|
|
32238
|
+
"attach.preview": "Original image",
|
|
32239
|
+
"attach.closePreview": "Close the original image",
|
|
32240
|
+
"attach.drop": "Drop to add to the message",
|
|
32241
|
+
"attach.unsupported": "Only PNG, JPG, WebP and GIF images are supported",
|
|
31618
32242
|
"composer.model.picker": "Main agent model",
|
|
31619
32243
|
"composer.model.select": "Select model",
|
|
31620
32244
|
"composer.model.loading": "Loading models…",
|
|
@@ -31653,6 +32277,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31653
32277
|
"usage.output": "Output",
|
|
31654
32278
|
"usage.duration": "Run time",
|
|
31655
32279
|
"run.working": "{member} is working…",
|
|
32280
|
+
"run.waiting": "{member} is waiting for your answer",
|
|
31656
32281
|
"run.failed": "{member}'s run failed",
|
|
31657
32282
|
"run.stop": "Stop",
|
|
31658
32283
|
"run.durationUnknown": "Duration unknown",
|
|
@@ -31870,6 +32495,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31870
32495
|
"job.status.stopped": "stopped",
|
|
31871
32496
|
"job.elapsed": "took {time}",
|
|
31872
32497
|
"job.you": "You: ",
|
|
32498
|
+
"job.from": "{name}: ",
|
|
31873
32499
|
"job.by.human": "filed by you",
|
|
31874
32500
|
"job.by.coordinator": "filed by the coordinator",
|
|
31875
32501
|
"job.by.model": "filed by the decision model · {probability}",
|
|
@@ -31955,12 +32581,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31955
32581
|
"decision.rule.failure": "the member did not finish normally",
|
|
31956
32582
|
"decision.rule.last": "the last result",
|
|
31957
32583
|
"question.title": "{member} asks you",
|
|
32584
|
+
"question.waiting": "{member} is waiting for your answer",
|
|
32585
|
+
"question.asked": "Asked you",
|
|
32586
|
+
"question.midRound": "asked mid-round",
|
|
32587
|
+
"question.capsule": "{member} waits for your answer ↑",
|
|
31958
32588
|
"question.other": "Other",
|
|
31959
32589
|
"question.otherPlaceholder": "Type your answer…",
|
|
31960
32590
|
"question.submit": "Submit answers",
|
|
31961
32591
|
"question.multi": "Pick any",
|
|
31962
32592
|
"question.answered": "Answered",
|
|
31963
32593
|
"question.cancelled": "Expired without an answer",
|
|
32594
|
+
"question.lateOpen": "Expired — you can still answer",
|
|
32595
|
+
"question.answeredLate": "Answered late",
|
|
31964
32596
|
"question.answer": "Your answer: {answer}",
|
|
31965
32597
|
"question.expired": "These questions already ended",
|
|
31966
32598
|
"invite.modelLabel": "Model",
|
|
@@ -32132,6 +32764,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32132
32764
|
stroke: "currentColor"
|
|
32133
32765
|
})]
|
|
32134
32766
|
});
|
|
32767
|
+
const IconPaperclipOutlineMedium = ({ size = 16, className }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
32768
|
+
width: size,
|
|
32769
|
+
height: size,
|
|
32770
|
+
className,
|
|
32771
|
+
viewBox: "0 0 16 16",
|
|
32772
|
+
fill: "none",
|
|
32773
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
32774
|
+
"aria-hidden": "true",
|
|
32775
|
+
strokeWidth: 1.3,
|
|
32776
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
32777
|
+
d: "M12.75 4.5V9.5C12.75 10.7598 12.2496 11.968 11.3588 12.8588C10.468 13.7496 9.25978 14.25 8 14.25C6.74022 14.25 5.53204 13.7496 4.64124 12.8588C3.75045 11.968 3.25 10.7598 3.25 9.5V5C3.25 4.13805 3.59241 3.3114 4.2019 2.7019C4.8114 2.09241 5.63805 1.75 6.5 1.75C7.36195 1.75 8.1886 2.09241 8.7981 2.7019C9.40759 3.3114 9.75 4.13805 9.75 5V9.5C9.75 9.96413 9.56563 10.4092 9.23744 10.7374C8.90925 11.0656 8.46413 11.25 8 11.25C7.53587 11.25 7.09075 11.0656 6.76256 10.7374C6.43437 10.4092 6.25 9.96413 6.25 9.5V5.5",
|
|
32778
|
+
stroke: "currentColor"
|
|
32779
|
+
})
|
|
32780
|
+
});
|
|
32135
32781
|
const IconQueueOutlineMedium = ({ size = 14, className }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
32136
32782
|
width: size,
|
|
32137
32783
|
height: size,
|
|
@@ -32226,56 +32872,56 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32226
32872
|
}
|
|
32227
32873
|
//#endregion
|
|
32228
32874
|
//#region \0dsh-css:src/client/MembersView.module.css.mjs
|
|
32229
|
-
const css$
|
|
32230
|
-
const tagId$
|
|
32231
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
32875
|
+
const css$22 = ".QCtnxq_members{flex-direction:column;gap:8px;padding:12px 16px;display:flex}.QCtnxq_toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.QCtnxq_count{color:var(--dsw-alias-label-primary,#1f2329);font-size:13px;font-weight:600}.QCtnxq_teamButton{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000029);color:var(--dsw-alias-label-primary,#1f2329);font:inherit;cursor:pointer;background:0 0;border-radius:8px;margin-left:auto;padding:3px 12px;font-size:12px}.QCtnxq_teamButton:hover{background:var(--dsw-alias-bg-layer-2,#0000000d)}.QCtnxq_grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;display:grid}.QCtnxq_card{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;gap:8px;padding:12px;font-size:13px;line-height:18px;display:flex;position:relative}.QCtnxq_head{align-items:center;gap:10px;min-width:0;display:flex}.QCtnxq_avatarTile{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;user-select:none;border-radius:10px;flex:none;place-items:center;width:40px;height:40px;font-size:16px;font-weight:600;display:grid}.QCtnxq_identity{flex-direction:column;gap:1px;min-width:0;display:flex}.QCtnxq_name{color:var(--dsw-alias-label-primary,#1f2329);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.QCtnxq_nameRow{align-items:center;gap:6px;min-width:0;display:flex}.QCtnxq_role{background:var(--dsw-alias-bg-layer-2,#0000000d);max-width:14em;color:var(--dsw-alias-label-secondary,#5a5a5ae6);text-overflow:ellipsis;white-space:nowrap;border-radius:5px;flex:none;padding:0 6px;font-size:11px;line-height:18px;overflow:hidden}.QCtnxq_hint{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:12px}.QCtnxq_head>.QCtnxq_chipRunning,.QCtnxq_head>.QCtnxq_chipFailed,.QCtnxq_head>.QCtnxq_chipIdle{flex:none;margin-left:auto}.QCtnxq_instructionsBlock{flex-direction:column;gap:2px;min-height:0;display:flex}.QCtnxq_instructions{-webkit-line-clamp:2;color:var(--dsw-alias-label-secondary,#5a5a5ae6);-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.QCtnxq_instructionsExpanded{color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.QCtnxq_instructionsEmpty{color:var(--dsw-alias-label-caption,#adb2b8);margin:0;font-size:12px;line-height:18px}.QCtnxq_expandToggle{color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px;line-height:18px}.QCtnxq_foot{flex-wrap:wrap;align-items:center;gap:6px;margin-top:auto;display:flex}.QCtnxq_chipRunning,.QCtnxq_chipFailed,.QCtnxq_chipIdle{white-space:nowrap;border:none;border-radius:999px;align-items:center;padding:1px 8px;font-size:12px;line-height:18px;display:inline-flex}.QCtnxq_chipRunning{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 14%, transparent);color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;animation:2.4s ease-in-out infinite QCtnxq_room-member-chip-breathe}.QCtnxq_chipRunning:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 22%, transparent)}.QCtnxq_chipRunning:disabled{opacity:.5;cursor:default;animation:none}@keyframes QCtnxq_room-member-chip-breathe{0%,to{opacity:1}50%{opacity:.62}}@media (prefers-reduced-motion:reduce){.QCtnxq_chipRunning{animation:none}}.QCtnxq_chipFailed{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ec1313) 12%, transparent);color:var(--dsw-alias-state-error-primary,#ec1313)}.QCtnxq_chipIdle{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.QCtnxq_actions{align-items:center;gap:2px;margin-left:auto;display:flex}.QCtnxq_action{white-space:nowrap;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:16px}.QCtnxq_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-primary,#1f2329)}.QCtnxq_action:disabled{opacity:.4;cursor:default}.QCtnxq_invite{border:1px dashed var(--dsw-alias-border-l2,#7f7f7f66);min-height:96px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border-radius:12px;place-items:center;font-size:13px;line-height:20px;display:grid}.QCtnxq_invite:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-primary,#1f2329)}.QCtnxq_chipRunning:focus:not(:focus-visible),.QCtnxq_expandToggle:focus:not(:focus-visible),.QCtnxq_action:focus:not(:focus-visible),.QCtnxq_invite:focus:not(:focus-visible){outline:none}.QCtnxq_linked{flex-direction:column;gap:4px;margin-top:14px;display:flex}.QCtnxq_linkedRow{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);background:var(--dsw-alias-bg-layer-1,#fff);min-height:36px;font-size:var(--dsh-panel-body-size,13px);border-radius:10px;align-items:center;gap:8px;padding:4px 10px;display:flex}.QCtnxq_linkedAvatar{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);width:22px;height:22px;color:var(--dsw-alias-label-inverse,#fff);border-radius:50%;flex:none;place-items:center;font-size:11px;font-weight:600;display:grid}.QCtnxq_linkedName{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary,#1f2329);font-weight:500;overflow:hidden}.QCtnxq_linkedTag{background:var(--dsw-alias-bg-layer-2,#0000000d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:5px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.QCtnxq_linkedAction{color:var(--dsw-alias-label-secondary,#5a5a5ae6);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;padding:2px 6px;font-size:12px}.QCtnxq_linkedAction:first-of-type{margin-left:auto}.QCtnxq_linkedAction:hover{background:var(--dsw-alias-fill-secondary,#7f7f7f1f)}.QCtnxq_undo{background:var(--dsw-alias-bg-layer-2,#0000000d);max-width:560px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:8px;align-items:center;gap:10px;padding:6px 12px;font-size:12px;line-height:18px;display:flex}.QCtnxq_undo>span{flex:1;min-width:0}.QCtnxq_undo>button{color:var(--dsw-alias-state-business-primary,#4176e6);font:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-weight:600}.QCtnxq_removeOpen{color:var(--dsw-alias-text-error,#d9363e)}.QCtnxq_notice{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:4px 8px;font-size:12px;line-height:18px}.QCtnxq_error{color:var(--dsw-alias-text-error,#d9363e);padding:4px 8px;font-size:12px;line-height:18px}.QCtnxq_guide{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;min-height:280px;padding:24px;display:flex}.QCtnxq_guideIcon{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin-bottom:2px;display:inline-flex}.QCtnxq_guideTitle{color:var(--dsw-alias-label-primary,#1f2329);margin:0;font-size:15px;font-weight:500;line-height:22px}.QCtnxq_guideHint{max-width:420px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin:0 0 6px;font-size:13px;line-height:20px}";
|
|
32876
|
+
const tagId$22 = "@khorsheed/dsh-room/MembersView.module.css";
|
|
32877
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$22) + "]") === null) {
|
|
32232
32878
|
const tag = document.createElement("style");
|
|
32233
32879
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
32234
|
-
tag.dataset.pluginCss = tagId$
|
|
32235
|
-
tag.textContent = css$
|
|
32880
|
+
tag.dataset.pluginCss = tagId$22;
|
|
32881
|
+
tag.textContent = css$22;
|
|
32236
32882
|
document.head.appendChild(tag);
|
|
32237
32883
|
}
|
|
32238
32884
|
var MembersView_module_css_default = {
|
|
32239
|
-
"role": "QCtnxq_role",
|
|
32240
|
-
"guideIcon": "QCtnxq_guideIcon",
|
|
32241
|
-
"identity": "QCtnxq_identity",
|
|
32242
|
-
"chipFailed": "QCtnxq_chipFailed",
|
|
32243
32885
|
"expandToggle": "QCtnxq_expandToggle",
|
|
32886
|
+
"linkedAvatar": "QCtnxq_linkedAvatar",
|
|
32244
32887
|
"chipIdle": "QCtnxq_chipIdle",
|
|
32245
|
-
"
|
|
32246
|
-
"
|
|
32247
|
-
"
|
|
32248
|
-
"notice": "QCtnxq_notice",
|
|
32249
|
-
"instructionsEmpty": "QCtnxq_instructionsEmpty",
|
|
32250
|
-
"chipRunning": "QCtnxq_chipRunning",
|
|
32888
|
+
"members": "QCtnxq_members",
|
|
32889
|
+
"chipFailed": "QCtnxq_chipFailed",
|
|
32890
|
+
"teamButton": "QCtnxq_teamButton",
|
|
32251
32891
|
"avatarTile": "QCtnxq_avatarTile",
|
|
32252
|
-
"
|
|
32253
|
-
"linkedRow": "QCtnxq_linkedRow",
|
|
32254
|
-
"error": "QCtnxq_error",
|
|
32255
|
-
"linkedName": "QCtnxq_linkedName",
|
|
32892
|
+
"guideIcon": "QCtnxq_guideIcon",
|
|
32256
32893
|
"linkedAction": "QCtnxq_linkedAction",
|
|
32257
|
-
"linkedTag": "QCtnxq_linkedTag",
|
|
32258
|
-
"guideHint": "QCtnxq_guideHint",
|
|
32259
32894
|
"toolbar": "QCtnxq_toolbar",
|
|
32895
|
+
"instructionsExpanded": "QCtnxq_instructionsExpanded",
|
|
32896
|
+
"head": "QCtnxq_head",
|
|
32897
|
+
"action": "QCtnxq_action",
|
|
32898
|
+
"undo": "QCtnxq_undo",
|
|
32899
|
+
"grid": "QCtnxq_grid",
|
|
32900
|
+
"identity": "QCtnxq_identity",
|
|
32260
32901
|
"card": "QCtnxq_card",
|
|
32261
32902
|
"instructions": "QCtnxq_instructions",
|
|
32262
|
-
"
|
|
32263
|
-
"linked": "QCtnxq_linked",
|
|
32903
|
+
"guideHint": "QCtnxq_guideHint",
|
|
32264
32904
|
"name": "QCtnxq_name",
|
|
32905
|
+
"instructionsEmpty": "QCtnxq_instructionsEmpty",
|
|
32906
|
+
"linkedRow": "QCtnxq_linkedRow",
|
|
32907
|
+
"linkedTag": "QCtnxq_linkedTag",
|
|
32908
|
+
"removeOpen": "QCtnxq_removeOpen",
|
|
32909
|
+
"chipRunning": "QCtnxq_chipRunning",
|
|
32910
|
+
"instructionsBlock": "QCtnxq_instructionsBlock",
|
|
32911
|
+
"hint": "QCtnxq_hint",
|
|
32912
|
+
"notice": "QCtnxq_notice",
|
|
32913
|
+
"count": "QCtnxq_count",
|
|
32914
|
+
"role": "QCtnxq_role",
|
|
32915
|
+
"foot": "QCtnxq_foot",
|
|
32265
32916
|
"room-member-chip-breathe": "QCtnxq_room-member-chip-breathe",
|
|
32266
|
-
"teamButton": "QCtnxq_teamButton",
|
|
32267
32917
|
"actions": "QCtnxq_actions",
|
|
32268
|
-
"
|
|
32269
|
-
"members": "QCtnxq_members",
|
|
32918
|
+
"linked": "QCtnxq_linked",
|
|
32270
32919
|
"guideTitle": "QCtnxq_guideTitle",
|
|
32271
|
-
"undo": "QCtnxq_undo",
|
|
32272
|
-
"hint": "QCtnxq_hint",
|
|
32273
|
-
"action": "QCtnxq_action",
|
|
32274
|
-
"instructionsBlock": "QCtnxq_instructionsBlock",
|
|
32275
|
-
"nameRow": "QCtnxq_nameRow",
|
|
32276
32920
|
"invite": "QCtnxq_invite",
|
|
32277
|
-
"
|
|
32278
|
-
"
|
|
32921
|
+
"guide": "QCtnxq_guide",
|
|
32922
|
+
"nameRow": "QCtnxq_nameRow",
|
|
32923
|
+
"error": "QCtnxq_error",
|
|
32924
|
+
"linkedName": "QCtnxq_linkedName"
|
|
32279
32925
|
};
|
|
32280
32926
|
//#endregion
|
|
32281
32927
|
//#region src/client/MemberCard.tsx
|
|
@@ -32506,55 +33152,57 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32506
33152
|
}
|
|
32507
33153
|
//#endregion
|
|
32508
33154
|
//#region \0dsh-css:src/client/InviteDialog.module.css.mjs
|
|
32509
|
-
const css$
|
|
32510
|
-
const tagId$
|
|
32511
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
33155
|
+
const css$21 = ".Oz5isq_overlay{z-index:100;text-align:left;background:0 0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.Oz5isq_card{border:1px solid var(--dsw-alias-border-l1,#7f7f7f29);background:var(--dsw-alias-bg-layer-1,#fff);width:560px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3,0 12px 40px #0000003d);border-radius:18px;flex-direction:column;gap:20px;padding:22px 24px;display:flex;overflow-y:auto}.Oz5isq_body{gap:20px;min-width:0;display:flex}.Oz5isq_form{flex-direction:column;flex:auto;gap:12px;min-width:0;display:flex}.Oz5isq_previewCol{flex-direction:column;flex:none;gap:6px;width:208px;display:flex}.Oz5isq_previewLabel{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}@media (width<=640px){.Oz5isq_body{flex-direction:column-reverse}.Oz5isq_previewCol{width:auto}}.Oz5isq_title{color:var(--dsw-alias-label-primary,#1f2329);font-size:16px;font-weight:500;line-height:24px}.Oz5isq_field{flex-direction:column;gap:4px;display:flex}.Oz5isq_fieldPair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.Oz5isq_fieldPair .Oz5isq_select{min-width:0}.Oz5isq_label{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-size:12px;font-weight:500;line-height:18px}.Oz5isq_input,.Oz5isq_select,.Oz5isq_textarea{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);font:inherit;color:var(--dsw-alias-label-primary,#1f2329);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;outline:none;padding:6px 10px;font-size:13px;line-height:20px}.Oz5isq_select{appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%238f959e' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}.Oz5isq_input::placeholder,.Oz5isq_textarea::placeholder{color:var(--dsw-alias-label-caption,#adb2b8)}.Oz5isq_textarea{resize:vertical}.Oz5isq_input:focus,.Oz5isq_select:focus,.Oz5isq_textarea:focus{border-color:var(--dsw-alias-border-l4,#7f7f7f66);box-shadow:0 0 0 1px var(--dsw-alias-border-l4,#7f7f7f66)}.Oz5isq_hint{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}.Oz5isq_hintError{color:var(--dsw-alias-state-error-primary,#d9363e)}.Oz5isq_modelField{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;align-items:center;display:flex;position:relative}.Oz5isq_modelField:focus-within{border-color:var(--dsw-alias-border-l4,#7f7f7f66);box-shadow:0 0 0 1px var(--dsw-alias-border-l4,#7f7f7f66)}.Oz5isq_modelInput{min-width:0;font:inherit;color:var(--dsw-alias-label-primary,#1f2329);background:0 0;border:none;outline:none;flex:auto;padding:6px 10px;font-size:13px;line-height:20px}.Oz5isq_modelInput::placeholder{color:var(--dsw-alias-label-caption,#adb2b8)}.Oz5isq_modelMenuButton{width:24px;height:24px;color:var(--dsw-alias-label-caption,#adb2b8);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:4px;display:flex}.Oz5isq_modelMenuButton:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_modelMenuChevron{transition:transform .16s}.Oz5isq_modelMenuChevronOpen{transform:rotate(180deg)}.Oz5isq_modelMenu{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2,#7f7f7f3d));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:160px;max-height:240px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,var(--dsw-shadow-lv3,0 12px 40px #0000003d));border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.Oz5isq_modelItem,.Oz5isq_modelItemCurrent,.Oz5isq_modelItemDefault{color:var(--dsw-alias-label-primary,#1f2329);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.Oz5isq_modelItem:hover,.Oz5isq_modelItemCurrent:hover,.Oz5isq_modelItemDefault:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_modelItemCurrent{font-weight:560}.Oz5isq_modelItemLabel{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.Oz5isq_modelItemCheck{text-align:center;width:14px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);flex:none}.Oz5isq_modelItemDefault{color:var(--dsw-alias-label-secondary,#5a5a5ae6);box-shadow:0 1px 0 var(--dsw-alias-border-l2,#7f7f7f3d);border-radius:8px 8px 0 0;margin-bottom:2px;padding-bottom:7px}.Oz5isq_nameRow{align-items:center;gap:6px;display:flex}.Oz5isq_nameRow .Oz5isq_input{flex:auto;min-width:0}.Oz5isq_dice{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:5px 9px;font-size:13px;line-height:20px}.Oz5isq_dice:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_dice:focus:not(:focus-visible){outline:none}.Oz5isq_advanced{display:block}.Oz5isq_advancedSummary{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;user-select:none;font-size:12px;font-weight:500;line-height:18px}.Oz5isq_advancedSummary:hover{color:var(--dsw-alias-label-primary,#1f2329)}.Oz5isq_advancedBody{flex-direction:column;gap:12px;padding-top:10px;display:flex}.Oz5isq_cwdRow{align-items:center;gap:6px;display:flex}.Oz5isq_cwdRow .Oz5isq_input{cursor:default;flex:auto;min-width:0}.Oz5isq_browse{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:5px 10px;font-size:13px;line-height:20px}.Oz5isq_browse:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_browse:disabled{opacity:.45;cursor:default}.Oz5isq_browse:focus:not(:focus-visible){outline:none}.Oz5isq_error{color:var(--dsw-alias-state-error-primary,#d9363e);font-size:12px;line-height:18px}.Oz5isq_buttons{justify-content:flex-end;gap:8px;display:flex}.Oz5isq_button,.Oz5isq_primary{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;height:32px;padding:0 16px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.Oz5isq_button{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);color:var(--dsw-alias-label-primary,#1f2329);background:0 0}.Oz5isq_button:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_primary{color:var(--dsw-alias-label-primary-foreground,#fff);background:var(--dsw-alias-button-primary-fill,#1f2329);border:none}.Oz5isq_primary:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover,#43454a)}.Oz5isq_primary:disabled{opacity:.4;cursor:default}.Oz5isq_button:focus-visible,.Oz5isq_primary:focus-visible{outline:2px solid var(--dsw-alias-button-primary-fill,#1f2329);outline-offset:2px}.Oz5isq_button:focus:not(:focus-visible),.Oz5isq_primary:focus:not(:focus-visible){outline:none}.Oz5isq_card[data-mode=edit]{width:460px}.Oz5isq_editHead{border-bottom:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);flex-direction:column;gap:8px;padding-bottom:12px;display:flex}.Oz5isq_locked{flex-wrap:wrap;align-items:baseline;gap:4px 16px;margin:0;font-size:12px;line-height:18px;display:flex}.Oz5isq_locked>div{gap:6px;display:inline-flex}.Oz5isq_locked dt{color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.Oz5isq_locked dd{color:var(--dsw-alias-label-secondary,#5a5a5ae6);margin:0}.Oz5isq_lockedNote{color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.Oz5isq_memberConfiguration summary{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);color:var(--dsw-alias-label-primary,#1f2329);background:var(--dsw-alias-bg-layer-1,#fff);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:13px;line-height:20px;list-style:none;display:flex}.Oz5isq_memberConfiguration summary::-webkit-details-marker{display:none}.Oz5isq_memberConfiguration summary:after{content:\"\";border-right:1.5px solid var(--dsw-alias-label-secondary,#1f2329b3);border-bottom:1.5px solid var(--dsw-alias-label-secondary,#1f2329b3);flex:none;width:7px;height:7px;margin:0 3px 3px 0;transform:rotate(45deg)}.Oz5isq_memberConfiguration summary:hover{border-color:var(--dsw-alias-border-l4,#7f7f7f66)}";
|
|
33156
|
+
const tagId$21 = "@khorsheed/dsh-room/InviteDialog.module.css";
|
|
33157
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$21) + "]") === null) {
|
|
32512
33158
|
const tag = document.createElement("style");
|
|
32513
33159
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
32514
|
-
tag.dataset.pluginCss = tagId$
|
|
32515
|
-
tag.textContent = css$
|
|
33160
|
+
tag.dataset.pluginCss = tagId$21;
|
|
33161
|
+
tag.textContent = css$21;
|
|
32516
33162
|
document.head.appendChild(tag);
|
|
32517
33163
|
}
|
|
32518
33164
|
var InviteDialog_module_css_default = {
|
|
32519
|
-
"lockedNote": "Oz5isq_lockedNote",
|
|
32520
|
-
"title": "Oz5isq_title",
|
|
32521
33165
|
"form": "Oz5isq_form",
|
|
33166
|
+
"textarea": "Oz5isq_textarea",
|
|
33167
|
+
"body": "Oz5isq_body",
|
|
33168
|
+
"hintError": "Oz5isq_hintError",
|
|
33169
|
+
"select": "Oz5isq_select",
|
|
33170
|
+
"input": "Oz5isq_input",
|
|
32522
33171
|
"modelField": "Oz5isq_modelField",
|
|
32523
33172
|
"modelInput": "Oz5isq_modelInput",
|
|
32524
|
-
"
|
|
33173
|
+
"hint": "Oz5isq_hint",
|
|
33174
|
+
"modelItemDefault": "Oz5isq_modelItemDefault",
|
|
33175
|
+
"editHead": "Oz5isq_editHead",
|
|
33176
|
+
"locked": "Oz5isq_locked",
|
|
32525
33177
|
"label": "Oz5isq_label",
|
|
32526
|
-
"
|
|
32527
|
-
"
|
|
32528
|
-
"
|
|
32529
|
-
"field": "Oz5isq_field",
|
|
33178
|
+
"modelItem": "Oz5isq_modelItem",
|
|
33179
|
+
"modelMenu": "Oz5isq_modelMenu",
|
|
33180
|
+
"dice": "Oz5isq_dice",
|
|
32530
33181
|
"advanced": "Oz5isq_advanced",
|
|
32531
|
-
"
|
|
32532
|
-
"
|
|
33182
|
+
"lockedNote": "Oz5isq_lockedNote",
|
|
33183
|
+
"title": "Oz5isq_title",
|
|
33184
|
+
"previewLabel": "Oz5isq_previewLabel",
|
|
33185
|
+
"browse": "Oz5isq_browse",
|
|
33186
|
+
"memberConfiguration": "Oz5isq_memberConfiguration",
|
|
33187
|
+
"overlay": "Oz5isq_overlay",
|
|
32533
33188
|
"modelItemLabel": "Oz5isq_modelItemLabel",
|
|
33189
|
+
"field": "Oz5isq_field",
|
|
33190
|
+
"primary": "Oz5isq_primary",
|
|
33191
|
+
"modelItemCurrent": "Oz5isq_modelItemCurrent",
|
|
32534
33192
|
"modelMenuChevron": "Oz5isq_modelMenuChevron",
|
|
32535
|
-
"advancedSummary": "Oz5isq_advancedSummary",
|
|
32536
|
-
"overlay": "Oz5isq_overlay",
|
|
32537
|
-
"browse": "Oz5isq_browse",
|
|
32538
|
-
"advancedBody": "Oz5isq_advancedBody",
|
|
32539
|
-
"modelMenuChevronOpen": "Oz5isq_modelMenuChevronOpen",
|
|
32540
|
-
"card": "Oz5isq_card",
|
|
32541
|
-
"input": "Oz5isq_input",
|
|
32542
33193
|
"modelItemCheck": "Oz5isq_modelItemCheck",
|
|
32543
|
-
"nameRow": "Oz5isq_nameRow",
|
|
32544
33194
|
"modelMenuButton": "Oz5isq_modelMenuButton",
|
|
32545
|
-
"modelMenu": "Oz5isq_modelMenu",
|
|
32546
|
-
"buttons": "Oz5isq_buttons",
|
|
32547
|
-
"editHead": "Oz5isq_editHead",
|
|
32548
|
-
"body": "Oz5isq_body",
|
|
32549
|
-
"dice": "Oz5isq_dice",
|
|
32550
|
-
"primary": "Oz5isq_primary",
|
|
32551
33195
|
"error": "Oz5isq_error",
|
|
32552
|
-
"
|
|
32553
|
-
"
|
|
32554
|
-
"
|
|
32555
|
-
"
|
|
32556
|
-
"
|
|
32557
|
-
"
|
|
33196
|
+
"advancedBody": "Oz5isq_advancedBody",
|
|
33197
|
+
"advancedSummary": "Oz5isq_advancedSummary",
|
|
33198
|
+
"buttons": "Oz5isq_buttons",
|
|
33199
|
+
"card": "Oz5isq_card",
|
|
33200
|
+
"modelMenuChevronOpen": "Oz5isq_modelMenuChevronOpen",
|
|
33201
|
+
"previewCol": "Oz5isq_previewCol",
|
|
33202
|
+
"button": "Oz5isq_button",
|
|
33203
|
+
"fieldPair": "Oz5isq_fieldPair",
|
|
33204
|
+
"nameRow": "Oz5isq_nameRow",
|
|
33205
|
+
"cwdRow": "Oz5isq_cwdRow"
|
|
32558
33206
|
};
|
|
32559
33207
|
//#endregion
|
|
32560
33208
|
//#region src/client/InviteDialog.tsx
|
|
@@ -32709,7 +33357,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32709
33357
|
memberModel,
|
|
32710
33358
|
editChild
|
|
32711
33359
|
]);
|
|
32712
|
-
const canSubmit = mode === "edit" ? validName(name) : (native || localAgentAvailable) && chosen !== "" && validName(name);
|
|
33360
|
+
const canSubmit = mode === "edit" ? validName(name) && !(name !== member?.name && existingNames.includes(name)) : (native || localAgentAvailable) && chosen !== "" && validName(name) && !existingNames.includes(name);
|
|
32713
33361
|
const modelChoices = surface?.choices ?? [];
|
|
32714
33362
|
const surfaceDefault = surface?.effective ?? surface?.cliDefault;
|
|
32715
33363
|
const modelPlaceholder = mode === "edit" ? t("invite.modelPlaceholderEdit") : surfaceDefault !== void 0 && surfaceDefault !== "" ? t("invite.modelPlaceholderDefault", { model: surfaceDefault }) : t("invite.modelPlaceholder");
|
|
@@ -32818,6 +33466,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32818
33466
|
...instructions.trim() === "" ? {} : { instructions: instructions.trim() },
|
|
32819
33467
|
...role.trim() === "" ? {} : { role: role.trim() }
|
|
32820
33468
|
};
|
|
33469
|
+
const nameProblem = name === "" ? void 0 : !validName(name) ? "invite.error.invalid" : name !== member?.name && existingNames.includes(name) ? "invite.error.duplicate" : void 0;
|
|
32821
33470
|
const rollDice = () => {
|
|
32822
33471
|
const rolled = rollName(existingNames, name);
|
|
32823
33472
|
if (rolled !== void 0) setName(rolled);
|
|
@@ -32992,7 +33641,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32992
33641
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
32993
33642
|
className: InviteDialog_module_css_default.label,
|
|
32994
33643
|
children: t("invite.modelLabel")
|
|
32995
|
-
}),
|
|
33644
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33645
|
+
className: InviteDialog_module_css_default.memberConfiguration,
|
|
33646
|
+
children: memberConfiguration
|
|
33647
|
+
})]
|
|
32996
33648
|
}) : memberConfiguration ?? (mode === "invite" && chosenHarness !== void 0 && (modelSurface === void 0 || surface !== void 0) ? renderHarnessModelPicker?.(chosenHarness, {
|
|
32997
33649
|
value: model,
|
|
32998
33650
|
onChange: setModel,
|
|
@@ -33033,9 +33685,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
33033
33685
|
children: "🎲"
|
|
33034
33686
|
})]
|
|
33035
33687
|
}),
|
|
33036
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
33688
|
+
nameProblem === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
33037
33689
|
className: InviteDialog_module_css_default.hint,
|
|
33038
33690
|
children: t("invite.nameHint")
|
|
33691
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
33692
|
+
className: `${InviteDialog_module_css_default.hint} ${InviteDialog_module_css_default.hintError}`,
|
|
33693
|
+
role: "alert",
|
|
33694
|
+
children: t(nameProblem)
|
|
33039
33695
|
})
|
|
33040
33696
|
]
|
|
33041
33697
|
}),
|
|
@@ -33205,13 +33861,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
33205
33861
|
}
|
|
33206
33862
|
//#endregion
|
|
33207
33863
|
//#region \0dsh-css:src/client/InviteAgentAction.module.css.mjs
|
|
33208
|
-
const css$
|
|
33209
|
-
const tagId$
|
|
33210
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
33864
|
+
const css$20 = ".FHgm9G_trigger{appearance:none;border:1px solid var(--dsw-alias-border-l2,#80808033);color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;padding:1px 10px;font-size:12px;line-height:18px}.FHgm9G_trigger:hover{background:var(--dsw-alias-fill-light,#80808014);color:var(--dsw-alias-label-primary,#0f1115)}";
|
|
33865
|
+
const tagId$20 = "@khorsheed/dsh-room/InviteAgentAction.module.css";
|
|
33866
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$20) + "]") === null) {
|
|
33211
33867
|
const tag = document.createElement("style");
|
|
33212
33868
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
33213
|
-
tag.dataset.pluginCss = tagId$
|
|
33214
|
-
tag.textContent = css$
|
|
33869
|
+
tag.dataset.pluginCss = tagId$20;
|
|
33870
|
+
tag.textContent = css$20;
|
|
33215
33871
|
document.head.appendChild(tag);
|
|
33216
33872
|
}
|
|
33217
33873
|
var InviteAgentAction_module_css_default = { "trigger": "FHgm9G_trigger" };
|
|
@@ -33264,27 +33920,27 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
33264
33920
|
}
|
|
33265
33921
|
//#endregion
|
|
33266
33922
|
//#region \0dsh-css:src/client/RoomSettingsView.module.css.mjs
|
|
33267
|
-
const css$
|
|
33268
|
-
const tagId$
|
|
33269
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
33923
|
+
const css$19 = ".RNgrsG_settings{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;padding:2px 12px;font-size:12px;line-height:18px}.RNgrsG_values,.RNgrsG_valuesPaused{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap}.RNgrsG_valuesPaused{color:var(--dsw-alias-state-warning,#b7791f)}.RNgrsG_rows{padding:2px 0 8px}.RNgrsG_row{flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 0;display:flex}.RNgrsG_row+.RNgrsG_row{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014)}.RNgrsG_label{min-width:200px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex-direction:column;flex:1;display:flex}.RNgrsG_label>b{color:var(--dsw-alias-label-primary,#1f2329);font-size:13px;font-weight:600}.RNgrsG_stepper{background:var(--dsw-alias-bg-layer-2,#0000000d);border-radius:8px;align-items:center;display:inline-flex}.RNgrsG_stepper>button{width:28px;height:26px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);font:inherit;cursor:pointer;background:0 0;border:none}.RNgrsG_stepper>button:disabled{opacity:.4;cursor:default}.RNgrsG_stepper>b{text-align:center;font-variant-numeric:tabular-nums;min-width:26px}.RNgrsG_error{color:var(--dsw-alias-text-error,#d9363e);margin:4px 0 0}.RNgrsG_group{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:10px 0 2px;font-size:12px;font-weight:600}.RNgrsG_group+.RNgrsG_row{border-top:none}.RNgrsG_subbox{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);border-radius:10px;margin:0 -10px 6px;padding:0 9px}.RNgrsG_subrow{flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 0;display:flex}.RNgrsG_subrow+.RNgrsG_subrow{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014)}";
|
|
33924
|
+
const tagId$19 = "@khorsheed/dsh-room/RoomSettingsView.module.css";
|
|
33925
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$19) + "]") === null) {
|
|
33270
33926
|
const tag = document.createElement("style");
|
|
33271
33927
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
33272
|
-
tag.dataset.pluginCss = tagId$
|
|
33273
|
-
tag.textContent = css$
|
|
33928
|
+
tag.dataset.pluginCss = tagId$19;
|
|
33929
|
+
tag.textContent = css$19;
|
|
33274
33930
|
document.head.appendChild(tag);
|
|
33275
33931
|
}
|
|
33276
33932
|
var RoomSettingsView_module_css_default = {
|
|
33277
|
-
"
|
|
33278
|
-
"
|
|
33933
|
+
"group": "RNgrsG_group",
|
|
33934
|
+
"settings": "RNgrsG_settings",
|
|
33279
33935
|
"label": "RNgrsG_label",
|
|
33936
|
+
"rows": "RNgrsG_rows",
|
|
33937
|
+
"stepper": "RNgrsG_stepper",
|
|
33280
33938
|
"subbox": "RNgrsG_subbox",
|
|
33281
33939
|
"subrow": "RNgrsG_subrow",
|
|
33940
|
+
"valuesPaused": "RNgrsG_valuesPaused",
|
|
33941
|
+
"values": "RNgrsG_values",
|
|
33282
33942
|
"error": "RNgrsG_error",
|
|
33283
|
-
"
|
|
33284
|
-
"group": "RNgrsG_group",
|
|
33285
|
-
"rows": "RNgrsG_rows",
|
|
33286
|
-
"row": "RNgrsG_row",
|
|
33287
|
-
"stepper": "RNgrsG_stepper"
|
|
33943
|
+
"row": "RNgrsG_row"
|
|
33288
33944
|
};
|
|
33289
33945
|
//#endregion
|
|
33290
33946
|
//#region src/client/RoomSettingsView.tsx
|
|
@@ -33546,24 +34202,24 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
33546
34202
|
}
|
|
33547
34203
|
//#endregion
|
|
33548
34204
|
//#region \0dsh-css:src/client/RemoveMemberConfirm.module.css.mjs
|
|
33549
|
-
const css$
|
|
33550
|
-
const tagId$
|
|
33551
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
34205
|
+
const css$18 = ".krAKRG_layer{z-index:5;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f33);background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-1,#fff));width:min(340px,100% - 16px);box-shadow:var(--dsw-shadow-lv2,0 4px 16px #00000014);border-radius:12px;padding:12px 14px;font-size:12px;line-height:18px;position:absolute;bottom:40px;right:8px}.krAKRG_title{color:var(--dsw-alias-label-primary,#1f2329);margin:0 0 6px;font-size:13px;font-weight:600}.krAKRG_body,.krAKRG_list{color:var(--dsw-alias-label-secondary,#5a5a5ae6);margin:0}.krAKRG_list{padding-left:16px}.krAKRG_list li+li{margin-top:2px}.krAKRG_note{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin:8px 0 0}.krAKRG_actions{justify-content:flex-end;gap:8px;margin-top:10px;display:flex}.krAKRG_secondary,.krAKRG_danger{font:inherit;cursor:pointer;border-radius:8px;padding:3px 12px}.krAKRG_secondary{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f4d);color:var(--dsw-alias-label-primary,#1f2329);background:0 0}.krAKRG_danger{border:1px solid var(--dsw-alias-text-error,#d9363e);background:var(--dsw-alias-text-error,#d9363e);color:#fff}.krAKRG_danger:disabled{opacity:.6;cursor:default}";
|
|
34206
|
+
const tagId$18 = "@khorsheed/dsh-room/RemoveMemberConfirm.module.css";
|
|
34207
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$18) + "]") === null) {
|
|
33552
34208
|
const tag = document.createElement("style");
|
|
33553
34209
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
33554
|
-
tag.dataset.pluginCss = tagId$
|
|
33555
|
-
tag.textContent = css$
|
|
34210
|
+
tag.dataset.pluginCss = tagId$18;
|
|
34211
|
+
tag.textContent = css$18;
|
|
33556
34212
|
document.head.appendChild(tag);
|
|
33557
34213
|
}
|
|
33558
34214
|
var RemoveMemberConfirm_module_css_default = {
|
|
33559
|
-
"body": "krAKRG_body",
|
|
33560
|
-
"note": "krAKRG_note",
|
|
33561
34215
|
"list": "krAKRG_list",
|
|
33562
|
-
"
|
|
34216
|
+
"note": "krAKRG_note",
|
|
33563
34217
|
"actions": "krAKRG_actions",
|
|
34218
|
+
"body": "krAKRG_body",
|
|
33564
34219
|
"layer": "krAKRG_layer",
|
|
34220
|
+
"danger": "krAKRG_danger",
|
|
33565
34221
|
"title": "krAKRG_title",
|
|
33566
|
-
"
|
|
34222
|
+
"secondary": "krAKRG_secondary"
|
|
33567
34223
|
};
|
|
33568
34224
|
//#endregion
|
|
33569
34225
|
//#region src/client/RemoveMemberConfirm.tsx
|
|
@@ -34291,23 +34947,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34291
34947
|
}
|
|
34292
34948
|
//#endregion
|
|
34293
34949
|
//#region \0dsh-css:src/client/RoomStatsLine.module.css.mjs
|
|
34294
|
-
const css$
|
|
34295
|
-
const tagId$
|
|
34296
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
34950
|
+
const css$17 = ".mlqOeW_root{text-align:center;max-width:var(--dsh-chat-content-width,780px);box-sizing:border-box;width:100%;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;text-overflow:ellipsis;margin:0 auto;padding:4px 16px 0;font-size:12px;line-height:20px;display:block;overflow:hidden}.mlqOeW_sep{color:var(--dsw-alias-separator-primary,#7f7f7f66);margin:0 10px}.mlqOeW_withMembers{max-width:var(--dsh-chat-content-width,780px);box-sizing:border-box;width:100%;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);justify-content:center;align-items:baseline;margin:0 auto;padding:4px 16px 0;font-size:12px;line-height:20px;display:flex;position:relative}.mlqOeW_withMembers .mlqOeW_root{flex:0 auto;width:auto;min-width:0;margin:0;padding:0}.mlqOeW_membersChip{color:inherit;font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;padding:0 4px}.mlqOeW_membersChip:hover,.mlqOeW_membersChip[aria-expanded=true]{color:var(--dsw-alias-label-secondary,#5a5a5ae6);background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.mlqOeW_breakdown{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2,#0000001a));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:min(420px,100vw - 32px);backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,0 12px 32px #0000001f);text-align:left;border-radius:12px;padding:6px 0;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.mlqOeW_breakdown table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.mlqOeW_breakdown th,.mlqOeW_breakdown td{white-space:nowrap;padding:3px 12px;font-weight:400}.mlqOeW_breakdown th{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);text-align:left}.mlqOeW_breakdown td{color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.mlqOeW_breakdown td.mlqOeW_name{color:var(--dsw-alias-label-primary,#1f2329)}.mlqOeW_breakdown .mlqOeW_num{text-align:right}";
|
|
34951
|
+
const tagId$17 = "@khorsheed/dsh-room/RoomStatsLine.module.css";
|
|
34952
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$17) + "]") === null) {
|
|
34297
34953
|
const tag = document.createElement("style");
|
|
34298
34954
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
34299
|
-
tag.dataset.pluginCss = tagId$
|
|
34300
|
-
tag.textContent = css$
|
|
34955
|
+
tag.dataset.pluginCss = tagId$17;
|
|
34956
|
+
tag.textContent = css$17;
|
|
34301
34957
|
document.head.appendChild(tag);
|
|
34302
34958
|
}
|
|
34303
34959
|
var RoomStatsLine_module_css_default = {
|
|
34304
|
-
"num": "mlqOeW_num",
|
|
34305
34960
|
"root": "mlqOeW_root",
|
|
34306
34961
|
"withMembers": "mlqOeW_withMembers",
|
|
34307
|
-
"sep": "mlqOeW_sep",
|
|
34308
34962
|
"membersChip": "mlqOeW_membersChip",
|
|
34309
34963
|
"breakdown": "mlqOeW_breakdown",
|
|
34310
|
-
"name": "mlqOeW_name"
|
|
34964
|
+
"name": "mlqOeW_name",
|
|
34965
|
+
"num": "mlqOeW_num",
|
|
34966
|
+
"sep": "mlqOeW_sep"
|
|
34311
34967
|
};
|
|
34312
34968
|
//#endregion
|
|
34313
34969
|
//#region src/client/RoomStatsLine.tsx
|
|
@@ -34409,7 +35065,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34409
35065
|
const order = state.members.map((member) => member.name);
|
|
34410
35066
|
return [...rows.values()].sort((a, b) => order.indexOf(a.member) - order.indexOf(b.member));
|
|
34411
35067
|
}
|
|
34412
|
-
const RoomStatsLine = (0, react.memo)(function RoomStatsLine({ useProjection, state, t }) {
|
|
35068
|
+
const RoomStatsLine = (0, react.memo)(function RoomStatsLine({ useProjection, state, membersOnly = false, t }) {
|
|
34413
35069
|
const members = memberUsage(state);
|
|
34414
35070
|
const [open, setOpen] = (0, react.useState)(false);
|
|
34415
35071
|
const membersRef = (0, react.useRef)(null);
|
|
@@ -34450,6 +35106,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34450
35106
|
output: formatTokens$1(usage.outputTokens)
|
|
34451
35107
|
}));
|
|
34452
35108
|
}
|
|
35109
|
+
if (membersOnly) groups.length = 0;
|
|
34453
35110
|
const line = groups.join(" | ");
|
|
34454
35111
|
const rootRef = (0, react.useRef)(null);
|
|
34455
35112
|
const [truncated, setTruncated] = (0, react.useState)(false);
|
|
@@ -34551,29 +35208,29 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34551
35208
|
});
|
|
34552
35209
|
//#endregion
|
|
34553
35210
|
//#region \0dsh-css:src/client/RoomPlanView.module.css.mjs
|
|
34554
|
-
const css$
|
|
34555
|
-
const tagId$
|
|
34556
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
35211
|
+
const css$16 = ".rlOoWW_root{color:var(--dsw-alias-label-primary,#333);border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);border-radius:10px;min-width:0;max-height:min(45vh,420px);margin:6px 0;padding:10px 12px;font-size:12px;overflow:auto}.rlOoWW_root summary{cursor:pointer;overflow-wrap:anywhere}.rlOoWW_root p{margin:8px 0}.rlOoWW_root button{font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);cursor:pointer;background:0 0;border-radius:6px;padding:5px 9px}.rlOoWW_root button:disabled{opacity:.45;cursor:default}.rlOoWW_root a{color:var(--dsw-alias-button-info-fill,#315ad5);overflow-wrap:anywhere}.rlOoWW_fields{gap:8px;margin-top:10px;display:grid}.rlOoWW_fields label{gap:4px;display:grid}.rlOoWW_fields textarea{box-sizing:border-box;resize:vertical;width:100%;min-height:52px;font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);background:0 0;border-radius:6px;padding:6px}.rlOoWW_budget{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:10px 0;display:grid}.rlOoWW_budget label{gap:4px;display:grid}.rlOoWW_budget input{box-sizing:border-box;width:100%;font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);background:0 0;border-radius:5px;padding:4px}.rlOoWW_actions{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.rlOoWW_stage,.rlOoWW_task,.rlOoWW_childTask,.rlOoWW_attempt,.rlOoWW_review{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);margin-top:10px;padding-top:8px}.rlOoWW_childTask{margin-left:14px}.rlOoWW_attempt{padding-left:10px}.rlOoWW_text{white-space:pre-wrap;overflow-wrap:anywhere}.rlOoWW_reference{overflow-wrap:anywhere;font-family:monospace}.rlOoWW_dependency{margin-right:8px}.rlOoWW_expanded{border:0;max-height:none;margin:0;padding:16px;font-size:13px;overflow:visible}";
|
|
35212
|
+
const tagId$16 = "@khorsheed/dsh-room/RoomPlanView.module.css";
|
|
35213
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$16) + "]") === null) {
|
|
34557
35214
|
const tag = document.createElement("style");
|
|
34558
35215
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
34559
|
-
tag.dataset.pluginCss = tagId$
|
|
34560
|
-
tag.textContent = css$
|
|
35216
|
+
tag.dataset.pluginCss = tagId$16;
|
|
35217
|
+
tag.textContent = css$16;
|
|
34561
35218
|
document.head.appendChild(tag);
|
|
34562
35219
|
}
|
|
34563
35220
|
var RoomPlanView_module_css_default = {
|
|
35221
|
+
"stage": "rlOoWW_stage",
|
|
35222
|
+
"text": "rlOoWW_text",
|
|
35223
|
+
"reference": "rlOoWW_reference",
|
|
35224
|
+
"fields": "rlOoWW_fields",
|
|
35225
|
+
"childTask": "rlOoWW_childTask",
|
|
35226
|
+
"attempt": "rlOoWW_attempt",
|
|
34564
35227
|
"review": "rlOoWW_review",
|
|
34565
35228
|
"dependency": "rlOoWW_dependency",
|
|
34566
35229
|
"expanded": "rlOoWW_expanded",
|
|
35230
|
+
"actions": "rlOoWW_actions",
|
|
34567
35231
|
"task": "rlOoWW_task",
|
|
34568
|
-
"text": "rlOoWW_text",
|
|
34569
35232
|
"root": "rlOoWW_root",
|
|
34570
|
-
"
|
|
34571
|
-
"reference": "rlOoWW_reference",
|
|
34572
|
-
"fields": "rlOoWW_fields",
|
|
34573
|
-
"budget": "rlOoWW_budget",
|
|
34574
|
-
"actions": "rlOoWW_actions",
|
|
34575
|
-
"childTask": "rlOoWW_childTask",
|
|
34576
|
-
"attempt": "rlOoWW_attempt"
|
|
35233
|
+
"budget": "rlOoWW_budget"
|
|
34577
35234
|
};
|
|
34578
35235
|
//#endregion
|
|
34579
35236
|
//#region src/client/RoomRecoveryView.tsx
|
|
@@ -34778,22 +35435,22 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34778
35435
|
}
|
|
34779
35436
|
//#endregion
|
|
34780
35437
|
//#region \0dsh-css:src/client/RoomTaskCapsule.module.css.mjs
|
|
34781
|
-
const css$
|
|
34782
|
-
const tagId$
|
|
34783
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
35438
|
+
const css$15 = "._17va5q_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));flex-direction:column;flex:none;gap:6px;display:flex}._17va5q_capsules{align-items:center;gap:6px;min-width:0;display:flex}._17va5q_capsule{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);min-width:0;max-width:60%;height:28px;color:var(--dsw-alias-label-secondary,#61666b);white-space:nowrap;cursor:pointer;background:0 0;border-radius:24px;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex;position:relative;overflow:hidden}._17va5q_capsule:hover{border-color:var(--dsw-alias-border-l3,#0000001f);background:var(--dsw-alias-interactive-bg-hover,#2631480f)}._17va5q_capsule[data-waiting] ._17va5q_dot{background:currentColor}._17va5q_capsule[data-attention]{border-color:color-mix(in srgb, var(--dsw-alias-state-warning,#c08419) 35%, transparent);background:color-mix(in srgb, var(--dsw-alias-state-warning,#c08419) 12%, transparent);color:var(--dsw-alias-state-warning,#c08419)}._17va5q_dot{background:var(--dsw-alias-state-success,#1f9a55);border-radius:50%;flex:none;width:8px;height:8px}._17va5q_guide{color:var(--dsw-alias-label-tertiary,#81858c);flex:none}._17va5q_capsule[data-running]:after{content:\"\";background:linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 60%, transparent) 55%, transparent 100%);pointer-events:none;width:120px;animation:2.6s ease-out infinite _17va5q_room-task-capsule-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes _17va5q_room-task-capsule-sweep{0%{left:-120px}90%,to{left:100%}}@media (prefers-reduced-motion:reduce){._17va5q_capsule[data-running]:after{animation:none;display:none}}";
|
|
35439
|
+
const tagId$15 = "@khorsheed/dsh-room/RoomTaskCapsule.module.css";
|
|
35440
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$15) + "]") === null) {
|
|
34784
35441
|
const tag = document.createElement("style");
|
|
34785
35442
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
34786
|
-
tag.dataset.pluginCss = tagId$
|
|
34787
|
-
tag.textContent = css$
|
|
35443
|
+
tag.dataset.pluginCss = tagId$15;
|
|
35444
|
+
tag.textContent = css$15;
|
|
34788
35445
|
document.head.appendChild(tag);
|
|
34789
35446
|
}
|
|
34790
35447
|
var RoomTaskCapsule_module_css_default = {
|
|
34791
|
-
"capsules": "_17va5q_capsules",
|
|
34792
|
-
"dot": "_17va5q_dot",
|
|
34793
|
-
"capsule": "_17va5q_capsule",
|
|
34794
35448
|
"guide": "_17va5q_guide",
|
|
35449
|
+
"capsule": "_17va5q_capsule",
|
|
34795
35450
|
"room-task-capsule-sweep": "_17va5q_room-task-capsule-sweep",
|
|
34796
|
-
"
|
|
35451
|
+
"capsules": "_17va5q_capsules",
|
|
35452
|
+
"root": "_17va5q_root",
|
|
35453
|
+
"dot": "_17va5q_dot"
|
|
34797
35454
|
};
|
|
34798
35455
|
//#endregion
|
|
34799
35456
|
//#region src/client/RoomTaskCapsule.tsx
|
|
@@ -34807,7 +35464,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34807
35464
|
* outcomes fall back to the inline reconcile view.
|
|
34808
35465
|
*/
|
|
34809
35466
|
/** The capsule row. */
|
|
34810
|
-
function RoomTaskCapsule({ state, openTasks, reconcileDelivery, openPlanSession, invite, listProviders, roomCwd, browseDirectory, modelSurface, renderHarnessModelPicker, t }) {
|
|
35467
|
+
function RoomTaskCapsule({ state, openTasks, reconcileDelivery, openPlanSession, invite, listProviders, roomCwd, browseDirectory, modelSurface, renderHarnessModelPicker, waiting, t }) {
|
|
34811
35468
|
const [inviteOpen, setInviteOpen] = (0, react.useState)(false);
|
|
34812
35469
|
const [providers, setProviders] = (0, react.useState)(void 0);
|
|
34813
35470
|
const jobs = state.jobs ?? [];
|
|
@@ -34863,57 +35520,71 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
34863
35520
|
className: RoomTaskCapsule_module_css_default.root,
|
|
34864
35521
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
34865
35522
|
className: RoomTaskCapsule_module_css_default.capsules,
|
|
34866
|
-
children: [
|
|
34867
|
-
|
|
34868
|
-
|
|
34869
|
-
|
|
34870
|
-
|
|
34871
|
-
|
|
34872
|
-
|
|
34873
|
-
|
|
34874
|
-
|
|
34875
|
-
|
|
34876
|
-
|
|
34877
|
-
|
|
34878
|
-
|
|
34879
|
-
|
|
34880
|
-
|
|
34881
|
-
|
|
34882
|
-
|
|
34883
|
-
|
|
34884
|
-
|
|
34885
|
-
|
|
34886
|
-
|
|
35523
|
+
children: [
|
|
35524
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
35525
|
+
type: "button",
|
|
35526
|
+
className: RoomTaskCapsule_module_css_default.capsule,
|
|
35527
|
+
"data-testid": "room-task-capsule",
|
|
35528
|
+
...running > 0 ? { "data-running": "" } : {},
|
|
35529
|
+
onClick: () => {
|
|
35530
|
+
openTasks();
|
|
35531
|
+
},
|
|
35532
|
+
children: [running > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
35533
|
+
className: RoomTaskCapsule_module_css_default.dot,
|
|
35534
|
+
"aria-hidden": true
|
|
35535
|
+
}), running > 0 ? t("job.capsule.running", { count: running }) : t("job.capsule.idle", { count: jobs.length })]
|
|
35536
|
+
}),
|
|
35537
|
+
attention > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
35538
|
+
type: "button",
|
|
35539
|
+
className: RoomTaskCapsule_module_css_default.capsule,
|
|
35540
|
+
"data-attention": "",
|
|
35541
|
+
onClick: () => {
|
|
35542
|
+
openTasks(firstAttention?.id);
|
|
35543
|
+
},
|
|
35544
|
+
children: t("job.capsule.attention", { count: attention })
|
|
35545
|
+
}),
|
|
35546
|
+
waiting !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
35547
|
+
type: "button",
|
|
35548
|
+
className: RoomTaskCapsule_module_css_default.capsule,
|
|
35549
|
+
"data-attention": "",
|
|
35550
|
+
"data-waiting": "",
|
|
35551
|
+
onClick: waiting.jump,
|
|
35552
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
35553
|
+
className: RoomTaskCapsule_module_css_default.dot,
|
|
35554
|
+
"aria-hidden": true
|
|
35555
|
+
}), t("question.capsule", { member: waiting.member })]
|
|
35556
|
+
})
|
|
35557
|
+
]
|
|
34887
35558
|
})
|
|
34888
35559
|
});
|
|
34889
35560
|
}
|
|
34890
35561
|
//#endregion
|
|
34891
35562
|
//#region \0dsh-css:src/client/RoomTodoStrip.module.css.mjs
|
|
34892
|
-
const css$
|
|
34893
|
-
const tagId$
|
|
34894
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
35563
|
+
const css$14 = ".DjKAXq_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));border:1px solid var(--dsw-alias-border-l1,#00000014);background:var(--dsw-specific-tip,var(--dsw-alias-bg-layer-1,#fff));--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border-radius:12px;flex:none;overflow:hidden}.DjKAXq_body{flex-direction:column;gap:8px;padding:6px 12px;display:flex}.DjKAXq_header{text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:0;display:flex}.DjKAXq_lead{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.DjKAXq_title{color:var(--dsw-alias-label-primary,#1f2329);flex:none;font-size:13px;font-weight:500;line-height:24px}.DjKAXq_progress{min-width:0;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:13px;font-weight:400;line-height:20px;overflow:hidden}.DjKAXq_chevron{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.DjKAXq_list{flex-direction:column;gap:8px;max-height:180px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.DjKAXq_item{min-width:0;color:var(--dsw-alias-label-secondary,#1f2329bf);align-items:center;gap:10px;font-size:13px;line-height:20px;display:flex}.DjKAXq_glyph{flex:none;place-items:center;width:16px;height:16px;display:grid}.DjKAXq_glyphCompleted{color:var(--dsw-alias-state-success-primary,#34a853)}.DjKAXq_glyphPending{color:var(--dsw-alias-label-caption,#adb2b8)}.DjKAXq_glyphProgress{color:var(--dsw-alias-state-business-primary,#4176e6);animation:1s linear infinite DjKAXq_room-todo-progress-spin}@keyframes DjKAXq_room-todo-progress-spin{to{transform:rotate(360deg)}}.DjKAXq_content{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.DjKAXq_header:focus:not(:focus-visible){outline:none}";
|
|
35564
|
+
const tagId$14 = "@khorsheed/dsh-room/RoomTodoStrip.module.css";
|
|
35565
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$14) + "]") === null) {
|
|
34895
35566
|
const tag = document.createElement("style");
|
|
34896
35567
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
34897
|
-
tag.dataset.pluginCss = tagId$
|
|
34898
|
-
tag.textContent = css$
|
|
35568
|
+
tag.dataset.pluginCss = tagId$14;
|
|
35569
|
+
tag.textContent = css$14;
|
|
34899
35570
|
document.head.appendChild(tag);
|
|
34900
35571
|
}
|
|
34901
35572
|
var RoomTodoStrip_module_css_default = {
|
|
34902
|
-
"header": "DjKAXq_header",
|
|
34903
|
-
"lead": "DjKAXq_lead",
|
|
34904
|
-
"glyph": "DjKAXq_glyph",
|
|
34905
|
-
"progress": "DjKAXq_progress",
|
|
34906
|
-
"content": "DjKAXq_content",
|
|
34907
|
-
"body": "DjKAXq_body",
|
|
34908
35573
|
"glyphProgress": "DjKAXq_glyphProgress",
|
|
34909
35574
|
"list": "DjKAXq_list",
|
|
35575
|
+
"body": "DjKAXq_body",
|
|
34910
35576
|
"glyphCompleted": "DjKAXq_glyphCompleted",
|
|
34911
|
-
"
|
|
34912
|
-
"
|
|
35577
|
+
"header": "DjKAXq_header",
|
|
35578
|
+
"chevron": "DjKAXq_chevron",
|
|
34913
35579
|
"item": "DjKAXq_item",
|
|
34914
|
-
"
|
|
35580
|
+
"progress": "DjKAXq_progress",
|
|
35581
|
+
"lead": "DjKAXq_lead",
|
|
34915
35582
|
"room-todo-progress-spin": "DjKAXq_room-todo-progress-spin",
|
|
34916
|
-
"
|
|
35583
|
+
"root": "DjKAXq_root",
|
|
35584
|
+
"glyph": "DjKAXq_glyph",
|
|
35585
|
+
"title": "DjKAXq_title",
|
|
35586
|
+
"glyphPending": "DjKAXq_glyphPending",
|
|
35587
|
+
"content": "DjKAXq_content"
|
|
34917
35588
|
};
|
|
34918
35589
|
//#endregion
|
|
34919
35590
|
//#region src/client/RoomTodoStrip.tsx
|
|
@@ -35083,24 +35754,24 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35083
35754
|
}
|
|
35084
35755
|
//#endregion
|
|
35085
35756
|
//#region \0dsh-css:src/client/RoomQueueStrip.module.css.mjs
|
|
35086
|
-
const css$
|
|
35087
|
-
const tagId$
|
|
35088
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
35757
|
+
const css$13 = ".t5cYHq_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));border:1px solid var(--dsw-alias-border-l1,#00000014);background:var(--dsw-specific-tip,var(--dsw-alias-bg-layer-1,#fff));border-radius:12px;flex:none;overflow:hidden}.t5cYHq_header{box-sizing:border-box;width:100%;min-height:36px;color:var(--dsw-alias-label-primary,#1f2329);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:4px 12px;display:flex}.t5cYHq_lead{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.t5cYHq_count{flex:auto;min-width:0;font-size:13px;font-weight:500;line-height:24px}.t5cYHq_chevron{width:14px;height:14px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.t5cYHq_list{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);max-height:180px;margin:0;padding:0 12px 6px;list-style:none;overflow-y:auto}.t5cYHq_row{box-sizing:border-box;align-items:center;gap:10px;width:100%;min-height:28px;display:flex}.t5cYHq_preview{min-width:0;color:var(--dsw-alias-label-primary-dimmed,#1f23299e);text-overflow:ellipsis;white-space:nowrap;word-break:break-word;flex:auto;font-size:13px;line-height:20px;overflow:hidden}.t5cYHq_header:focus:not(:focus-visible){outline:none}";
|
|
35758
|
+
const tagId$13 = "@khorsheed/dsh-room/RoomQueueStrip.module.css";
|
|
35759
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$13) + "]") === null) {
|
|
35089
35760
|
const tag = document.createElement("style");
|
|
35090
35761
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
35091
|
-
tag.dataset.pluginCss = tagId$
|
|
35092
|
-
tag.textContent = css$
|
|
35762
|
+
tag.dataset.pluginCss = tagId$13;
|
|
35763
|
+
tag.textContent = css$13;
|
|
35093
35764
|
document.head.appendChild(tag);
|
|
35094
35765
|
}
|
|
35095
35766
|
var RoomQueueStrip_module_css_default = {
|
|
35096
|
-
"preview": "t5cYHq_preview",
|
|
35097
35767
|
"chevron": "t5cYHq_chevron",
|
|
35098
35768
|
"header": "t5cYHq_header",
|
|
35099
|
-
"root": "t5cYHq_root",
|
|
35100
|
-
"row": "t5cYHq_row",
|
|
35101
35769
|
"lead": "t5cYHq_lead",
|
|
35102
35770
|
"count": "t5cYHq_count",
|
|
35103
|
-
"list": "t5cYHq_list"
|
|
35771
|
+
"list": "t5cYHq_list",
|
|
35772
|
+
"root": "t5cYHq_root",
|
|
35773
|
+
"preview": "t5cYHq_preview",
|
|
35774
|
+
"row": "t5cYHq_row"
|
|
35104
35775
|
};
|
|
35105
35776
|
//#endregion
|
|
35106
35777
|
//#region src/client/RoomQueueStrip.tsx
|
|
@@ -35178,34 +35849,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35178
35849
|
}
|
|
35179
35850
|
//#endregion
|
|
35180
35851
|
//#region \0dsh-css:src/client/RoomModelPicker.module.css.mjs
|
|
35181
|
-
const css$
|
|
35182
|
-
const tagId$
|
|
35183
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
35852
|
+
const css$12 = "._0nCswa_root{align-items:center;min-width:0;display:flex;position:relative}._0nCswa_trigger{min-width:0;max-width:220px;height:28px;color:var(--dsw-alias-label-secondary,#1f2329cc);cursor:pointer;background:0 0;border:none;border-radius:24px;outline:none;align-items:center;gap:4px;padding:0 4px 0 8px;font-size:13px;font-weight:500;line-height:20px;display:flex}._0nCswa_trigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}._0nCswa_trigger:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3,#7f7f7f66)}._0nCswa_trigger:disabled{color:var(--dsw-alias-label-dimmed,#7f7f7f80);cursor:default}._0nCswa_triggerLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._0nCswa_triggerEffort{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-caption,#adb2b8);flex-shrink:1000;overflow:hidden}._0nCswa_chevron,._0nCswa_chevronOpen{color:var(--dsw-alias-label-caption,#adb2b8);flex:none;transition:transform .12s}._0nCswa_chevronOpen{transform:rotate(180deg)}._0nCswa_menu{z-index:10;background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));width:max-content;min-width:min(240px,100vw - 32px);max-width:min(420px,100vw - 32px);max-height:min(360px,100vh - 96px);backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,var(--dsw-shadow-lv3,0 12px 32px 0 #00000014));color:var(--dsw-alias-label-primary,#1f2329);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border:0;border-radius:20px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);right:0;overflow:hidden}._0nCswa_status{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:10px;font-size:13px;line-height:20px}._0nCswa_groups{min-height:0;overflow-y:auto}._0nCswa_group+._0nCswa_group{margin-top:4px}._0nCswa_groupTitle{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:5px 8px 3px;font-size:12px;font-weight:500;line-height:18px}._0nCswa_option{box-sizing:border-box;width:auto;min-width:100%;min-height:38px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;outline:none;align-items:center;gap:8px;padding:6px 8px;display:flex}._0nCswa_option:hover:not(:disabled),._0nCswa_option:focus-visible{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}._0nCswa_option:disabled{color:var(--dsw-alias-label-dimmed,#7f7f7f80);cursor:default}._0nCswa_modelName{min-width:0;color:inherit;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;font-weight:500;line-height:20px;overflow:hidden}._0nCswa_check{color:var(--dsw-alias-label-primary,#1f2329);flex:0 0 18px;place-items:center;display:grid}._0nCswa_cell{box-sizing:border-box;width:auto;min-width:100%;height:40px;color:var(--dsw-alias-label-primary,#1f2329);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:14px;line-height:22px;display:flex}._0nCswa_cell:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}._0nCswa_cellLabel{white-space:nowrap;flex:none}._0nCswa_cellValue{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:auto;overflow:hidden}._0nCswa_cellChevron{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none}";
|
|
35853
|
+
const tagId$12 = "@khorsheed/dsh-room/RoomModelPicker.module.css";
|
|
35854
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$12) + "]") === null) {
|
|
35184
35855
|
const tag = document.createElement("style");
|
|
35185
35856
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
35186
|
-
tag.dataset.pluginCss = tagId$
|
|
35187
|
-
tag.textContent = css$
|
|
35857
|
+
tag.dataset.pluginCss = tagId$12;
|
|
35858
|
+
tag.textContent = css$12;
|
|
35188
35859
|
document.head.appendChild(tag);
|
|
35189
35860
|
}
|
|
35190
35861
|
var RoomModelPicker_module_css_default = {
|
|
35191
|
-
"
|
|
35192
|
-
"groupTitle": "_0nCswa_groupTitle",
|
|
35862
|
+
"groups": "_0nCswa_groups",
|
|
35193
35863
|
"chevron": "_0nCswa_chevron",
|
|
35864
|
+
"check": "_0nCswa_check",
|
|
35865
|
+
"chevronOpen": "_0nCswa_chevronOpen",
|
|
35866
|
+
"modelName": "_0nCswa_modelName",
|
|
35194
35867
|
"cell": "_0nCswa_cell",
|
|
35195
|
-
"option": "_0nCswa_option",
|
|
35196
35868
|
"triggerLabel": "_0nCswa_triggerLabel",
|
|
35197
|
-
"
|
|
35869
|
+
"trigger": "_0nCswa_trigger",
|
|
35870
|
+
"menu": "_0nCswa_menu",
|
|
35198
35871
|
"triggerEffort": "_0nCswa_triggerEffort",
|
|
35872
|
+
"root": "_0nCswa_root",
|
|
35873
|
+
"groupTitle": "_0nCswa_groupTitle",
|
|
35874
|
+
"option": "_0nCswa_option",
|
|
35875
|
+
"status": "_0nCswa_status",
|
|
35199
35876
|
"cellLabel": "_0nCswa_cellLabel",
|
|
35200
35877
|
"cellValue": "_0nCswa_cellValue",
|
|
35201
|
-
"status": "_0nCswa_status",
|
|
35202
35878
|
"group": "_0nCswa_group",
|
|
35203
|
-
"
|
|
35204
|
-
"cellChevron": "_0nCswa_cellChevron",
|
|
35205
|
-
"root": "_0nCswa_root",
|
|
35206
|
-
"chevronOpen": "_0nCswa_chevronOpen",
|
|
35207
|
-
"menu": "_0nCswa_menu",
|
|
35208
|
-
"check": "_0nCswa_check"
|
|
35879
|
+
"cellChevron": "_0nCswa_cellChevron"
|
|
35209
35880
|
};
|
|
35210
35881
|
//#endregion
|
|
35211
35882
|
//#region src/client/RoomModelPicker.tsx
|
|
@@ -35451,8 +36122,142 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35451
36122
|
});
|
|
35452
36123
|
}
|
|
35453
36124
|
//#endregion
|
|
36125
|
+
//#region \0dsh-css:src/client/RoomAttachments.module.css.mjs
|
|
36126
|
+
const css$11 = ".z-QAkq_rail{scrollbar-width:none;align-items:stretch;gap:10px;min-width:0;padding:2px 2px 0;display:flex;overflow:auto hidden}.z-QAkq_rail::-webkit-scrollbar{display:none}.z-QAkq_imageItem{flex:none;width:64px;height:64px;position:relative}.z-QAkq_thumbnail{border:.5px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);border-radius:var(--dsw-radius-xl,12px);background:var(--dsw-alias-interactive-bg-hover,#0000000a);cursor:zoom-in;width:64px;height:64px;padding:0;overflow:hidden}.z-QAkq_thumbnail img{object-fit:cover;width:100%;height:100%;display:block}.z-QAkq_card{border:.5px solid var(--dsw-alias-border-l2,#0000001f);border-radius:var(--dsw-radius-lg,10px);background:var(--dsw-specific-input-major,transparent);box-sizing:border-box;text-align:left;flex:none;align-items:center;gap:10px;width:240px;height:64px;padding:0 12px;display:inline-flex;position:relative}.z-QAkq_failed{border-color:var(--dsw-alias-state-error-primary,#d54941)}.z-QAkq_icon{flex:none;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.z-QAkq_spinner{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#00000073);border:2px solid;border-top-color:#0000;border-radius:50%;animation:.8s linear infinite z-QAkq_room-attachment-spin}.z-QAkq_spinner[data-idle]{border-top-color:currentColor;animation:none}@keyframes z-QAkq_room-attachment-spin{to{transform:rotate(360deg)}}.z-QAkq_body{flex-direction:column;flex:1;min-width:0;padding:8px 0;display:flex}.z-QAkq_retry{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.z-QAkq_name{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-primary,#1f2329);font-size:var(--dsh-panel-body-size,14px);font-weight:500;line-height:22px;overflow:hidden}.z-QAkq_meta{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-tertiary,#00000073);font-size:var(--dsh-panel-meta-size,12px);line-height:15px;overflow:hidden}.z-QAkq_metaFailed{color:var(--dsw-alias-state-error-primary,#d54941)}.z-QAkq_remove{z-index:1;background:var(--dsw-alias-button-contrast-fill,#000000b8);width:18px;height:18px;color:var(--dsw-alias-label-primary-inverted,#fff);cursor:pointer;opacity:0;border:none;border-radius:50%;place-items:center;padding:0;transition:opacity .2s ease-in-out;display:grid;position:absolute;top:4px;right:4px}.z-QAkq_imageItem:hover .z-QAkq_remove,.z-QAkq_card:hover .z-QAkq_remove,.z-QAkq_remove:focus-visible{opacity:1}@media (pointer:coarse){.z-QAkq_remove{opacity:1}}@media (prefers-reduced-motion:reduce){.z-QAkq_remove{transition:none}.z-QAkq_spinner{animation:none}}";
|
|
36127
|
+
const tagId$11 = "@khorsheed/dsh-room/RoomAttachments.module.css";
|
|
36128
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
|
|
36129
|
+
const tag = document.createElement("style");
|
|
36130
|
+
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
36131
|
+
tag.dataset.pluginCss = tagId$11;
|
|
36132
|
+
tag.textContent = css$11;
|
|
36133
|
+
document.head.appendChild(tag);
|
|
36134
|
+
}
|
|
36135
|
+
var RoomAttachments_module_css_default = {
|
|
36136
|
+
"thumbnail": "z-QAkq_thumbnail",
|
|
36137
|
+
"room-attachment-spin": "z-QAkq_room-attachment-spin",
|
|
36138
|
+
"retry": "z-QAkq_retry",
|
|
36139
|
+
"meta": "z-QAkq_meta",
|
|
36140
|
+
"metaFailed": "z-QAkq_metaFailed",
|
|
36141
|
+
"remove": "z-QAkq_remove",
|
|
36142
|
+
"card": "z-QAkq_card",
|
|
36143
|
+
"icon": "z-QAkq_icon",
|
|
36144
|
+
"spinner": "z-QAkq_spinner",
|
|
36145
|
+
"name": "z-QAkq_name",
|
|
36146
|
+
"body": "z-QAkq_body",
|
|
36147
|
+
"rail": "z-QAkq_rail",
|
|
36148
|
+
"failed": "z-QAkq_failed",
|
|
36149
|
+
"imageItem": "z-QAkq_imageItem"
|
|
36150
|
+
};
|
|
36151
|
+
//#endregion
|
|
36152
|
+
//#region src/client/RoomAttachments.tsx
|
|
36153
|
+
/**
|
|
36154
|
+
* The room composer's draft-attachment rail: image thumbnails (click opens
|
|
36155
|
+
* the original in the primitives' lightbox) and file cards with their upload
|
|
36156
|
+
* state (uploading / failed → click to retry), each with a hover ✕ — the
|
|
36157
|
+
* official composer's rail (ui-attachment's ComposerAttachments + FileCard)
|
|
36158
|
+
* redrawn on the same tokens, because that package exposes no client
|
|
36159
|
+
* component a plugin bundle can import. The drafts themselves are the
|
|
36160
|
+
* official conversation service's (RoomAttachmentsFace).
|
|
36161
|
+
*/
|
|
36162
|
+
/** The rail over the textarea; renders nothing without drafts. */
|
|
36163
|
+
function RoomAttachments({ attachments, face, onRemove, onRetry, t }) {
|
|
36164
|
+
const uploads = (0, react.useSyncExternalStore)(face.uploads.subscribe, face.uploads.getSnapshot);
|
|
36165
|
+
const [preview, setPreview] = (0, react.useState)(void 0);
|
|
36166
|
+
if (attachments.length === 0) return null;
|
|
36167
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
36168
|
+
className: RoomAttachments_module_css_default.rail,
|
|
36169
|
+
children: [attachments.map((attachment) => {
|
|
36170
|
+
const name = attachment.file.name;
|
|
36171
|
+
const remove = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
36172
|
+
type: "button",
|
|
36173
|
+
className: RoomAttachments_module_css_default.remove,
|
|
36174
|
+
"aria-label": t("attach.remove", { name }),
|
|
36175
|
+
onMouseDown: (event) => {
|
|
36176
|
+
event.preventDefault();
|
|
36177
|
+
},
|
|
36178
|
+
onClick: () => {
|
|
36179
|
+
onRemove(attachment.id);
|
|
36180
|
+
},
|
|
36181
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
36182
|
+
viewBox: "0 0 12 12",
|
|
36183
|
+
width: "8",
|
|
36184
|
+
height: "8",
|
|
36185
|
+
"aria-hidden": true,
|
|
36186
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
36187
|
+
d: "M2 2l8 8M10 2l-8 8",
|
|
36188
|
+
stroke: "currentColor",
|
|
36189
|
+
strokeWidth: "1.6",
|
|
36190
|
+
strokeLinecap: "round"
|
|
36191
|
+
})
|
|
36192
|
+
})
|
|
36193
|
+
});
|
|
36194
|
+
if (attachment.kind === "image") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
36195
|
+
className: RoomAttachments_module_css_default.imageItem,
|
|
36196
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
36197
|
+
type: "button",
|
|
36198
|
+
className: RoomAttachments_module_css_default.thumbnail,
|
|
36199
|
+
"aria-label": t("attach.open", { name }),
|
|
36200
|
+
onClick: () => {
|
|
36201
|
+
setPreview(attachment);
|
|
36202
|
+
},
|
|
36203
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
36204
|
+
src: attachment.previewUrl,
|
|
36205
|
+
alt: name
|
|
36206
|
+
})
|
|
36207
|
+
}), remove]
|
|
36208
|
+
}, attachment.id);
|
|
36209
|
+
const state = uploads[attachment.id]?.status ?? "uploading";
|
|
36210
|
+
const meta = state === "uploading" ? t("attach.uploading") : state === "error" ? t("attach.failed") : typeof _deepseek_ai_dsh_client_ui_primitives.fileSizeText === "function" ? (0, _deepseek_ai_dsh_client_ui_primitives.fileSizeText)(attachment.file.size) : "";
|
|
36211
|
+
const body = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
36212
|
+
className: RoomAttachments_module_css_default.name,
|
|
36213
|
+
children: name
|
|
36214
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
36215
|
+
className: state === "error" ? `${RoomAttachments_module_css_default.meta} ${RoomAttachments_module_css_default.metaFailed}` : RoomAttachments_module_css_default.meta,
|
|
36216
|
+
children: meta
|
|
36217
|
+
})] });
|
|
36218
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
36219
|
+
className: state === "error" ? `${RoomAttachments_module_css_default.card} ${RoomAttachments_module_css_default.failed}` : RoomAttachments_module_css_default.card,
|
|
36220
|
+
title: name,
|
|
36221
|
+
children: [
|
|
36222
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
36223
|
+
className: RoomAttachments_module_css_default.icon,
|
|
36224
|
+
"aria-hidden": true,
|
|
36225
|
+
children: state === "uploading" || typeof _deepseek_ai_dsh_client_ui_primitives.FileTypeIcon !== "function" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
36226
|
+
className: RoomAttachments_module_css_default.spinner,
|
|
36227
|
+
"data-idle": state === "uploading" ? void 0 : ""
|
|
36228
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, { path: name })
|
|
36229
|
+
}),
|
|
36230
|
+
state === "error" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
36231
|
+
type: "button",
|
|
36232
|
+
className: `${RoomAttachments_module_css_default.body} ${RoomAttachments_module_css_default.retry}`,
|
|
36233
|
+
"aria-label": t("attach.retry", { name }),
|
|
36234
|
+
onClick: () => {
|
|
36235
|
+
onRetry(attachment.id);
|
|
36236
|
+
},
|
|
36237
|
+
children: body
|
|
36238
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
36239
|
+
className: RoomAttachments_module_css_default.body,
|
|
36240
|
+
children: body
|
|
36241
|
+
}),
|
|
36242
|
+
remove
|
|
36243
|
+
]
|
|
36244
|
+
}, attachment.id);
|
|
36245
|
+
}), preview !== void 0 && typeof _deepseek_ai_dsh_client_ui_primitives.ImageLightbox === "function" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.ImageLightbox, {
|
|
36246
|
+
src: preview.previewUrl,
|
|
36247
|
+
alt: preview.file.name,
|
|
36248
|
+
labels: {
|
|
36249
|
+
dialog: t("attach.preview"),
|
|
36250
|
+
close: t("attach.closePreview")
|
|
36251
|
+
},
|
|
36252
|
+
onClose: () => {
|
|
36253
|
+
setPreview(void 0);
|
|
36254
|
+
}
|
|
36255
|
+
})]
|
|
36256
|
+
});
|
|
36257
|
+
}
|
|
36258
|
+
//#endregion
|
|
35454
36259
|
//#region \0dsh-css:src/client/RoomComposer.module.css.mjs
|
|
35455
|
-
const css$10 = ".UGGjQG_root{padding:0 var(--dsh-composer-side-clearance,16px) 8px;flex-direction:column;align-items:center;display:flex}.UGGjQG_error{width:100%;max-width:var(--dsh-composer-card-max-width,780px);background:var(--dsw-alias-interactive-bg-hover-danger,#ec13130d);color:var(--dsw-alias-state-error-primary,#ec1313);border-radius:8px;margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.UGGjQG_dock{width:100%;max-width:var(--dsh-composer-card-max-width,780px)}.UGGjQG_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width,780px);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2,#0000001a);border-radius:var(--dsw-radius-panel,22px);background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1,#fff));box-shadow:var(--dsw-elevation-soft,0 0 0 1px #0000001a, 0 4px 12px 0 #0000000a);font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border:0;flex-direction:column;gap:12px;padding-top:8px;display:flex;position:relative}.UGGjQG_input{box-sizing:border-box;resize:none;width:100%;font-family:var(--dsw-font-family,inherit);font-size:inherit;line-height:inherit;color:var(--dsw-alias-label-primary,#1f2329);caret-color:var(--dsw-alias-state-business-primary,#4176e6);background:0 0;border:none;outline:none;min-height:36px;max-height:160px;padding:4px 8px 0 14px;overflow-y:auto}.UGGjQG_input::placeholder{color:var(--dsw-alias-label-caption,#adb2b8);user-select:none}.UGGjQG_row{justify-content:flex-end;align-items:center;gap:4px;padding:0 8px 6px;display:flex}.UGGjQG_primary{background:var(--dsw-alias-button-info-fill,#4176e6);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid}.UGGjQG_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover,#679efe)}.UGGjQG_primary:disabled{opacity:.4;cursor:default}.UGGjQG_menu{box-sizing:border-box;border:1px solid var(--dsw-alias-border-inverted,#0000);background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:218px;max-width:360px;max-height:340px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-shadow-lv3,0 0 1px 0 #0003, 0 0 4px 0 #00000005, 0 12px 32px 0 #00000014);z-index:1;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border-radius:12px;margin:0 0 6px;padding:4px;list-style:none;position:absolute;bottom:100%;left:8px;overflow-y:auto}.UGGjQG_item,.UGGjQG_itemActive{cursor:pointer;text-align:left;width:100%;min-height:34px;color:var(--dsw-alias-label-primary,#1f2329);background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:6px 10px;font-size:14px;line-height:22px;display:flex}.UGGjQG_item:hover,.UGGjQG_itemActive{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}.UGGjQG_dot{border-radius:50%;flex:none;width:8px;height:8px}.UGGjQG_itemText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.UGGjQG_sessionMark{text-align:center;width:8px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;font-size:12px;line-height:18px}.UGGjQG_item[data-kid],.UGGjQG_itemActive[data-kid]{padding-left:28px}.UGGjQG_itemContext{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px}.UGGjQG_expand{width:24px;height:24px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:6px;flex:none;place-items:center;transition:transform .12s;display:inline-grid}.UGGjQG_expand:hover{background:var(--dsw-alias-fill-secondary,#7f7f7f1f)}.UGGjQG_expand[data-open]{transform:rotate(90deg)}.UGGjQG_menuGroup{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:6px 10px 2px;font-size:11px;line-height:16px}.UGGjQG_menuMore{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000000f);color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin-top:2px;padding:6px 10px 4px;font-size:11.5px;line-height:16px}.UGGjQG_hint{white-space:nowrap;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;margin-left:auto;font-size:12px;line-height:18px}.UGGjQG_primary:focus:not(:focus-visible),.UGGjQG_item:focus:not(:focus-visible),.UGGjQG_itemActive:focus:not(:focus-visible){outline:none}.UGGjQG_coordinator{color:var(--dsw-alias-label-tertiary,#81858c);align-self:flex-start;align-items:center;gap:6px;padding:0 14px;font-size:12px;line-height:18px;display:inline-flex}.UGGjQG_coordinatorDot{background:var(--member-color,var(--dsw-alias-label-tertiary,#81858c));border-radius:50%;width:8px;height:8px}.UGGjQG_coordinatorName{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-weight:600}.UGGjQG_tagRow{margin-bottom:-8px;padding:0 12px 0 16px;display:flex}.UGGjQG_tag{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 12%, transparent);color:var(--dsw-alias-state-business-primary,#4176e6);border-radius:6px;align-items:center;gap:4px;padding:0 4px 0 7px;font-size:12px;line-height:20px;display:inline-flex}.UGGjQG_tag[data-new]{background:color-mix(in srgb, var(--dsw-alias-state-success,#1f9a55) 12%, transparent);color:var(--dsw-alias-state-success,#1f9a55)}.UGGjQG_tagRemove{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 3px;font-size:11px}.UGGjQG_tagRemove:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.UGGjQG_chipRow{flex-wrap:wrap;gap:6px;margin-bottom:-8px;padding:0 12px 0 16px;display:flex}.UGGjQG_chip{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 12%, transparent);min-width:0;max-width:100%;color:var(--dsw-alias-state-business-primary,#4176e6);border-radius:6px;align-items:center;padding:0 4px 0 2px;font-size:12px;line-height:20px;display:inline-flex}.UGGjQG_chipLabel{min-width:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:3px;padding:0 4px;display:inline-flex}.UGGjQG_chipLabel:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.UGGjQG_chipAt{opacity:.8;flex:none}.UGGjQG_chipText{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:min(280px,60vw);overflow:hidden}";
|
|
36260
|
+
const css$10 = ".UGGjQG_root{padding:0 var(--dsh-composer-side-clearance,16px) 8px;flex-direction:column;align-items:center;display:flex}.UGGjQG_error{width:100%;max-width:var(--dsh-composer-card-max-width,780px);background:var(--dsw-alias-interactive-bg-hover-danger,#ec13130d);color:var(--dsw-alias-state-error-primary,#ec1313);border-radius:8px;margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.UGGjQG_dock{width:100%;max-width:var(--dsh-composer-card-max-width,780px)}.UGGjQG_card{box-sizing:border-box;width:100%;max-width:var(--dsh-composer-card-max-width,780px);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2,#0000001a);border-radius:var(--dsw-radius-panel,22px);background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1,#fff));box-shadow:var(--dsw-elevation-soft,0 0 0 1px #0000001a, 0 4px 12px 0 #0000000a);font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border:0;flex-direction:column;gap:12px;padding-top:8px;display:flex;position:relative}.UGGjQG_input{box-sizing:border-box;resize:none;width:100%;font-family:var(--dsw-font-family,inherit);font-size:inherit;line-height:inherit;color:var(--dsw-alias-label-primary,#1f2329);caret-color:var(--dsw-alias-state-business-primary,#4176e6);background:0 0;border:none;outline:none;min-height:36px;max-height:160px;padding:4px 8px 0 14px;overflow-y:auto}.UGGjQG_input::placeholder{color:var(--dsw-alias-label-caption,#adb2b8);user-select:none}.UGGjQG_row{justify-content:flex-end;align-items:center;gap:4px;padding:0 8px 6px;display:flex}.UGGjQG_attach{width:28px;height:28px;color:var(--dsw-alias-label-secondary,#1f2329b3);cursor:pointer;background:0 0;border:none;border-radius:8px;place-items:center;margin-right:auto;padding:0;display:grid}.UGGjQG_attach:hover{background:var(--dsw-alias-interactive-bg-hover,#0000000a);color:var(--dsw-alias-label-primary,#1f2329)}.UGGjQG_primary{background:var(--dsw-alias-button-info-fill,#4176e6);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid}.UGGjQG_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover,#679efe)}.UGGjQG_primary:disabled{opacity:.4;cursor:default}.UGGjQG_menu{box-sizing:border-box;border:1px solid var(--dsw-alias-border-inverted,#0000);background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:218px;max-width:360px;max-height:340px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-shadow-lv3,0 0 1px 0 #0003, 0 0 4px 0 #00000005, 0 12px 32px 0 #00000014);z-index:1;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border-radius:12px;margin:0 0 6px;padding:4px;list-style:none;position:absolute;bottom:100%;left:8px;overflow-y:auto}.UGGjQG_item,.UGGjQG_itemActive{cursor:pointer;text-align:left;width:100%;min-height:34px;color:var(--dsw-alias-label-primary,#1f2329);background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:6px 10px;font-size:14px;line-height:22px;display:flex}.UGGjQG_item:hover,.UGGjQG_itemActive{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}.UGGjQG_dot{border-radius:50%;flex:none;width:8px;height:8px}.UGGjQG_itemText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.UGGjQG_sessionMark{text-align:center;width:8px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;font-size:12px;line-height:18px}.UGGjQG_item[data-kid],.UGGjQG_itemActive[data-kid]{padding-left:28px}.UGGjQG_itemContext{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px}.UGGjQG_expand{width:24px;height:24px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:6px;flex:none;place-items:center;transition:transform .12s;display:inline-grid}.UGGjQG_expand:hover{background:var(--dsw-alias-fill-secondary,#7f7f7f1f)}.UGGjQG_expand[data-open]{transform:rotate(90deg)}.UGGjQG_menuGroup{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:6px 10px 2px;font-size:11px;line-height:16px}.UGGjQG_menuMore{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000000f);color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin-top:2px;padding:6px 10px 4px;font-size:11.5px;line-height:16px}.UGGjQG_hint{white-space:nowrap;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;margin-left:auto;font-size:12px;line-height:18px}.UGGjQG_primary:focus:not(:focus-visible),.UGGjQG_item:focus:not(:focus-visible),.UGGjQG_itemActive:focus:not(:focus-visible){outline:none}.UGGjQG_coordinator{color:var(--dsw-alias-label-tertiary,#81858c);align-self:flex-start;align-items:center;gap:6px;padding:0 14px;font-size:12px;line-height:18px;display:inline-flex}.UGGjQG_coordinatorDot{background:var(--member-color,var(--dsw-alias-label-tertiary,#81858c));border-radius:50%;width:8px;height:8px}.UGGjQG_coordinatorName{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-weight:600}.UGGjQG_tagRow{margin-bottom:-8px;padding:0 12px 0 16px;display:flex}.UGGjQG_tag{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 12%, transparent);color:var(--dsw-alias-state-business-primary,#4176e6);border-radius:6px;align-items:center;gap:4px;padding:0 4px 0 7px;font-size:12px;line-height:20px;display:inline-flex}.UGGjQG_tag[data-new]{background:color-mix(in srgb, var(--dsw-alias-state-success,#1f9a55) 12%, transparent);color:var(--dsw-alias-state-success,#1f9a55)}.UGGjQG_tagRemove{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 3px;font-size:11px}.UGGjQG_tagRemove:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.UGGjQG_chipRow{flex-wrap:wrap;gap:6px;margin-bottom:-8px;padding:0 12px 0 16px;display:flex}.UGGjQG_chip{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 12%, transparent);min-width:0;max-width:100%;color:var(--dsw-alias-state-business-primary,#4176e6);border-radius:6px;align-items:center;padding:0 4px 0 2px;font-size:12px;line-height:20px;display:inline-flex}.UGGjQG_chipLabel{min-width:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:3px;padding:0 4px;display:inline-flex}.UGGjQG_chipLabel:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.UGGjQG_chipAt{opacity:.8;flex:none}.UGGjQG_chipText{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:min(280px,60vw);overflow:hidden}.UGGjQG_resumeStrip{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);background:var(--dsw-alias-bg-layer-1,#fff);font-size:var(--dsh-panel-meta-size,12px);color:var(--dsw-alias-label-secondary,#1f2329b3);border-radius:10px;align-items:center;gap:10px;padding:6px 12px;line-height:18px;display:flex}.UGGjQG_resumeText{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.UGGjQG_resumeAction{background:var(--dsw-alias-info-fill,#3964fe);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:6px;flex:none;padding:2px 10px}.UGGjQG_resumeAction:disabled{opacity:.5;cursor:default}";
|
|
35456
36261
|
const tagId$10 = "@khorsheed/dsh-room/RoomComposer.module.css";
|
|
35457
36262
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
35458
36263
|
const tag = document.createElement("style");
|
|
@@ -35462,35 +36267,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35462
36267
|
document.head.appendChild(tag);
|
|
35463
36268
|
}
|
|
35464
36269
|
var RoomComposer_module_css_default = {
|
|
35465
|
-
"error": "UGGjQG_error",
|
|
35466
|
-
"itemText": "UGGjQG_itemText",
|
|
35467
|
-
"coordinatorDot": "UGGjQG_coordinatorDot",
|
|
35468
|
-
"primary": "UGGjQG_primary",
|
|
35469
|
-
"root": "UGGjQG_root",
|
|
35470
|
-
"coordinatorName": "UGGjQG_coordinatorName",
|
|
35471
|
-
"chipLabel": "UGGjQG_chipLabel",
|
|
35472
36270
|
"sessionMark": "UGGjQG_sessionMark",
|
|
35473
|
-
"
|
|
36271
|
+
"primary": "UGGjQG_primary",
|
|
36272
|
+
"hint": "UGGjQG_hint",
|
|
36273
|
+
"menuMore": "UGGjQG_menuMore",
|
|
36274
|
+
"tagRow": "UGGjQG_tagRow",
|
|
35474
36275
|
"tagRemove": "UGGjQG_tagRemove",
|
|
36276
|
+
"coordinatorName": "UGGjQG_coordinatorName",
|
|
36277
|
+
"resumeAction": "UGGjQG_resumeAction",
|
|
36278
|
+
"coordinator": "UGGjQG_coordinator",
|
|
36279
|
+
"dock": "UGGjQG_dock",
|
|
36280
|
+
"menu": "UGGjQG_menu",
|
|
35475
36281
|
"expand": "UGGjQG_expand",
|
|
35476
|
-
"
|
|
35477
|
-
"dot": "UGGjQG_dot",
|
|
35478
|
-
"menuMore": "UGGjQG_menuMore",
|
|
35479
|
-
"hint": "UGGjQG_hint",
|
|
35480
|
-
"dock": "UGGjQG_dock",
|
|
35481
|
-
"coordinator": "UGGjQG_coordinator",
|
|
35482
|
-
"input": "UGGjQG_input",
|
|
35483
|
-
"itemActive": "UGGjQG_itemActive",
|
|
35484
|
-
"card": "UGGjQG_card",
|
|
36282
|
+
"tag": "UGGjQG_tag",
|
|
35485
36283
|
"chipAt": "UGGjQG_chipAt",
|
|
36284
|
+
"error": "UGGjQG_error",
|
|
36285
|
+
"card": "UGGjQG_card",
|
|
36286
|
+
"resumeText": "UGGjQG_resumeText",
|
|
35486
36287
|
"row": "UGGjQG_row",
|
|
35487
|
-
"
|
|
35488
|
-
"
|
|
35489
|
-
"tag": "UGGjQG_tag",
|
|
36288
|
+
"root": "UGGjQG_root",
|
|
36289
|
+
"itemText": "UGGjQG_itemText",
|
|
35490
36290
|
"item": "UGGjQG_item",
|
|
35491
36291
|
"chipRow": "UGGjQG_chipRow",
|
|
35492
36292
|
"chipText": "UGGjQG_chipText",
|
|
35493
|
-
"
|
|
36293
|
+
"itemActive": "UGGjQG_itemActive",
|
|
36294
|
+
"itemContext": "UGGjQG_itemContext",
|
|
36295
|
+
"menuGroup": "UGGjQG_menuGroup",
|
|
36296
|
+
"coordinatorDot": "UGGjQG_coordinatorDot",
|
|
36297
|
+
"attach": "UGGjQG_attach",
|
|
36298
|
+
"chipLabel": "UGGjQG_chipLabel",
|
|
36299
|
+
"dot": "UGGjQG_dot",
|
|
36300
|
+
"chip": "UGGjQG_chip",
|
|
36301
|
+
"input": "UGGjQG_input",
|
|
36302
|
+
"resumeStrip": "UGGjQG_resumeStrip"
|
|
35494
36303
|
};
|
|
35495
36304
|
//#endregion
|
|
35496
36305
|
//#region src/client/RoomComposer.tsx
|
|
@@ -35587,14 +36396,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35587
36396
|
* must stay a pure function of the owner props plus stable state reads).
|
|
35588
36397
|
* @returns the room match, or null to pass the election down the chain.
|
|
35589
36398
|
*/
|
|
36399
|
+
/** Key prefix of the room's own pending interactions (its question/approval cards). */
|
|
36400
|
+
const ROOM_INTERACTION_PREFIX = "room:";
|
|
36401
|
+
/**
|
|
36402
|
+
* The pending-interaction key a room card publishes under.
|
|
36403
|
+
* @param kind - question or approval.
|
|
36404
|
+
* @param id - the card id.
|
|
36405
|
+
* @returns the key (prefixed, so the composer selector can tell it apart).
|
|
36406
|
+
*/
|
|
36407
|
+
function roomInteractionKey(kind, id) {
|
|
36408
|
+
return `${ROOM_INTERACTION_PREFIX}${kind}:${id}`;
|
|
36409
|
+
}
|
|
35590
36410
|
function selectRoomComposer(owner, isRoomCached) {
|
|
35591
|
-
if (owner.pendingInteraction !== void 0) return null;
|
|
36411
|
+
if (owner.pendingInteraction !== void 0 && owner.pendingInteraction.key?.startsWith(ROOM_INTERACTION_PREFIX) !== true) return null;
|
|
35592
36412
|
const sessionId = owner.sessionId ?? owner.session?.sessionId;
|
|
35593
36413
|
return sessionId !== void 0 && isRoomCached(sessionId) ? { room: true } : null;
|
|
35594
36414
|
}
|
|
35595
36415
|
const NO_CHIPS = [];
|
|
36416
|
+
const NO_IDS = [];
|
|
36417
|
+
/** The failed-run reason recovery journals for a round a host restart cut off (dispatch.ts). */
|
|
36418
|
+
const RESTART_INTERRUPTED = "Execution outcome is unknown after restart";
|
|
36419
|
+
const NO_UPLOADS = {};
|
|
36420
|
+
const NO_UPLOAD_STORE = {
|
|
36421
|
+
subscribe: () => () => {},
|
|
36422
|
+
getSnapshot: () => NO_UPLOADS
|
|
36423
|
+
};
|
|
35596
36424
|
/** The room composer takeover component. */
|
|
35597
|
-
function RoomComposer({ sessionId, roomStore, submit, stop, openTasks, taskTags, openPlanSession, reconcileDelivery, roomCwd, invite, listProviders, browseDirectory, modelSurface, renderHarnessModelPicker, modelDirectory, renderMemberConfiguration, renderMemberInbox, stopMember, openReference, listSessions, insertSessionReference, useSession, useProjection, useInput, inputActions, t }) {
|
|
36425
|
+
function RoomComposer({ sessionId, roomStore, submit, stop, openTasks, taskTags, openPlanSession, reconcileDelivery, roomCwd, invite, listProviders, browseDirectory, modelSurface, renderHarnessModelPicker, modelDirectory, renderMemberConfiguration, renderMemberInbox, stopMember, openReference, listSessions, insertSessionReference, useSession, useProjection, useInput, inputActions, t, attachments: attachmentFace }) {
|
|
35598
36426
|
const state = (0, react.useSyncExternalStore)(roomStore.subscribe, () => roomStore.getCached(sessionId));
|
|
35599
36427
|
const tag = (0, react.useSyncExternalStore)(taskTags?.subscribe ?? NO_TAGS, () => taskTags?.get(sessionId));
|
|
35600
36428
|
const draft = useInput((input) => input.draft);
|
|
@@ -35604,6 +36432,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35604
36432
|
const chips = chipMode ? occurrences : NO_CHIPS;
|
|
35605
36433
|
const value = chipMode ? freeText(draft, chips) : draft;
|
|
35606
36434
|
const [busy, setBusy] = (0, react.useState)(false);
|
|
36435
|
+
const attachmentActions = inputActions;
|
|
36436
|
+
const attachable = attachmentFace !== void 0 && attachmentActions.addAttachments !== void 0;
|
|
36437
|
+
const attachmentIds = useInput((input) => input.attachmentIds) ?? NO_IDS;
|
|
36438
|
+
const drafts = attachable && attachmentIds.length > 0 ? attachmentFace.resolve(attachmentIds) : [];
|
|
36439
|
+
const uploads = (0, react.useSyncExternalStore)(attachmentFace?.uploads.subscribe ?? NO_UPLOAD_STORE.subscribe, attachmentFace?.uploads.getSnapshot ?? NO_UPLOAD_STORE.getSnapshot);
|
|
36440
|
+
const uploadsPending = drafts.some((draft) => draft.kind === "file" && uploads[draft.id]?.status !== "ready");
|
|
36441
|
+
const fileInputRef = (0, react.useRef)(null);
|
|
35607
36442
|
const [error, setError] = (0, react.useState)(null);
|
|
35608
36443
|
const [mention, setMention] = (0, react.useState)(null);
|
|
35609
36444
|
/** Menu-picked addressees: a pick is explicit addressing wherever the
|
|
@@ -35762,17 +36597,61 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35762
36597
|
const restored = mention.start + name.length + 2;
|
|
35763
36598
|
requestAnimationFrame(() => areaRef.current?.setSelectionRange(restored, restored));
|
|
35764
36599
|
};
|
|
36600
|
+
/** Add picked, pasted, or dropped files as drafts on this session. */
|
|
36601
|
+
const addFiles = (files) => {
|
|
36602
|
+
if (!attachable || files.length === 0) return;
|
|
36603
|
+
try {
|
|
36604
|
+
const created = attachmentFace.create(sessionId, files);
|
|
36605
|
+
if (attachmentActions.addAttachments?.(created.map((entry) => entry.id)) !== true) {
|
|
36606
|
+
for (const entry of created) attachmentFace.release(entry.id);
|
|
36607
|
+
setError(t("composer.error.generic"));
|
|
36608
|
+
return;
|
|
36609
|
+
}
|
|
36610
|
+
setError(null);
|
|
36611
|
+
} catch (caught) {
|
|
36612
|
+
setError(caught instanceof Error && caught.name === "UnsupportedImageMediaTypeError" ? t("attach.unsupported") : caught instanceof Error ? caught.message : String(caught));
|
|
36613
|
+
}
|
|
36614
|
+
};
|
|
36615
|
+
const removeAttachment = (id) => {
|
|
36616
|
+
attachmentActions.removeAttachment?.(id);
|
|
36617
|
+
attachmentFace?.release(id);
|
|
36618
|
+
};
|
|
36619
|
+
const onPaste = (event) => {
|
|
36620
|
+
const files = [...event.clipboardData.files];
|
|
36621
|
+
if (!attachable || files.length === 0) return;
|
|
36622
|
+
event.preventDefault();
|
|
36623
|
+
addFiles(files);
|
|
36624
|
+
};
|
|
36625
|
+
const waitingAsk = state?.askLog?.find((ask) => ask.state === "pending" && ask.runId !== void 0);
|
|
36626
|
+
const interrupted = (state?.runs ?? []).filter((run) => run.state === "failed" && run.error?.startsWith(RESTART_INTERRUPTED) === true).map((run) => run.member).filter((name) => state?.members.some((member) => member.name === name) === true);
|
|
36627
|
+
const continueAll = async () => {
|
|
36628
|
+
if (busy || interrupted.length === 0) return;
|
|
36629
|
+
setBusy(true);
|
|
36630
|
+
setError(null);
|
|
36631
|
+
try {
|
|
36632
|
+
const outcome = await submit(sessionId, t("composer.continueText"), interrupted);
|
|
36633
|
+
if (!outcome.ok) setError(outcome.message);
|
|
36634
|
+
} finally {
|
|
36635
|
+
setBusy(false);
|
|
36636
|
+
}
|
|
36637
|
+
};
|
|
35765
36638
|
const send = async () => {
|
|
35766
36639
|
const text = draft.trim();
|
|
35767
|
-
|
|
36640
|
+
const ids = attachable ? attachmentIds : NO_IDS;
|
|
36641
|
+
if (text === "" && ids.length === 0 || busy || uploadsPending) return;
|
|
35768
36642
|
setBusy(true);
|
|
35769
36643
|
setError(null);
|
|
35770
36644
|
try {
|
|
35771
|
-
const
|
|
36645
|
+
const wire = ids.length === 0 ? void 0 : await attachmentFace.serialize(ids);
|
|
36646
|
+
const outcome = wire !== void 0 ? await submit(sessionId, text, picked, tag?.task, wire) : tag !== void 0 ? await submit(sessionId, text, picked, tag.task) : picked.length > 0 ? await submit(sessionId, text, picked) : await submit(sessionId, text);
|
|
35772
36647
|
if (!outcome.ok) {
|
|
35773
36648
|
setError(outcome.message);
|
|
35774
36649
|
return;
|
|
35775
36650
|
}
|
|
36651
|
+
if (ids.length > 0) {
|
|
36652
|
+
attachmentActions.pruneAttachments?.([]);
|
|
36653
|
+
for (const id of ids) attachmentFace.release(id);
|
|
36654
|
+
}
|
|
35776
36655
|
inputActions.setDraft("");
|
|
35777
36656
|
const flushDraft = inputActions.persistDraft;
|
|
35778
36657
|
flushDraft?.();
|
|
@@ -35855,11 +36734,41 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35855
36734
|
browseDirectory,
|
|
35856
36735
|
modelSurface,
|
|
35857
36736
|
renderHarnessModelPicker,
|
|
36737
|
+
waiting: waitingAsk === void 0 ? void 0 : {
|
|
36738
|
+
member: waitingAsk.member,
|
|
36739
|
+
jump: () => {
|
|
36740
|
+
const target = document.querySelector(`[data-ask-id="${CSS.escape(waitingAsk.id)}"]`);
|
|
36741
|
+
target?.scrollIntoView({
|
|
36742
|
+
block: "center",
|
|
36743
|
+
behavior: "smooth"
|
|
36744
|
+
});
|
|
36745
|
+
target?.querySelector("input, button")?.focus({ preventScroll: true });
|
|
36746
|
+
}
|
|
36747
|
+
},
|
|
35858
36748
|
t
|
|
35859
36749
|
}),
|
|
35860
36750
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomQueueStrip, {
|
|
35861
36751
|
items: [...external ? [] : queued, ...coordinatorQueue],
|
|
35862
36752
|
t
|
|
36753
|
+
}),
|
|
36754
|
+
interrupted.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
36755
|
+
className: RoomComposer_module_css_default.resumeStrip,
|
|
36756
|
+
role: "status",
|
|
36757
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
36758
|
+
className: RoomComposer_module_css_default.resumeText,
|
|
36759
|
+
children: t("composer.interrupted", {
|
|
36760
|
+
count: interrupted.length,
|
|
36761
|
+
names: interrupted.join("、")
|
|
36762
|
+
})
|
|
36763
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
36764
|
+
type: "button",
|
|
36765
|
+
className: RoomComposer_module_css_default.resumeAction,
|
|
36766
|
+
disabled: busy,
|
|
36767
|
+
onClick: () => {
|
|
36768
|
+
continueAll();
|
|
36769
|
+
},
|
|
36770
|
+
children: t("composer.continueAll")
|
|
36771
|
+
})]
|
|
35863
36772
|
})
|
|
35864
36773
|
]
|
|
35865
36774
|
}),
|
|
@@ -36031,6 +36940,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36031
36940
|
})]
|
|
36032
36941
|
}, chip.occurrenceId))
|
|
36033
36942
|
}),
|
|
36943
|
+
attachable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomAttachments, {
|
|
36944
|
+
attachments: drafts,
|
|
36945
|
+
face: attachmentFace,
|
|
36946
|
+
onRemove: removeAttachment,
|
|
36947
|
+
onRetry: (id) => {
|
|
36948
|
+
attachmentFace.retry(sessionId, id);
|
|
36949
|
+
},
|
|
36950
|
+
t
|
|
36951
|
+
}),
|
|
36034
36952
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
|
|
36035
36953
|
ref: areaRef,
|
|
36036
36954
|
className: RoomComposer_module_css_default.input,
|
|
@@ -36039,6 +36957,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36039
36957
|
placeholder: tag === void 0 ? t("composer.placeholder", { name: coordinator?.name ?? "dsh" }) : tag.task === "new" ? t("job.tagPlaceholderNew") : t("job.tagPlaceholder", { label: tag.label }),
|
|
36040
36958
|
onChange,
|
|
36041
36959
|
onKeyDown,
|
|
36960
|
+
onPaste,
|
|
36042
36961
|
onCompositionStart: () => {
|
|
36043
36962
|
composing.current = true;
|
|
36044
36963
|
},
|
|
@@ -36057,6 +36976,28 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36057
36976
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
36058
36977
|
className: RoomComposer_module_css_default.row,
|
|
36059
36978
|
children: [
|
|
36979
|
+
attachable && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
36980
|
+
type: "button",
|
|
36981
|
+
className: RoomComposer_module_css_default.attach,
|
|
36982
|
+
"aria-label": t("attach.add"),
|
|
36983
|
+
title: t("attach.add"),
|
|
36984
|
+
onMouseDown: (event) => {
|
|
36985
|
+
event.preventDefault();
|
|
36986
|
+
},
|
|
36987
|
+
onClick: () => {
|
|
36988
|
+
fileInputRef.current?.click();
|
|
36989
|
+
},
|
|
36990
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconPaperclipOutlineMedium, { size: 16 })
|
|
36991
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
36992
|
+
ref: fileInputRef,
|
|
36993
|
+
type: "file",
|
|
36994
|
+
multiple: true,
|
|
36995
|
+
hidden: true,
|
|
36996
|
+
onChange: (event) => {
|
|
36997
|
+
addFiles([...event.target.files ?? []]);
|
|
36998
|
+
event.target.value = "";
|
|
36999
|
+
}
|
|
37000
|
+
})] }),
|
|
36060
37001
|
external && coordinator.childSessionId !== void 0 && renderMemberConfiguration?.(coordinator.childSessionId),
|
|
36061
37002
|
!external && modelDirectory !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomModelPicker, {
|
|
36062
37003
|
directory: modelDirectory,
|
|
@@ -36093,7 +37034,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36093
37034
|
type: "button",
|
|
36094
37035
|
className: RoomComposer_module_css_default.primary,
|
|
36095
37036
|
"aria-label": t("composer.send"),
|
|
36096
|
-
disabled: busy || draft.trim() === "",
|
|
37037
|
+
disabled: busy || uploadsPending || draft.trim() === "" && (!attachable || attachmentIds.length === 0),
|
|
36097
37038
|
onMouseDown: (event) => {
|
|
36098
37039
|
event.preventDefault();
|
|
36099
37040
|
},
|
|
@@ -36115,9 +37056,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36115
37056
|
})
|
|
36116
37057
|
]
|
|
36117
37058
|
}),
|
|
36118
|
-
|
|
37059
|
+
useProjection !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomStatsLine, {
|
|
36119
37060
|
useProjection,
|
|
36120
37061
|
state,
|
|
37062
|
+
membersOnly: external,
|
|
36121
37063
|
t
|
|
36122
37064
|
})
|
|
36123
37065
|
]
|
|
@@ -36654,56 +37596,56 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36654
37596
|
document.head.appendChild(tag);
|
|
36655
37597
|
}
|
|
36656
37598
|
var TasksView_module_css_default = {
|
|
36657
|
-
"danger": "itiYXa_danger",
|
|
36658
37599
|
"need": "itiYXa_need",
|
|
36659
|
-
"
|
|
36660
|
-
"
|
|
36661
|
-
"
|
|
36662
|
-
"
|
|
37600
|
+
"row": "itiYXa_row",
|
|
37601
|
+
"tree": "itiYXa_tree",
|
|
37602
|
+
"avatars": "itiYXa_avatars",
|
|
37603
|
+
"nodeText": "itiYXa_nodeText",
|
|
37604
|
+
"primary": "itiYXa_primary",
|
|
37605
|
+
"link": "itiYXa_link",
|
|
37606
|
+
"avatar": "itiYXa_avatar",
|
|
37607
|
+
"now": "itiYXa_now",
|
|
36663
37608
|
"goal": "itiYXa_goal",
|
|
36664
|
-
"
|
|
36665
|
-
"count": "itiYXa_count",
|
|
36666
|
-
"goalKey": "itiYXa_goalKey",
|
|
37609
|
+
"actions": "itiYXa_actions",
|
|
36667
37610
|
"newTask": "itiYXa_newTask",
|
|
36668
|
-
"
|
|
36669
|
-
"
|
|
36670
|
-
"
|
|
36671
|
-
"
|
|
36672
|
-
"avatar": "itiYXa_avatar",
|
|
37611
|
+
"back": "itiYXa_back",
|
|
37612
|
+
"confirm": "itiYXa_confirm",
|
|
37613
|
+
"page": "itiYXa_page",
|
|
37614
|
+
"messages": "itiYXa_messages",
|
|
36673
37615
|
"seg": "itiYXa_seg",
|
|
37616
|
+
"section": "itiYXa_section",
|
|
37617
|
+
"messageText": "itiYXa_messageText",
|
|
37618
|
+
"goalText": "itiYXa_goalText",
|
|
37619
|
+
"nodeState": "itiYXa_nodeState",
|
|
37620
|
+
"danger": "itiYXa_danger",
|
|
37621
|
+
"dot": "itiYXa_dot",
|
|
37622
|
+
"bar": "itiYXa_bar",
|
|
36674
37623
|
"cardTitle": "itiYXa_cardTitle",
|
|
36675
|
-
"
|
|
36676
|
-
"actions": "itiYXa_actions",
|
|
36677
|
-
"muted": "itiYXa_muted",
|
|
36678
|
-
"list": "itiYXa_list",
|
|
36679
|
-
"primary": "itiYXa_primary",
|
|
36680
|
-
"confirm": "itiYXa_confirm",
|
|
37624
|
+
"small": "itiYXa_small",
|
|
36681
37625
|
"lane": "itiYXa_lane",
|
|
36682
37626
|
"laneName": "itiYXa_laneName",
|
|
36683
|
-
"
|
|
36684
|
-
"
|
|
36685
|
-
"
|
|
36686
|
-
"
|
|
37627
|
+
"filter": "itiYXa_filter",
|
|
37628
|
+
"list": "itiYXa_list",
|
|
37629
|
+
"rowHead": "itiYXa_rowHead",
|
|
37630
|
+
"rowTitle": "itiYXa_rowTitle",
|
|
37631
|
+
"count": "itiYXa_count",
|
|
37632
|
+
"tag": "itiYXa_tag",
|
|
37633
|
+
"detail": "itiYXa_detail",
|
|
36687
37634
|
"card": "itiYXa_card",
|
|
36688
37635
|
"attr": "itiYXa_attr",
|
|
36689
|
-
"
|
|
36690
|
-
"link": "itiYXa_link",
|
|
36691
|
-
"timeline": "itiYXa_timeline",
|
|
37636
|
+
"nodeError": "itiYXa_nodeError",
|
|
36692
37637
|
"axis": "itiYXa_axis",
|
|
36693
|
-
"
|
|
36694
|
-
"detail": "itiYXa_detail",
|
|
36695
|
-
"tag": "itiYXa_tag",
|
|
37638
|
+
"error": "itiYXa_error",
|
|
36696
37639
|
"elapsed": "itiYXa_elapsed",
|
|
36697
|
-
"
|
|
36698
|
-
"
|
|
36699
|
-
"
|
|
36700
|
-
"avatars": "itiYXa_avatars",
|
|
36701
|
-
"filter": "itiYXa_filter",
|
|
36702
|
-
"section": "itiYXa_section",
|
|
36703
|
-
"nodeText": "itiYXa_nodeText",
|
|
36704
|
-
"messageText": "itiYXa_messageText",
|
|
37640
|
+
"filters": "itiYXa_filters",
|
|
37641
|
+
"node": "itiYXa_node",
|
|
37642
|
+
"goalKey": "itiYXa_goalKey",
|
|
36705
37643
|
"nodeName": "itiYXa_nodeName",
|
|
36706
|
-
"
|
|
37644
|
+
"muted": "itiYXa_muted",
|
|
37645
|
+
"rowMeta": "itiYXa_rowMeta",
|
|
37646
|
+
"timeline": "itiYXa_timeline",
|
|
37647
|
+
"legend": "itiYXa_legend",
|
|
37648
|
+
"goalInput": "itiYXa_goalInput"
|
|
36707
37649
|
};
|
|
36708
37650
|
//#endregion
|
|
36709
37651
|
//#region src/client/TasksView.tsx
|
|
@@ -37096,7 +38038,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37096
38038
|
}),
|
|
37097
38039
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
37098
38040
|
className: TasksView_module_css_default.messageText,
|
|
37099
|
-
children: [t("job.you"), entry.text]
|
|
38041
|
+
children: [entry.from === void 0 ? t("job.you") : t("job.from", { name: memberOf(state, entry.from)?.name ?? entry.from }), entry.text]
|
|
37100
38042
|
}),
|
|
37101
38043
|
entry.by !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
37102
38044
|
className: TasksView_module_css_default.attr,
|
|
@@ -37536,7 +38478,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37536
38478
|
}
|
|
37537
38479
|
//#endregion
|
|
37538
38480
|
//#region \0dsh-css:src/client/TeamView.module.css.mjs
|
|
37539
|
-
const css$8 = ".x4xi8W_team{min-width:0;font-size:var(--dsh-panel-font-body,13px);color:var(--dsw-alias-label-primary,#1f2329);flex-direction:column;gap:6px;padding:10px 12px 16px;line-height:1.5;display:flex}.x4xi8W_summary,.x4xi8W_legend{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:var(--dsh-panel-font-caption,12px);margin:0}.x4xi8W_root{border:1px dashed var(--dsw-alias-border-l2-darkmode-thin,#00000029);color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:8px;align-self:flex-start;padding:3px 12px;font-weight:600}.x4xi8W_tree{margin:0;padding:0 0 0 16px;list-style:none;position:relative}.x4xi8W_tree:before{content:\"\";border-left:1.5px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001f);position:absolute;top:0;bottom:18px;left:6px}.x4xi8W_tree>li{position:relative}.x4xi8W_tree>li:before{content:\"\";border-top:1.5px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001f);width:10px;position:absolute;top:20px;left:-10px}.x4xi8W_node{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:9px;flex-direction:column;gap:2px;margin:5px 0;padding:7px 9px;display:flex}.x4xi8W_node[data-external=helper]{border-style:dashed}.x4xi8W_node[data-done]{opacity:.6}.x4xi8W_chip[data-external]{color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.x4xi8W_node[data-selected=true]{border-color:var(--dsw-alias-state-business-primary,#4176e6);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 18%, transparent)}.x4xi8W_nodeHead{align-items:center;gap:7px;min-width:0;display:flex}.x4xi8W_avatar{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;border-radius:6px;flex:none;place-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:grid}.x4xi8W_nodeName{white-space:nowrap;font-weight:650}.x4xi8W_chip,.x4xi8W_role{background:var(--dsw-alias-bg-layer-2,#0000000d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:nowrap;border-radius:5px;padding:0 6px;font-size:11px}.x4xi8W_role{text-overflow:ellipsis;min-width:0;overflow:hidden}.x4xi8W_status{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;align-items:center;gap:4px;margin-left:auto;font-size:11px;display:inline-flex}.x4xi8W_status>i{background:currentColor;border-radius:50%;width:7px;height:7px}.x4xi8W_status[data-status=running]{color:var(--dsw-alias-state-success,#1f9a55)}.x4xi8W_status[data-status=failed]{color:var(--dsw-alias-text-error,#d9363e)}.x4xi8W_line{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:var(--dsh-panel-font-caption,12px);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:2px 8px;margin:0;display:flex}.x4xi8W_current{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-size:var(--dsh-panel-font-caption,12px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x4xi8W_expand{flex-direction:column;gap:4px;margin:0 0 6px 8px;display:flex}.x4xi8W_deliveries{border-left:2px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);font-size:var(--dsh-panel-font-caption,12px);margin:0;padding:0 0 0 8px;list-style:none}.x4xi8W_deliveries>li{flex-wrap:wrap;align-items:baseline;gap:2px 6px;padding:3px 0;display:flex}.x4xi8W_msgId{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-family:var(--dsw-font-mono,ui-monospace, Menlo, monospace);font-size:11px}.x4xi8W_from{color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.x4xi8W_text{min-width:120px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.x4xi8W_outcome{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:11px}.x4xi8W_outcome[data-status=done]{color:var(--dsw-alias-state-success,#1f9a55)}.x4xi8W_outcome[data-status=running]{color:var(--dsw-alias-state-business-primary,#4176e6)}.x4xi8W_outcome[data-status=failed],.x4xi8W_outcome[data-status=uncertain]{color:var(--dsw-alias-text-error,#d9363e)}.x4xi8W_open{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000029);color:var(--dsw-alias-label-secondary,#5a5a5ae6);font:inherit;font-size:var(--dsh-panel-font-caption,12px);cursor:pointer;background:0 0;border-radius:7px;align-self:flex-start;padding:2px 10px}.x4xi8W_detail .x4xi8W_open{margin-left:8px}.x4xi8W_empty{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:var(--dsh-panel-font-caption,12px);margin:4px 0}.x4xi8W_graph{padding:8px 0 12px;position:relative}.x4xi8W_edges{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.x4xi8W_edgeTask{fill:none;stroke:var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f73);stroke-width:1.5px}.x4xi8W_arrow{fill:var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f73)}.x4xi8W_level{z-index:1;justify-content:center;gap:16px;margin-bottom:40px;display:flex;position:relative}.x4xi8W_level:last-child{margin-bottom:0}.x4xi8W_level>.x4xi8W_node{width:210px;margin:0}.x4xi8W_level>.x4xi8W_root{align-self:center}.x4xi8W_detail{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.x4xi8W_pill,.x4xi8W_pillFloat{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000029);background:var(--dsw-alias-bg-layer-1,#fff);color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;gap:4px;padding:0 7px;font-size:10.5px;line-height:16px;display:inline-flex}.x4xi8W_pillFloat{position:absolute;top:-9px;left:50%;transform:translate(-50%)}.x4xi8W_pillReport{color:var(--dsw-alias-state-success,#1f9a55)}.x4xi8W_pillNotify{color:var(--dsw-alias-state-purple,#7a52c7)}.x4xi8W_level>.x4xi8W_node{position:relative}.x4xi8W_more{border:1px dashed var(--dsw-alias-border-l2-darkmode-thin,#0003);width:120px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);font:inherit;font-size:var(--dsh-panel-font-caption,12px);cursor:pointer;background:0 0;border-radius:10px;padding:8px 10px}";
|
|
38481
|
+
const css$8 = ".x4xi8W_team{min-width:0;font-size:var(--dsh-panel-font-body,13px);color:var(--dsw-alias-label-primary,#1f2329);flex-direction:column;gap:6px;padding:10px 12px 16px;line-height:1.5;display:flex}.x4xi8W_summary,.x4xi8W_legend{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:var(--dsh-panel-font-caption,12px);margin:0}.x4xi8W_root{border:1px dashed var(--dsw-alias-border-l2-darkmode-thin,#00000029);color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:8px;align-self:flex-start;padding:3px 12px;font-weight:600}.x4xi8W_tree{margin:0;padding:0 0 0 16px;list-style:none;position:relative}.x4xi8W_tree:before{content:\"\";border-left:1.5px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001f);position:absolute;top:0;bottom:18px;left:6px}.x4xi8W_tree>li{position:relative}.x4xi8W_tree>li:before{content:\"\";border-top:1.5px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001f);width:10px;position:absolute;top:20px;left:-10px}.x4xi8W_node{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:9px;flex-direction:column;gap:2px;margin:5px 0;padding:7px 9px;display:flex;container:team-node/inline-size}.x4xi8W_node[data-external=helper]{border-style:dashed}.x4xi8W_node[data-done]{opacity:.6}.x4xi8W_chip[data-external]{color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.x4xi8W_node[data-selected=true]{border-color:var(--dsw-alias-state-business-primary,#4176e6);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 18%, transparent)}.x4xi8W_nodeHead{align-items:center;gap:7px;min-width:0;display:flex}.x4xi8W_avatar{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;border-radius:6px;flex:none;place-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:grid}.x4xi8W_nodeName{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:650;overflow:hidden}.x4xi8W_chip{flex:none}@container team-node (width<=300px){.x4xi8W_status>span{display:none}}.x4xi8W_chip,.x4xi8W_role{background:var(--dsw-alias-bg-layer-2,#0000000d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:nowrap;border-radius:5px;padding:0 6px;font-size:11px}.x4xi8W_role{text-overflow:ellipsis;min-width:0;overflow:hidden}.x4xi8W_status{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;align-items:center;gap:4px;margin-left:auto;font-size:11px;display:inline-flex}.x4xi8W_status>i{background:currentColor;border-radius:50%;width:7px;height:7px}.x4xi8W_status[data-status=running]{color:var(--dsw-alias-state-success,#1f9a55)}.x4xi8W_status[data-status=failed]{color:var(--dsw-alias-text-error,#d9363e)}.x4xi8W_line{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:var(--dsh-panel-font-caption,12px);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:2px 8px;margin:0;display:flex}.x4xi8W_current{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-size:var(--dsh-panel-font-caption,12px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x4xi8W_expand{flex-direction:column;gap:4px;margin:0 0 6px 8px;display:flex}.x4xi8W_deliveries{border-left:2px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);font-size:var(--dsh-panel-font-caption,12px);margin:0;padding:0 0 0 8px;list-style:none}.x4xi8W_deliveries>li{flex-wrap:wrap;align-items:baseline;gap:2px 6px;padding:3px 0;display:flex}.x4xi8W_msgId{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-family:var(--dsw-font-mono,ui-monospace, Menlo, monospace);font-size:11px}.x4xi8W_from{color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.x4xi8W_text{min-width:120px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.x4xi8W_outcome{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:11px}.x4xi8W_outcome[data-status=done]{color:var(--dsw-alias-state-success,#1f9a55)}.x4xi8W_outcome[data-status=running]{color:var(--dsw-alias-state-business-primary,#4176e6)}.x4xi8W_outcome[data-status=failed],.x4xi8W_outcome[data-status=uncertain]{color:var(--dsw-alias-text-error,#d9363e)}.x4xi8W_open{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000029);color:var(--dsw-alias-label-secondary,#5a5a5ae6);font:inherit;font-size:var(--dsh-panel-font-caption,12px);cursor:pointer;background:0 0;border-radius:7px;align-self:flex-start;padding:2px 10px}.x4xi8W_detail .x4xi8W_open{margin-left:8px}.x4xi8W_empty{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:var(--dsh-panel-font-caption,12px);margin:4px 0}.x4xi8W_graph{padding:8px 0 12px;position:relative}.x4xi8W_edges{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.x4xi8W_edgeTask{fill:none;stroke:var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f73);stroke-width:1.5px}.x4xi8W_arrow{fill:var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f73)}.x4xi8W_level{z-index:1;justify-content:center;gap:16px;margin-bottom:40px;display:flex;position:relative}.x4xi8W_level:last-child{margin-bottom:0}.x4xi8W_level>.x4xi8W_node{width:210px;margin:0}.x4xi8W_level>.x4xi8W_root{align-self:center}.x4xi8W_detail{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.x4xi8W_pill,.x4xi8W_pillFloat{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000029);background:var(--dsw-alias-bg-layer-1,#fff);color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;gap:4px;padding:0 7px;font-size:10.5px;line-height:16px;display:inline-flex}.x4xi8W_pillFloat{position:absolute;top:-9px;left:50%;transform:translate(-50%)}.x4xi8W_pillReport{color:var(--dsw-alias-state-success,#1f9a55)}.x4xi8W_pillNotify{color:var(--dsw-alias-state-purple,#7a52c7)}.x4xi8W_level>.x4xi8W_node{position:relative}.x4xi8W_more{border:1px dashed var(--dsw-alias-border-l2-darkmode-thin,#0003);width:120px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);font:inherit;font-size:var(--dsh-panel-font-caption,12px);cursor:pointer;background:0 0;border-radius:10px;padding:8px 10px}";
|
|
37540
38482
|
const tagId$8 = "@khorsheed/dsh-room/TeamView.module.css";
|
|
37541
38483
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
|
|
37542
38484
|
const tag = document.createElement("style");
|
|
@@ -37546,39 +38488,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37546
38488
|
document.head.appendChild(tag);
|
|
37547
38489
|
}
|
|
37548
38490
|
var TeamView_module_css_default = {
|
|
37549
|
-
"
|
|
37550
|
-
"msgId": "x4xi8W_msgId",
|
|
37551
|
-
"open": "x4xi8W_open",
|
|
37552
|
-
"node": "x4xi8W_node",
|
|
37553
|
-
"pill": "x4xi8W_pill",
|
|
38491
|
+
"role": "x4xi8W_role",
|
|
37554
38492
|
"pillReport": "x4xi8W_pillReport",
|
|
37555
|
-
"pillNotify": "x4xi8W_pillNotify",
|
|
37556
|
-
"empty": "x4xi8W_empty",
|
|
37557
|
-
"chip": "x4xi8W_chip",
|
|
37558
|
-
"summary": "x4xi8W_summary",
|
|
37559
|
-
"status": "x4xi8W_status",
|
|
37560
|
-
"deliveries": "x4xi8W_deliveries",
|
|
37561
|
-
"edges": "x4xi8W_edges",
|
|
37562
|
-
"edgeTask": "x4xi8W_edgeTask",
|
|
37563
|
-
"level": "x4xi8W_level",
|
|
37564
|
-
"line": "x4xi8W_line",
|
|
37565
|
-
"current": "x4xi8W_current",
|
|
37566
38493
|
"arrow": "x4xi8W_arrow",
|
|
38494
|
+
"line": "x4xi8W_line",
|
|
38495
|
+
"legend": "x4xi8W_legend",
|
|
38496
|
+
"root": "x4xi8W_root",
|
|
37567
38497
|
"tree": "x4xi8W_tree",
|
|
38498
|
+
"current": "x4xi8W_current",
|
|
38499
|
+
"empty": "x4xi8W_empty",
|
|
38500
|
+
"graph": "x4xi8W_graph",
|
|
38501
|
+
"edgeTask": "x4xi8W_edgeTask",
|
|
38502
|
+
"more": "x4xi8W_more",
|
|
38503
|
+
"avatar": "x4xi8W_avatar",
|
|
38504
|
+
"msgId": "x4xi8W_msgId",
|
|
37568
38505
|
"nodeHead": "x4xi8W_nodeHead",
|
|
38506
|
+
"level": "x4xi8W_level",
|
|
38507
|
+
"pillNotify": "x4xi8W_pillNotify",
|
|
38508
|
+
"summary": "x4xi8W_summary",
|
|
38509
|
+
"edges": "x4xi8W_edges",
|
|
38510
|
+
"status": "x4xi8W_status",
|
|
37569
38511
|
"expand": "x4xi8W_expand",
|
|
37570
|
-
"from": "x4xi8W_from",
|
|
37571
38512
|
"text": "x4xi8W_text",
|
|
37572
38513
|
"team": "x4xi8W_team",
|
|
37573
38514
|
"outcome": "x4xi8W_outcome",
|
|
37574
|
-
"
|
|
37575
|
-
"
|
|
37576
|
-
"
|
|
37577
|
-
"
|
|
38515
|
+
"chip": "x4xi8W_chip",
|
|
38516
|
+
"nodeName": "x4xi8W_nodeName",
|
|
38517
|
+
"deliveries": "x4xi8W_deliveries",
|
|
38518
|
+
"from": "x4xi8W_from",
|
|
38519
|
+
"node": "x4xi8W_node",
|
|
38520
|
+
"pill": "x4xi8W_pill",
|
|
37578
38521
|
"pillFloat": "x4xi8W_pillFloat",
|
|
37579
|
-
"
|
|
37580
|
-
"
|
|
37581
|
-
"more": "x4xi8W_more"
|
|
38522
|
+
"detail": "x4xi8W_detail",
|
|
38523
|
+
"open": "x4xi8W_open"
|
|
37582
38524
|
};
|
|
37583
38525
|
//#endregion
|
|
37584
38526
|
//#region src/client/TeamView.tsx
|
|
@@ -37603,7 +38545,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37603
38545
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
37604
38546
|
className: TeamView_module_css_default.status,
|
|
37605
38547
|
"data-status": node.status,
|
|
37606
|
-
|
|
38548
|
+
title: label,
|
|
38549
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", { "aria-hidden": true }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label })]
|
|
37607
38550
|
});
|
|
37608
38551
|
}
|
|
37609
38552
|
function Avatar({ node }) {
|
|
@@ -38112,10 +39055,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38112
39055
|
document.head.appendChild(tag);
|
|
38113
39056
|
}
|
|
38114
39057
|
var TasksTab_module_css_default = {
|
|
38115
|
-
"switch": "Uyidcq_switch",
|
|
38116
|
-
"body": "Uyidcq_body",
|
|
38117
39058
|
"switchTab": "Uyidcq_switchTab",
|
|
38118
|
-
"page": "Uyidcq_page"
|
|
39059
|
+
"page": "Uyidcq_page",
|
|
39060
|
+
"body": "Uyidcq_body",
|
|
39061
|
+
"switch": "Uyidcq_switch"
|
|
38119
39062
|
};
|
|
38120
39063
|
//#endregion
|
|
38121
39064
|
//#region src/client/TasksTab.tsx
|
|
@@ -38266,9 +39209,52 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38266
39209
|
]
|
|
38267
39210
|
});
|
|
38268
39211
|
//#endregion
|
|
38269
|
-
//#region
|
|
38270
|
-
|
|
38271
|
-
const
|
|
39212
|
+
//#region src/client/path-mentions.ts
|
|
39213
|
+
/** Extensions a member's inline code most often names as a deliverable or source file. */
|
|
39214
|
+
const FILE_EXTENSION = /\.(?:png|jpe?g|gif|webp|svg|md|txt|json|ya?ml|toml|csv|html?|css|[cm]?[jt]sx?|py|sh|glb|gltf|blend|fbx|obj|mp3|wav|ogg|mp4|webm|pdf)$/i;
|
|
39215
|
+
/**
|
|
39216
|
+
* Whether an inline-code token reads as a file path.
|
|
39217
|
+
* @param value - the token as authored.
|
|
39218
|
+
* @returns true for a path-shaped token with a known file extension.
|
|
39219
|
+
*/
|
|
39220
|
+
function looksLikeFilePath(value) {
|
|
39221
|
+
return value.length <= 300 && !/\s/.test(value) && !value.includes("://") && !value.startsWith("-") && FILE_EXTENSION.test(value);
|
|
39222
|
+
}
|
|
39223
|
+
/**
|
|
39224
|
+
* The absolute path a member's token names: as written when absolute, under
|
|
39225
|
+
* the member's working directory when it has its own, else left relative (the
|
|
39226
|
+
* file address then resolves it against the room session's workspace).
|
|
39227
|
+
* @param value - the token.
|
|
39228
|
+
* @param cwd - the member's own working directory, when it has one.
|
|
39229
|
+
* @returns the path to open.
|
|
39230
|
+
*/
|
|
39231
|
+
function memberPath(value, cwd) {
|
|
39232
|
+
if (value.startsWith("/") || value.startsWith("~") || cwd === void 0) return value;
|
|
39233
|
+
return `${cwd.replace(/\/+$/, "")}/${value.replace(/^\.\//, "")}`;
|
|
39234
|
+
}
|
|
39235
|
+
/**
|
|
39236
|
+
* The file-mention vocabulary for one member's text.
|
|
39237
|
+
* @param open - opens one resolved path in the sidebar.
|
|
39238
|
+
* @param cwd - the member's own working directory, when it has one.
|
|
39239
|
+
* @returns the MarkdownText fileMentions value.
|
|
39240
|
+
*/
|
|
39241
|
+
function pathMentions(open, cwd) {
|
|
39242
|
+
return { resolve: (value) => {
|
|
39243
|
+
if (!looksLikeFilePath(value)) return void 0;
|
|
39244
|
+
const path = memberPath(value, cwd);
|
|
39245
|
+
return {
|
|
39246
|
+
open: () => {
|
|
39247
|
+
open(path);
|
|
39248
|
+
},
|
|
39249
|
+
label: value,
|
|
39250
|
+
title: path
|
|
39251
|
+
};
|
|
39252
|
+
} };
|
|
39253
|
+
}
|
|
39254
|
+
//#endregion
|
|
39255
|
+
//#region \0dsh-css:src/client/RoomQuestionView.module.css.mjs
|
|
39256
|
+
const css$6 = ".Ot_rXG_row{grid-template-columns:28px minmax(0,1fr);gap:10px;margin:8px 0 16px;display:grid}.Ot_rXG_card{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);background:var(--dsw-alias-bg-layer-1,#fff);min-width:0;font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary,#1f2329);border-radius:12px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.Ot_rXG_row[data-state=cancelled]{opacity:.6}.Ot_rXG_head{align-items:center;gap:8px;display:flex}.Ot_rXG_avatar{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;user-select:none;border-radius:50%;place-items:center;width:28px;height:28px;margin-top:2px;font-size:12px;font-weight:600;display:grid}.Ot_rXG_title{font-weight:600}.Ot_rXG_status{color:var(--dsw-alias-label-tertiary,#1f232980);margin-left:auto;font-size:12px}.Ot_rXG_question{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.Ot_rXG_prompt{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:2px;padding:0;font-weight:500;display:flex}.Ot_rXG_chip{background:var(--dsw-alias-interactive-bg-hover,#0000000d);color:var(--dsw-alias-label-secondary,#1f2329b3);border-radius:6px;padding:0 6px;font-size:12px;font-weight:500}.Ot_rXG_hint{color:var(--dsw-alias-label-tertiary,#1f232980);font-size:12px;font-weight:400}.Ot_rXG_option{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);cursor:pointer;border-radius:10px;align-items:flex-start;gap:8px;padding:7px 10px;transition:background-color .1s,border-color .1s;display:flex}.Ot_rXG_option:hover{background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.Ot_rXG_option[data-picked=true]{border-color:var(--dsw-alias-state-business-primary,#4176e6);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 8%, transparent)}.Ot_rXG_option input{accent-color:var(--dsw-alias-state-business-primary,#4176e6);flex:none;margin:4px 0 0}.Ot_rXG_optionText{flex-direction:column;min-width:0;display:flex}.Ot_rXG_optionLabel{font-weight:500}.Ot_rXG_optionDescription{color:var(--dsw-alias-label-secondary,#1f2329b3);font-size:12px;line-height:18px}.Ot_rXG_other{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);width:100%;color:inherit;font:inherit;background:0 0;border-radius:10px;outline:none;padding:6px 10px}.Ot_rXG_other:focus{border-color:var(--dsw-alias-state-business-primary,#4176e6)}.Ot_rXG_answer{color:var(--dsw-alias-label-secondary,#1f2329b3)}.Ot_rXG_actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.Ot_rXG_error{color:var(--dsw-alias-state-error-primary,#d9363e);font-size:12px}.Ot_rXG_submit{background:var(--dsw-alias-button-info-fill,#4176e6);color:#fff;height:32px;font:inherit;cursor:pointer;border:none;border-radius:999px;padding:0 14px;font-weight:500}.Ot_rXG_submit:disabled{opacity:.4;cursor:default}.Ot_rXG_inline{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);background:var(--dsw-alias-bg-layer-2,#00000008);font-size:var(--dsh-content-font-size,14px);color:var(--dsw-alias-label-primary,#1f2329);border-radius:10px;flex-direction:column;gap:10px;margin:6px 0 12px;padding:9px 12px;display:flex}.Ot_rXG_inline[data-state=pending]{border-color:color-mix(in srgb, var(--dsw-alias-state-warning-primary,#c08419) 55%, transparent);background:color-mix(in srgb, var(--dsw-alias-state-warning-primary,#c08419) 7%, var(--dsw-alias-bg-layer-1,#fff));box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-state-warning-primary,#c08419) 14%, transparent)}.Ot_rXG_inline[data-state=late]{border-style:dashed}.Ot_rXG_inlineHead{color:var(--dsw-alias-label-tertiary,#1f232980);align-items:center;gap:8px;font-size:12px;display:flex}.Ot_rXG_inline[data-state=pending] .Ot_rXG_inlineHead{color:var(--dsw-alias-state-warning-primary,#c08419);font-weight:600}";
|
|
39257
|
+
const tagId$6 = "@khorsheed/dsh-room/RoomQuestionView.module.css";
|
|
38272
39258
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
38273
39259
|
const tag = document.createElement("style");
|
|
38274
39260
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
@@ -38276,472 +39262,206 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38276
39262
|
tag.textContent = css$6;
|
|
38277
39263
|
document.head.appendChild(tag);
|
|
38278
39264
|
}
|
|
38279
|
-
var
|
|
38280
|
-
"
|
|
38281
|
-
"
|
|
38282
|
-
"
|
|
38283
|
-
"
|
|
38284
|
-
"
|
|
38285
|
-
"
|
|
38286
|
-
"
|
|
38287
|
-
"
|
|
38288
|
-
"
|
|
38289
|
-
"
|
|
38290
|
-
"
|
|
38291
|
-
"
|
|
38292
|
-
"
|
|
38293
|
-
"
|
|
38294
|
-
"
|
|
38295
|
-
"
|
|
38296
|
-
"
|
|
38297
|
-
"
|
|
38298
|
-
"
|
|
38299
|
-
"
|
|
38300
|
-
"
|
|
38301
|
-
"usageChip": "tEFZ_W_usageChip",
|
|
38302
|
-
"interrupted": "tEFZ_W_interrupted"
|
|
39265
|
+
var RoomQuestionView_module_css_default = {
|
|
39266
|
+
"hint": "Ot_rXG_hint",
|
|
39267
|
+
"title": "Ot_rXG_title",
|
|
39268
|
+
"submit": "Ot_rXG_submit",
|
|
39269
|
+
"status": "Ot_rXG_status",
|
|
39270
|
+
"optionDescription": "Ot_rXG_optionDescription",
|
|
39271
|
+
"inlineHead": "Ot_rXG_inlineHead",
|
|
39272
|
+
"question": "Ot_rXG_question",
|
|
39273
|
+
"prompt": "Ot_rXG_prompt",
|
|
39274
|
+
"chip": "Ot_rXG_chip",
|
|
39275
|
+
"optionLabel": "Ot_rXG_optionLabel",
|
|
39276
|
+
"actions": "Ot_rXG_actions",
|
|
39277
|
+
"optionText": "Ot_rXG_optionText",
|
|
39278
|
+
"row": "Ot_rXG_row",
|
|
39279
|
+
"avatar": "Ot_rXG_avatar",
|
|
39280
|
+
"card": "Ot_rXG_card",
|
|
39281
|
+
"other": "Ot_rXG_other",
|
|
39282
|
+
"option": "Ot_rXG_option",
|
|
39283
|
+
"answer": "Ot_rXG_answer",
|
|
39284
|
+
"error": "Ot_rXG_error",
|
|
39285
|
+
"inline": "Ot_rXG_inline",
|
|
39286
|
+
"head": "Ot_rXG_head"
|
|
38303
39287
|
};
|
|
38304
39288
|
//#endregion
|
|
38305
|
-
//#region src/client/
|
|
38306
|
-
/**
|
|
38307
|
-
* Member speech node ('room-speech' keyed renderer): a conversation entry —
|
|
38308
|
-
* the member's color avatar beside a light card that blocks off one member's
|
|
38309
|
-
* turn (several agents take turns in a room, so each turn reads as its own
|
|
38310
|
-
* block): a header (name, public role, provider, time), the markdown body —
|
|
38311
|
-
* the official MarkdownText, typographically identical to main-agent speech —
|
|
38312
|
-
* and a quiet footer row. A
|
|
38313
|
-
* body past {@link COLLAPSE_CHARS} may fold to ~10 lines under a bg-base fade
|
|
38314
|
-
* with an expand/collapse toggle (the fade expands too). The newest reply to
|
|
38315
|
-
* the room starts unfolded — it is what the human is reading — and folds once
|
|
38316
|
-
* a newer reply lands; reports to another member and older replies start
|
|
38317
|
-
* folded. The human's own expand/collapse wins and is remembered per speech
|
|
38318
|
-
* (see {@link foldChoices}). The action row replicates the
|
|
38319
|
-
* official MessageIconActions chrome: copy, child-session jump (when the
|
|
38320
|
-
* speech carries its handle), honest duration, and a hover-revealed clock.
|
|
38321
|
-
* Deliberately absent: branch (forking the room session has undefined
|
|
38322
|
-
* roster/blackboard semantics) and TPS/TTFT (a CLI run has no token stream).
|
|
38323
|
-
*/
|
|
39289
|
+
//#region src/client/RoomQuestionView.tsx
|
|
38324
39290
|
/**
|
|
38325
|
-
*
|
|
38326
|
-
*
|
|
38327
|
-
*
|
|
38328
|
-
|
|
38329
|
-
|
|
38330
|
-
|
|
38331
|
-
|
|
38332
|
-
|
|
38333
|
-
|
|
38334
|
-
/**
|
|
38335
|
-
* The human's expand/collapse choices for one room's speeches, by speech seq.
|
|
38336
|
-
* A per-viewer convenience in browser storage: unreadable storage (private
|
|
38337
|
-
* window, blocked site data) only means the default folding applies.
|
|
39291
|
+
* A member's question card ('room-question' keyed renderer): the questions a
|
|
39292
|
+
* CLI member asked through its bridge's `ask_user_question`, answered by
|
|
39293
|
+
* picking — one option (or several on a multi-pick question) plus an optional
|
|
39294
|
+
* 其他 free-text line — instead of a numbered list in the member's reply that
|
|
39295
|
+
* the human answers by typing. Submitting resolves the member's waiting call;
|
|
39296
|
+
* the card then folds to the given answers. When the call ended unanswered
|
|
39297
|
+
* (a timeout, or a restart took the member's process) the card stays
|
|
39298
|
+
* answerable — the answers then reach the member as a new message (已补答);
|
|
39299
|
+
* only a consent gate (room_help's 允许/不允许) folds to 已过期 for good.
|
|
38338
39300
|
*/
|
|
38339
|
-
|
|
38340
|
-
|
|
38341
|
-
try {
|
|
38342
|
-
const raw = globalThis.localStorage?.getItem(FOLD_KEY_PREFIX + sessionId);
|
|
38343
|
-
const parsed = raw == null ? void 0 : JSON.parse(raw);
|
|
38344
|
-
return typeof parsed === "object" && parsed !== null ? parsed : {};
|
|
38345
|
-
} catch {
|
|
38346
|
-
return {};
|
|
38347
|
-
}
|
|
38348
|
-
},
|
|
38349
|
-
write(sessionId, seq, expanded) {
|
|
38350
|
-
try {
|
|
38351
|
-
const choices = {
|
|
38352
|
-
...foldChoices.read(sessionId),
|
|
38353
|
-
[String(seq)]: expanded
|
|
38354
|
-
};
|
|
38355
|
-
const kept = Object.keys(choices).map(Number).sort((a, b) => b - a).slice(0, FOLD_KEEP);
|
|
38356
|
-
globalThis.localStorage?.setItem(FOLD_KEY_PREFIX + sessionId, JSON.stringify(Object.fromEntries(kept.map((key) => [key, choices[key]]))));
|
|
38357
|
-
} catch {}
|
|
38358
|
-
}
|
|
38359
|
-
};
|
|
38360
|
-
/** Localized Markdown chrome (code-fence copy buttons, footnotes) over the room namespace. */
|
|
38361
|
-
function markdownLabels(t) {
|
|
38362
|
-
return {
|
|
38363
|
-
code: {
|
|
38364
|
-
copyLabel: t("action.copy"),
|
|
38365
|
-
copiedLabel: t("action.copied")
|
|
38366
|
-
},
|
|
38367
|
-
footnotes: t("markdown.footnotes")
|
|
38368
|
-
};
|
|
38369
|
-
}
|
|
38370
|
-
/** The member speech row. */
|
|
38371
|
-
function RoomSpeechView({ node, sessionId, roomStore, openSession, openDetail, t }) {
|
|
39301
|
+
/** The question card. */
|
|
39302
|
+
function RoomQuestionView({ node, answerQuestion, inline, t }) {
|
|
38372
39303
|
const data = node.data;
|
|
38373
|
-
const [
|
|
38374
|
-
const [
|
|
38375
|
-
const
|
|
38376
|
-
|
|
38377
|
-
|
|
38378
|
-
|
|
38379
|
-
const
|
|
38380
|
-
|
|
38381
|
-
|
|
38382
|
-
const child = data.childSessionId;
|
|
38383
|
-
const execution = data.runId === void 0 ? void 0 : state?.executions?.find((entry) => entry.id === data.runId);
|
|
38384
|
-
const usage = execution?.usage;
|
|
38385
|
-
const tokens = usage === void 0 ? execution?.tokens : usage.inputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0) + usage.outputTokens;
|
|
38386
|
-
const newestSpeech = data.seq >= (state?.latestSpeechSeq ?? data.seq);
|
|
38387
|
-
const collapsible = data.text.length > COLLAPSE_CHARS;
|
|
38388
|
-
const newestReply = data.reportedTo === void 0 && data.seq >= (state?.latestReplySeq ?? data.seq);
|
|
38389
|
-
const expanded = chosen ?? newestReply;
|
|
38390
|
-
const clamped = collapsible && !expanded;
|
|
38391
|
-
const toggle = (next) => {
|
|
38392
|
-
setChosen(next);
|
|
38393
|
-
foldChoices.write(sessionId, data.seq, next);
|
|
39304
|
+
const [drafts, setDrafts] = (0, react.useState)({});
|
|
39305
|
+
const [busy, setBusy] = (0, react.useState)(false);
|
|
39306
|
+
const [error, setError] = (0, react.useState)(void 0);
|
|
39307
|
+
const pending = data.state === "pending";
|
|
39308
|
+
const lateOpen = data.state === "cancelled" && data.consent !== true;
|
|
39309
|
+
const open = pending || lateOpen;
|
|
39310
|
+
const draftOf = (id) => drafts[id] ?? {
|
|
39311
|
+
selected: [],
|
|
39312
|
+
custom: ""
|
|
38394
39313
|
};
|
|
38395
|
-
const
|
|
38396
|
-
|
|
38397
|
-
|
|
38398
|
-
|
|
38399
|
-
|
|
38400
|
-
|
|
38401
|
-
|
|
38402
|
-
|
|
39314
|
+
const setDraft = (id, next) => {
|
|
39315
|
+
setDrafts((current) => ({
|
|
39316
|
+
...current,
|
|
39317
|
+
[id]: next
|
|
39318
|
+
}));
|
|
39319
|
+
};
|
|
39320
|
+
const answered = (id) => draftOf(id).selected.length > 0 || draftOf(id).custom.trim() !== "";
|
|
39321
|
+
const complete = data.questions.every((question) => answered(question.id));
|
|
39322
|
+
const pick = (id, label, multi) => {
|
|
39323
|
+
const draft = draftOf(id);
|
|
39324
|
+
const has = draft.selected.includes(label);
|
|
39325
|
+
setDraft(id, {
|
|
39326
|
+
...draft,
|
|
39327
|
+
selected: multi ? has ? draft.selected.filter((entry) => entry !== label) : [...draft.selected, label] : has ? [] : [label]
|
|
38403
39328
|
});
|
|
38404
39329
|
};
|
|
38405
|
-
const
|
|
39330
|
+
const submit = async () => {
|
|
39331
|
+
if (busy || !complete) return;
|
|
39332
|
+
setBusy(true);
|
|
39333
|
+
try {
|
|
39334
|
+
const answers = data.questions.map((question) => {
|
|
39335
|
+
const draft = draftOf(question.id);
|
|
39336
|
+
const custom = draft.custom.trim();
|
|
39337
|
+
return {
|
|
39338
|
+
id: question.id,
|
|
39339
|
+
selected: draft.selected,
|
|
39340
|
+
...custom === "" ? {} : { custom }
|
|
39341
|
+
};
|
|
39342
|
+
});
|
|
39343
|
+
setError(await answerQuestion(data.questionId, answers));
|
|
39344
|
+
} finally {
|
|
39345
|
+
setBusy(false);
|
|
39346
|
+
}
|
|
39347
|
+
};
|
|
39348
|
+
/** The folded answer text of one question. */
|
|
39349
|
+
const answerText = (id) => {
|
|
39350
|
+
const answer = data.answers?.find((entry) => entry.id === id);
|
|
39351
|
+
return [...answer?.selected ?? [], ...answer?.custom === void 0 ? [] : [answer.custom]].join(";");
|
|
39352
|
+
};
|
|
39353
|
+
const status = !pending && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39354
|
+
className: RoomQuestionView_module_css_default.status,
|
|
39355
|
+
children: t(data.state === "answered" ? data.late === true ? "question.answeredLate" : "question.answered" : lateOpen ? "question.lateOpen" : "question.cancelled")
|
|
39356
|
+
});
|
|
39357
|
+
const body = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [data.questions.map((question) => {
|
|
39358
|
+
const multi = question.multiSelect === true;
|
|
39359
|
+
const draft = draftOf(question.id);
|
|
39360
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
39361
|
+
className: RoomQuestionView_module_css_default.question,
|
|
39362
|
+
disabled: !open || busy,
|
|
39363
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("legend", {
|
|
39364
|
+
className: RoomQuestionView_module_css_default.prompt,
|
|
39365
|
+
children: [
|
|
39366
|
+
question.header !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39367
|
+
className: RoomQuestionView_module_css_default.chip,
|
|
39368
|
+
children: question.header
|
|
39369
|
+
}),
|
|
39370
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: question.question }),
|
|
39371
|
+
open && multi && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39372
|
+
className: RoomQuestionView_module_css_default.hint,
|
|
39373
|
+
children: t("question.multi")
|
|
39374
|
+
})
|
|
39375
|
+
]
|
|
39376
|
+
}), open ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(question.options ?? []).map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
39377
|
+
className: RoomQuestionView_module_css_default.option,
|
|
39378
|
+
"data-picked": draft.selected.includes(option.label),
|
|
39379
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
39380
|
+
type: multi ? "checkbox" : "radio",
|
|
39381
|
+
name: `${data.questionId}-${question.id}`,
|
|
39382
|
+
checked: draft.selected.includes(option.label),
|
|
39383
|
+
onChange: () => {
|
|
39384
|
+
pick(question.id, option.label, multi);
|
|
39385
|
+
},
|
|
39386
|
+
onClick: (event) => {
|
|
39387
|
+
if (!multi && draft.selected.includes(option.label)) {
|
|
39388
|
+
event.preventDefault();
|
|
39389
|
+
pick(question.id, option.label, multi);
|
|
39390
|
+
}
|
|
39391
|
+
}
|
|
39392
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
39393
|
+
className: RoomQuestionView_module_css_default.optionText,
|
|
39394
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39395
|
+
className: RoomQuestionView_module_css_default.optionLabel,
|
|
39396
|
+
children: option.label
|
|
39397
|
+
}), option.description !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39398
|
+
className: RoomQuestionView_module_css_default.optionDescription,
|
|
39399
|
+
children: option.description
|
|
39400
|
+
})]
|
|
39401
|
+
})]
|
|
39402
|
+
}, option.label)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
39403
|
+
className: RoomQuestionView_module_css_default.other,
|
|
39404
|
+
value: draft.custom,
|
|
39405
|
+
"aria-label": t("question.other"),
|
|
39406
|
+
placeholder: (question.options ?? []).length > 0 ? `${t("question.other")}:${t("question.otherPlaceholder")}` : t("question.otherPlaceholder"),
|
|
39407
|
+
onChange: (event) => {
|
|
39408
|
+
setDraft(question.id, {
|
|
39409
|
+
...draft,
|
|
39410
|
+
custom: event.target.value
|
|
39411
|
+
});
|
|
39412
|
+
}
|
|
39413
|
+
})] }) : data.state === "answered" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
39414
|
+
className: RoomQuestionView_module_css_default.answer,
|
|
39415
|
+
children: t("question.answer", { answer: answerText(question.id) })
|
|
39416
|
+
})]
|
|
39417
|
+
}, question.id);
|
|
39418
|
+
}), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
39419
|
+
className: RoomQuestionView_module_css_default.actions,
|
|
39420
|
+
children: [error !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39421
|
+
className: RoomQuestionView_module_css_default.error,
|
|
39422
|
+
children: error
|
|
39423
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
39424
|
+
type: "button",
|
|
39425
|
+
className: RoomQuestionView_module_css_default.submit,
|
|
39426
|
+
disabled: !complete || busy,
|
|
39427
|
+
onClick: () => {
|
|
39428
|
+
submit();
|
|
39429
|
+
},
|
|
39430
|
+
children: t("question.submit")
|
|
39431
|
+
})]
|
|
39432
|
+
})] });
|
|
39433
|
+
if (inline !== void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
39434
|
+
className: RoomQuestionView_module_css_default.inline,
|
|
39435
|
+
"data-state": lateOpen ? "late" : data.state,
|
|
39436
|
+
"data-ask-id": data.questionId,
|
|
39437
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
39438
|
+
className: RoomQuestionView_module_css_default.inlineHead,
|
|
39439
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [pending ? t("question.waiting", { member: data.member }) : t("question.asked"), inline.mid === true ? ` · ${t("question.midRound")}` : ""] }), status]
|
|
39440
|
+
}), body]
|
|
39441
|
+
});
|
|
38406
39442
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38407
|
-
className:
|
|
38408
|
-
"data-
|
|
38409
|
-
"data-
|
|
38410
|
-
style: { "--member-color":
|
|
39443
|
+
className: RoomQuestionView_module_css_default.row,
|
|
39444
|
+
"data-state": lateOpen ? "late" : data.state,
|
|
39445
|
+
"data-ask-id": data.questionId,
|
|
39446
|
+
style: { "--member-color": memberColor(data.member) },
|
|
38411
39447
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38412
|
-
className:
|
|
39448
|
+
className: RoomQuestionView_module_css_default.avatar,
|
|
38413
39449
|
"aria-hidden": true,
|
|
38414
39450
|
children: data.member.slice(0, 1).toUpperCase()
|
|
38415
39451
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38416
|
-
className:
|
|
39452
|
+
className: RoomQuestionView_module_css_default.card,
|
|
38417
39453
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38418
|
-
className:
|
|
38419
|
-
children: [
|
|
38420
|
-
|
|
38421
|
-
|
|
38422
|
-
|
|
38423
|
-
|
|
38424
|
-
className: RoomSpeechView_module_css_default.name,
|
|
38425
|
-
children: data.member
|
|
38426
|
-
}),
|
|
38427
|
-
member?.role !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38428
|
-
className: RoomSpeechView_module_css_default.role,
|
|
38429
|
-
children: member.role
|
|
38430
|
-
}),
|
|
38431
|
-
provider !== void 0 && provider !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38432
|
-
className: RoomSpeechView_module_css_default.provider,
|
|
38433
|
-
children: provider
|
|
38434
|
-
}),
|
|
38435
|
-
data.interrupted !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38436
|
-
className: RoomSpeechView_module_css_default.interrupted,
|
|
38437
|
-
children: t(data.interrupted === "cancelled" ? "speech.stopped" : "speech.failed")
|
|
38438
|
-
})
|
|
38439
|
-
]
|
|
38440
|
-
}),
|
|
38441
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38442
|
-
className: clamped ? `${RoomSpeechView_module_css_default.body} ${RoomSpeechView_module_css_default.clamped}` : RoomSpeechView_module_css_default.body,
|
|
38443
|
-
children: [
|
|
38444
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
|
|
38445
|
-
text: data.text,
|
|
38446
|
-
labels
|
|
38447
|
-
}),
|
|
38448
|
-
clamped && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
38449
|
-
className: RoomSpeechView_module_css_default.fade,
|
|
38450
|
-
"aria-hidden": true,
|
|
38451
|
-
onClick: () => {
|
|
38452
|
-
toggle(true);
|
|
38453
|
-
}
|
|
38454
|
-
}),
|
|
38455
|
-
collapsible && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
38456
|
-
className: RoomSpeechView_module_css_default.foldBar,
|
|
38457
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
38458
|
-
label: expanded ? t("speech.collapse") : t("speech.expand"),
|
|
38459
|
-
side: "bottom",
|
|
38460
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
38461
|
-
type: "button",
|
|
38462
|
-
className: RoomSpeechView_module_css_default.foldToggle,
|
|
38463
|
-
"aria-label": expanded ? t("speech.collapse") : t("speech.expand"),
|
|
38464
|
-
"aria-expanded": expanded,
|
|
38465
|
-
onClick: () => {
|
|
38466
|
-
toggle(!expanded);
|
|
38467
|
-
},
|
|
38468
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutlineMedium, {})
|
|
38469
|
-
})
|
|
38470
|
-
})
|
|
38471
|
-
})
|
|
38472
|
-
]
|
|
38473
|
-
}),
|
|
38474
|
-
data.reportedTo !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38475
|
-
className: RoomSpeechView_module_css_default.reported,
|
|
38476
|
-
children: t("speech.reportedTo", { member: data.reportedTo })
|
|
38477
|
-
})
|
|
38478
|
-
]
|
|
38479
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38480
|
-
className: RoomSpeechView_module_css_default.actions,
|
|
38481
|
-
children: [
|
|
38482
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
38483
|
-
label: copied ? t("action.copied") : t("action.copy"),
|
|
38484
|
-
side: "bottom",
|
|
38485
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
38486
|
-
type: "button",
|
|
38487
|
-
className: RoomSpeechView_module_css_default.action,
|
|
38488
|
-
"aria-label": copied ? t("action.copied") : t("action.copy"),
|
|
38489
|
-
onClick: copy,
|
|
38490
|
-
children: copied ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineMedium, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCopyOutlineMedium, {})
|
|
38491
|
-
})
|
|
38492
|
-
}),
|
|
38493
|
-
child !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
38494
|
-
label: t("speech.jump"),
|
|
38495
|
-
side: "bottom",
|
|
38496
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
38497
|
-
type: "button",
|
|
38498
|
-
className: RoomSpeechView_module_css_default.action,
|
|
38499
|
-
"aria-label": t("speech.jump"),
|
|
38500
|
-
onClick: () => {
|
|
38501
|
-
openSession(child);
|
|
38502
|
-
},
|
|
38503
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLinkOutlineMedium, {})
|
|
38504
|
-
})
|
|
38505
|
-
}),
|
|
38506
|
-
child !== void 0 && data.messageId !== void 0 && openDetail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
38507
|
-
label: t("speech.detail"),
|
|
38508
|
-
side: "bottom",
|
|
38509
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
38510
|
-
type: "button",
|
|
38511
|
-
className: RoomSpeechView_module_css_default.action,
|
|
38512
|
-
"aria-label": t("speech.detail"),
|
|
38513
|
-
onClick: () => {
|
|
38514
|
-
openDetail(child, data.messageId);
|
|
38515
|
-
},
|
|
38516
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconRequestDetailOutline16, {})
|
|
38517
|
-
})
|
|
38518
|
-
}),
|
|
38519
|
-
tokens !== void 0 && tokens > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UsageChip, {
|
|
38520
|
-
tokens,
|
|
38521
|
-
execution,
|
|
38522
|
-
provider: member?.kind === "cli" ? member.provider : void 0,
|
|
38523
|
-
durationMs: data.durationMs,
|
|
38524
|
-
t
|
|
38525
|
-
}) : data.durationMs !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38526
|
-
className: RoomSpeechView_module_css_default.meta,
|
|
38527
|
-
children: formatDurationMs(data.durationMs)
|
|
38528
|
-
}),
|
|
38529
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38530
|
-
className: RoomSpeechView_module_css_default.meta,
|
|
38531
|
-
children: formatClock(data.time)
|
|
38532
|
-
})
|
|
38533
|
-
]
|
|
38534
|
-
})]
|
|
38535
|
-
})]
|
|
38536
|
-
});
|
|
38537
|
-
}
|
|
38538
|
-
/**
|
|
38539
|
-
* 用量 with its breakdown on hover or focus — the host's turn usage panel:
|
|
38540
|
-
* total, provider / model, cache hit, the disjoint input buckets, output, and
|
|
38541
|
-
* this round's run time. Rows the harness did not report are left out.
|
|
38542
|
-
*/
|
|
38543
|
-
function UsageChip({ tokens, execution, provider, durationMs, t }) {
|
|
38544
|
-
const [open, setOpen] = (0, react.useState)(false);
|
|
38545
|
-
const usage = execution?.usage;
|
|
38546
|
-
const billed = usage === void 0 ? 0 : usage.inputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
|
|
38547
|
-
const exact = (n) => n.toLocaleString("en-US");
|
|
38548
|
-
const route = [provider, execution?.model].filter(Boolean).join("/");
|
|
38549
|
-
const rows = [
|
|
38550
|
-
...route === "" ? [] : [[t("usage.route"), route]],
|
|
38551
|
-
...usage !== void 0 && billed > 0 ? [[t("usage.cacheHit"), `${Math.round((usage.cacheReadTokens ?? 0) / billed * 1e3) / 10}%`]] : [],
|
|
38552
|
-
...usage === void 0 ? [] : [
|
|
38553
|
-
[t("usage.uncached"), `${exact(usage.inputTokens)} tok`],
|
|
38554
|
-
...usage.cacheReadTokens === void 0 ? [] : [[t("usage.cacheRead"), `${exact(usage.cacheReadTokens)} tok`]],
|
|
38555
|
-
...usage.cacheWriteTokens === void 0 ? [] : [[t("usage.cacheWrite"), `${exact(usage.cacheWriteTokens)} tok`]],
|
|
38556
|
-
[t("usage.output"), `${exact(usage.outputTokens)} tok`]
|
|
38557
|
-
],
|
|
38558
|
-
...durationMs === void 0 ? [] : [[t("usage.duration"), formatDurationMs(durationMs)]]
|
|
38559
|
-
];
|
|
38560
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
38561
|
-
className: RoomSpeechView_module_css_default.usage,
|
|
38562
|
-
onMouseEnter: () => {
|
|
38563
|
-
setOpen(true);
|
|
38564
|
-
},
|
|
38565
|
-
onMouseLeave: () => {
|
|
38566
|
-
setOpen(false);
|
|
38567
|
-
},
|
|
38568
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
38569
|
-
type: "button",
|
|
38570
|
-
className: RoomSpeechView_module_css_default.usageChip,
|
|
38571
|
-
"aria-expanded": open,
|
|
38572
|
-
onFocus: () => {
|
|
38573
|
-
setOpen(true);
|
|
38574
|
-
},
|
|
38575
|
-
onBlur: () => {
|
|
38576
|
-
setOpen(false);
|
|
38577
|
-
},
|
|
38578
|
-
children: t("speech.usage", { tokens: formatTokens$1(tokens) })
|
|
38579
|
-
}), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
38580
|
-
className: RoomSpeechView_module_css_default.usagePanel,
|
|
38581
|
-
role: "tooltip",
|
|
38582
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
38583
|
-
className: RoomSpeechView_module_css_default.usageHead,
|
|
38584
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("usage.title") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [exact(tokens), " tok"] })]
|
|
38585
|
-
}), rows.map(([label, value]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
38586
|
-
className: RoomSpeechView_module_css_default.usageRow,
|
|
38587
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: value })]
|
|
38588
|
-
}, label))]
|
|
38589
|
-
})]
|
|
38590
|
-
});
|
|
38591
|
-
}
|
|
38592
|
-
//#endregion
|
|
38593
|
-
//#region \0dsh-css:src/client/RoomRunView.module.css.mjs
|
|
38594
|
-
const css$5 = "._7amxlW_run{height:24px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:0 4px;font-size:13px;line-height:18px;display:flex;position:relative;overflow:hidden}._7amxlW_run:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}._7amxlW_leading{flex:none}._7amxlW_title{white-space:nowrap}._7amxlW_run[data-state=failed] ._7amxlW_title{color:var(--dsw-alias-text-error,#d9363e)}._7amxlW_elapsed{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:1;overflow:hidden}._7amxlW_reason{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-text-error,#d9363e);flex:2;overflow:hidden}._7amxlW_stop{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:20px;justify-content:center;align-items:center;padding:2px;display:inline-flex}._7amxlW_stop:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-secondary,#5a5a5ae6)}._7amxlW_run[data-state=running]:after{content:\"\";background:linear-gradient(90deg, transparent, var(--dsw-alias-bg-layer-1,#fff9) 50%, transparent);opacity:.6;pointer-events:none;width:300px;animation:2.6s ease-out infinite _7amxlW_dsh-room-run-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes _7amxlW_dsh-room-run-sweep{0%{left:-300px}90%,to{left:100%}}@media (prefers-reduced-motion:reduce){._7amxlW_run[data-state=running]:after{content:none;animation:none}}._7amxlW_run:focus:not(:focus-visible),._7amxlW_stop:focus:not(:focus-visible){outline:none}._7amxlW_liveCard{padding-bottom:8px}._7amxlW_liveCard>._7amxlW_run{margin:-2px -4px 2px}";
|
|
38595
|
-
const tagId$5 = "@khorsheed/dsh-room/RoomRunView.module.css";
|
|
38596
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
38597
|
-
const tag = document.createElement("style");
|
|
38598
|
-
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
38599
|
-
tag.dataset.pluginCss = tagId$5;
|
|
38600
|
-
tag.textContent = css$5;
|
|
38601
|
-
document.head.appendChild(tag);
|
|
38602
|
-
}
|
|
38603
|
-
var RoomRunView_module_css_default = {
|
|
38604
|
-
"elapsed": "_7amxlW_elapsed",
|
|
38605
|
-
"dsh-room-run-sweep": "_7amxlW_dsh-room-run-sweep",
|
|
38606
|
-
"reason": "_7amxlW_reason",
|
|
38607
|
-
"liveCard": "_7amxlW_liveCard",
|
|
38608
|
-
"title": "_7amxlW_title",
|
|
38609
|
-
"leading": "_7amxlW_leading",
|
|
38610
|
-
"run": "_7amxlW_run",
|
|
38611
|
-
"stop": "_7amxlW_stop"
|
|
38612
|
-
};
|
|
38613
|
-
//#endregion
|
|
38614
|
-
//#region src/client/RoomRunView.tsx
|
|
38615
|
-
/**
|
|
38616
|
-
* Member run node ('room-run' keyed renderer): a ToolRow-isomorphic 24px
|
|
38617
|
-
* line — StateDot +「ada 正在工作… · 12s」+ the running sweep (with a
|
|
38618
|
-
* prefers-reduced-motion fallback). The WHOLE row jumps into the member's
|
|
38619
|
-
* child session (looked up from the room store's roster — run events carry
|
|
38620
|
-
* no handle), and a trailing stop button cancels through the Remote. A
|
|
38621
|
-
* failed run stays as a dim error row with the journaled reason (truncated,
|
|
38622
|
-
* the full text on hover); done/cancelled are hidden by the Definition and
|
|
38623
|
-
* never reach here. A RUNNING member's row takes the speech card's shape —
|
|
38624
|
-
* avatar and light card, the row as the card's header, the live output
|
|
38625
|
-
* below — so the reply card that replaces it lands in the same place.
|
|
38626
|
-
*/
|
|
38627
|
-
/** The member run row. */
|
|
38628
|
-
function RoomRunView({ node, sessionId, roomStore, openSession, cancelMember, renderMemberOutput, t }) {
|
|
38629
|
-
const state = (0, react.useSyncExternalStore)(roomStore.subscribe, () => roomStore.getCached(sessionId));
|
|
38630
|
-
const recovered = state?.runs.find((run) => run.member === node.data.member && run.startedAt === node.data.startedAt);
|
|
38631
|
-
const data = node.data.state === "running" && recovered !== void 0 ? {
|
|
38632
|
-
...node.data,
|
|
38633
|
-
...recovered
|
|
38634
|
-
} : node.data;
|
|
38635
|
-
const [now, setNow] = (0, react.useState)(() => Date.now());
|
|
38636
|
-
(0, react.useEffect)(() => {
|
|
38637
|
-
if (data.state !== "running") return void 0;
|
|
38638
|
-
const timer = setInterval(() => {
|
|
38639
|
-
setNow(Date.now());
|
|
38640
|
-
}, 1e3);
|
|
38641
|
-
return () => {
|
|
38642
|
-
clearInterval(timer);
|
|
38643
|
-
};
|
|
38644
|
-
}, [data.state]);
|
|
38645
|
-
const childSessionId = state?.members.find((entry) => entry.name === data.member)?.childSessionId;
|
|
38646
|
-
if (data.state === "done" || data.state === "cancelled") return null;
|
|
38647
|
-
const failed = data.state === "failed";
|
|
38648
|
-
const elapsed = failed ? data.elapsedMs : Math.max(0, now - data.startedAt);
|
|
38649
|
-
const jump = () => {
|
|
38650
|
-
if (childSessionId !== void 0) openSession(childSessionId);
|
|
38651
|
-
};
|
|
38652
|
-
const onKeyDown = (event) => {
|
|
38653
|
-
if (event.key === "Enter" || event.key === " ") {
|
|
38654
|
-
event.preventDefault();
|
|
38655
|
-
jump();
|
|
38656
|
-
}
|
|
38657
|
-
};
|
|
38658
|
-
const row = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38659
|
-
className: RoomRunView_module_css_default.run,
|
|
38660
|
-
"data-state": failed ? "failed" : "running",
|
|
38661
|
-
role: "button",
|
|
38662
|
-
tabIndex: 0,
|
|
38663
|
-
onClick: jump,
|
|
38664
|
-
onKeyDown,
|
|
38665
|
-
children: [
|
|
38666
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: failed ? "error" : "ongoing" }),
|
|
38667
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38668
|
-
className: RoomRunView_module_css_default.title,
|
|
38669
|
-
children: failed ? t("run.failed", { member: data.member }) : t("run.working", { member: data.member })
|
|
38670
|
-
}),
|
|
38671
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
38672
|
-
className: RoomRunView_module_css_default.elapsed,
|
|
38673
|
-
"aria-hidden": true,
|
|
38674
|
-
children: ["· ", elapsed === void 0 ? t("run.durationUnknown") : formatDurationMs(elapsed)]
|
|
38675
|
-
}),
|
|
38676
|
-
failed && data.error !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38677
|
-
className: RoomRunView_module_css_default.reason,
|
|
38678
|
-
title: data.error,
|
|
38679
|
-
children: data.error
|
|
38680
|
-
}),
|
|
38681
|
-
!failed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
38682
|
-
label: t("run.stop"),
|
|
38683
|
-
side: "bottom",
|
|
38684
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
38685
|
-
type: "button",
|
|
38686
|
-
className: RoomRunView_module_css_default.stop,
|
|
38687
|
-
"aria-label": t("run.stop"),
|
|
38688
|
-
onClick: (event) => {
|
|
38689
|
-
event.stopPropagation();
|
|
38690
|
-
cancelMember(data.member);
|
|
38691
|
-
},
|
|
38692
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconStopFillMedium, {})
|
|
38693
|
-
})
|
|
38694
|
-
})
|
|
38695
|
-
]
|
|
38696
|
-
});
|
|
38697
|
-
if (failed) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: row });
|
|
38698
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38699
|
-
className: RoomSpeechView_module_css_default.speech,
|
|
38700
|
-
style: { "--member-color": memberColor(data.member) },
|
|
38701
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
38702
|
-
className: RoomSpeechView_module_css_default.avatar,
|
|
38703
|
-
"aria-hidden": true,
|
|
38704
|
-
children: data.member.slice(0, 1).toUpperCase()
|
|
38705
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
38706
|
-
className: `${RoomSpeechView_module_css_default.card} ${RoomRunView_module_css_default.liveCard}`,
|
|
38707
|
-
children: [row, childSessionId !== void 0 && renderMemberOutput?.(childSessionId, data.startedAt)]
|
|
39454
|
+
className: RoomQuestionView_module_css_default.head,
|
|
39455
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39456
|
+
className: RoomQuestionView_module_css_default.title,
|
|
39457
|
+
children: t("question.title", { member: data.member })
|
|
39458
|
+
}), status]
|
|
39459
|
+
}), body]
|
|
38708
39460
|
})]
|
|
38709
39461
|
});
|
|
38710
39462
|
}
|
|
38711
39463
|
//#endregion
|
|
38712
|
-
//#region
|
|
38713
|
-
const css$4 = ".MkUhUa_row{white-space:nowrap;text-overflow:ellipsis;height:24px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);align-items:center;padding:0 4px;font-size:13px;line-height:18px;display:flex;overflow:hidden}";
|
|
38714
|
-
const tagId$4 = "@khorsheed/dsh-room/RoomEventView.module.css";
|
|
38715
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
38716
|
-
const tag = document.createElement("style");
|
|
38717
|
-
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
38718
|
-
tag.dataset.pluginCss = tagId$4;
|
|
38719
|
-
tag.textContent = css$4;
|
|
38720
|
-
document.head.appendChild(tag);
|
|
38721
|
-
}
|
|
38722
|
-
var RoomEventView_module_css_default = { "row": "MkUhUa_row" };
|
|
38723
|
-
//#endregion
|
|
38724
|
-
//#region src/client/RoomEventView.tsx
|
|
38725
|
-
/** The boundary dim line. */
|
|
38726
|
-
function RoomEventView({ node, t }) {
|
|
38727
|
-
const data = node.data;
|
|
38728
|
-
let text;
|
|
38729
|
-
switch (data.sub) {
|
|
38730
|
-
case "member-added":
|
|
38731
|
-
text = t("event.joined", {
|
|
38732
|
-
member: data.member ?? "",
|
|
38733
|
-
provider: data.provider ?? ""
|
|
38734
|
-
}) + (data.invitedBy === "agent" ? t("event.joinedByAgent") : "");
|
|
38735
|
-
break;
|
|
38736
|
-
case "member-removed": text = t("event.left", { member: data.member ?? "" });
|
|
38737
|
-
}
|
|
38738
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
38739
|
-
className: RoomEventView_module_css_default.row,
|
|
38740
|
-
children: text
|
|
38741
|
-
});
|
|
38742
|
-
}
|
|
38743
|
-
//#endregion
|
|
38744
|
-
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-session@0.2.1-rc.1_@deepseek-ai+cordis@4.0.4_@deepseek-ai+dsh-scope@0._53fab4e766dbd120da89b13a533f63c3/node_modules/@deepseek-ai/dsh-session/lib/types/surface.js
|
|
39464
|
+
//#region ../../node_modules/.pnpm/@deepseek-ai+dsh-session@0.2.1-rc.3_@deepseek-ai+cordis@4.0.4_@deepseek-ai+dsh-scope@0._a4f9aa29af8d436e2dcb9e4e85687430/node_modules/@deepseek-ai/dsh-session/lib/types/surface.js
|
|
38745
39465
|
/** Runtime counterpart of the message-producing event union. */
|
|
38746
39466
|
const SURFACE_EVENT_TYPES = /* @__PURE__ */ new Set([
|
|
38747
39467
|
"system/message",
|
|
@@ -38775,6 +39495,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38775
39495
|
}
|
|
38776
39496
|
//#endregion
|
|
38777
39497
|
//#region src/client/nodes.ts
|
|
39498
|
+
/**
|
|
39499
|
+
* The card data of a question from the room's ask log, for the inline
|
|
39500
|
+
* renderings (a round's live card and its reply).
|
|
39501
|
+
* @param ask - the logged question.
|
|
39502
|
+
* @returns the card data.
|
|
39503
|
+
*/
|
|
39504
|
+
function askCardData(ask) {
|
|
39505
|
+
return {
|
|
39506
|
+
seq: 0,
|
|
39507
|
+
time: ask.time,
|
|
39508
|
+
questionId: ask.id,
|
|
39509
|
+
member: ask.member,
|
|
39510
|
+
questions: ask.questions,
|
|
39511
|
+
state: ask.state,
|
|
39512
|
+
...ask.answers === void 0 ? {} : { answers: ask.answers },
|
|
39513
|
+
...ask.consent === true ? { consent: true } : {},
|
|
39514
|
+
...ask.late === true ? { late: true } : {},
|
|
39515
|
+
...ask.runId === void 0 ? {} : { runId: ask.runId }
|
|
39516
|
+
};
|
|
39517
|
+
}
|
|
38778
39518
|
/** The shared final-node materialization (single shape across the three kinds). */
|
|
38779
39519
|
function viewNode(context, kind, visibility = "visible") {
|
|
38780
39520
|
if (context.state === void 0) return null;
|
|
@@ -38808,6 +39548,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38808
39548
|
time: event.time,
|
|
38809
39549
|
member: event.data.member,
|
|
38810
39550
|
text: event.data.text,
|
|
39551
|
+
...event.data.asks === void 0 ? {} : { asks: event.data.asks },
|
|
38811
39552
|
...event.data.interrupted === void 0 ? {} : { interrupted: event.data.interrupted },
|
|
38812
39553
|
...event.data.reportedTo === void 0 ? {} : { reportedTo: event.data.reportedTo },
|
|
38813
39554
|
...event.data.childSessionId === void 0 ? {} : { childSessionId: event.data.childSessionId },
|
|
@@ -38822,7 +39563,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38822
39563
|
/**
|
|
38823
39564
|
* The member-run Definition: one Context per run (matched on
|
|
38824
39565
|
* member+startedAt), started by the running edge and updated by its terminal
|
|
38825
|
-
* edge. A
|
|
39566
|
+
* edge. A `room/run-moved` edge re-anchors a running card (its seq, which the
|
|
39567
|
+
* view orders by) below a reply or human message that landed after it. A running run renders the live row; a failed run stays as a dim
|
|
38826
39568
|
* error row; done/cancelled hide the row IN PLACE — the assembler's live
|
|
38827
39569
|
* incremental flush forbids withdrawing a materialized node with null (the
|
|
38828
39570
|
* withdrawal contract is the same key with `visibility: 'hidden'`; a null
|
|
@@ -38835,6 +39577,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38835
39577
|
match: (event) => event.type === "room/run-state" ? {
|
|
38836
39578
|
id: `${event.data.member}:${event.data.startedAt}`,
|
|
38837
39579
|
role: event.data.state === "running" ? "start" : "update"
|
|
39580
|
+
} : event.type === "room/run-moved" ? {
|
|
39581
|
+
id: `${event.data.member}:${event.data.startedAt}`,
|
|
39582
|
+
role: "update"
|
|
38838
39583
|
} : null,
|
|
38839
39584
|
start: (_context, match) => {
|
|
38840
39585
|
const event = match.event;
|
|
@@ -38849,6 +39594,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38849
39594
|
},
|
|
38850
39595
|
update: (context, match) => {
|
|
38851
39596
|
const event = match.event;
|
|
39597
|
+
if (event.type === "room/run-moved") return context.state.state === "running" ? {
|
|
39598
|
+
...context.state,
|
|
39599
|
+
seq: event.seq
|
|
39600
|
+
} : context.state;
|
|
38852
39601
|
if (event.type !== "room/run-state") return context.state;
|
|
38853
39602
|
const { error: _error, elapsedMs: _elapsed, ...previous } = context.state;
|
|
38854
39603
|
return {
|
|
@@ -38997,7 +39746,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
38997
39746
|
questionId: event.data.id,
|
|
38998
39747
|
member: event.data.member,
|
|
38999
39748
|
questions: event.data.questions,
|
|
39000
|
-
state: "pending"
|
|
39749
|
+
state: "pending",
|
|
39750
|
+
...event.data.consent === true ? { consent: true } : {},
|
|
39751
|
+
...event.data.runId === void 0 ? {} : { runId: event.data.runId }
|
|
39001
39752
|
};
|
|
39002
39753
|
},
|
|
39003
39754
|
update: (context, match) => {
|
|
@@ -39006,10 +39757,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
39006
39757
|
return {
|
|
39007
39758
|
...context.state,
|
|
39008
39759
|
state: event.data.outcome,
|
|
39009
|
-
...event.data.answers === void 0 ? {} : { answers: event.data.answers }
|
|
39760
|
+
...event.data.answers === void 0 ? {} : { answers: event.data.answers },
|
|
39761
|
+
...event.data.late === true ? { late: true } : {}
|
|
39010
39762
|
};
|
|
39011
39763
|
},
|
|
39012
|
-
buildViewNode: (context) => viewNode(context, "room-question")
|
|
39764
|
+
buildViewNode: (context) => viewNode(context, "room-question", context.state?.runId === void 0 ? "visible" : "hidden")
|
|
39013
39765
|
};
|
|
39014
39766
|
/**
|
|
39015
39767
|
* The relay Definition: one Context per relay (matched on the relay id),
|
|
@@ -39182,66 +39934,616 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
39182
39934
|
text: text("text")
|
|
39183
39935
|
};
|
|
39184
39936
|
}
|
|
39185
|
-
/**
|
|
39186
|
-
* A help request in the helper's session: the `user/message` the room queued
|
|
39187
|
-
* there (its `room-help` source) renders as a card naming the asking room
|
|
39188
|
-
* instead of a plain injected-context row.
|
|
39189
|
-
*/
|
|
39190
|
-
const roomHelpRequestDefinition = {
|
|
39191
|
-
kind: "room-help-request",
|
|
39192
|
-
target: "chat",
|
|
39193
|
-
match: (event) => {
|
|
39194
|
-
if (event.type !== "user/message" || !isAppendSurfaceEvent(event) || helpSourceOf(event.data.source) === void 0) return null;
|
|
39195
|
-
return {
|
|
39196
|
-
id: String(event.seq),
|
|
39197
|
-
role: "start"
|
|
39198
|
-
};
|
|
39199
|
-
},
|
|
39200
|
-
start: (_context, match) => {
|
|
39201
|
-
const event = match.event;
|
|
39202
|
-
const source = event.type === "user/message" ? helpSourceOf(event.data.source) : void 0;
|
|
39203
|
-
if (source === void 0) throw new Error("room-help-request start requires a room-help message");
|
|
39204
|
-
return {
|
|
39205
|
-
seq: event.seq,
|
|
39206
|
-
time: event.time,
|
|
39207
|
-
...source
|
|
39208
|
-
};
|
|
39209
|
-
},
|
|
39210
|
-
update: (context) => context.state,
|
|
39211
|
-
buildViewNode: (context) => viewNode(context, "room-help-request")
|
|
39212
|
-
};
|
|
39213
|
-
/**
|
|
39214
|
-
* Another room asked this room for help (`room/help-in`): the same request
|
|
39215
|
-
* card, naming the member it went to (and that it waits while this room is
|
|
39216
|
-
* paused), with a jump back to the asking room.
|
|
39217
|
-
*/
|
|
39218
|
-
const roomHelpInDefinition = {
|
|
39219
|
-
kind: "room-help-in",
|
|
39220
|
-
target: "chat",
|
|
39221
|
-
match: (event) => event.type === "room/help-in" ? {
|
|
39222
|
-
id: String(event.seq),
|
|
39223
|
-
role: "start"
|
|
39224
|
-
} : null,
|
|
39225
|
-
start: (_context, match) => {
|
|
39226
|
-
const event = match.event;
|
|
39227
|
-
if (event.type !== "room/help-in") throw new Error("room-help-in start requires a room/help-in event");
|
|
39228
|
-
const data = event.data;
|
|
39229
|
-
return {
|
|
39230
|
-
seq: event.seq,
|
|
39231
|
-
time: event.time,
|
|
39232
|
-
help: data.id,
|
|
39233
|
-
room: data.room,
|
|
39234
|
-
roomTitle: data.roomTitle,
|
|
39235
|
-
from: data.from,
|
|
39236
|
-
op: data.op,
|
|
39237
|
-
text: data.text,
|
|
39238
|
-
member: data.member,
|
|
39239
|
-
...data.held === true ? { held: true } : {}
|
|
39240
|
-
};
|
|
39241
|
-
},
|
|
39242
|
-
update: (context) => context.state,
|
|
39243
|
-
buildViewNode: (context) => viewNode(context, "room-help-request")
|
|
39244
|
-
};
|
|
39937
|
+
/**
|
|
39938
|
+
* A help request in the helper's session: the `user/message` the room queued
|
|
39939
|
+
* there (its `room-help` source) renders as a card naming the asking room
|
|
39940
|
+
* instead of a plain injected-context row.
|
|
39941
|
+
*/
|
|
39942
|
+
const roomHelpRequestDefinition = {
|
|
39943
|
+
kind: "room-help-request",
|
|
39944
|
+
target: "chat",
|
|
39945
|
+
match: (event) => {
|
|
39946
|
+
if (event.type !== "user/message" || !isAppendSurfaceEvent(event) || helpSourceOf(event.data.source) === void 0) return null;
|
|
39947
|
+
return {
|
|
39948
|
+
id: String(event.seq),
|
|
39949
|
+
role: "start"
|
|
39950
|
+
};
|
|
39951
|
+
},
|
|
39952
|
+
start: (_context, match) => {
|
|
39953
|
+
const event = match.event;
|
|
39954
|
+
const source = event.type === "user/message" ? helpSourceOf(event.data.source) : void 0;
|
|
39955
|
+
if (source === void 0) throw new Error("room-help-request start requires a room-help message");
|
|
39956
|
+
return {
|
|
39957
|
+
seq: event.seq,
|
|
39958
|
+
time: event.time,
|
|
39959
|
+
...source
|
|
39960
|
+
};
|
|
39961
|
+
},
|
|
39962
|
+
update: (context) => context.state,
|
|
39963
|
+
buildViewNode: (context) => viewNode(context, "room-help-request")
|
|
39964
|
+
};
|
|
39965
|
+
/**
|
|
39966
|
+
* Another room asked this room for help (`room/help-in`): the same request
|
|
39967
|
+
* card, naming the member it went to (and that it waits while this room is
|
|
39968
|
+
* paused), with a jump back to the asking room.
|
|
39969
|
+
*/
|
|
39970
|
+
const roomHelpInDefinition = {
|
|
39971
|
+
kind: "room-help-in",
|
|
39972
|
+
target: "chat",
|
|
39973
|
+
match: (event) => event.type === "room/help-in" ? {
|
|
39974
|
+
id: String(event.seq),
|
|
39975
|
+
role: "start"
|
|
39976
|
+
} : null,
|
|
39977
|
+
start: (_context, match) => {
|
|
39978
|
+
const event = match.event;
|
|
39979
|
+
if (event.type !== "room/help-in") throw new Error("room-help-in start requires a room/help-in event");
|
|
39980
|
+
const data = event.data;
|
|
39981
|
+
return {
|
|
39982
|
+
seq: event.seq,
|
|
39983
|
+
time: event.time,
|
|
39984
|
+
help: data.id,
|
|
39985
|
+
room: data.room,
|
|
39986
|
+
roomTitle: data.roomTitle,
|
|
39987
|
+
from: data.from,
|
|
39988
|
+
op: data.op,
|
|
39989
|
+
text: data.text,
|
|
39990
|
+
member: data.member,
|
|
39991
|
+
...data.held === true ? { held: true } : {}
|
|
39992
|
+
};
|
|
39993
|
+
},
|
|
39994
|
+
update: (context) => context.state,
|
|
39995
|
+
buildViewNode: (context) => viewNode(context, "room-help-request")
|
|
39996
|
+
};
|
|
39997
|
+
//#endregion
|
|
39998
|
+
//#region \0dsh-css:src/client/RoomSpeechView.module.css.mjs
|
|
39999
|
+
const css$5 = ".tEFZ_W_speech{grid-template-columns:28px minmax(0,1fr);gap:10px;margin:8px 0 16px;display:grid}.tEFZ_W_avatar{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;user-select:none;border-radius:50%;place-items:center;width:28px;height:28px;margin-top:2px;font-size:12px;font-weight:600;display:grid}.tEFZ_W_card{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;gap:2px;min-width:0;padding:8px 12px;display:flex}.tEFZ_W_identity{flex-wrap:wrap;align-items:baseline;gap:2px 8px;display:flex}.tEFZ_W_name{color:var(--dsw-alias-label-primary,#1f2329);font-size:13px;font-weight:600}.tEFZ_W_role{background:var(--dsw-alias-bg-layer-2,#0000000d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:5px;padding:0 6px;font-size:11px;line-height:18px}.tEFZ_W_provider{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}.tEFZ_W_interrupted{color:var(--dsw-alias-text-error,#d9363e);font-size:12px}.tEFZ_W_body{color:var(--dsw-alias-label-primary,#1f2329);font-size:14px;line-height:24px}.tEFZ_W_clamped{max-height:240px;position:relative;overflow:hidden}.tEFZ_W_fade{cursor:pointer;background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-layer-1,#fff) 0%, transparent), var(--dsw-alias-bg-layer-1,#fff));height:48px;position:absolute;bottom:0;left:0;right:0}.tEFZ_W_foldBar{justify-content:flex-end;margin:2px -4px 0 0;display:flex}.tEFZ_W_clamped .tEFZ_W_foldBar{margin:0;position:absolute;bottom:4px;right:4px}.tEFZ_W_foldToggle{background:var(--dsw-alias-bg-base,#fff);width:30px;height:20px;color:var(--dsw-alias-label-secondary,var(--dsw-alias-label-primary));box-shadow:0 0 0 .5px color-mix(in srgb, var(--dsw-alias-label-primary,#000) 8%, transparent);cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;padding:0;transition:background-color .12s,color .12s;display:inline-flex}.tEFZ_W_foldToggle svg{transition:transform .16s}.tEFZ_W_foldToggle[aria-expanded=true] svg{transform:rotate(180deg)}.tEFZ_W_foldToggle:hover{background:color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 82%, var(--dsw-alias-label-primary,#000));color:var(--dsw-alias-label-primary,var(--dsw-alias-label-secondary))}.tEFZ_W_foldToggle:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,#4176e6);outline-offset:2px}.tEFZ_W_actions{align-items:center;gap:8px;height:28px;margin-top:6px;transition:opacity .12s;display:flex}.tEFZ_W_stack{flex-direction:column;min-width:0;display:flex}.tEFZ_W_speech[data-actions-reveal=hover] .tEFZ_W_actions{opacity:0}.tEFZ_W_speech[data-actions-reveal=hover]:hover .tEFZ_W_actions,.tEFZ_W_speech[data-actions-reveal=hover]:focus-within .tEFZ_W_actions{opacity:1}@media (hover:none){.tEFZ_W_speech[data-actions-reveal=hover] .tEFZ_W_actions{opacity:1}}.tEFZ_W_usage{display:inline-flex;position:relative}.tEFZ_W_usageChip{height:24px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;cursor:default;background:0 0;border:none;border-radius:6px;padding:0 6px;font-size:12px;line-height:24px}.tEFZ_W_usageChip:hover,.tEFZ_W_usageChip[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.tEFZ_W_usagePanel{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2,#0000001a));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:260px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,0 12px 32px #0000001f);font-variant-numeric:tabular-nums;border-radius:12px;flex-direction:column;gap:2px;padding:10px 14px;font-size:12px;line-height:22px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0}.tEFZ_W_usageHead,.tEFZ_W_usageRow{white-space:nowrap;justify-content:space-between;gap:24px;display:flex}.tEFZ_W_usageHead{border-bottom:1px solid var(--dsw-alias-border-l2,#7f7f7f33);color:var(--dsw-alias-label-primary,#1f2329);margin-bottom:4px;padding-bottom:6px;font-weight:600}.tEFZ_W_usageRow>:first-child{color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.tEFZ_W_usageRow>:last-child{color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.tEFZ_W_action{width:28px;height:28px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex}.tEFZ_W_action:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.tEFZ_W_meta,.tEFZ_W_reported{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:12px;line-height:24px}.tEFZ_W_reported{color:var(--dsw-alias-state-success,#1f9a55)}.tEFZ_W_action:focus:not(:focus-visible),.tEFZ_W_foldToggle:focus:not(:focus-visible){outline:none}";
|
|
40000
|
+
const tagId$5 = "@khorsheed/dsh-room/RoomSpeechView.module.css";
|
|
40001
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
40002
|
+
const tag = document.createElement("style");
|
|
40003
|
+
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
40004
|
+
tag.dataset.pluginCss = tagId$5;
|
|
40005
|
+
tag.textContent = css$5;
|
|
40006
|
+
document.head.appendChild(tag);
|
|
40007
|
+
}
|
|
40008
|
+
var RoomSpeechView_module_css_default = {
|
|
40009
|
+
"usage": "tEFZ_W_usage",
|
|
40010
|
+
"usageChip": "tEFZ_W_usageChip",
|
|
40011
|
+
"interrupted": "tEFZ_W_interrupted",
|
|
40012
|
+
"clamped": "tEFZ_W_clamped",
|
|
40013
|
+
"stack": "tEFZ_W_stack",
|
|
40014
|
+
"fade": "tEFZ_W_fade",
|
|
40015
|
+
"usageHead": "tEFZ_W_usageHead",
|
|
40016
|
+
"usageRow": "tEFZ_W_usageRow",
|
|
40017
|
+
"meta": "tEFZ_W_meta",
|
|
40018
|
+
"foldBar": "tEFZ_W_foldBar",
|
|
40019
|
+
"action": "tEFZ_W_action",
|
|
40020
|
+
"avatar": "tEFZ_W_avatar",
|
|
40021
|
+
"reported": "tEFZ_W_reported",
|
|
40022
|
+
"name": "tEFZ_W_name",
|
|
40023
|
+
"identity": "tEFZ_W_identity",
|
|
40024
|
+
"card": "tEFZ_W_card",
|
|
40025
|
+
"speech": "tEFZ_W_speech",
|
|
40026
|
+
"body": "tEFZ_W_body",
|
|
40027
|
+
"role": "tEFZ_W_role",
|
|
40028
|
+
"provider": "tEFZ_W_provider",
|
|
40029
|
+
"actions": "tEFZ_W_actions",
|
|
40030
|
+
"usagePanel": "tEFZ_W_usagePanel",
|
|
40031
|
+
"foldToggle": "tEFZ_W_foldToggle"
|
|
40032
|
+
};
|
|
40033
|
+
//#endregion
|
|
40034
|
+
//#region src/client/RoomSpeechView.tsx
|
|
40035
|
+
/**
|
|
40036
|
+
* Member speech node ('room-speech' keyed renderer): a conversation entry —
|
|
40037
|
+
* the member's color avatar beside a light card that blocks off one member's
|
|
40038
|
+
* turn (several agents take turns in a room, so each turn reads as its own
|
|
40039
|
+
* block): a header (name, public role, provider, time), the markdown body —
|
|
40040
|
+
* the official MarkdownText, typographically identical to main-agent speech —
|
|
40041
|
+
* and a quiet footer row. A
|
|
40042
|
+
* body past {@link COLLAPSE_CHARS} may fold to ~10 lines under a bg-base fade
|
|
40043
|
+
* with an expand/collapse toggle (the fade expands too). The newest reply to
|
|
40044
|
+
* the room starts unfolded — it is what the human is reading — and folds once
|
|
40045
|
+
* a newer reply lands; reports to another member and older replies start
|
|
40046
|
+
* folded. The human's own expand/collapse wins and is remembered per speech
|
|
40047
|
+
* (see {@link foldChoices}). The action row replicates the
|
|
40048
|
+
* official MessageIconActions chrome: copy, child-session jump (when the
|
|
40049
|
+
* speech carries its handle), honest duration, and a hover-revealed clock.
|
|
40050
|
+
* Deliberately absent: branch (forking the room session has undefined
|
|
40051
|
+
* roster/blackboard semantics) and TPS/TTFT (a CLI run has no token stream).
|
|
40052
|
+
*/
|
|
40053
|
+
/**
|
|
40054
|
+
* Speeches longer than this start collapsed. Chars, not rendered lines: a
|
|
40055
|
+
* stable threshold that needs no layout measurement — roughly ten rendered
|
|
40056
|
+
* lines of prose.
|
|
40057
|
+
*/
|
|
40058
|
+
const COLLAPSE_CHARS = 600;
|
|
40059
|
+
/** Browser storage key of one room's remembered expand/collapse choices. */
|
|
40060
|
+
const FOLD_KEY_PREFIX = "dsh-room:speech-fold:";
|
|
40061
|
+
/** Choices kept per room (newest speeches win): bounds the stored map. */
|
|
40062
|
+
const FOLD_KEEP = 200;
|
|
40063
|
+
/**
|
|
40064
|
+
* The human's expand/collapse choices for one room's speeches, by speech seq.
|
|
40065
|
+
* A per-viewer convenience in browser storage: unreadable storage (private
|
|
40066
|
+
* window, blocked site data) only means the default folding applies.
|
|
40067
|
+
*/
|
|
40068
|
+
const foldChoices = {
|
|
40069
|
+
read(sessionId) {
|
|
40070
|
+
try {
|
|
40071
|
+
const raw = globalThis.localStorage?.getItem(FOLD_KEY_PREFIX + sessionId);
|
|
40072
|
+
const parsed = raw == null ? void 0 : JSON.parse(raw);
|
|
40073
|
+
return typeof parsed === "object" && parsed !== null ? parsed : {};
|
|
40074
|
+
} catch {
|
|
40075
|
+
return {};
|
|
40076
|
+
}
|
|
40077
|
+
},
|
|
40078
|
+
write(sessionId, seq, expanded) {
|
|
40079
|
+
try {
|
|
40080
|
+
const choices = {
|
|
40081
|
+
...foldChoices.read(sessionId),
|
|
40082
|
+
[String(seq)]: expanded
|
|
40083
|
+
};
|
|
40084
|
+
const kept = Object.keys(choices).map(Number).sort((a, b) => b - a).slice(0, FOLD_KEEP);
|
|
40085
|
+
globalThis.localStorage?.setItem(FOLD_KEY_PREFIX + sessionId, JSON.stringify(Object.fromEntries(kept.map((key) => [key, choices[key]]))));
|
|
40086
|
+
} catch {}
|
|
40087
|
+
}
|
|
40088
|
+
};
|
|
40089
|
+
/** Localized Markdown chrome (code-fence copy buttons, footnotes) over the room namespace. */
|
|
40090
|
+
function markdownLabels(t) {
|
|
40091
|
+
return {
|
|
40092
|
+
code: {
|
|
40093
|
+
copyLabel: t("action.copy"),
|
|
40094
|
+
copiedLabel: t("action.copied")
|
|
40095
|
+
},
|
|
40096
|
+
footnotes: t("markdown.footnotes")
|
|
40097
|
+
};
|
|
40098
|
+
}
|
|
40099
|
+
/**
|
|
40100
|
+
* Split a reply around the questions its round asked, in the order it said
|
|
40101
|
+
* and asked them (offsets recorded when the reply landed; -1 = the split
|
|
40102
|
+
* point was not found, so the question opens the reply marked mid-round).
|
|
40103
|
+
* A question the log does not know (an older cache) is left out.
|
|
40104
|
+
* @param data - the speech node data.
|
|
40105
|
+
* @param askLog - the room's question log.
|
|
40106
|
+
* @returns the parts, text and questions interleaved.
|
|
40107
|
+
*/
|
|
40108
|
+
function replyParts(data, askLog) {
|
|
40109
|
+
const logged = new Map((askLog ?? []).map((ask) => [ask.id, ask]));
|
|
40110
|
+
const asks = (data.asks ?? []).filter((entry) => logged.has(entry.id)).sort((a, b) => a.at - b.at);
|
|
40111
|
+
if (asks.length === 0) return [{
|
|
40112
|
+
kind: "text",
|
|
40113
|
+
from: 0,
|
|
40114
|
+
text: data.text
|
|
40115
|
+
}];
|
|
40116
|
+
const parts = [];
|
|
40117
|
+
let cursor = 0;
|
|
40118
|
+
for (const entry of asks) {
|
|
40119
|
+
const at = Math.max(cursor, Math.min(entry.at, data.text.length));
|
|
40120
|
+
const piece = data.text.slice(cursor, at);
|
|
40121
|
+
if (piece.trim() !== "") parts.push({
|
|
40122
|
+
kind: "text",
|
|
40123
|
+
from: cursor,
|
|
40124
|
+
text: piece
|
|
40125
|
+
});
|
|
40126
|
+
parts.push({
|
|
40127
|
+
kind: "ask",
|
|
40128
|
+
ask: logged.get(entry.id),
|
|
40129
|
+
mid: entry.at < 0
|
|
40130
|
+
});
|
|
40131
|
+
cursor = at;
|
|
40132
|
+
}
|
|
40133
|
+
const rest = data.text.slice(cursor);
|
|
40134
|
+
if (rest.trim() !== "") parts.push({
|
|
40135
|
+
kind: "text",
|
|
40136
|
+
from: cursor,
|
|
40137
|
+
text: rest
|
|
40138
|
+
});
|
|
40139
|
+
return parts;
|
|
40140
|
+
}
|
|
40141
|
+
function RoomSpeechView({ node, sessionId, roomStore, openSession, openDetail, openPath, answerQuestion, t }) {
|
|
40142
|
+
const data = node.data;
|
|
40143
|
+
const [copied, setCopied] = (0, react.useState)(false);
|
|
40144
|
+
const [chosen, setChosen] = (0, react.useState)(() => foldChoices.read(sessionId)[String(node.data.seq)]);
|
|
40145
|
+
const copyTimer = (0, react.useRef)(null);
|
|
40146
|
+
(0, react.useEffect)(() => () => {
|
|
40147
|
+
if (copyTimer.current !== null) clearTimeout(copyTimer.current);
|
|
40148
|
+
}, []);
|
|
40149
|
+
const state = (0, react.useSyncExternalStore)(roomStore.subscribe, () => roomStore.getCached(sessionId));
|
|
40150
|
+
const member = state?.members.find((entry) => entry.name === data.member);
|
|
40151
|
+
const provider = member === void 0 ? void 0 : member.kind === "main-agent" ? t("member.kind.main") : member.provider;
|
|
40152
|
+
const child = data.childSessionId;
|
|
40153
|
+
const execution = data.runId === void 0 ? void 0 : state?.executions?.find((entry) => entry.id === data.runId);
|
|
40154
|
+
const usage = execution?.usage;
|
|
40155
|
+
const tokens = usage === void 0 ? execution?.tokens : usage.inputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0) + usage.outputTokens;
|
|
40156
|
+
const newestSpeech = data.seq >= (state?.latestSpeechSeq ?? data.seq);
|
|
40157
|
+
const collapsible = data.text.length > COLLAPSE_CHARS;
|
|
40158
|
+
const newestReply = data.reportedTo === void 0 && data.seq >= (state?.latestReplySeq ?? data.seq);
|
|
40159
|
+
const expanded = chosen ?? newestReply;
|
|
40160
|
+
const clamped = collapsible && !expanded;
|
|
40161
|
+
const toggle = (next) => {
|
|
40162
|
+
setChosen(next);
|
|
40163
|
+
foldChoices.write(sessionId, data.seq, next);
|
|
40164
|
+
};
|
|
40165
|
+
const labels = (0, react.useMemo)(() => markdownLabels(t), [t]);
|
|
40166
|
+
const memberCwd = member?.cwd;
|
|
40167
|
+
const mentions = (0, react.useMemo)(() => openPath === void 0 ? void 0 : pathMentions((path) => {
|
|
40168
|
+
openPath(sessionId, path);
|
|
40169
|
+
}, memberCwd), [
|
|
40170
|
+
openPath,
|
|
40171
|
+
sessionId,
|
|
40172
|
+
memberCwd
|
|
40173
|
+
]);
|
|
40174
|
+
const copy = () => {
|
|
40175
|
+
(0, _deepseek_ai_dsh_client_ui_primitives.writeClipboard)(data.text).then((ok) => {
|
|
40176
|
+
if (!ok) return;
|
|
40177
|
+
setCopied(true);
|
|
40178
|
+
copyTimer.current = setTimeout(() => {
|
|
40179
|
+
setCopied(false);
|
|
40180
|
+
}, 1e3);
|
|
40181
|
+
});
|
|
40182
|
+
};
|
|
40183
|
+
const color = memberColor(data.member);
|
|
40184
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40185
|
+
className: RoomSpeechView_module_css_default.speech,
|
|
40186
|
+
"data-time-hover-root": "",
|
|
40187
|
+
"data-actions-reveal": newestSpeech ? "always" : "hover",
|
|
40188
|
+
style: { "--member-color": color },
|
|
40189
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40190
|
+
className: RoomSpeechView_module_css_default.avatar,
|
|
40191
|
+
"aria-hidden": true,
|
|
40192
|
+
children: data.member.slice(0, 1).toUpperCase()
|
|
40193
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40194
|
+
className: RoomSpeechView_module_css_default.stack,
|
|
40195
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40196
|
+
className: RoomSpeechView_module_css_default.card,
|
|
40197
|
+
children: [
|
|
40198
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40199
|
+
className: RoomSpeechView_module_css_default.identity,
|
|
40200
|
+
children: [
|
|
40201
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40202
|
+
className: RoomSpeechView_module_css_default.name,
|
|
40203
|
+
children: data.member
|
|
40204
|
+
}),
|
|
40205
|
+
member?.role !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40206
|
+
className: RoomSpeechView_module_css_default.role,
|
|
40207
|
+
children: member.role
|
|
40208
|
+
}),
|
|
40209
|
+
provider !== void 0 && provider !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40210
|
+
className: RoomSpeechView_module_css_default.provider,
|
|
40211
|
+
children: provider
|
|
40212
|
+
}),
|
|
40213
|
+
data.interrupted !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40214
|
+
className: RoomSpeechView_module_css_default.interrupted,
|
|
40215
|
+
children: t(data.interrupted === "cancelled" ? "speech.stopped" : "speech.failed")
|
|
40216
|
+
})
|
|
40217
|
+
]
|
|
40218
|
+
}),
|
|
40219
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40220
|
+
className: clamped ? `${RoomSpeechView_module_css_default.body} ${RoomSpeechView_module_css_default.clamped}` : RoomSpeechView_module_css_default.body,
|
|
40221
|
+
children: [
|
|
40222
|
+
replyParts(data, state?.askLog).map((part) => part.kind === "text" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
|
|
40223
|
+
text: part.text,
|
|
40224
|
+
labels,
|
|
40225
|
+
fileMentions: mentions
|
|
40226
|
+
}, `t${part.from}`) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomQuestionView, {
|
|
40227
|
+
node: { data: askCardData(part.ask) },
|
|
40228
|
+
answerQuestion,
|
|
40229
|
+
t,
|
|
40230
|
+
inline: { mid: part.mid }
|
|
40231
|
+
}, part.ask.id)),
|
|
40232
|
+
clamped && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
40233
|
+
className: RoomSpeechView_module_css_default.fade,
|
|
40234
|
+
"aria-hidden": true,
|
|
40235
|
+
onClick: () => {
|
|
40236
|
+
toggle(true);
|
|
40237
|
+
}
|
|
40238
|
+
}),
|
|
40239
|
+
collapsible && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
40240
|
+
className: RoomSpeechView_module_css_default.foldBar,
|
|
40241
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
40242
|
+
label: expanded ? t("speech.collapse") : t("speech.expand"),
|
|
40243
|
+
side: "bottom",
|
|
40244
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
40245
|
+
type: "button",
|
|
40246
|
+
className: RoomSpeechView_module_css_default.foldToggle,
|
|
40247
|
+
"aria-label": expanded ? t("speech.collapse") : t("speech.expand"),
|
|
40248
|
+
"aria-expanded": expanded,
|
|
40249
|
+
onClick: () => {
|
|
40250
|
+
toggle(!expanded);
|
|
40251
|
+
},
|
|
40252
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChevronDownOutlineMedium, {})
|
|
40253
|
+
})
|
|
40254
|
+
})
|
|
40255
|
+
})
|
|
40256
|
+
]
|
|
40257
|
+
}),
|
|
40258
|
+
data.reportedTo !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40259
|
+
className: RoomSpeechView_module_css_default.reported,
|
|
40260
|
+
children: t("speech.reportedTo", { member: data.reportedTo })
|
|
40261
|
+
})
|
|
40262
|
+
]
|
|
40263
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40264
|
+
className: RoomSpeechView_module_css_default.actions,
|
|
40265
|
+
children: [
|
|
40266
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
40267
|
+
label: copied ? t("action.copied") : t("action.copy"),
|
|
40268
|
+
side: "bottom",
|
|
40269
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
40270
|
+
type: "button",
|
|
40271
|
+
className: RoomSpeechView_module_css_default.action,
|
|
40272
|
+
"aria-label": copied ? t("action.copied") : t("action.copy"),
|
|
40273
|
+
onClick: copy,
|
|
40274
|
+
children: copied ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineMedium, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCopyOutlineMedium, {})
|
|
40275
|
+
})
|
|
40276
|
+
}),
|
|
40277
|
+
child !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
40278
|
+
label: t("speech.jump"),
|
|
40279
|
+
side: "bottom",
|
|
40280
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
40281
|
+
type: "button",
|
|
40282
|
+
className: RoomSpeechView_module_css_default.action,
|
|
40283
|
+
"aria-label": t("speech.jump"),
|
|
40284
|
+
onClick: () => {
|
|
40285
|
+
openSession(child);
|
|
40286
|
+
},
|
|
40287
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconLinkOutlineMedium, {})
|
|
40288
|
+
})
|
|
40289
|
+
}),
|
|
40290
|
+
child !== void 0 && data.messageId !== void 0 && openDetail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
40291
|
+
label: t("speech.detail"),
|
|
40292
|
+
side: "bottom",
|
|
40293
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
40294
|
+
type: "button",
|
|
40295
|
+
className: RoomSpeechView_module_css_default.action,
|
|
40296
|
+
"aria-label": t("speech.detail"),
|
|
40297
|
+
onClick: () => {
|
|
40298
|
+
openDetail(child, data.messageId);
|
|
40299
|
+
},
|
|
40300
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconRequestDetailOutline16, {})
|
|
40301
|
+
})
|
|
40302
|
+
}),
|
|
40303
|
+
tokens !== void 0 && tokens > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UsageChip, {
|
|
40304
|
+
tokens,
|
|
40305
|
+
execution,
|
|
40306
|
+
provider: member?.kind === "cli" ? member.provider : void 0,
|
|
40307
|
+
durationMs: data.durationMs,
|
|
40308
|
+
t
|
|
40309
|
+
}) : data.durationMs !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40310
|
+
className: RoomSpeechView_module_css_default.meta,
|
|
40311
|
+
children: formatDurationMs(data.durationMs)
|
|
40312
|
+
}),
|
|
40313
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40314
|
+
className: RoomSpeechView_module_css_default.meta,
|
|
40315
|
+
children: formatClock(data.time)
|
|
40316
|
+
})
|
|
40317
|
+
]
|
|
40318
|
+
})]
|
|
40319
|
+
})]
|
|
40320
|
+
});
|
|
40321
|
+
}
|
|
40322
|
+
/**
|
|
40323
|
+
* 用量 with its breakdown on hover or focus — the host's turn usage panel:
|
|
40324
|
+
* total, provider / model, cache hit, the disjoint input buckets, output, and
|
|
40325
|
+
* this round's run time. Rows the harness did not report are left out.
|
|
40326
|
+
*/
|
|
40327
|
+
function UsageChip({ tokens, execution, provider, durationMs, t }) {
|
|
40328
|
+
const [open, setOpen] = (0, react.useState)(false);
|
|
40329
|
+
const usage = execution?.usage;
|
|
40330
|
+
const billed = usage === void 0 ? 0 : usage.inputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
|
|
40331
|
+
const exact = (n) => n.toLocaleString("en-US");
|
|
40332
|
+
const route = [provider, execution?.model].filter(Boolean).join("/");
|
|
40333
|
+
const rows = [
|
|
40334
|
+
...route === "" ? [] : [[t("usage.route"), route]],
|
|
40335
|
+
...usage !== void 0 && billed > 0 ? [[t("usage.cacheHit"), `${Math.round((usage.cacheReadTokens ?? 0) / billed * 1e3) / 10}%`]] : [],
|
|
40336
|
+
...usage === void 0 ? [] : [
|
|
40337
|
+
[t("usage.uncached"), `${exact(usage.inputTokens)} tok`],
|
|
40338
|
+
...usage.cacheReadTokens === void 0 ? [] : [[t("usage.cacheRead"), `${exact(usage.cacheReadTokens)} tok`]],
|
|
40339
|
+
...usage.cacheWriteTokens === void 0 ? [] : [[t("usage.cacheWrite"), `${exact(usage.cacheWriteTokens)} tok`]],
|
|
40340
|
+
[t("usage.output"), `${exact(usage.outputTokens)} tok`]
|
|
40341
|
+
],
|
|
40342
|
+
...durationMs === void 0 ? [] : [[t("usage.duration"), formatDurationMs(durationMs)]]
|
|
40343
|
+
];
|
|
40344
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
40345
|
+
className: RoomSpeechView_module_css_default.usage,
|
|
40346
|
+
onMouseEnter: () => {
|
|
40347
|
+
setOpen(true);
|
|
40348
|
+
},
|
|
40349
|
+
onMouseLeave: () => {
|
|
40350
|
+
setOpen(false);
|
|
40351
|
+
},
|
|
40352
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
40353
|
+
type: "button",
|
|
40354
|
+
className: RoomSpeechView_module_css_default.usageChip,
|
|
40355
|
+
"aria-expanded": open,
|
|
40356
|
+
onFocus: () => {
|
|
40357
|
+
setOpen(true);
|
|
40358
|
+
},
|
|
40359
|
+
onBlur: () => {
|
|
40360
|
+
setOpen(false);
|
|
40361
|
+
},
|
|
40362
|
+
children: t("speech.usage", { tokens: formatTokens$1(tokens) })
|
|
40363
|
+
}), open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
40364
|
+
className: RoomSpeechView_module_css_default.usagePanel,
|
|
40365
|
+
role: "tooltip",
|
|
40366
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
40367
|
+
className: RoomSpeechView_module_css_default.usageHead,
|
|
40368
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("usage.title") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [exact(tokens), " tok"] })]
|
|
40369
|
+
}), rows.map(([label, value]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
40370
|
+
className: RoomSpeechView_module_css_default.usageRow,
|
|
40371
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: value })]
|
|
40372
|
+
}, label))]
|
|
40373
|
+
})]
|
|
40374
|
+
});
|
|
40375
|
+
}
|
|
40376
|
+
//#endregion
|
|
40377
|
+
//#region \0dsh-css:src/client/RoomRunView.module.css.mjs
|
|
40378
|
+
const css$4 = "._7amxlW_run{height:24px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:0 4px;font-size:13px;line-height:18px;display:flex;position:relative;overflow:hidden}._7amxlW_run:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24)}._7amxlW_leading{flex:none}._7amxlW_title{white-space:nowrap}._7amxlW_run[data-state=failed] ._7amxlW_title{color:var(--dsw-alias-text-error,#d9363e)}._7amxlW_elapsed{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:1;overflow:hidden}._7amxlW_reason{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-text-error,#d9363e);flex:2;overflow:hidden}._7amxlW_stop{width:20px;height:20px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:20px;justify-content:center;align-items:center;padding:2px;display:inline-flex}._7amxlW_stop:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-secondary,#5a5a5ae6)}._7amxlW_run[data-state=running]:after{content:\"\";background:linear-gradient(90deg, transparent, var(--dsw-alias-bg-layer-1,#fff9) 50%, transparent);opacity:.6;pointer-events:none;width:300px;animation:2.6s ease-out infinite _7amxlW_dsh-room-run-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes _7amxlW_dsh-room-run-sweep{0%{left:-300px}90%,to{left:100%}}@media (prefers-reduced-motion:reduce){._7amxlW_run[data-state=running]:after{content:none;animation:none}}._7amxlW_run:focus:not(:focus-visible),._7amxlW_stop:focus:not(:focus-visible){outline:none}._7amxlW_liveCard{padding-bottom:8px}._7amxlW_liveCard>._7amxlW_run{margin:-2px -4px 2px}";
|
|
40379
|
+
const tagId$4 = "@khorsheed/dsh-room/RoomRunView.module.css";
|
|
40380
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
40381
|
+
const tag = document.createElement("style");
|
|
40382
|
+
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
40383
|
+
tag.dataset.pluginCss = tagId$4;
|
|
40384
|
+
tag.textContent = css$4;
|
|
40385
|
+
document.head.appendChild(tag);
|
|
40386
|
+
}
|
|
40387
|
+
var RoomRunView_module_css_default = {
|
|
40388
|
+
"stop": "_7amxlW_stop",
|
|
40389
|
+
"liveCard": "_7amxlW_liveCard",
|
|
40390
|
+
"elapsed": "_7amxlW_elapsed",
|
|
40391
|
+
"leading": "_7amxlW_leading",
|
|
40392
|
+
"title": "_7amxlW_title",
|
|
40393
|
+
"run": "_7amxlW_run",
|
|
40394
|
+
"dsh-room-run-sweep": "_7amxlW_dsh-room-run-sweep",
|
|
40395
|
+
"reason": "_7amxlW_reason"
|
|
40396
|
+
};
|
|
40397
|
+
//#endregion
|
|
40398
|
+
//#region src/client/RoomRunView.tsx
|
|
40399
|
+
/**
|
|
40400
|
+
* Member run node ('room-run' keyed renderer): a ToolRow-isomorphic 24px
|
|
40401
|
+
* line — StateDot +「ada 正在工作… · 12s」+ the running sweep (with a
|
|
40402
|
+
* prefers-reduced-motion fallback). The WHOLE row jumps into the member's
|
|
40403
|
+
* child session (looked up from the room store's roster — run events carry
|
|
40404
|
+
* no handle), and a trailing stop button cancels through the Remote. A
|
|
40405
|
+
* failed run stays as a dim error row with the journaled reason (truncated,
|
|
40406
|
+
* the full text on hover); done/cancelled are hidden by the Definition and
|
|
40407
|
+
* never reach here. A RUNNING member's row takes the speech card's shape —
|
|
40408
|
+
* avatar and light card, the row as the card's header, the live output
|
|
40409
|
+
* below — so the reply card that replaces it lands in the same place.
|
|
40410
|
+
*/
|
|
40411
|
+
/** The member run row. */
|
|
40412
|
+
function RoomRunView({ node, sessionId, roomStore, openSession, cancelMember, renderMemberOutput, openPath, answerQuestion, t }) {
|
|
40413
|
+
const state = (0, react.useSyncExternalStore)(roomStore.subscribe, () => roomStore.getCached(sessionId));
|
|
40414
|
+
const recovered = state?.runs.find((run) => run.member === node.data.member && run.startedAt === node.data.startedAt);
|
|
40415
|
+
const data = node.data.state === "running" && recovered !== void 0 ? {
|
|
40416
|
+
...node.data,
|
|
40417
|
+
...recovered
|
|
40418
|
+
} : node.data;
|
|
40419
|
+
const [now, setNow] = (0, react.useState)(() => Date.now());
|
|
40420
|
+
(0, react.useEffect)(() => {
|
|
40421
|
+
if (data.state !== "running") return void 0;
|
|
40422
|
+
const timer = setInterval(() => {
|
|
40423
|
+
setNow(Date.now());
|
|
40424
|
+
}, 1e3);
|
|
40425
|
+
return () => {
|
|
40426
|
+
clearInterval(timer);
|
|
40427
|
+
};
|
|
40428
|
+
}, [data.state]);
|
|
40429
|
+
const rosterEntry = state?.members.find((entry) => entry.name === data.member);
|
|
40430
|
+
const childSessionId = rosterEntry?.childSessionId;
|
|
40431
|
+
const memberCwd = rosterEntry?.cwd;
|
|
40432
|
+
const runId = recovered?.runId;
|
|
40433
|
+
const waiting = runId === void 0 ? [] : (state?.askLog ?? []).filter((ask) => ask.runId === runId && ask.state === "pending");
|
|
40434
|
+
const mentions = (0, react.useMemo)(() => openPath === void 0 ? void 0 : pathMentions((path) => {
|
|
40435
|
+
openPath(sessionId, path);
|
|
40436
|
+
}, memberCwd), [
|
|
40437
|
+
openPath,
|
|
40438
|
+
sessionId,
|
|
40439
|
+
memberCwd
|
|
40440
|
+
]);
|
|
40441
|
+
if (data.state === "done" || data.state === "cancelled") return null;
|
|
40442
|
+
const failed = data.state === "failed";
|
|
40443
|
+
const elapsed = failed ? data.elapsedMs : Math.max(0, now - data.startedAt);
|
|
40444
|
+
const jump = () => {
|
|
40445
|
+
if (childSessionId !== void 0) openSession(childSessionId);
|
|
40446
|
+
};
|
|
40447
|
+
const onKeyDown = (event) => {
|
|
40448
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
40449
|
+
event.preventDefault();
|
|
40450
|
+
jump();
|
|
40451
|
+
}
|
|
40452
|
+
};
|
|
40453
|
+
const row = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40454
|
+
className: RoomRunView_module_css_default.run,
|
|
40455
|
+
"data-state": failed ? "failed" : "running",
|
|
40456
|
+
role: "button",
|
|
40457
|
+
tabIndex: 0,
|
|
40458
|
+
onClick: jump,
|
|
40459
|
+
onKeyDown,
|
|
40460
|
+
children: [
|
|
40461
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: failed ? "error" : waiting.length > 0 ? "warning" : "ongoing" }),
|
|
40462
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40463
|
+
className: RoomRunView_module_css_default.title,
|
|
40464
|
+
children: failed ? t("run.failed", { member: data.member }) : waiting.length > 0 ? t("run.waiting", { member: data.member }) : t("run.working", { member: data.member })
|
|
40465
|
+
}),
|
|
40466
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
40467
|
+
className: RoomRunView_module_css_default.elapsed,
|
|
40468
|
+
"aria-hidden": true,
|
|
40469
|
+
children: ["· ", elapsed === void 0 ? t("run.durationUnknown") : formatDurationMs(elapsed)]
|
|
40470
|
+
}),
|
|
40471
|
+
failed && data.error !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40472
|
+
className: RoomRunView_module_css_default.reason,
|
|
40473
|
+
title: data.error,
|
|
40474
|
+
children: data.error
|
|
40475
|
+
}),
|
|
40476
|
+
!failed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
40477
|
+
label: t("run.stop"),
|
|
40478
|
+
side: "bottom",
|
|
40479
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
40480
|
+
type: "button",
|
|
40481
|
+
className: RoomRunView_module_css_default.stop,
|
|
40482
|
+
"aria-label": t("run.stop"),
|
|
40483
|
+
onClick: (event) => {
|
|
40484
|
+
event.stopPropagation();
|
|
40485
|
+
cancelMember(data.member);
|
|
40486
|
+
},
|
|
40487
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconStopFillMedium, {})
|
|
40488
|
+
})
|
|
40489
|
+
})
|
|
40490
|
+
]
|
|
40491
|
+
});
|
|
40492
|
+
if (failed) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: row });
|
|
40493
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40494
|
+
className: RoomSpeechView_module_css_default.speech,
|
|
40495
|
+
style: { "--member-color": memberColor(data.member) },
|
|
40496
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
40497
|
+
className: RoomSpeechView_module_css_default.avatar,
|
|
40498
|
+
"aria-hidden": true,
|
|
40499
|
+
children: data.member.slice(0, 1).toUpperCase()
|
|
40500
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
40501
|
+
className: `${RoomSpeechView_module_css_default.card} ${RoomRunView_module_css_default.liveCard}`,
|
|
40502
|
+
children: [
|
|
40503
|
+
row,
|
|
40504
|
+
childSessionId !== void 0 && (mentions === void 0 ? renderMemberOutput?.(childSessionId, data.startedAt) : renderMemberOutput?.(childSessionId, data.startedAt, { fileMentions: mentions })),
|
|
40505
|
+
waiting.map((ask) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomQuestionView, {
|
|
40506
|
+
node: { data: askCardData(ask) },
|
|
40507
|
+
answerQuestion,
|
|
40508
|
+
t,
|
|
40509
|
+
inline: {}
|
|
40510
|
+
}, ask.id))
|
|
40511
|
+
]
|
|
40512
|
+
})]
|
|
40513
|
+
});
|
|
40514
|
+
}
|
|
40515
|
+
//#endregion
|
|
40516
|
+
//#region \0dsh-css:src/client/RoomEventView.module.css.mjs
|
|
40517
|
+
const css$3 = ".MkUhUa_row{white-space:nowrap;text-overflow:ellipsis;height:24px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);align-items:center;padding:0 4px;font-size:13px;line-height:18px;display:flex;overflow:hidden}";
|
|
40518
|
+
const tagId$3 = "@khorsheed/dsh-room/RoomEventView.module.css";
|
|
40519
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
40520
|
+
const tag = document.createElement("style");
|
|
40521
|
+
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
40522
|
+
tag.dataset.pluginCss = tagId$3;
|
|
40523
|
+
tag.textContent = css$3;
|
|
40524
|
+
document.head.appendChild(tag);
|
|
40525
|
+
}
|
|
40526
|
+
var RoomEventView_module_css_default = { "row": "MkUhUa_row" };
|
|
40527
|
+
//#endregion
|
|
40528
|
+
//#region src/client/RoomEventView.tsx
|
|
40529
|
+
/** The boundary dim line. */
|
|
40530
|
+
function RoomEventView({ node, t }) {
|
|
40531
|
+
const data = node.data;
|
|
40532
|
+
let text;
|
|
40533
|
+
switch (data.sub) {
|
|
40534
|
+
case "member-added":
|
|
40535
|
+
text = t("event.joined", {
|
|
40536
|
+
member: data.member ?? "",
|
|
40537
|
+
provider: data.provider ?? ""
|
|
40538
|
+
}) + (data.invitedBy === "agent" ? t("event.joinedByAgent") : "");
|
|
40539
|
+
break;
|
|
40540
|
+
case "member-removed": text = t("event.left", { member: data.member ?? "" });
|
|
40541
|
+
}
|
|
40542
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
40543
|
+
className: RoomEventView_module_css_default.row,
|
|
40544
|
+
children: text
|
|
40545
|
+
});
|
|
40546
|
+
}
|
|
39245
40547
|
//#endregion
|
|
39246
40548
|
//#region src/client/room-store.ts
|
|
39247
40549
|
/**
|
|
@@ -39589,13 +40891,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
39589
40891
|
};
|
|
39590
40892
|
//#endregion
|
|
39591
40893
|
//#region \0dsh-css:src/client/RoomRelayView.module.css.mjs
|
|
39592
|
-
const css$
|
|
39593
|
-
const tagId$
|
|
39594
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
40894
|
+
const css$2 = "._79-ovW_row{white-space:nowrap;height:24px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);align-items:center;gap:6px;padding:0 4px;font-size:13px;line-height:18px;display:flex;overflow:hidden}._79-ovW_text{text-overflow:ellipsis;overflow:hidden}._79-ovW_action{color:var(--dsw-alias-label-secondary,#7f7f7f);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:0 6px;font-size:12px;line-height:18px}._79-ovW_action:hover{background:var(--dsw-alias-fill-secondary,#7f7f7f1f);color:var(--dsw-alias-label-primary,#1e1e1e)}._79-ovW_action:focus:not(:focus-visible){outline:none}._79-ovW_reason{background:var(--dsw-alias-bg-layer-2,#0000000d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:5px;margin-right:6px;padding:0 6px;font-size:11px}";
|
|
40895
|
+
const tagId$2 = "@khorsheed/dsh-room/RoomRelayView.module.css";
|
|
40896
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
39595
40897
|
const tag = document.createElement("style");
|
|
39596
40898
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
39597
|
-
tag.dataset.pluginCss = tagId$
|
|
39598
|
-
tag.textContent = css$
|
|
40899
|
+
tag.dataset.pluginCss = tagId$2;
|
|
40900
|
+
tag.textContent = css$2;
|
|
39599
40901
|
document.head.appendChild(tag);
|
|
39600
40902
|
}
|
|
39601
40903
|
var RoomRelayView_module_css_default = {
|
|
@@ -39655,20 +40957,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
39655
40957
|
}
|
|
39656
40958
|
//#endregion
|
|
39657
40959
|
//#region \0dsh-css:src/client/RoomInboxView.module.css.mjs
|
|
39658
|
-
const css$
|
|
39659
|
-
const tagId$
|
|
39660
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
40960
|
+
const css$1 = ".DVGCdG_row{border:1px dashed var(--dsw-alias-border-l2-darkmode-thin,#00000029);color:var(--dsw-alias-label-secondary,#5a5a5ae6);border-radius:8px;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:2px 0;padding:6px 10px;font-size:12px;line-height:18px;display:flex}.DVGCdG_text{flex:1;min-width:0}.DVGCdG_why{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin-left:8px}.DVGCdG_action{color:var(--dsw-alias-state-business-primary,#4176e6);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.DVGCdG_action:disabled{opacity:.5;cursor:default}";
|
|
40961
|
+
const tagId$1 = "@khorsheed/dsh-room/RoomInboxView.module.css";
|
|
40962
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
39661
40963
|
const tag = document.createElement("style");
|
|
39662
40964
|
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
39663
|
-
tag.dataset.pluginCss = tagId$
|
|
39664
|
-
tag.textContent = css$
|
|
40965
|
+
tag.dataset.pluginCss = tagId$1;
|
|
40966
|
+
tag.textContent = css$1;
|
|
39665
40967
|
document.head.appendChild(tag);
|
|
39666
40968
|
}
|
|
39667
40969
|
var RoomInboxView_module_css_default = {
|
|
39668
|
-
"row": "DVGCdG_row",
|
|
39669
|
-
"text": "DVGCdG_text",
|
|
39670
40970
|
"action": "DVGCdG_action",
|
|
39671
|
-
"
|
|
40971
|
+
"text": "DVGCdG_text",
|
|
40972
|
+
"why": "DVGCdG_why",
|
|
40973
|
+
"row": "DVGCdG_row"
|
|
39672
40974
|
};
|
|
39673
40975
|
//#endregion
|
|
39674
40976
|
//#region src/client/RoomInboxView.tsx
|
|
@@ -39764,200 +41066,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
39764
41066
|
});
|
|
39765
41067
|
}
|
|
39766
41068
|
//#endregion
|
|
39767
|
-
//#region \0dsh-css:src/client/RoomQuestionView.module.css.mjs
|
|
39768
|
-
const css$1 = ".Ot_rXG_card{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#00000014);background:var(--dsw-alias-bg-layer-1,#fff);font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary,#1f2329);border-radius:12px;flex-direction:column;gap:12px;margin:4px 0;padding:12px 14px;display:flex}.Ot_rXG_card[data-state=cancelled]{opacity:.6}.Ot_rXG_head{align-items:center;gap:8px;display:flex}.Ot_rXG_avatar{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;user-select:none;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:grid}.Ot_rXG_title{font-weight:600}.Ot_rXG_status{color:var(--dsw-alias-label-tertiary,#1f232980);margin-left:auto;font-size:12px}.Ot_rXG_question{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.Ot_rXG_prompt{flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:2px;padding:0;font-weight:500;display:flex}.Ot_rXG_chip{background:var(--dsw-alias-interactive-bg-hover,#0000000d);color:var(--dsw-alias-label-secondary,#1f2329b3);border-radius:6px;padding:0 6px;font-size:12px;font-weight:500}.Ot_rXG_hint{color:var(--dsw-alias-label-tertiary,#1f232980);font-size:12px;font-weight:400}.Ot_rXG_option{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);cursor:pointer;border-radius:10px;align-items:flex-start;gap:8px;padding:7px 10px;transition:background-color .1s,border-color .1s;display:flex}.Ot_rXG_option:hover{background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.Ot_rXG_option[data-picked=true]{border-color:var(--dsw-alias-state-business-primary,#4176e6);background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 8%, transparent)}.Ot_rXG_option input{accent-color:var(--dsw-alias-state-business-primary,#4176e6);flex:none;margin:4px 0 0}.Ot_rXG_optionText{flex-direction:column;min-width:0;display:flex}.Ot_rXG_optionLabel{font-weight:500}.Ot_rXG_optionDescription{color:var(--dsw-alias-label-secondary,#1f2329b3);font-size:12px;line-height:18px}.Ot_rXG_other{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);width:100%;color:inherit;font:inherit;background:0 0;border-radius:10px;outline:none;padding:6px 10px}.Ot_rXG_other:focus{border-color:var(--dsw-alias-state-business-primary,#4176e6)}.Ot_rXG_answer{color:var(--dsw-alias-label-secondary,#1f2329b3)}.Ot_rXG_actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.Ot_rXG_error{color:var(--dsw-alias-state-error-primary,#d9363e);font-size:12px}.Ot_rXG_submit{background:var(--dsw-alias-button-info-fill,#4176e6);color:#fff;height:32px;font:inherit;cursor:pointer;border:none;border-radius:999px;padding:0 14px;font-weight:500}.Ot_rXG_submit:disabled{opacity:.4;cursor:default}";
|
|
39769
|
-
const tagId$1 = "@khorsheed/dsh-room/RoomQuestionView.module.css";
|
|
39770
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
39771
|
-
const tag = document.createElement("style");
|
|
39772
|
-
tag.dataset.plugin = "@khorsheed/dsh-room";
|
|
39773
|
-
tag.dataset.pluginCss = tagId$1;
|
|
39774
|
-
tag.textContent = css$1;
|
|
39775
|
-
document.head.appendChild(tag);
|
|
39776
|
-
}
|
|
39777
|
-
var RoomQuestionView_module_css_default = {
|
|
39778
|
-
"avatar": "Ot_rXG_avatar",
|
|
39779
|
-
"title": "Ot_rXG_title",
|
|
39780
|
-
"option": "Ot_rXG_option",
|
|
39781
|
-
"other": "Ot_rXG_other",
|
|
39782
|
-
"chip": "Ot_rXG_chip",
|
|
39783
|
-
"submit": "Ot_rXG_submit",
|
|
39784
|
-
"hint": "Ot_rXG_hint",
|
|
39785
|
-
"card": "Ot_rXG_card",
|
|
39786
|
-
"optionLabel": "Ot_rXG_optionLabel",
|
|
39787
|
-
"head": "Ot_rXG_head",
|
|
39788
|
-
"actions": "Ot_rXG_actions",
|
|
39789
|
-
"error": "Ot_rXG_error",
|
|
39790
|
-
"status": "Ot_rXG_status",
|
|
39791
|
-
"answer": "Ot_rXG_answer",
|
|
39792
|
-
"question": "Ot_rXG_question",
|
|
39793
|
-
"optionDescription": "Ot_rXG_optionDescription",
|
|
39794
|
-
"optionText": "Ot_rXG_optionText",
|
|
39795
|
-
"prompt": "Ot_rXG_prompt"
|
|
39796
|
-
};
|
|
39797
|
-
//#endregion
|
|
39798
|
-
//#region src/client/RoomQuestionView.tsx
|
|
39799
|
-
/**
|
|
39800
|
-
* A member's question card ('room-question' keyed renderer): the questions a
|
|
39801
|
-
* CLI member asked through its bridge's `ask_user_question`, answered by
|
|
39802
|
-
* picking — one option (or several on a multi-pick question) plus an optional
|
|
39803
|
-
* 其他 free-text line — instead of a numbered list in the member's reply that
|
|
39804
|
-
* the human answers by typing. Submitting resolves the member's waiting call;
|
|
39805
|
-
* the card then folds to the given answers (or 已过期 when the call ended).
|
|
39806
|
-
*/
|
|
39807
|
-
/** The question card. */
|
|
39808
|
-
function RoomQuestionView({ node, answerQuestion, t }) {
|
|
39809
|
-
const data = node.data;
|
|
39810
|
-
const [drafts, setDrafts] = (0, react.useState)({});
|
|
39811
|
-
const [busy, setBusy] = (0, react.useState)(false);
|
|
39812
|
-
const [error, setError] = (0, react.useState)(void 0);
|
|
39813
|
-
const pending = data.state === "pending";
|
|
39814
|
-
const draftOf = (id) => drafts[id] ?? {
|
|
39815
|
-
selected: [],
|
|
39816
|
-
custom: ""
|
|
39817
|
-
};
|
|
39818
|
-
const setDraft = (id, next) => {
|
|
39819
|
-
setDrafts((current) => ({
|
|
39820
|
-
...current,
|
|
39821
|
-
[id]: next
|
|
39822
|
-
}));
|
|
39823
|
-
};
|
|
39824
|
-
const answered = (id) => draftOf(id).selected.length > 0 || draftOf(id).custom.trim() !== "";
|
|
39825
|
-
const complete = data.questions.every((question) => answered(question.id));
|
|
39826
|
-
const pick = (id, label, multi) => {
|
|
39827
|
-
const draft = draftOf(id);
|
|
39828
|
-
const has = draft.selected.includes(label);
|
|
39829
|
-
setDraft(id, {
|
|
39830
|
-
...draft,
|
|
39831
|
-
selected: multi ? has ? draft.selected.filter((entry) => entry !== label) : [...draft.selected, label] : has ? [] : [label]
|
|
39832
|
-
});
|
|
39833
|
-
};
|
|
39834
|
-
const submit = async () => {
|
|
39835
|
-
if (busy || !complete) return;
|
|
39836
|
-
setBusy(true);
|
|
39837
|
-
try {
|
|
39838
|
-
const answers = data.questions.map((question) => {
|
|
39839
|
-
const draft = draftOf(question.id);
|
|
39840
|
-
const custom = draft.custom.trim();
|
|
39841
|
-
return {
|
|
39842
|
-
id: question.id,
|
|
39843
|
-
selected: draft.selected,
|
|
39844
|
-
...custom === "" ? {} : { custom }
|
|
39845
|
-
};
|
|
39846
|
-
});
|
|
39847
|
-
setError(await answerQuestion(data.questionId, answers));
|
|
39848
|
-
} finally {
|
|
39849
|
-
setBusy(false);
|
|
39850
|
-
}
|
|
39851
|
-
};
|
|
39852
|
-
/** The folded answer text of one question. */
|
|
39853
|
-
const answerText = (id) => {
|
|
39854
|
-
const answer = data.answers?.find((entry) => entry.id === id);
|
|
39855
|
-
return [...answer?.selected ?? [], ...answer?.custom === void 0 ? [] : [answer.custom]].join(";");
|
|
39856
|
-
};
|
|
39857
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
39858
|
-
className: RoomQuestionView_module_css_default.card,
|
|
39859
|
-
"data-state": data.state,
|
|
39860
|
-
style: { "--member-color": memberColor(data.member) },
|
|
39861
|
-
children: [
|
|
39862
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
39863
|
-
className: RoomQuestionView_module_css_default.head,
|
|
39864
|
-
children: [
|
|
39865
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39866
|
-
className: RoomQuestionView_module_css_default.avatar,
|
|
39867
|
-
"aria-hidden": true,
|
|
39868
|
-
children: data.member.slice(0, 1).toUpperCase()
|
|
39869
|
-
}),
|
|
39870
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39871
|
-
className: RoomQuestionView_module_css_default.title,
|
|
39872
|
-
children: t("question.title", { member: data.member })
|
|
39873
|
-
}),
|
|
39874
|
-
!pending && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39875
|
-
className: RoomQuestionView_module_css_default.status,
|
|
39876
|
-
children: t(data.state === "answered" ? "question.answered" : "question.cancelled")
|
|
39877
|
-
})
|
|
39878
|
-
]
|
|
39879
|
-
}),
|
|
39880
|
-
data.questions.map((question) => {
|
|
39881
|
-
const multi = question.multiSelect === true;
|
|
39882
|
-
const draft = draftOf(question.id);
|
|
39883
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
39884
|
-
className: RoomQuestionView_module_css_default.question,
|
|
39885
|
-
disabled: !pending || busy,
|
|
39886
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("legend", {
|
|
39887
|
-
className: RoomQuestionView_module_css_default.prompt,
|
|
39888
|
-
children: [
|
|
39889
|
-
question.header !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39890
|
-
className: RoomQuestionView_module_css_default.chip,
|
|
39891
|
-
children: question.header
|
|
39892
|
-
}),
|
|
39893
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: question.question }),
|
|
39894
|
-
pending && multi && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39895
|
-
className: RoomQuestionView_module_css_default.hint,
|
|
39896
|
-
children: t("question.multi")
|
|
39897
|
-
})
|
|
39898
|
-
]
|
|
39899
|
-
}), pending ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(question.options ?? []).map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
39900
|
-
className: RoomQuestionView_module_css_default.option,
|
|
39901
|
-
"data-picked": draft.selected.includes(option.label),
|
|
39902
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
39903
|
-
type: multi ? "checkbox" : "radio",
|
|
39904
|
-
name: `${data.questionId}-${question.id}`,
|
|
39905
|
-
checked: draft.selected.includes(option.label),
|
|
39906
|
-
onChange: () => {
|
|
39907
|
-
pick(question.id, option.label, multi);
|
|
39908
|
-
},
|
|
39909
|
-
onClick: (event) => {
|
|
39910
|
-
if (!multi && draft.selected.includes(option.label)) {
|
|
39911
|
-
event.preventDefault();
|
|
39912
|
-
pick(question.id, option.label, multi);
|
|
39913
|
-
}
|
|
39914
|
-
}
|
|
39915
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
39916
|
-
className: RoomQuestionView_module_css_default.optionText,
|
|
39917
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39918
|
-
className: RoomQuestionView_module_css_default.optionLabel,
|
|
39919
|
-
children: option.label
|
|
39920
|
-
}), option.description !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39921
|
-
className: RoomQuestionView_module_css_default.optionDescription,
|
|
39922
|
-
children: option.description
|
|
39923
|
-
})]
|
|
39924
|
-
})]
|
|
39925
|
-
}, option.label)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
39926
|
-
className: RoomQuestionView_module_css_default.other,
|
|
39927
|
-
value: draft.custom,
|
|
39928
|
-
"aria-label": t("question.other"),
|
|
39929
|
-
placeholder: (question.options ?? []).length > 0 ? `${t("question.other")}:${t("question.otherPlaceholder")}` : t("question.otherPlaceholder"),
|
|
39930
|
-
onChange: (event) => {
|
|
39931
|
-
setDraft(question.id, {
|
|
39932
|
-
...draft,
|
|
39933
|
-
custom: event.target.value
|
|
39934
|
-
});
|
|
39935
|
-
}
|
|
39936
|
-
})] }) : data.state === "answered" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
39937
|
-
className: RoomQuestionView_module_css_default.answer,
|
|
39938
|
-
children: t("question.answer", { answer: answerText(question.id) })
|
|
39939
|
-
})]
|
|
39940
|
-
}, question.id);
|
|
39941
|
-
}),
|
|
39942
|
-
pending && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
39943
|
-
className: RoomQuestionView_module_css_default.actions,
|
|
39944
|
-
children: [error !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39945
|
-
className: RoomQuestionView_module_css_default.error,
|
|
39946
|
-
children: error
|
|
39947
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
39948
|
-
type: "button",
|
|
39949
|
-
className: RoomQuestionView_module_css_default.submit,
|
|
39950
|
-
disabled: !complete || busy,
|
|
39951
|
-
onClick: () => {
|
|
39952
|
-
submit();
|
|
39953
|
-
},
|
|
39954
|
-
children: t("question.submit")
|
|
39955
|
-
})]
|
|
39956
|
-
})
|
|
39957
|
-
]
|
|
39958
|
-
});
|
|
39959
|
-
}
|
|
39960
|
-
//#endregion
|
|
39961
41069
|
//#region src/client/RoomDecisionView.tsx
|
|
39962
41070
|
/**
|
|
39963
41071
|
* The line's text for one decision.
|
|
@@ -40031,23 +41139,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40031
41139
|
document.head.appendChild(tag);
|
|
40032
41140
|
}
|
|
40033
41141
|
var RoomHelpView_module_css_default = {
|
|
41142
|
+
"line": "gZ0Tza_line",
|
|
40034
41143
|
"icon": "gZ0Tza_icon",
|
|
41144
|
+
"text": "gZ0Tza_text",
|
|
40035
41145
|
"card": "gZ0Tza_card",
|
|
40036
|
-
"entry": "gZ0Tza_entry",
|
|
40037
|
-
"label": "gZ0Tza_label",
|
|
40038
|
-
"line": "gZ0Tza_line",
|
|
40039
|
-
"cardBody": "gZ0Tza_cardBody",
|
|
40040
41146
|
"more": "gZ0Tza_more",
|
|
40041
41147
|
"nudge": "gZ0Tza_nudge",
|
|
40042
|
-
"text": "gZ0Tza_text",
|
|
40043
|
-
"cardHead": "gZ0Tza_cardHead",
|
|
40044
|
-
"cardTitle": "gZ0Tza_cardTitle",
|
|
40045
41148
|
"action": "gZ0Tza_action",
|
|
40046
|
-
"
|
|
41149
|
+
"copy": "gZ0Tza_copy",
|
|
41150
|
+
"cardTitle": "gZ0Tza_cardTitle",
|
|
40047
41151
|
"thread": "gZ0Tza_thread",
|
|
40048
|
-
"tag": "gZ0Tza_tag",
|
|
40049
41152
|
"body": "gZ0Tza_body",
|
|
40050
|
-
"
|
|
41153
|
+
"label": "gZ0Tza_label",
|
|
41154
|
+
"entry": "gZ0Tza_entry",
|
|
41155
|
+
"cardBody": "gZ0Tza_cardBody",
|
|
41156
|
+
"tag": "gZ0Tza_tag",
|
|
41157
|
+
"cardHead": "gZ0Tza_cardHead",
|
|
41158
|
+
"handoff": "gZ0Tza_handoff"
|
|
40051
41159
|
};
|
|
40052
41160
|
//#endregion
|
|
40053
41161
|
//#region src/client/RoomHelpView.tsx
|
|
@@ -40293,7 +41401,45 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40293
41401
|
ctx.effect(() => roomStore.start(), "room: store");
|
|
40294
41402
|
const roomChrome = new RoomPresetVisibility(ctx, (sessionId) => roomStore.isRoomCached(sessionId) === true);
|
|
40295
41403
|
const requestIds = new RoomRequestIds();
|
|
40296
|
-
|
|
41404
|
+
/** Answer a member's question card (the row of its own, or inline in its round). */
|
|
41405
|
+
const answerFor = (sessionId) => async (questionId, answers) => {
|
|
41406
|
+
if (remote === void 0) return t("composer.error.generic");
|
|
41407
|
+
const carried = await remote.answerQuestion({
|
|
41408
|
+
sessionId,
|
|
41409
|
+
id: questionId,
|
|
41410
|
+
answers
|
|
41411
|
+
});
|
|
41412
|
+
roomStore.refresh(sessionId);
|
|
41413
|
+
if (!carried.ok) return t("composer.error.generic");
|
|
41414
|
+
return carried.value.ok ? void 0 : t("question.expired");
|
|
41415
|
+
};
|
|
41416
|
+
/**
|
|
41417
|
+
* Open a path a member named in the sidebar's file viewer — the same file
|
|
41418
|
+
* address the main conversation's file links open (a relative path resolves
|
|
41419
|
+
* against the room session's workspace).
|
|
41420
|
+
*/
|
|
41421
|
+
const openPath = ctx.get("sidebarRight") === void 0 ? void 0 : (sessionId, path) => {
|
|
41422
|
+
const cwd = ctx.sessions.list.getSnapshot().byId[sessionId]?.cwd;
|
|
41423
|
+
try {
|
|
41424
|
+
ctx.get("sidebarRight").openResource(fileAddressFor(sessionId, cwd, path));
|
|
41425
|
+
} catch {}
|
|
41426
|
+
};
|
|
41427
|
+
const attachmentsFor = () => {
|
|
41428
|
+
const conversation = ctx.get("conversation");
|
|
41429
|
+
return conversation?.createDrafts === void 0 || conversation.resolveDraftAttachments === void 0 || conversation.releaseDraftAttachment === void 0 || conversation.retryFileUpload === void 0 || conversation.fileUploads === void 0 || conversation.serializeDraftAttachments === void 0 ? void 0 : {
|
|
41430
|
+
create: (sessionId, files) => conversation.createDrafts.call(conversation, sessionId, files),
|
|
41431
|
+
resolve: (ids) => conversation.resolveDraftAttachments.call(conversation, ids),
|
|
41432
|
+
release: (id) => {
|
|
41433
|
+
conversation.releaseDraftAttachment.call(conversation, id);
|
|
41434
|
+
},
|
|
41435
|
+
retry: (sessionId, id) => {
|
|
41436
|
+
conversation.retryFileUpload.call(conversation, sessionId, id);
|
|
41437
|
+
},
|
|
41438
|
+
uploads: conversation.fileUploads,
|
|
41439
|
+
serialize: async (ids) => (await conversation.serializeDraftAttachments.call(conversation, ids)).attachments
|
|
41440
|
+
};
|
|
41441
|
+
};
|
|
41442
|
+
const submit = async (sessionId, text, targets, task, attachments) => {
|
|
40297
41443
|
if (remote === void 0) return {
|
|
40298
41444
|
ok: false,
|
|
40299
41445
|
message: t("composer.error.generic")
|
|
@@ -40304,7 +41450,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40304
41450
|
text,
|
|
40305
41451
|
requestId,
|
|
40306
41452
|
...targets === void 0 || targets.length === 0 ? {} : { targets },
|
|
40307
|
-
...task === void 0 ? {} : { task }
|
|
41453
|
+
...task === void 0 ? {} : { task },
|
|
41454
|
+
...attachments === void 0 || attachments.length === 0 ? {} : { attachments }
|
|
40308
41455
|
});
|
|
40309
41456
|
if (!carried.ok) return {
|
|
40310
41457
|
ok: false,
|
|
@@ -40314,6 +41461,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40314
41461
|
if (!result.ok) return result.error.code === "unknown-targets" ? {
|
|
40315
41462
|
ok: false,
|
|
40316
41463
|
message: t("composer.error.unknownTargets", { names: result.error.names.join(" ") })
|
|
41464
|
+
} : result.error.code === "attachment-invalid" ? {
|
|
41465
|
+
ok: false,
|
|
41466
|
+
message: t("composer.error.attachment", { reason: result.error.message })
|
|
40317
41467
|
} : {
|
|
40318
41468
|
ok: false,
|
|
40319
41469
|
message: t("composer.error.generic")
|
|
@@ -40642,6 +41792,40 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40642
41792
|
return { ok: true };
|
|
40643
41793
|
}
|
|
40644
41794
|
});
|
|
41795
|
+
ctx.inject(["uiSession"], (sctx) => {
|
|
41796
|
+
if (remote === void 0) return;
|
|
41797
|
+
const uiSession = sctx.uiSession;
|
|
41798
|
+
if (uiSession.registerPendingInteraction === void 0) return;
|
|
41799
|
+
const publish = uiSession.registerPendingInteraction(() => -1);
|
|
41800
|
+
const shown = /* @__PURE__ */ new Map();
|
|
41801
|
+
const sync = async () => {
|
|
41802
|
+
const carried = await remote.pendingCards({}).catch(() => void 0);
|
|
41803
|
+
if (carried === void 0 || !carried.ok) return;
|
|
41804
|
+
const keys = new Set(carried.value.map((card) => roomInteractionKey(card.kind, card.id)));
|
|
41805
|
+
for (const [key, remove] of shown) {
|
|
41806
|
+
if (keys.has(key)) continue;
|
|
41807
|
+
remove();
|
|
41808
|
+
shown.delete(key);
|
|
41809
|
+
}
|
|
41810
|
+
for (const card of carried.value) {
|
|
41811
|
+
const key = roomInteractionKey(card.kind, card.id);
|
|
41812
|
+
if (!shown.has(key)) shown.set(key, publish({
|
|
41813
|
+
key,
|
|
41814
|
+
kind: card.kind,
|
|
41815
|
+
sessionId: card.sessionId
|
|
41816
|
+
}, async () => {}));
|
|
41817
|
+
}
|
|
41818
|
+
};
|
|
41819
|
+
sync();
|
|
41820
|
+
const timer = setInterval(() => {
|
|
41821
|
+
sync();
|
|
41822
|
+
}, 4e3);
|
|
41823
|
+
sctx.effect(() => () => {
|
|
41824
|
+
clearInterval(timer);
|
|
41825
|
+
for (const remove of shown.values()) remove();
|
|
41826
|
+
shown.clear();
|
|
41827
|
+
}, "room: pending cards");
|
|
41828
|
+
});
|
|
40645
41829
|
ctx.inject(["uiConversation"], (lctx) => {
|
|
40646
41830
|
lctx.uiConversation.events.register(roomSpeechDefinition);
|
|
40647
41831
|
lctx.uiConversation.events.register(roomRunDefinition);
|
|
@@ -40774,6 +41958,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40774
41958
|
} },
|
|
40775
41959
|
taskTags,
|
|
40776
41960
|
submit,
|
|
41961
|
+
...(() => {
|
|
41962
|
+
const face = attachmentsFor();
|
|
41963
|
+
return face === void 0 ? {} : { attachments: face };
|
|
41964
|
+
})(),
|
|
40777
41965
|
renderMemberConfiguration: ctx.get("localAgentUi")?.renderMemberConfiguration,
|
|
40778
41966
|
renderMemberInbox: ctx.get("localAgentUi")?.renderMemberInbox,
|
|
40779
41967
|
stopMember: (name, expectedRunId) => {
|
|
@@ -40873,9 +42061,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40873
42061
|
name: "conversation.chat.node",
|
|
40874
42062
|
key: "room-speech",
|
|
40875
42063
|
locale: NS,
|
|
40876
|
-
inject: () => ({
|
|
42064
|
+
inject: (sessionId) => ({
|
|
40877
42065
|
roomStore,
|
|
40878
42066
|
openSession,
|
|
42067
|
+
answerQuestion: answerFor(sessionId),
|
|
42068
|
+
...openPath === void 0 ? {} : { openPath },
|
|
40879
42069
|
...ctx.get("remote.requestInspector") === void 0 || ctx.get("sidebarRight") === void 0 ? {} : { openDetail: (sessionId, messageId) => {
|
|
40880
42070
|
try {
|
|
40881
42071
|
ctx.get("sidebarRight").openTab("context-lens", { params: {
|
|
@@ -40894,7 +42084,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40894
42084
|
renderMemberOutput: ctx.get("localAgentUi")?.renderMemberOutput,
|
|
40895
42085
|
roomStore,
|
|
40896
42086
|
openSession,
|
|
40897
|
-
cancelMember: (member) => cancelMember(sessionId, member)
|
|
42087
|
+
cancelMember: (member) => cancelMember(sessionId, member),
|
|
42088
|
+
answerQuestion: answerFor(sessionId),
|
|
42089
|
+
...openPath === void 0 ? {} : { openPath }
|
|
40898
42090
|
})
|
|
40899
42091
|
}, RoomRunView));
|
|
40900
42092
|
ctx.slots.inject("conversation.chat.node", () => ctx.slots.register({
|
|
@@ -40940,17 +42132,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40940
42132
|
name: "conversation.chat.node",
|
|
40941
42133
|
key: "room-question",
|
|
40942
42134
|
locale: NS,
|
|
40943
|
-
inject: (sessionId) => ({ answerQuestion:
|
|
40944
|
-
if (remote === void 0) return t("composer.error.generic");
|
|
40945
|
-
const carried = await remote.answerQuestion({
|
|
40946
|
-
sessionId,
|
|
40947
|
-
id: questionId,
|
|
40948
|
-
answers
|
|
40949
|
-
});
|
|
40950
|
-
roomStore.refresh(sessionId);
|
|
40951
|
-
if (!carried.ok) return t("composer.error.generic");
|
|
40952
|
-
return carried.value.ok ? void 0 : t("question.expired");
|
|
40953
|
-
} })
|
|
42135
|
+
inject: (sessionId) => ({ answerQuestion: answerFor(sessionId) })
|
|
40954
42136
|
}, RoomQuestionView));
|
|
40955
42137
|
ctx.slots.inject("conversation.chat.node", () => ctx.slots.register({
|
|
40956
42138
|
name: "conversation.chat.node",
|