@dxos/plugin-thread 0.8.2-main.fbd8ed0 → 0.8.2-staging.7ac8446

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 (160) hide show
  1. package/dist/lib/browser/{ChatContainer-H4XTHM3A.mjs → ChatContainer-IOOAQW6S.mjs} +6 -6
  2. package/dist/lib/browser/ChatContainer-IOOAQW6S.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-builder-V7UUHGUI.mjs → app-graph-builder-6W4UKJDI.mjs} +7 -10
  4. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-32EIWOAL.mjs → chunk-QDJ3Y6WF.mjs} +1 -1
  6. package/dist/lib/browser/{chunk-32EIWOAL.mjs.map → chunk-QDJ3Y6WF.mjs.map} +1 -1
  7. package/dist/lib/browser/chunk-S5ZR4FYW.mjs +17 -0
  8. package/dist/lib/browser/{chunk-I3JK6CBS.mjs → chunk-TFVPUPOO.mjs} +7 -9
  9. package/dist/lib/browser/chunk-TFVPUPOO.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-WOG72DWE.mjs +93 -0
  11. package/dist/lib/browser/chunk-WOG72DWE.mjs.map +7 -0
  12. package/dist/lib/browser/index.mjs +10 -10
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-PDOLX5B7.mjs → intent-resolver-QAY4FLLM.mjs} +22 -17
  15. package/dist/lib/browser/intent-resolver-QAY4FLLM.mjs.map +7 -0
  16. package/dist/lib/browser/{markdown-XJJVUBDO.mjs → markdown-7KXBXCUS.mjs} +4 -4
  17. package/dist/lib/browser/markdown-7KXBXCUS.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-7DJZKIOK.mjs → react-surface-MT3OWULR.mjs} +22 -21
  20. package/dist/lib/browser/react-surface-MT3OWULR.mjs.map +7 -0
  21. package/dist/lib/browser/{settings-K56QXNJ4.mjs → settings-4FEC7EAX.mjs} +4 -4
  22. package/dist/lib/browser/settings-4FEC7EAX.mjs.map +7 -0
  23. package/dist/lib/browser/{state-KBGI3QTR.mjs → state-PNMSLKAH.mjs} +4 -4
  24. package/dist/lib/browser/state-PNMSLKAH.mjs.map +7 -0
  25. package/dist/lib/browser/types.mjs +1 -1
  26. package/dist/lib/node/{ChatContainer-TUISUIY7.cjs → ChatContainer-4FNDRF3G.cjs} +11 -11
  27. package/dist/lib/node/ChatContainer-4FNDRF3G.cjs.map +7 -0
  28. package/dist/lib/node/{app-graph-builder-MMM26FEH.cjs → app-graph-builder-HZNWT4QU.cjs} +10 -13
  29. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-GRMB5VRN.cjs → chunk-46BSFPBV.cjs} +49 -49
  31. package/dist/lib/node/chunk-46BSFPBV.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-NO6WQR36.cjs → chunk-AKINTFBH.cjs} +4 -4
  33. package/dist/lib/node/{chunk-NO6WQR36.cjs.map → chunk-AKINTFBH.cjs.map} +1 -1
  34. package/dist/lib/node/{chunk-ETDNE4Z6.cjs → chunk-E7Z3BKRQ.cjs} +11 -13
  35. package/dist/lib/node/chunk-E7Z3BKRQ.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-AZ275P4V.cjs → chunk-S2A6BXEA.cjs} +10 -10
  37. package/dist/lib/node/index.cjs +17 -17
  38. package/dist/lib/node/index.cjs.map +3 -3
  39. package/dist/lib/node/{intent-resolver-MNTL32W2.cjs → intent-resolver-S6FE5OR7.cjs} +31 -26
  40. package/dist/lib/node/intent-resolver-S6FE5OR7.cjs.map +7 -0
  41. package/dist/lib/node/{markdown-25NI6Q4Y.cjs → markdown-L2WMCQKM.cjs} +9 -9
  42. package/dist/lib/node/markdown-L2WMCQKM.cjs.map +7 -0
  43. package/dist/lib/node/meta.json +1 -1
  44. package/dist/lib/node/{react-surface-KGUZJVRL.cjs → react-surface-Z45BYECE.cjs} +32 -31
  45. package/dist/lib/node/react-surface-Z45BYECE.cjs.map +7 -0
  46. package/dist/lib/node/{settings-4WLSO726.cjs → settings-IXCPE55J.cjs} +7 -7
  47. package/dist/lib/node/settings-IXCPE55J.cjs.map +7 -0
  48. package/dist/lib/node/{state-FOHMAVSU.cjs → state-AT73KPGZ.cjs} +6 -6
  49. package/dist/lib/node/state-AT73KPGZ.cjs.map +7 -0
  50. package/dist/lib/node/types.cjs +3 -3
  51. package/dist/lib/node/types.cjs.map +1 -1
  52. package/dist/lib/node-esm/{ChatContainer-G7VTTRDN.mjs → ChatContainer-NYLCL6QA.mjs} +6 -6
  53. package/dist/lib/node-esm/ChatContainer-NYLCL6QA.mjs.map +7 -0
  54. package/dist/lib/node-esm/{app-graph-builder-QEFJ2KA4.mjs → app-graph-builder-M3KK5QJH.mjs} +7 -10
  55. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-V7HLWNAO.mjs → chunk-ADTVMESP.mjs} +7 -9
  57. package/dist/lib/node-esm/chunk-ADTVMESP.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-E446MGLP.mjs +94 -0
  59. package/dist/lib/node-esm/chunk-E446MGLP.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-IZWN4KAY.mjs → chunk-J56FORYF.mjs} +1 -1
  61. package/dist/lib/node-esm/{chunk-IZWN4KAY.mjs.map → chunk-J56FORYF.mjs.map} +1 -1
  62. package/dist/lib/node-esm/chunk-WSE23GSG.mjs +19 -0
  63. package/dist/lib/node-esm/index.mjs +10 -10
  64. package/dist/lib/node-esm/index.mjs.map +3 -3
  65. package/dist/lib/node-esm/{intent-resolver-X2FNKFSK.mjs → intent-resolver-OURFRSSF.mjs} +22 -17
  66. package/dist/lib/node-esm/intent-resolver-OURFRSSF.mjs.map +7 -0
  67. package/dist/lib/node-esm/{markdown-2ERASVEO.mjs → markdown-ZKU23UVD.mjs} +4 -4
  68. package/dist/lib/node-esm/markdown-ZKU23UVD.mjs.map +7 -0
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/{react-surface-DLD2UJRM.mjs → react-surface-KIJ767JK.mjs} +22 -21
  71. package/dist/lib/node-esm/react-surface-KIJ767JK.mjs.map +7 -0
  72. package/dist/lib/node-esm/{settings-5UA6FBMW.mjs → settings-ZUJQ4LWI.mjs} +4 -4
  73. package/dist/lib/node-esm/settings-ZUJQ4LWI.mjs.map +7 -0
  74. package/dist/lib/node-esm/{state-IRLEO2SB.mjs → state-SSDX5O67.mjs} +4 -4
  75. package/dist/lib/node-esm/state-SSDX5O67.mjs.map +7 -0
  76. package/dist/lib/node-esm/types.mjs +1 -1
  77. package/dist/types/src/capabilities/app-graph-builder.d.ts +179 -2
  78. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/index.d.ts +179 -3
  80. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  82. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  84. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  85. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  87. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  88. package/dist/types/src/components/Comments.stories.d.ts +1 -1
  89. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  91. package/dist/types/src/components/MessageContainer.d.ts +4 -5
  92. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  93. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  94. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  95. package/dist/types/src/components/testing.d.ts +50 -97
  96. package/dist/types/src/components/testing.d.ts.map +1 -1
  97. package/dist/types/src/components/types.d.ts +2 -2
  98. package/dist/types/src/components/types.d.ts.map +1 -1
  99. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  100. package/dist/types/src/hooks/analytics.d.ts +3 -3
  101. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  102. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +56 -2
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/src/types.d.ts +61 -212
  106. package/dist/types/src/types.d.ts.map +1 -1
  107. package/dist/types/src/util.d.ts.map +1 -1
  108. package/dist/types/tsconfig.tsbuildinfo +1 -1
  109. package/package.json +33 -40
  110. package/src/ThreadPlugin.tsx +7 -7
  111. package/src/capabilities/app-graph-builder.ts +21 -31
  112. package/src/capabilities/intent-resolver.ts +14 -13
  113. package/src/capabilities/markdown.ts +4 -4
  114. package/src/capabilities/settings.ts +2 -2
  115. package/src/capabilities/state.ts +3 -3
  116. package/src/components/Chat.stories.tsx +8 -7
  117. package/src/components/ChatContainer.tsx +4 -4
  118. package/src/components/CommentContainer.tsx +49 -25
  119. package/src/components/Comments.stories.tsx +7 -9
  120. package/src/components/CommentsContainer.tsx +8 -2
  121. package/src/components/MessageContainer.tsx +50 -31
  122. package/src/components/testing.ts +4 -4
  123. package/src/components/types.ts +2 -2
  124. package/src/hooks/analytics.ts +4 -4
  125. package/src/translations.ts +2 -2
  126. package/src/types.ts +40 -40
  127. package/dist/lib/browser/ChatContainer-H4XTHM3A.mjs.map +0 -7
  128. package/dist/lib/browser/app-graph-builder-V7UUHGUI.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-I3JK6CBS.mjs.map +0 -7
  130. package/dist/lib/browser/chunk-OO7PQPV5.mjs +0 -93
  131. package/dist/lib/browser/chunk-OO7PQPV5.mjs.map +0 -7
  132. package/dist/lib/browser/chunk-YRGWE35W.mjs +0 -17
  133. package/dist/lib/browser/intent-resolver-PDOLX5B7.mjs.map +0 -7
  134. package/dist/lib/browser/markdown-XJJVUBDO.mjs.map +0 -7
  135. package/dist/lib/browser/react-surface-7DJZKIOK.mjs.map +0 -7
  136. package/dist/lib/browser/settings-K56QXNJ4.mjs.map +0 -7
  137. package/dist/lib/browser/state-KBGI3QTR.mjs.map +0 -7
  138. package/dist/lib/node/ChatContainer-TUISUIY7.cjs.map +0 -7
  139. package/dist/lib/node/app-graph-builder-MMM26FEH.cjs.map +0 -7
  140. package/dist/lib/node/chunk-ETDNE4Z6.cjs.map +0 -7
  141. package/dist/lib/node/chunk-GRMB5VRN.cjs.map +0 -7
  142. package/dist/lib/node/intent-resolver-MNTL32W2.cjs.map +0 -7
  143. package/dist/lib/node/markdown-25NI6Q4Y.cjs.map +0 -7
  144. package/dist/lib/node/react-surface-KGUZJVRL.cjs.map +0 -7
  145. package/dist/lib/node/settings-4WLSO726.cjs.map +0 -7
  146. package/dist/lib/node/state-FOHMAVSU.cjs.map +0 -7
  147. package/dist/lib/node-esm/ChatContainer-G7VTTRDN.mjs.map +0 -7
  148. package/dist/lib/node-esm/app-graph-builder-QEFJ2KA4.mjs.map +0 -7
  149. package/dist/lib/node-esm/chunk-5XUQJWUG.mjs +0 -19
  150. package/dist/lib/node-esm/chunk-A7RLBTTZ.mjs +0 -94
  151. package/dist/lib/node-esm/chunk-A7RLBTTZ.mjs.map +0 -7
  152. package/dist/lib/node-esm/chunk-V7HLWNAO.mjs.map +0 -7
  153. package/dist/lib/node-esm/intent-resolver-X2FNKFSK.mjs.map +0 -7
  154. package/dist/lib/node-esm/markdown-2ERASVEO.mjs.map +0 -7
  155. package/dist/lib/node-esm/react-surface-DLD2UJRM.mjs.map +0 -7
  156. package/dist/lib/node-esm/settings-5UA6FBMW.mjs.map +0 -7
  157. package/dist/lib/node-esm/state-IRLEO2SB.mjs.map +0 -7
  158. /package/dist/lib/browser/{chunk-YRGWE35W.mjs.map → chunk-S5ZR4FYW.mjs.map} +0 -0
  159. /package/dist/lib/node/{chunk-AZ275P4V.cjs.map → chunk-S2A6BXEA.cjs.map} +0 -0
  160. /package/dist/lib/node-esm/{chunk-5XUQJWUG.mjs.map → chunk-WSE23GSG.mjs.map} +0 -0
