@sparkelf/dsh-group-chat 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/client.js +132 -132
  2. package/lib/index.js +30 -14
  3. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -512,11 +512,11 @@ window.__ModuleLoader__.load({
512
512
  document.head.appendChild(tag);
513
513
  }
514
514
  var Avatar_module_css_default = {
515
- "sm": "Ohch6W_sm",
515
+ "md": "Ohch6W_md",
516
516
  "avatar": "Ohch6W_avatar",
517
517
  "stack": "Ohch6W_stack",
518
- "over": "Ohch6W_over",
519
- "md": "Ohch6W_md"
518
+ "sm": "Ohch6W_sm",
519
+ "over": "Ohch6W_over"
520
520
  };
521
521
  //#endregion
522
522
  //#region src/client/Avatar.tsx
@@ -558,11 +558,11 @@ window.__ModuleLoader__.load({
558
558
  var Picker_module_css_default = {
559
559
  "box": "sKjJ-a_box",
560
560
  "rowActive": "sKjJ-a_rowActive",
561
- "row": "sKjJ-a_row",
562
561
  "secondary": "sKjJ-a_secondary",
563
562
  "note": "sKjJ-a_note",
564
- "label": "sKjJ-a_label",
565
- "list": "sKjJ-a_list"
563
+ "row": "sKjJ-a_row",
564
+ "list": "sKjJ-a_list",
565
+ "label": "sKjJ-a_label"
566
566
  };
567
567
  //#endregion
568
568
  //#region src/client/Picker.tsx
@@ -735,11 +735,11 @@ window.__ModuleLoader__.load({
735
735
  document.head.appendChild(tag);
736
736
  }
737
737
  var PresetSelect_module_css_default = {
738
- "row": "xjnmxG_row",
739
738
  "description": "xjnmxG_description",
740
- "trigger": "xjnmxG_trigger",
741
739
  "name": "xjnmxG_name",
742
- "triggerLabel": "xjnmxG_triggerLabel"
740
+ "trigger": "xjnmxG_trigger",
741
+ "triggerLabel": "xjnmxG_triggerLabel",
742
+ "row": "xjnmxG_row"
743
743
  };
744
744
  //#endregion
745
745
  //#region src/client/PresetSelect.tsx
@@ -997,23 +997,23 @@ window.__ModuleLoader__.load({
997
997
  document.head.appendChild(tag);
998
998
  }
999
999
  var CreateRoomDialog_module_css_default = {
1000
- "pill": "Z3w8WW_pill",
1001
- "footer": "Z3w8WW_footer",
1000
+ "notice": "Z3w8WW_notice",
1001
+ "warn": "Z3w8WW_warn",
1002
1002
  "triggerExtra": "Z3w8WW_triggerExtra",
1003
- "policyRow": "Z3w8WW_policyRow",
1004
- "error": "Z3w8WW_error",
1005
- "switches": "Z3w8WW_switches",
1006
- "hint": "Z3w8WW_hint",
1003
+ "label": "Z3w8WW_label",
1007
1004
  "field": "Z3w8WW_field",
1008
1005
  "pillActive": "Z3w8WW_pillActive",
1009
- "memberName": "Z3w8WW_memberName",
1010
- "label": "Z3w8WW_label",
1011
- "body": "Z3w8WW_body",
1006
+ "footer": "Z3w8WW_footer",
1007
+ "switches": "Z3w8WW_switches",
1008
+ "policyRow": "Z3w8WW_policyRow",
1012
1009
  "memberRow": "Z3w8WW_memberRow",
1013
- "warn": "Z3w8WW_warn",
1014
1010
  "memberList": "Z3w8WW_memberList",
1015
1011
  "memberBadge": "Z3w8WW_memberBadge",
1016
- "notice": "Z3w8WW_notice"
1012
+ "hint": "Z3w8WW_hint",
1013
+ "error": "Z3w8WW_error",
1014
+ "pill": "Z3w8WW_pill",
1015
+ "memberName": "Z3w8WW_memberName",
1016
+ "body": "Z3w8WW_body"
1017
1017
  };
1018
1018
  //#endregion
1019
1019
  //#region src/client/CreateRoomDialog.tsx
@@ -1280,28 +1280,28 @@ window.__ModuleLoader__.load({
1280
1280
  document.head.appendChild(tag);
1281
1281
  }
1282
1282
  var InviteDialog_module_css_default = {
1283
- "searchRow": "r4uCba_searchRow",
1284
- "note": "r4uCba_note",
1285
- "chip": "r4uCba_chip",
1286
- "spinner": "r4uCba_spinner",
1283
+ "check": "r4uCba_check",
1284
+ "dialog": "r4uCba_dialog",
1287
1285
  "list": "r4uCba_list",
1286
+ "checkHidden": "r4uCba_checkHidden",
1287
+ "row": "r4uCba_row",
1288
+ "chip": "r4uCba_chip",
1288
1289
  "chipRemove": "r4uCba_chipRemove",
1289
- "content": "r4uCba_content",
1290
- "inviteSpin": "r4uCba_inviteSpin",
1291
- "search": "r4uCba_search",
1292
- "chipName": "r4uCba_chipName",
1290
+ "rowName": "r4uCba_rowName",
1291
+ "error": "r4uCba_error",
1292
+ "spinner": "r4uCba_spinner",
1293
1293
  "chips": "r4uCba_chips",
1294
- "field": "r4uCba_field",
1295
- "dialog": "r4uCba_dialog",
1296
- "errorRow": "r4uCba_errorRow",
1297
1294
  "rowHandle": "r4uCba_rowHandle",
1298
- "rowSelected": "r4uCba_rowSelected",
1299
- "check": "r4uCba_check",
1300
- "row": "r4uCba_row",
1301
- "checkHidden": "r4uCba_checkHidden",
1295
+ "errorRow": "r4uCba_errorRow",
1302
1296
  "visuallyHidden": "r4uCba_visuallyHidden",
1303
- "rowName": "r4uCba_rowName",
1304
- "error": "r4uCba_error"
1297
+ "inviteSpin": "r4uCba_inviteSpin",
1298
+ "content": "r4uCba_content",
1299
+ "note": "r4uCba_note",
1300
+ "searchRow": "r4uCba_searchRow",
1301
+ "search": "r4uCba_search",
1302
+ "field": "r4uCba_field",
1303
+ "chipName": "r4uCba_chipName",
1304
+ "rowSelected": "r4uCba_rowSelected"
1305
1305
  };
1306
1306
  //#endregion
1307
1307
  //#region src/client/RoomDialogs.tsx
@@ -1918,66 +1918,66 @@ window.__ModuleLoader__.load({
1918
1918
  document.head.appendChild(tag);
1919
1919
  }
1920
1920
  var SidebarRooms_module_css_default = {
1921
- "hitRoom": "s0QgKq_hitRoom",
1922
- "discoverSection": "s0QgKq_discoverSection",
1923
- "sessionRowSelected": "s0QgKq_sessionRowSelected",
1924
- "searchButton": "s0QgKq_searchButton",
1925
- "searchExpanded": "s0QgKq_searchExpanded",
1926
- "root": "s0QgKq_root",
1927
- "menuInline": "s0QgKq_menuInline",
1928
- "rowIcon": "s0QgKq_rowIcon",
1929
- "time": "s0QgKq_time",
1930
- "visuallyHidden": "s0QgKq_visuallyHidden",
1931
- "rowWrap": "s0QgKq_rowWrap",
1932
- "menu": "s0QgKq_menu",
1933
- "search": "s0QgKq_search",
1934
- "clearButton": "s0QgKq_clearButton",
1935
- "leaveConfirmDanger": "s0QgKq_leaveConfirmDanger",
1936
- "menuInput": "s0QgKq_menuInput",
1937
- "discoverRow": "s0QgKq_discoverRow",
1938
- "sectionHeader": "s0QgKq_sectionHeader",
1939
- "menuActions": "s0QgKq_menuActions",
1921
+ "searchInput": "s0QgKq_searchInput",
1940
1922
  "joinButton": "s0QgKq_joinButton",
1941
- "menuHeading": "s0QgKq_menuHeading",
1942
- "discoverName": "s0QgKq_discoverName",
1943
- "discoverHeading": "s0QgKq_discoverHeading",
1944
- "leaveRoomName": "s0QgKq_leaveRoomName",
1945
- "emptyState": "s0QgKq_emptyState",
1946
- "sectionLabel": "s0QgKq_sectionLabel",
1947
- "sessionRow": "s0QgKq_sessionRow",
1948
- "title": "s0QgKq_title",
1949
- "fade": "s0QgKq_fade",
1950
- "viewWrap": "s0QgKq_viewWrap",
1951
- "flatList": "s0QgKq_flatList",
1923
+ "sectionHeader": "s0QgKq_sectionHeader",
1924
+ "menuRename": "s0QgKq_menuRename",
1925
+ "footer": "s0QgKq_footer",
1926
+ "listArea": "s0QgKq_listArea",
1927
+ "clearButton": "s0QgKq_clearButton",
1952
1928
  "discoverMeta": "s0QgKq_discoverMeta",
1953
- "list": "s0QgKq_list",
1954
- "hitText": "s0QgKq_hitText",
1955
- "menuConfirm": "s0QgKq_menuConfirm",
1929
+ "search": "s0QgKq_search",
1956
1930
  "leaveCopy": "s0QgKq_leaveCopy",
1957
- "check": "s0QgKq_check",
1958
- "searchSlot": "s0QgKq_searchSlot",
1959
1931
  "hit": "s0QgKq_hit",
1960
- "listArea": "s0QgKq_listArea",
1961
- "menuRename": "s0QgKq_menuRename",
1932
+ "rowIcon": "s0QgKq_rowIcon",
1933
+ "fade": "s0QgKq_fade",
1962
1934
  "searchSlotExpanded": "s0QgKq_searchSlotExpanded",
1963
- "menuCancel": "s0QgKq_menuCancel",
1964
- "mark": "s0QgKq_mark",
1935
+ "discoverRow": "s0QgKq_discoverRow",
1936
+ "hitText": "s0QgKq_hitText",
1937
+ "menuItem": "s0QgKq_menuItem",
1938
+ "hitRoom": "s0QgKq_hitRoom",
1939
+ "menuInput": "s0QgKq_menuInput",
1965
1940
  "empty": "s0QgKq_empty",
1966
1941
  "hitList": "s0QgKq_hitList",
1967
- "menuLayer": "s0QgKq_menuLayer",
1968
- "hitAuthor": "s0QgKq_hitAuthor",
1942
+ "discoverHeading": "s0QgKq_discoverHeading",
1943
+ "sessionRowSelected": "s0QgKq_sessionRowSelected",
1944
+ "flatList": "s0QgKq_flatList",
1945
+ "leaveRoomName": "s0QgKq_leaveRoomName",
1946
+ "menuCancel": "s0QgKq_menuCancel",
1969
1947
  "hitHead": "s0QgKq_hitHead",
1948
+ "menuInline": "s0QgKq_menuInline",
1949
+ "hitAuthor": "s0QgKq_hitAuthor",
1950
+ "sessionRow": "s0QgKq_sessionRow",
1951
+ "root": "s0QgKq_root",
1952
+ "menu": "s0QgKq_menu",
1953
+ "unreadMentioned": "s0QgKq_unreadMentioned",
1954
+ "rowWrap": "s0QgKq_rowWrap",
1955
+ "menuActions": "s0QgKq_menuActions",
1956
+ "leaveError": "s0QgKq_leaveError",
1970
1957
  "headerActions": "s0QgKq_headerActions",
1958
+ "check": "s0QgKq_check",
1959
+ "list": "s0QgKq_list",
1960
+ "title": "s0QgKq_title",
1961
+ "time": "s0QgKq_time",
1971
1962
  "unread": "s0QgKq_unread",
1972
- "leaveError": "s0QgKq_leaveError",
1973
- "unreadMentioned": "s0QgKq_unreadMentioned",
1974
- "hitHint": "s0QgKq_hitHint",
1975
- "iconButton": "s0QgKq_iconButton",
1976
- "menuItem": "s0QgKq_menuItem",
1977
1963
  "leaveBody": "s0QgKq_leaveBody",
1964
+ "menuLayer": "s0QgKq_menuLayer",
1965
+ "searchExpanded": "s0QgKq_searchExpanded",
1966
+ "discoverSection": "s0QgKq_discoverSection",
1967
+ "menuHeading": "s0QgKq_menuHeading",
1968
+ "discoverName": "s0QgKq_discoverName",
1969
+ "mark": "s0QgKq_mark",
1970
+ "menuConfirm": "s0QgKq_menuConfirm",
1971
+ "sectionLabel": "s0QgKq_sectionLabel",
1972
+ "iconButton": "s0QgKq_iconButton",
1973
+ "emptyState": "s0QgKq_emptyState",
1974
+ "searchSlot": "s0QgKq_searchSlot",
1975
+ "viewWrap": "s0QgKq_viewWrap",
1976
+ "hitHint": "s0QgKq_hitHint",
1977
+ "visuallyHidden": "s0QgKq_visuallyHidden",
1978
1978
  "resizer": "s0QgKq_resizer",
1979
- "searchInput": "s0QgKq_searchInput",
1980
- "footer": "s0QgKq_footer"
1979
+ "searchButton": "s0QgKq_searchButton",
1980
+ "leaveConfirmDanger": "s0QgKq_leaveConfirmDanger"
1981
1981
  };
1982
1982
  //#endregion
1983
1983
  //#region src/client/SidebarRooms.tsx
@@ -3039,20 +3039,20 @@ window.__ModuleLoader__.load({
3039
3039
  document.head.appendChild(tag);
3040
3040
  }
3041
3041
  var MessageSide_module_css_default = {
3042
- "quoteBar": "KXabfq_quoteBar",
3043
- "rowActions": "KXabfq_rowActions",
3044
- "authorName": "KXabfq_authorName",
3042
+ "rowBody": "KXabfq_rowBody",
3043
+ "selfBody": "KXabfq_selfBody",
3045
3044
  "otherRow": "KXabfq_otherRow",
3045
+ "authorName": "KXabfq_authorName",
3046
3046
  "quoteBody": "KXabfq_quoteBody",
3047
+ "quoteBar": "KXabfq_quoteBar",
3047
3048
  "quoteAuthor": "KXabfq_quoteAuthor",
3048
- "author": "KXabfq_author",
3049
- "replyButton": "KXabfq_replyButton",
3050
- "quoteText": "KXabfq_quoteText",
3051
- "rowActionsSelf": "KXabfq_rowActionsSelf",
3052
3049
  "selfRow": "KXabfq_selfRow",
3050
+ "rowActions": "KXabfq_rowActions",
3051
+ "replyButton": "KXabfq_replyButton",
3053
3052
  "quoteMark": "KXabfq_quoteMark",
3054
- "rowBody": "KXabfq_rowBody",
3055
- "selfBody": "KXabfq_selfBody"
3053
+ "rowActionsSelf": "KXabfq_rowActionsSelf",
3054
+ "author": "KXabfq_author",
3055
+ "quoteText": "KXabfq_quoteText"
3056
3056
  };
3057
3057
  //#endregion
3058
3058
  //#region src/client/MessageSide.tsx
@@ -3340,46 +3340,46 @@ window.__ModuleLoader__.load({
3340
3340
  document.head.appendChild(tag);
3341
3341
  }
3342
3342
  var MembersPanel_module_css_default = {
3343
- "count": "VeQVAa_count",
3344
- "previewImage": "VeQVAa_previewImage",
3343
+ "sectionLabel": "VeQVAa_sectionLabel",
3344
+ "notice": "VeQVAa_notice",
3345
+ "crumbGroup": "VeQVAa_crumbGroup",
3346
+ "fileSize": "VeQVAa_fileSize",
3345
3347
  "hint": "VeQVAa_hint",
3346
- "sectionToggle": "VeQVAa_sectionToggle",
3347
- "ownerTag": "VeQVAa_ownerTag",
3348
3348
  "preview": "VeQVAa_preview",
3349
- "unavailable": "VeQVAa_unavailable",
3350
- "previewClose": "VeQVAa_previewClose",
3351
- "fileIcon": "VeQVAa_fileIcon",
3352
- "crumb": "VeQVAa_crumb",
3353
- "crumbGroup": "VeQVAa_crumbGroup",
3349
+ "announcementText": "VeQVAa_announcementText",
3350
+ "editor": "VeQVAa_editor",
3351
+ "search": "VeQVAa_search",
3354
3352
  "fileButton": "VeQVAa_fileButton",
3355
- "filePicker": "VeQVAa_filePicker",
3353
+ "selfTag": "VeQVAa_selfTag",
3354
+ "row": "VeQVAa_row",
3356
3355
  "root": "VeQVAa_root",
3356
+ "editorFooter": "VeQVAa_editorFooter",
3357
+ "list": "VeQVAa_list",
3358
+ "filePicker": "VeQVAa_filePicker",
3359
+ "previewBody": "VeQVAa_previewBody",
3360
+ "count": "VeQVAa_count",
3361
+ "sectionBody": "VeQVAa_sectionBody",
3357
3362
  "sectionHeader": "VeQVAa_sectionHeader",
3358
- "error": "VeQVAa_error",
3359
- "refresh": "VeQVAa_refresh",
3363
+ "previewImage": "VeQVAa_previewImage",
3360
3364
  "previewHeader": "VeQVAa_previewHeader",
3361
- "sectionBody": "VeQVAa_sectionBody",
3362
- "row": "VeQVAa_row",
3363
- "fileSize": "VeQVAa_fileSize",
3364
- "previewTitle": "VeQVAa_previewTitle",
3365
- "remove": "VeQVAa_remove",
3366
- "list": "VeQVAa_list",
3367
- "crumbs": "VeQVAa_crumbs",
3368
- "caret": "VeQVAa_caret",
3369
- "linkButton": "VeQVAa_linkButton",
3365
+ "sectionToggle": "VeQVAa_sectionToggle",
3370
3366
  "crumbSep": "VeQVAa_crumbSep",
3367
+ "linkButton": "VeQVAa_linkButton",
3368
+ "ownerTag": "VeQVAa_ownerTag",
3369
+ "textarea": "VeQVAa_textarea",
3370
+ "crumb": "VeQVAa_crumb",
3371
3371
  "name": "VeQVAa_name",
3372
- "selfTag": "VeQVAa_selfTag",
3373
- "search": "VeQVAa_search",
3374
- "notice": "VeQVAa_notice",
3375
- "searchToggle": "VeQVAa_searchToggle",
3376
- "editorFooter": "VeQVAa_editorFooter",
3377
- "announcementText": "VeQVAa_announcementText",
3378
- "editor": "VeQVAa_editor",
3379
- "previewBody": "VeQVAa_previewBody",
3372
+ "unavailable": "VeQVAa_unavailable",
3373
+ "remove": "VeQVAa_remove",
3374
+ "previewTitle": "VeQVAa_previewTitle",
3375
+ "refresh": "VeQVAa_refresh",
3376
+ "caret": "VeQVAa_caret",
3377
+ "fileIcon": "VeQVAa_fileIcon",
3380
3378
  "section": "VeQVAa_section",
3381
- "sectionLabel": "VeQVAa_sectionLabel",
3382
- "textarea": "VeQVAa_textarea"
3379
+ "error": "VeQVAa_error",
3380
+ "searchToggle": "VeQVAa_searchToggle",
3381
+ "crumbs": "VeQVAa_crumbs",
3382
+ "previewClose": "VeQVAa_previewClose"
3383
3383
  };
3384
3384
  //#endregion
3385
3385
  //#region src/client/MembersPanel.tsx
@@ -4002,11 +4002,11 @@ window.__ModuleLoader__.load({
4002
4002
  document.head.appendChild(tag);
4003
4003
  }
4004
4004
  var GuideEntry_module_css_default = {
4005
- "text": "_0Vnsuq_text",
4006
- "title": "_0Vnsuq_title",
4007
4005
  "icon": "_0Vnsuq_icon",
4006
+ "entry": "_0Vnsuq_entry",
4008
4007
  "description": "_0Vnsuq_description",
4009
- "entry": "_0Vnsuq_entry"
4008
+ "title": "_0Vnsuq_title",
4009
+ "text": "_0Vnsuq_text"
4010
4010
  };
4011
4011
  //#endregion
4012
4012
  //#region src/client/GuideEntry.tsx
@@ -4073,13 +4073,13 @@ window.__ModuleLoader__.load({
4073
4073
  document.head.appendChild(tag);
4074
4074
  }
4075
4075
  var QuoteComposer_module_css_default = {
4076
- "bar": "AK6KxW_bar",
4077
- "mark": "AK6KxW_mark",
4078
- "body": "AK6KxW_body",
4079
4076
  "text": "AK6KxW_text",
4080
4077
  "dismiss": "AK6KxW_dismiss",
4081
4078
  "button": "AK6KxW_button",
4082
- "author": "AK6KxW_author"
4079
+ "author": "AK6KxW_author",
4080
+ "body": "AK6KxW_body",
4081
+ "mark": "AK6KxW_mark",
4082
+ "bar": "AK6KxW_bar"
4083
4083
  };
4084
4084
  //#endregion
4085
4085
  //#region src/client/QuoteComposer.tsx
package/lib/index.js CHANGED
@@ -8880,14 +8880,6 @@ const name = "group-chat";
8880
8880
  * everyone. Recognized by id because that survives the round trip through the session.
8881
8881
  */
8882
8882
  const WARM_UP_PREFIX = "warm-up-";
8883
- /**
8884
- * The block type a reply uses to carry the message it answers.
8885
- *
8886
- * The host bundle and the client bundle are evaluated separately, so this string is written
8887
- * here as well as in the renderer that reads it. `quote-block-type.test.ts` holds the two
8888
- * together: a silent divergence would publish quotes nothing draws.
8889
- */
8890
- const QUOTE_BLOCK_TYPE = "group-chat-quote";
8891
8883
  /** Host services this plugin needs beyond the room runtime. */
8892
8884
  const inject = [
8893
8885
  "agents",
@@ -9064,6 +9056,35 @@ const writePreferences = async (preferences, env = process.env) => {
9064
9056
  }
9065
9057
  return normalised;
9066
9058
  };
9059
+ /**
9060
+ * Puts a pending quote at the head of a message's text.
9061
+ *
9062
+ * As a blockquote line rather than as a block of its own. A block type the model side does not
9063
+ * know is dropped on the way into the prompt — the reply would be published with a quote only
9064
+ * people could see — and the official bubble draws such a block as a collapsed "extra content"
9065
+ * row underneath. Text is read by both: the model gets the quote as context, and the renderer
9066
+ * shows it as a quote.
9067
+ *
9068
+ * @param content - the message the member typed.
9069
+ * @param quote - the reply target the browser registered.
9070
+ * @returns the content with the quote line prepended.
9071
+ */
9072
+ const withQuote = (content, quote) => {
9073
+ const line = `> ${quote.authorName === void 0 ? "" : `${quote.authorName}:`}${quote.preview}`;
9074
+ const blocks = [...content];
9075
+ const at = blocks.findIndex((block) => block.type === "text");
9076
+ if (at < 0) return [{
9077
+ type: "text",
9078
+ text: line
9079
+ }, ...blocks];
9080
+ const target = blocks[at];
9081
+ const text = typeof target.text === "string" ? target.text : "";
9082
+ blocks[at] = {
9083
+ ...target,
9084
+ text: `${line}\n\n${text}`
9085
+ };
9086
+ return blocks;
9087
+ };
9067
9088
  /** True when `data` looks like a `user/message` payload this workspace composed itself. */
9068
9089
  /**
9069
9090
  * True when a `user/message` carries runtime bookkeeping rather than something a member typed.
@@ -9396,12 +9417,7 @@ const activate = (ctx, target) => {
9396
9417
  const mentions = mentionedMemberIds(textOfContent(content), runtimes.get(roomId)?.members ?? []);
9397
9418
  const quote = pendingQuotes.get(roomId);
9398
9419
  pendingQuotes.delete(roomId);
9399
- const outgoing = quote === void 0 ? content : [...content, {
9400
- type: QUOTE_BLOCK_TYPE,
9401
- messageId: quote.messageId,
9402
- preview: quote.preview,
9403
- ...quote.authorName === void 0 ? {} : { authorName: quote.authorName }
9404
- }];
9420
+ const outgoing = quote === void 0 ? content : withQuote(content, quote);
9405
9421
  backend.sendMessage(roomId, {
9406
9422
  content: outgoing,
9407
9423
  rpcId: typeof messageId === "string" && messageId.length > 0 ? messageId : `local-${String(Date.now())}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparkelf/dsh-group-chat",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Human-agent group chat for DataOps-managed DSH workspaces: rooms broadcast to every member, and only a member's own @mention wakes that member's agent.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",