@@ -5,17 +5,17 @@ import {
5
5
  Markdown,
6
6
  ReactSurface,
7
7
  ThreadState
8
- } from "./chunk-5XUQJWUG.mjs";
8
+ } from "./chunk-WSE23GSG.mjs";
9
9
  import {
10
10
  ThreadCapabilities
11
11
  } from "./chunk-WLY2HMDB.mjs";
12
12
  import {
13
13
  useOnEditAnalytics,
14
14
  useStatus
15
- } from "./chunk-IZWN4KAY.mjs";
15
+ } from "./chunk-J56FORYF.mjs";
16
16
  import {
17
17
  ThreadAction
18
- } from "./chunk-A7RLBTTZ.mjs";
18
+ } from "./chunk-E446MGLP.mjs";
19
19
  import {
20
20
  THREAD_ITEM,
21
21
  THREAD_PLUGIN,
@@ -37,7 +37,7 @@ import { SpaceCapabilities, ThreadEvents as ThreadEvents2 } from "@dxos/plugin-s
37
37
  import { ChannelType as ChannelType2, defineObjectForm, ThreadType } from "@dxos/plugin-space/types";
38
38
  import { RefArray } from "@dxos/react-client/echo";
39
39
  import { translations as threadTranslations } from "@dxos/react-ui-thread";
40
- import { DataType } from "@dxos/schema";
40
+ import { MessageType, MessageTypeV1, MessageTypeV1ToV2 } from "@dxos/schema";
41
41
 
42
42
  // packages/plugins/plugin-thread/src/translations.ts
43
43
  import { ChannelType } from "@dxos/plugin-space/types";
@@ -62,8 +62,8 @@ var translations_default = [
62
62
  "comments heading": "Comments",
63
63
  "chat heading": "Chat",
64
64
  "draft button": "DRAFT",
65
- "no comments title": "Comments",
66
- "no comments message": "Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.",
65
+ "no comments title": "No comments (yet)",
66
+ "no comments message": "To start a comment thread, select a range of text in a document and click the <commentIcon></commentIcon> Create comment button in the toolbar.",
67
67
  "toggle show resolved": "Show resolved",
68
68
  "unnamed object threads label": "Threads",
69
69
  "mark as resolved label": "Mark as resolved",
@@ -122,7 +122,7 @@ var ThreadPlugin = () => definePlugin(meta, [
122
122
  }
123
123
  }),
124
124
  contributes(Capabilities.Metadata, {
125
- id: DataType.Message.typename,
125
+ id: MessageType.typename,
126
126
  metadata: {
127
127
  // TODO(wittjosiah): Move out of metadata.
128
128
  loadReferences: (message) => []
@@ -167,15 +167,15 @@ var ThreadPlugin = () => definePlugin(meta, [
167
167
  activatesOn: ClientEvents.SetupSchema,
168
168
  activate: () => contributes(ClientCapabilities.Schema, [
169
169
  ThreadType,
170
- DataType.Message,
171
- DataType.MessageV1
170
+ MessageType,
171
+ MessageTypeV1
172
172
  ])
173
173
  }),
174
174
  defineModule({
175
175
  id: `${meta.id}/module/migration`,
176
176
  activatesOn: ClientEvents.SetupMigration,
177
177
  activate: () => contributes(ClientCapabilities.Migration, [
178
- DataType.MessageV1ToV2
178
+ MessageTypeV1ToV2
179
179
  ])
180
180
  }),
181
181
  defineModule({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/events.ts", "../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadEvents {\n export const SetupActivity = Events.createStateEvent(`${THREAD_PLUGIN}/setup-activity`);\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';\nimport { ChannelType, defineObjectForm, ThreadType } from '@dxos/plugin-space/types';\nimport { type AnyLiveObject, RefArray } from '@dxos/react-client/echo';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { DataType } from '@dxos/schema';\n\nimport { AppGraphBuilder, IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';\nimport { ThreadEvents as LocalThreadEvents } from './events';\nimport { meta, THREAD_ITEM } from './meta';\nimport translations from './translations';\nimport { ThreadAction } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await RefArray.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: AnyLiveObject<any>, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.title, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ThreadType, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.\n activatesBefore: [ThreadEvents.SetupThread, LocalThreadEvents.SetupActivity],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ChannelType } from '@dxos/plugin-space/types';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [ChannelType.typename]: {\n 'typename label': 'Channel',\n 'object name placeholder': 'New channel',\n },\n [THREAD_PLUGIN]: {\n 'plugin name': 'Threads',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'thread deleted label': 'You deleted a thread.',\n 'message deleted label': 'You deleted a message.',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'Comments',\n 'no comments message':\n 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved only',\n },\n },\n },\n];\n"],
5
- "mappings": "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",
6
- "names": ["Events", "ThreadEvents", "SetupActivity", "Events", "createStateEvent", "THREAD_PLUGIN", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "MarkdownEvents", "SpaceCapabilities", "ThreadEvents", "ChannelType", "defineObjectForm", "ThreadType", "RefArray", "translations", "threadTranslations", "DataType", "ChannelType", "ChannelType", "typename", "THREAD_PLUGIN", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupSettings", "activate", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "ChannelType", "typename", "metadata", "icon", "ThreadType", "loadReferences", "thread", "RefArray", "loadAll", "messages", "DataType", "Message", "message", "THREAD_ITEM", "parse", "item", "type", "label", "title", "data", "object", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "MessageV1", "SetupMigration", "Migration", "MessageV1ToV2", "MarkdownEvents", "SetupExtensions", "Markdown", "SetupReactSurface", "activatesBefore", "ThreadEvents", "SetupThread", "LocalThreadEvents", "SetupActivity", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadEvents {\n export const SetupActivity = Events.createStateEvent(`${THREAD_PLUGIN}/setup-activity`);\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';\nimport { ChannelType, defineObjectForm, ThreadType } from '@dxos/plugin-space/types';\nimport { type ReactiveEchoObject, RefArray } from '@dxos/react-client/echo';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { MessageType, MessageTypeV1, MessageTypeV1ToV2 } from '@dxos/schema';\n\nimport { AppGraphBuilder, IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';\nimport { ThreadEvents as LocalThreadEvents } from './events';\nimport { meta, THREAD_ITEM } from './meta';\nimport translations from './translations';\nimport { ThreadAction } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await RefArray.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: MessageType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: MessageType) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: ReactiveEchoObject<any>, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.title, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ThreadType, MessageType, MessageTypeV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [MessageTypeV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.\n activatesBefore: [ThreadEvents.SetupThread, LocalThreadEvents.SetupActivity],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ChannelType } from '@dxos/plugin-space/types';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [ChannelType.typename]: {\n 'typename label': 'Channel',\n 'object name placeholder': 'New channel',\n },\n [THREAD_PLUGIN]: {\n 'plugin name': 'Threads',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'thread deleted label': 'You deleted a thread.',\n 'message deleted label': 'You deleted a message.',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'No comments (yet)',\n 'no comments message':\n 'To start a comment thread, select a range of text in a document and click the <commentIcon></commentIcon> Create comment button in the toolbar.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved only',\n },\n },\n },\n];\n"],
5
+ "mappings": "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",
6
+ "names": ["Events", "ThreadEvents", "SetupActivity", "Events", "createStateEvent", "THREAD_PLUGIN", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "MarkdownEvents", "SpaceCapabilities", "ThreadEvents", "ChannelType", "defineObjectForm", "ThreadType", "RefArray", "translations", "threadTranslations", "MessageType", "MessageTypeV1", "MessageTypeV1ToV2", "ChannelType", "ChannelType", "typename", "THREAD_PLUGIN", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupSettings", "activate", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "ChannelType", "typename", "metadata", "icon", "ThreadType", "loadReferences", "thread", "RefArray", "loadAll", "messages", "MessageType", "message", "THREAD_ITEM", "parse", "item", "type", "label", "title", "data", "object", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "MessageTypeV1", "SetupMigration", "Migration", "MessageTypeV1ToV2", "MarkdownEvents", "SetupExtensions", "Markdown", "SetupReactSurface", "activatesBefore", "ThreadEvents", "SetupThread", "LocalThreadEvents", "SetupActivity", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
7
7
  }
@@ -4,31 +4,36 @@ import {
4
4
  } from "./chunk-WLY2HMDB.mjs";
5
5
  import {
6
6
  ThreadAction
7
- } from "./chunk-A7RLBTTZ.mjs";
7
+ } from "./chunk-E446MGLP.mjs";
8
8
  import {
9
9
  THREAD_PLUGIN
10
10
  } from "./chunk-42F2DTMM.mjs";
11
11
 
12
12
  // packages/plugins/plugin-thread/src/capabilities/intent-resolver.ts
13
13
  import { Capabilities, contributes, createIntent, createResolver } from "@dxos/app-framework";
14
- import { createQueueDxn, Ref } from "@dxos/echo-schema";
14
+ import { ObjectId, Ref } from "@dxos/echo-schema";
15
15
  import { invariant } from "@dxos/invariant";
16
+ import { DXN, QueueSubspaceTags } from "@dxos/keys";
16
17
  import { refFromDXN } from "@dxos/live-object";
17
18
  import { log } from "@dxos/log";
18
19
  import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
19
20
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
20
21
  import { ChannelType, ThreadType } from "@dxos/plugin-space/types";
21
- import { live, fullyQualifiedId, getSpace, makeRef } from "@dxos/react-client/echo";
22
- import { DataType } from "@dxos/schema";
22
+ import { create, fullyQualifiedId, getSpace, makeRef } from "@dxos/react-client/echo";
23
+ import { MessageType } from "@dxos/schema";
23
24
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/capabilities/intent-resolver.ts";
24
25
  var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, [
25
26
  createResolver({
26
27
  intent: ThreadAction.CreateChannel,
27
28
  resolve: ({ spaceId, name }) => ({
28
29
  data: {
29
- object: live(ChannelType, {
30
+ object: create(ChannelType, {
30
31
  name,
31
- queue: refFromDXN(createQueueDxn(spaceId))
32
+ queue: refFromDXN(new DXN(DXN.kind.QUEUE, [
33
+ QueueSubspaceTags.DATA,
34
+ spaceId,
35
+ ObjectId.random()
36
+ ]))
32
37
  })
33
38
  }
34
39
  })
@@ -44,16 +49,16 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
44
49
  typename: subject?.typename
45
50
  }, {
46
51
  F: __dxlog_file,
47
- L: 42,
52
+ L: 43,
48
53
  S: void 0,
49
54
  C: (f, a) => f(...a)
50
55
  });
51
56
  return;
52
57
  }
53
58
  }
54
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
59
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
55
60
  const subjectId = fullyQualifiedId(subject);
56
- const thread = live(ThreadType, {
61
+ const thread = create(ThreadType, {
57
62
  name,
58
63
  anchor: cursor,
59
64
  messages: [],
@@ -86,7 +91,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
86
91
  createResolver({
87
92
  intent: ThreadAction.Select,
88
93
  resolve: ({ current }) => {
89
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
94
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
90
95
  state.current = current;
91
96
  }
92
97
  }),
@@ -101,7 +106,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
101
106
  const space = getSpace(thread);
102
107
  invariant(space, "Space not found", {
103
108
  F: __dxlog_file,
104
- L: 86,
109
+ L: 87,
105
110
  S: void 0,
106
111
  A: [
107
112
  "space",
@@ -125,7 +130,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
125
130
  createResolver({
126
131
  intent: ThreadAction.Delete,
127
132
  resolve: ({ subject, thread }, undo) => {
128
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
133
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
129
134
  const subjectId = fullyQualifiedId(subject);
130
135
  const draft = state.drafts[subjectId];
131
136
  if (draft) {
@@ -188,12 +193,12 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
188
193
  createResolver({
189
194
  intent: ThreadAction.AddMessage,
190
195
  resolve: ({ thread, subject, sender, text }) => {
191
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
196
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
192
197
  const subjectId = fullyQualifiedId(subject);
193
198
  const space = getSpace(subject);
194
199
  invariant(space, "Space not found", {
195
200
  F: __dxlog_file,
196
- L: 171,
201
+ L: 172,
197
202
  S: void 0,
198
203
  A: [
199
204
  "space",
@@ -201,7 +206,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
201
206
  ]
202
207
  });
203
208
  const intents = [];
204
- const message = live(DataType.Message, {
209
+ const message = create(MessageType, {
205
210
  sender,
206
211
  created: (/* @__PURE__ */ new Date()).toISOString(),
207
212
  blocks: [
@@ -247,7 +252,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
247
252
  const space = getSpace(subject);
248
253
  invariant(space, "Space not found", {
249
254
  F: __dxlog_file,
250
- L: 219,
255
+ L: 220,
251
256
  S: void 0,
252
257
  A: [
253
258
  "space",
@@ -320,4 +325,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
320
325
  export {
321
326
  intent_resolver_default as default
322
327
  };
323
- //# sourceMappingURL=intent-resolver-X2FNKFSK.mjs.map
328
+ //# sourceMappingURL=intent-resolver-OURFRSSF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, createResolver, type PluginsContext } from '@dxos/app-framework';\nimport { ObjectId, Ref } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { refFromDXN } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { ChannelType, ThreadType } from '@dxos/plugin-space/types';\nimport { create, fullyQualifiedId, getSpace, makeRef } from '@dxos/react-client/echo';\nimport { MessageType } from '@dxos/schema';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ThreadAction } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: ThreadAction.CreateChannel,\n resolve: ({ spaceId, name }) => ({\n data: {\n object: create(ChannelType, {\n name,\n queue: refFromDXN(new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()])),\n }),\n },\n }),\n }),\n createResolver({\n intent: ThreadAction.Create,\n resolve: ({ name, cursor, subject }) => {\n // Seed the threads array if it does not exist.\n if (subject?.threads === undefined) {\n try {\n // Static schema will throw an error if subject does not support threads array property.\n subject.threads = [];\n } catch (err) {\n log.error('Subject does not support threads array', { typename: subject?.typename });\n return;\n }\n }\n\n const { state } = context.requestCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const thread = create(ThreadType, { name, anchor: cursor, messages: [], status: 'staged' });\n const draft = state.drafts[subjectId];\n if (draft) {\n draft.push(thread);\n } else {\n state.drafts[subjectId] = [thread];\n }\n\n return {\n data: { object: thread },\n intents: [\n createIntent(ThreadAction.Select, { current: fullyQualifiedId(thread) }),\n createIntent(DeckAction.ChangeCompanion, {\n primary: subjectId,\n companion: `${subjectId}${ATTENDABLE_PATH_SEPARATOR}comments`,\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: ThreadAction.Select,\n resolve: ({ current }) => {\n const { state } = context.requestCapability(ThreadCapabilities.MutableState);\n state.current = current;\n },\n }),\n createResolver({\n intent: ThreadAction.ToggleResolved,\n resolve: ({ thread }) => {\n if (thread.status === 'active' || thread.status === undefined) {\n thread.status = 'resolved';\n } else if (thread.status === 'resolved') {\n thread.status = 'active';\n }\n\n const space = getSpace(thread);\n invariant(space, 'Space not found');\n const spaceId = space.id;\n\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.toggle-resolved',\n properties: {\n spaceId,\n threadId: thread.id,\n },\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: ThreadAction.Delete,\n resolve: ({ subject, thread }, undo) => {\n const { state } = context.requestCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const draft = state.drafts[subjectId];\n if (draft) {\n // Check if we're deleting a draft; if so, remove it.\n const index = draft.findIndex((t) => t.id === thread.id);\n if (index !== -1) {\n draft.splice(index, 1);\n return;\n }\n }\n\n const space = getSpace(thread);\n if (!space || !subject.threads) {\n return;\n }\n\n if (!undo) {\n const index = subject.threads.findIndex((t: any) => t?.id === thread.id);\n const cursor = subject.threads[index]?.anchor;\n if (index !== -1) {\n subject.threads?.splice(index, 1);\n }\n\n space.db.remove(thread);\n\n return {\n undoable: {\n message: ['thread deleted label', { ns: THREAD_PLUGIN }],\n data: { cursor },\n },\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n ],\n };\n } else {\n // TODO(wittjosiah): SDK should do this automatically.\n const savedThread = space.db.add(thread);\n subject.threads.push(savedThread);\n\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.undo-delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n ],\n };\n }\n },\n }),\n createResolver({\n intent: ThreadAction.AddMessage,\n resolve: ({ thread, subject, sender, text }) => {\n const { state } = context.requestCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n const intents = [];\n\n const message = create(MessageType, {\n sender,\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text }],\n // TODO(wittjosiah): Context based on attention.\n // context: context ? makeRef(context) : undefined,\n });\n thread.messages.push(makeRef(message));\n\n if (state.drafts[subjectId]?.find((t) => t === thread)) {\n // Move draft to document.\n thread.status = 'active';\n subject.threads ? subject.threads.push(makeRef(thread)) : (subject.threads = [makeRef(thread)]);\n state.drafts[subjectId] = state.drafts[subjectId]?.filter(({ id }) => id !== thread.id);\n intents.push(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.create',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n );\n }\n\n intents.push(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.add',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n threadLength: thread.messages.length,\n messageId: message.id,\n messageLength: text.length,\n },\n }),\n );\n\n return { intents };\n },\n }),\n createResolver({\n intent: ThreadAction.DeleteMessage,\n resolve: ({ subject, thread, messageId, message, messageIndex }, undo) => {\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n if (!undo) {\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n if (!message) {\n return;\n }\n\n if (messageIndex === 0 && thread.messages.length === 1) {\n // If the message is the only message in the thread, delete the thread.\n return {\n intents: [createIntent(ThreadAction.Delete, { subject, thread })],\n };\n } else {\n thread.messages.splice(messageIndex, 1);\n }\n\n return {\n undoable: {\n message: ['message deleted label', { ns: THREAD_PLUGIN }],\n data: { message, messageIndex },\n },\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n messageId: message.id,\n },\n }),\n ],\n };\n } else {\n if (messageIndex === undefined || !message) {\n return;\n }\n\n thread.messages.splice(messageIndex, 0, makeRef(message));\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.undo-delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n messageId: message.id,\n },\n }),\n ],\n };\n }\n },\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["Capabilities", "contributes", "createIntent", "createResolver", "ObjectId", "Ref", "invariant", "DXN", "QueueSubspaceTags", "refFromDXN", "log", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "ObservabilityAction", "ChannelType", "ThreadType", "create", "fullyQualifiedId", "getSpace", "makeRef", "MessageType", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "ThreadAction", "CreateChannel", "resolve", "spaceId", "name", "data", "object", "create", "ChannelType", "queue", "refFromDXN", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "ObjectId", "random", "Create", "cursor", "subject", "threads", "undefined", "err", "log", "error", "typename", "state", "requestCapability", "ThreadCapabilities", "MutableState", "subjectId", "fullyQualifiedId", "thread", "ThreadType", "anchor", "messages", "status", "draft", "drafts", "push", "intents", "createIntent", "Select", "current", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "ToggleResolved", "space", "getSpace", "invariant", "id", "ObservabilityAction", "SendEvent", "properties", "threadId", "Delete", "undo", "index", "findIndex", "t", "splice", "db", "remove", "undoable", "message", "ns", "THREAD_PLUGIN", "savedThread", "add", "AddMessage", "sender", "text", "MessageType", "created", "Date", "toISOString", "blocks", "type", "makeRef", "find", "filter", "threadLength", "length", "messageId", "messageLength", "DeleteMessage", "messageIndex", "Ref", "hasObjectId", "target"]
7
+ }
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-WLY2HMDB.mjs";
5
5
  import {
6
6
  ThreadAction
7
- } from "./chunk-A7RLBTTZ.mjs";
7
+ } from "./chunk-E446MGLP.mjs";
8
8
  import "./chunk-42F2DTMM.mjs";
9
9
 
10
10
  // packages/plugins/plugin-thread/src/capabilities/markdown.ts
@@ -101,12 +101,12 @@ var threads = (state, doc, dispatch) => {
101
101
  // packages/plugins/plugin-thread/src/capabilities/markdown.ts
102
102
  var markdown_default = (context) => contributes(MarkdownCapabilities.Extensions, [
103
103
  ({ document: doc }) => {
104
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
105
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
104
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
105
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
106
106
  return threads(state, doc, dispatch);
107
107
  }
108
108
  ]);
109
109
  export {
110
110
  markdown_default as default
111
111
  };
112
- //# sourceMappingURL=markdown-2ERASVEO.mjs.map
112
+ //# sourceMappingURL=markdown-ZKU23UVD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/markdown.ts", "../../../src/extensions/threads.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { MarkdownCapabilities } from '@dxos/plugin-markdown';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { threads } from '../extensions';\n\nexport default (context: PluginsContext) =>\n contributes(MarkdownCapabilities.Extensions, [\n ({ document: doc }) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const { state } = context.requestCapability(ThreadCapabilities.MutableState);\n return threads(state, doc, dispatch);\n },\n ]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { computed, effect } from '@preact/signals-core';\n\nimport { createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { Ref } from '@dxos/echo-schema';\nimport { RefArray } from '@dxos/live-object';\nimport { type DocumentType } from '@dxos/plugin-markdown/types';\nimport { ThreadType } from '@dxos/plugin-space/types';\nimport { getSpace, getTextInRange, createDocAccessor, fullyQualifiedId } from '@dxos/react-client/echo';\nimport { comments, createExternalCommentSync } from '@dxos/react-ui-editor';\n\nimport { ThreadAction, type ThreadState } from '../types';\n\n// TODO(burdon): Factor out.\nconst getName = (doc: DocumentType, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n};\n\n/**\n * Construct plugins.\n */\nexport const threads = (state: ThreadState, doc?: DocumentType, dispatch?: PromiseIntentDispatcher): Extension => {\n const space = doc && getSpace(doc);\n if (!doc || !space || !dispatch) {\n // Include no-op comments extension here to ensure that the facets are always present when they are expected.\n // TODO(wittjosiah): The Editor should only look for these facets when comments are available.\n return [comments()];\n }\n\n // TODO(Zan): When we have the deepsignal specific equivalent of this we should use that instead.\n const threads = computed(() =>\n [...RefArray.targets(doc.threads), ...(state.drafts[fullyQualifiedId(doc)] ?? [])].filter(\n (thread) => !(thread?.status === 'resolved'),\n ),\n );\n\n return [\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n RefArray.targets(doc.threads).forEach((thread) => {\n if (thread.anchor) {\n // Only update if the name has changed, otherwise this will cause an infinite loop.\n // Skip if the name is empty; this means comment text was deleted, but thread name should remain.\n const name = getName(doc, thread.anchor);\n if (name && name !== thread.name) {\n thread.name = name;\n }\n }\n });\n }\n }),\n\n createExternalCommentSync(\n fullyQualifiedId(doc),\n (sink) => effect(() => sink()),\n () =>\n threads.value\n .filter((thread) => thread?.anchor)\n .map((thread) => ({ id: fullyQualifiedId(thread), cursor: thread.anchor! })),\n ),\n\n comments({\n id: fullyQualifiedId(doc),\n onCreate: ({ cursor }) => {\n const name = getName(doc, cursor);\n void dispatch(createIntent(ThreadAction.Create, { cursor, name, subject: doc }));\n },\n onDelete: ({ id }) => {\n const draft = state.drafts[fullyQualifiedId(doc)];\n if (draft) {\n const index = draft.findIndex((thread) => fullyQualifiedId(thread) === id);\n if (index !== -1) {\n draft.splice(index, 1);\n }\n }\n\n const thread = doc.threads.find(Ref.hasObjectId(id))?.target;\n if (thread) {\n thread.anchor = undefined;\n }\n },\n onUpdate: ({ id, cursor }) => {\n const thread =\n state.drafts[fullyQualifiedId(doc)]?.find((thread) => fullyQualifiedId(thread) === id) ??\n doc.threads.find(Ref.hasObjectId(id))?.target;\n\n if (thread instanceof ThreadType && thread.anchor) {\n thread.name = getName(doc, thread.anchor);\n thread.anchor = cursor;\n }\n },\n onSelect: ({ selection }) => {\n const current = selection.current ?? selection.closest;\n if (current) {\n void dispatch(createIntent(ThreadAction.Select, { current }));\n }\n },\n }),\n ];\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Capabilities", "contributes", "MarkdownCapabilities", "EditorView", "computed", "effect", "createIntent", "Ref", "RefArray", "ThreadType", "getSpace", "getTextInRange", "createDocAccessor", "fullyQualifiedId", "comments", "createExternalCommentSync", "getName", "doc", "anchor", "content", "start", "end", "split", "getTextInRange", "createDocAccessor", "target", "threads", "state", "dispatch", "space", "getSpace", "comments", "computed", "RefArray", "targets", "drafts", "fullyQualifiedId", "filter", "thread", "status", "EditorView", "updateListener", "of", "update", "docChanged", "forEach", "name", "createExternalCommentSync", "sink", "effect", "value", "map", "id", "cursor", "onCreate", "createIntent", "ThreadAction", "Create", "subject", "onDelete", "draft", "index", "findIndex", "splice", "find", "Ref", "hasObjectId", "undefined", "onUpdate", "ThreadType", "onSelect", "selection", "current", "closest", "Select", "context", "contributes", "MarkdownCapabilities", "Extensions", "document", "doc", "dispatchPromise", "dispatch", "requestCapability", "Capabilities", "IntentDispatcher", "state", "ThreadCapabilities", "MutableState", "threads"]
7
+ }