@dxos/plugin-thread 0.8.4-main.2c6827d → 0.8.4-main.3c1ae3b

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 (118) hide show
  1. package/dist/lib/browser/{ChannelContainer-JI3ZRZ5S.mjs → ChannelContainer-3BKLNZ4D.mjs} +4 -4
  2. package/dist/lib/browser/{ChatContainer-6FVFME3R.mjs → ChatContainer-KPY4BAUE.mjs} +2 -2
  3. package/dist/lib/browser/{app-graph-builder-URVQHGMR.mjs → app-graph-builder-TWJ2UCOZ.mjs} +2 -2
  4. package/dist/lib/browser/{blueprint-definition-TQ4JFMZZ.mjs → blueprint-definition-UO43FHAE.mjs} +6 -5
  5. package/dist/lib/browser/blueprint-definition-UO43FHAE.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-6E6VNV6V.mjs +25 -0
  7. package/dist/lib/browser/{chunk-CBUNHCOE.mjs.map → chunk-6E6VNV6V.mjs.map} +3 -3
  8. package/dist/lib/browser/{chunk-F36NHPJG.mjs → chunk-ALZKJOZK.mjs} +2 -2
  9. package/dist/lib/browser/{chunk-R5UOPOO7.mjs → chunk-JDJPMI7V.mjs} +10 -9
  10. package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-VIRD2QSK.mjs → chunk-SS3O5SOQ.mjs} +7 -7
  12. package/dist/lib/browser/{chunk-VIRD2QSK.mjs.map → chunk-SS3O5SOQ.mjs.map} +3 -3
  13. package/dist/lib/browser/{chunk-6LWKNZUV.mjs → chunk-TLOOZTRD.mjs} +1 -1
  14. package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +19 -21
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-YR6W4CRP.mjs → intent-resolver-G33FT3NO.mjs} +15 -11
  18. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +7 -0
  19. package/dist/lib/browser/{markdown-GSOBOXA7.mjs → markdown-GSTZY2JL.mjs} +9 -8
  20. package/dist/lib/browser/markdown-GSTZY2JL.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-root-RAWRPF7Z.mjs → react-root-GRZVEGGE.mjs} +6 -6
  23. package/dist/lib/browser/{react-surface-GOEFSXQ6.mjs → react-surface-C2OIZGFN.mjs} +6 -6
  24. package/dist/lib/browser/repair-JFJLEM2O.mjs +35 -0
  25. package/dist/lib/browser/repair-JFJLEM2O.mjs.map +7 -0
  26. package/dist/lib/browser/{settings-JN2HHORY.mjs → settings-E6IOLK46.mjs} +2 -2
  27. package/dist/lib/browser/types/index.mjs +1 -1
  28. package/dist/lib/node-esm/{ChannelContainer-RQY4PR4F.mjs → ChannelContainer-I4U4TEEY.mjs} +4 -4
  29. package/dist/lib/node-esm/{ChatContainer-KWNON7EN.mjs → ChatContainer-TLQG23K7.mjs} +2 -2
  30. package/dist/lib/node-esm/{app-graph-builder-2IH5RPR7.mjs → app-graph-builder-VD6I2V5H.mjs} +2 -2
  31. package/dist/lib/node-esm/{blueprint-definition-TSX5HHW7.mjs → blueprint-definition-WANHWSF5.mjs} +6 -5
  32. package/dist/lib/node-esm/blueprint-definition-WANHWSF5.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-Y3F2SGNH.mjs → chunk-AB42KYF3.mjs} +2 -2
  34. package/dist/lib/node-esm/{chunk-Z4GUSLWL.mjs → chunk-E5HNHFYH.mjs} +1 -1
  35. package/dist/lib/{browser/chunk-6LWKNZUV.mjs.map → node-esm/chunk-E5HNHFYH.mjs.map} +2 -2
  36. package/dist/lib/node-esm/{chunk-MEIWWPR2.mjs → chunk-P2M364TO.mjs} +10 -9
  37. package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +7 -0
  38. package/dist/lib/node-esm/{chunk-QFCIKJOD.mjs → chunk-RDD44HYY.mjs} +7 -7
  39. package/dist/lib/node-esm/{chunk-QFCIKJOD.mjs.map → chunk-RDD44HYY.mjs.map} +3 -3
  40. package/dist/lib/node-esm/chunk-UPA2Q5YI.mjs +27 -0
  41. package/dist/lib/node-esm/{chunk-I3O6NXMN.mjs.map → chunk-UPA2Q5YI.mjs.map} +3 -3
  42. package/dist/lib/node-esm/index.mjs +19 -21
  43. package/dist/lib/node-esm/index.mjs.map +3 -3
  44. package/dist/lib/node-esm/{intent-resolver-SJFABEE7.mjs → intent-resolver-4PX3WXQG.mjs} +15 -11
  45. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +7 -0
  46. package/dist/lib/node-esm/{markdown-GG5566TL.mjs → markdown-MC5OP2UR.mjs} +9 -8
  47. package/dist/lib/node-esm/markdown-MC5OP2UR.mjs.map +7 -0
  48. package/dist/lib/node-esm/meta.json +1 -1
  49. package/dist/lib/node-esm/{react-root-K5OGECUS.mjs → react-root-5IYK7CTL.mjs} +6 -6
  50. package/dist/lib/node-esm/{react-surface-5QDQD7MN.mjs → react-surface-GWBXMENS.mjs} +6 -6
  51. package/dist/lib/node-esm/repair-RMLR24YR.mjs +36 -0
  52. package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +7 -0
  53. package/dist/lib/node-esm/{settings-VSPM3BIM.mjs → settings-RGZHWDSO.mjs} +2 -2
  54. package/dist/lib/node-esm/types/index.mjs +1 -1
  55. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/index.d.ts +1 -0
  57. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/repair.d.ts +4 -0
  60. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  61. package/dist/types/src/components/ChannelContainer.stories.d.ts +4 -0
  62. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Chat.stories.d.ts +4 -0
  64. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/Comments.stories.d.ts +4 -0
  66. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/MessageContainer.d.ts +3 -1
  68. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  69. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +4 -0
  70. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +4 -0
  72. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  73. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  74. package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
  75. package/dist/types/src/translations.d.ts +4 -0
  76. package/dist/types/src/translations.d.ts.map +1 -1
  77. package/dist/types/src/types/Channel.d.ts +3 -3
  78. package/dist/types/src/types/Channel.d.ts.map +1 -1
  79. package/dist/types/src/types/types.d.ts +114 -141
  80. package/dist/types/src/types/types.d.ts.map +1 -1
  81. package/dist/types/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +47 -47
  83. package/src/ThreadPlugin.tsx +14 -20
  84. package/src/capabilities/index.ts +1 -0
  85. package/src/capabilities/intent-resolver.ts +9 -6
  86. package/src/capabilities/repair.ts +40 -0
  87. package/src/components/MessageContainer.tsx +6 -4
  88. package/src/components/ThreadCompanion.tsx +1 -1
  89. package/src/extensions/threads.ts +7 -6
  90. package/src/functions/create-proposals.ts +5 -4
  91. package/src/translations.ts +2 -0
  92. package/src/types/Channel.ts +3 -3
  93. package/src/types/types.ts +4 -3
  94. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +0 -7
  95. package/dist/lib/browser/chunk-CBUNHCOE.mjs +0 -23
  96. package/dist/lib/browser/chunk-R5UOPOO7.mjs.map +0 -7
  97. package/dist/lib/browser/intent-resolver-YR6W4CRP.mjs.map +0 -7
  98. package/dist/lib/browser/markdown-GSOBOXA7.mjs.map +0 -7
  99. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +0 -7
  100. package/dist/lib/node-esm/chunk-I3O6NXMN.mjs +0 -25
  101. package/dist/lib/node-esm/chunk-MEIWWPR2.mjs.map +0 -7
  102. package/dist/lib/node-esm/chunk-Z4GUSLWL.mjs.map +0 -7
  103. package/dist/lib/node-esm/intent-resolver-SJFABEE7.mjs.map +0 -7
  104. package/dist/lib/node-esm/markdown-GG5566TL.mjs.map +0 -7
  105. /package/dist/lib/browser/{ChannelContainer-JI3ZRZ5S.mjs.map → ChannelContainer-3BKLNZ4D.mjs.map} +0 -0
  106. /package/dist/lib/browser/{ChatContainer-6FVFME3R.mjs.map → ChatContainer-KPY4BAUE.mjs.map} +0 -0
  107. /package/dist/lib/browser/{app-graph-builder-URVQHGMR.mjs.map → app-graph-builder-TWJ2UCOZ.mjs.map} +0 -0
  108. /package/dist/lib/browser/{chunk-F36NHPJG.mjs.map → chunk-ALZKJOZK.mjs.map} +0 -0
  109. /package/dist/lib/browser/{react-root-RAWRPF7Z.mjs.map → react-root-GRZVEGGE.mjs.map} +0 -0
  110. /package/dist/lib/browser/{react-surface-GOEFSXQ6.mjs.map → react-surface-C2OIZGFN.mjs.map} +0 -0
  111. /package/dist/lib/browser/{settings-JN2HHORY.mjs.map → settings-E6IOLK46.mjs.map} +0 -0
  112. /package/dist/lib/node-esm/{ChannelContainer-RQY4PR4F.mjs.map → ChannelContainer-I4U4TEEY.mjs.map} +0 -0
  113. /package/dist/lib/node-esm/{ChatContainer-KWNON7EN.mjs.map → ChatContainer-TLQG23K7.mjs.map} +0 -0
  114. /package/dist/lib/node-esm/{app-graph-builder-2IH5RPR7.mjs.map → app-graph-builder-VD6I2V5H.mjs.map} +0 -0
  115. /package/dist/lib/node-esm/{chunk-Y3F2SGNH.mjs.map → chunk-AB42KYF3.mjs.map} +0 -0
  116. /package/dist/lib/node-esm/{react-root-K5OGECUS.mjs.map → react-root-5IYK7CTL.mjs.map} +0 -0
  117. /package/dist/lib/node-esm/{react-surface-5QDQD7MN.mjs.map → react-surface-GWBXMENS.mjs.map} +0 -0
  118. /package/dist/lib/node-esm/{settings-VSPM3BIM.mjs.map → settings-RGZHWDSO.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-thread",
3
- "version": "0.8.4-main.2c6827d",
3
+ "version": "0.8.4-main.3c1ae3b",
4
4
  "description": "DXOS Threads Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -49,45 +49,45 @@
49
49
  "md5-hex": "5.0.0",
50
50
  "react-resize-detector": "^11.0.1",
51
51
  "wavefile": "^11.0.0",
52
- "@dxos/async": "0.8.4-main.2c6827d",
53
- "@dxos/assistant": "0.8.4-main.2c6827d",
54
- "@dxos/blueprints": "0.8.4-main.2c6827d",
55
- "@dxos/context": "0.8.4-main.2c6827d",
56
- "@dxos/debug": "0.8.4-main.2c6827d",
57
- "@dxos/codec-protobuf": "0.8.4-main.2c6827d",
58
- "@dxos/app-framework": "0.8.4-main.2c6827d",
59
- "@dxos/echo-db": "0.8.4-main.2c6827d",
60
- "@dxos/invariant": "0.8.4-main.2c6827d",
61
- "@dxos/functions": "0.8.4-main.2c6827d",
62
- "@dxos/display-name": "0.8.4-main.2c6827d",
63
- "@dxos/keys": "0.8.4-main.2c6827d",
64
- "@dxos/live-object": "0.8.4-main.2c6827d",
65
- "@dxos/local-storage": "0.8.4-main.2c6827d",
66
- "@dxos/log": "0.8.4-main.2c6827d",
67
- "@dxos/devtools": "0.8.4-main.2c6827d",
68
- "@dxos/plugin-client": "0.8.4-main.2c6827d",
69
- "@dxos/plugin-attention": "0.8.4-main.2c6827d",
70
- "@dxos/plugin-deck": "0.8.4-main.2c6827d",
71
- "@dxos/echo": "0.8.4-main.2c6827d",
72
- "@dxos/plugin-graph": "0.8.4-main.2c6827d",
73
- "@dxos/plugin-observability": "0.8.4-main.2c6827d",
74
- "@dxos/plugin-markdown": "0.8.4-main.2c6827d",
75
- "@dxos/plugin-space": "0.8.4-main.2c6827d",
76
- "@dxos/protocols": "0.8.4-main.2c6827d",
77
- "@dxos/react-ui-attention": "0.8.4-main.2c6827d",
78
- "@dxos/react-client": "0.8.4-main.2c6827d",
79
- "@dxos/react-ui-dnd": "0.8.4-main.2c6827d",
80
- "@dxos/react-ui-form": "0.8.4-main.2c6827d",
81
- "@dxos/react-ui-menu": "0.8.4-main.2c6827d",
82
- "@dxos/react-ui-sfx": "0.8.4-main.2c6827d",
83
- "@dxos/react-ui-stack": "0.8.4-main.2c6827d",
84
- "@dxos/react-ui-editor": "0.8.4-main.2c6827d",
85
- "@dxos/react-ui-tabs": "0.8.4-main.2c6827d",
86
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.2c6827d",
87
- "@dxos/react-ui-thread": "0.8.4-main.2c6827d",
88
- "@dxos/schema": "0.8.4-main.2c6827d",
89
- "@dxos/util": "0.8.4-main.2c6827d",
90
- "@dxos/types": "0.8.4-main.2c6827d"
52
+ "@dxos/app-framework": "0.8.4-main.3c1ae3b",
53
+ "@dxos/assistant": "0.8.4-main.3c1ae3b",
54
+ "@dxos/async": "0.8.4-main.3c1ae3b",
55
+ "@dxos/blueprints": "0.8.4-main.3c1ae3b",
56
+ "@dxos/codec-protobuf": "0.8.4-main.3c1ae3b",
57
+ "@dxos/context": "0.8.4-main.3c1ae3b",
58
+ "@dxos/debug": "0.8.4-main.3c1ae3b",
59
+ "@dxos/devtools": "0.8.4-main.3c1ae3b",
60
+ "@dxos/display-name": "0.8.4-main.3c1ae3b",
61
+ "@dxos/echo": "0.8.4-main.3c1ae3b",
62
+ "@dxos/invariant": "0.8.4-main.3c1ae3b",
63
+ "@dxos/functions": "0.8.4-main.3c1ae3b",
64
+ "@dxos/keys": "0.8.4-main.3c1ae3b",
65
+ "@dxos/live-object": "0.8.4-main.3c1ae3b",
66
+ "@dxos/local-storage": "0.8.4-main.3c1ae3b",
67
+ "@dxos/log": "0.8.4-main.3c1ae3b",
68
+ "@dxos/plugin-attention": "0.8.4-main.3c1ae3b",
69
+ "@dxos/echo-db": "0.8.4-main.3c1ae3b",
70
+ "@dxos/plugin-client": "0.8.4-main.3c1ae3b",
71
+ "@dxos/plugin-deck": "0.8.4-main.3c1ae3b",
72
+ "@dxos/plugin-markdown": "0.8.4-main.3c1ae3b",
73
+ "@dxos/plugin-observability": "0.8.4-main.3c1ae3b",
74
+ "@dxos/plugin-space": "0.8.4-main.3c1ae3b",
75
+ "@dxos/protocols": "0.8.4-main.3c1ae3b",
76
+ "@dxos/react-ui-attention": "0.8.4-main.3c1ae3b",
77
+ "@dxos/react-client": "0.8.4-main.3c1ae3b",
78
+ "@dxos/react-ui-dnd": "0.8.4-main.3c1ae3b",
79
+ "@dxos/react-ui-editor": "0.8.4-main.3c1ae3b",
80
+ "@dxos/react-ui-form": "0.8.4-main.3c1ae3b",
81
+ "@dxos/react-ui-menu": "0.8.4-main.3c1ae3b",
82
+ "@dxos/react-ui-sfx": "0.8.4-main.3c1ae3b",
83
+ "@dxos/react-ui-stack": "0.8.4-main.3c1ae3b",
84
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.3c1ae3b",
85
+ "@dxos/react-ui-tabs": "0.8.4-main.3c1ae3b",
86
+ "@dxos/react-ui-thread": "0.8.4-main.3c1ae3b",
87
+ "@dxos/schema": "0.8.4-main.3c1ae3b",
88
+ "@dxos/types": "0.8.4-main.3c1ae3b",
89
+ "@dxos/util": "0.8.4-main.3c1ae3b",
90
+ "@dxos/plugin-graph": "0.8.4-main.3c1ae3b"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@effect-atom/atom-react": "^0.3.4",
@@ -98,11 +98,11 @@
98
98
  "react": "~19.2.0",
99
99
  "react-dom": "~19.2.0",
100
100
  "vite": "7.1.9",
101
- "@dxos/random": "0.8.4-main.2c6827d",
102
- "@dxos/plugin-theme": "0.8.4-main.2c6827d",
103
- "@dxos/react-ui": "0.8.4-main.2c6827d",
104
- "@dxos/storybook-utils": "0.8.4-main.2c6827d",
105
- "@dxos/react-ui-theme": "0.8.4-main.2c6827d"
101
+ "@dxos/plugin-theme": "0.8.4-main.3c1ae3b",
102
+ "@dxos/random": "0.8.4-main.3c1ae3b",
103
+ "@dxos/react-ui": "0.8.4-main.3c1ae3b",
104
+ "@dxos/react-ui-theme": "0.8.4-main.3c1ae3b",
105
+ "@dxos/storybook-utils": "0.8.4-main.3c1ae3b"
106
106
  },
107
107
  "peerDependencies": {
108
108
  "@effect-atom/atom-react": "^0.3.4",
@@ -110,8 +110,8 @@
110
110
  "effect": "^3.13.3",
111
111
  "react": "^19.0.0",
112
112
  "react-dom": "^19.0.0",
113
- "@dxos/react-ui": "0.8.4-main.2c6827d",
114
- "@dxos/react-ui-theme": "0.8.4-main.2c6827d"
113
+ "@dxos/react-ui": "0.8.4-main.3c1ae3b",
114
+ "@dxos/react-ui-theme": "0.8.4-main.3c1ae3b"
115
115
  },
116
116
  "publishConfig": {
117
117
  "access": "public"
@@ -7,7 +7,7 @@ import { Ref, Type } from '@dxos/echo';
7
7
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
8
8
  import { MarkdownEvents } from '@dxos/plugin-markdown';
9
9
  import { SpaceCapabilities, SpaceEvents } from '@dxos/plugin-space';
10
- import { defineObjectForm } from '@dxos/plugin-space/types';
10
+ import { type CreateObjectIntent } from '@dxos/plugin-space/types';
11
11
  import { translations as threadTranslations } from '@dxos/react-ui-thread';
12
12
  import { AnchoredTo, Message, Thread } from '@dxos/types';
13
13
 
@@ -19,6 +19,7 @@ import {
19
19
  Markdown,
20
20
  ReactRoot,
21
21
  ReactSurface,
22
+ Repair,
22
23
  ThreadState,
23
24
  } from './capabilities';
24
25
  import { THREAD_ITEM, meta } from './meta';
@@ -64,6 +65,10 @@ export const ThreadPlugin = definePlugin(meta, () => [
64
65
  metadata: {
65
66
  icon: 'ph--hash--regular',
66
67
  iconHue: 'rose',
68
+ createObjectIntent: ((_, options) =>
69
+ createIntent(ThreadAction.CreateChannel, {
70
+ spaceId: options.space.id,
71
+ })) satisfies CreateObjectIntent,
67
72
  },
68
73
  }),
69
74
  contributes(Capabilities.Metadata, {
@@ -97,30 +102,16 @@ export const ThreadPlugin = definePlugin(meta, () => [
97
102
  }),
98
103
  ],
99
104
  }),
100
- defineModule({
101
- id: `${meta.id}/module/object-form`,
102
- activatesOn: ClientEvents.SetupSchema,
103
- activate: () =>
104
- contributes(
105
- SpaceCapabilities.ObjectForm,
106
- defineObjectForm({
107
- objectSchema: Channel.Channel,
108
- getIntent: (_, options) =>
109
- createIntent(ThreadAction.CreateChannel, {
110
- spaceId: options.space.id,
111
- }),
112
- }),
113
- ),
114
- }),
115
105
  defineModule({
116
106
  id: `${meta.id}/module/schema`,
117
107
  activatesOn: ClientEvents.SetupSchema,
118
108
  activate: () =>
119
109
  contributes(ClientCapabilities.Schema, [
120
110
  AnchoredTo.AnchoredTo,
121
- Thread.Thread,
111
+ Channel.Channel,
122
112
  Message.Message,
123
113
  Message.MessageV1,
114
+ Thread.Thread,
124
115
  ]),
125
116
  }),
126
117
  defineModule({
@@ -132,9 +123,12 @@ export const ThreadPlugin = definePlugin(meta, () => [
132
123
  id: `${meta.id}/module/on-space-created`,
133
124
  activatesOn: SpaceEvents.SpaceCreated,
134
125
  activate: () =>
135
- contributes(SpaceCapabilities.onCreateSpace, ({ space, rootCollection }) =>
136
- createIntent(ThreadAction.onCreateSpace, { space, rootCollection }),
137
- ),
126
+ contributes(SpaceCapabilities.OnCreateSpace, (params) => createIntent(ThreadAction.OnCreateSpace, params)),
127
+ }),
128
+ defineModule({
129
+ id: `${meta.id}/module/repair`,
130
+ activatesOn: ClientEvents.SpacesReady,
131
+ activate: Repair,
138
132
  }),
139
133
  defineModule({
140
134
  id: `${meta.id}/module/markdown`,
@@ -11,6 +11,7 @@ export const IntentResolver = lazy(() => import('./intent-resolver'));
11
11
  export const Markdown = lazy(() => import('./markdown'));
12
12
  export const ReactRoot = lazy(() => import('./react-root'));
13
13
  export const ReactSurface = lazy(() => import('./react-surface'));
14
+ export const Repair = lazy(() => import('./repair'));
14
15
  export const ThreadSettings = lazy(() => import('./settings'));
15
16
  export const ThreadState = lazy(() => import('./state'));
16
17
 
@@ -10,8 +10,9 @@ import { Obj, Relation, Type } from '@dxos/echo';
10
10
  import { invariant } from '@dxos/invariant';
11
11
  import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';
12
12
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
13
- import { CollectionAction, SpaceAction } from '@dxos/plugin-space/types';
13
+ import { SpaceAction } from '@dxos/plugin-space/types';
14
14
  import { Ref, getSpace } from '@dxos/react-client/echo';
15
+ import { Collection } from '@dxos/schema';
15
16
  import { AnchoredTo, Message, Thread } from '@dxos/types';
16
17
 
17
18
  import { meta } from '../meta';
@@ -22,13 +23,15 @@ import { ThreadCapabilities } from './capabilities';
22
23
  export default (context: PluginContext) =>
23
24
  contributes(Capabilities.IntentResolver, [
24
25
  createResolver({
25
- intent: ThreadAction.onCreateSpace,
26
- resolve: ({ space, rootCollection }) =>
26
+ intent: ThreadAction.OnCreateSpace,
27
+ resolve: ({ space, isDefault, rootCollection }) =>
27
28
  Effect.gen(function* () {
29
+ if (isDefault) {
30
+ return;
31
+ }
32
+
28
33
  const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
29
- const { object: collection } = yield* dispatch(
30
- createIntent(CollectionAction.CreateQueryCollection, { typename: Type.getTypename(Channel.Channel) }),
31
- );
34
+ const collection = Collection.makeManaged({ key: Type.getTypename(Channel.Channel) });
32
35
  rootCollection.objects.push(Ref.make(collection));
33
36
 
34
37
  const { object: channel } = yield* dispatch(
@@ -0,0 +1,40 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { contributes } from '@dxos/app-framework';
6
+ import { Obj, Ref, Type } from '@dxos/echo';
7
+ import { SpaceCapabilities } from '@dxos/plugin-space';
8
+ import { type Space } from '@dxos/react-client/echo';
9
+ import { Collection } from '@dxos/schema';
10
+
11
+ import { Channel } from '../types';
12
+
13
+ export default () =>
14
+ contributes(SpaceCapabilities.Repair, async ({ space, isDefault }) => {
15
+ if (isDefault) {
16
+ return;
17
+ }
18
+
19
+ await ensureSystemCollection(space);
20
+ });
21
+
22
+ /**
23
+ * Ensure the root collection has a system collection for Channels.
24
+ */
25
+ const ensureSystemCollection = async (space: Space) => {
26
+ const rootCollection: Collection.Collection = await space.properties[Collection.Collection.typename]?.load();
27
+ if (!rootCollection) {
28
+ return;
29
+ }
30
+
31
+ const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
32
+ const channels = objects.find(
33
+ (object) => Obj.instanceOf(Collection.Managed, object) && object.key === Type.getTypename(Channel.Channel),
34
+ );
35
+ if (channels) {
36
+ return;
37
+ }
38
+
39
+ rootCollection.objects.push(Ref.make(Collection.makeManaged({ key: Type.getTypename(Channel.Channel) })));
40
+ };
@@ -3,10 +3,11 @@
3
3
  //
4
4
 
5
5
  import { EditorView } from '@codemirror/view';
6
+ import type * as Schema from 'effect/Schema';
6
7
  import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
7
8
 
8
9
  import { Surface } from '@dxos/app-framework/react';
9
- import { type Obj, Ref, type Type } from '@dxos/echo';
10
+ import { type Obj, Ref } from '@dxos/echo';
10
11
  import { PublicKey } from '@dxos/react-client';
11
12
  import { type SpaceMember } from '@dxos/react-client/echo';
12
13
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
@@ -26,7 +27,8 @@ export const buttonGroupClassNames = 'flex flex-row items-center gap-0.5 pie-2';
26
27
  export const buttonClassNames = '!p-1 transition-opacity';
27
28
 
28
29
  export type MessageContainerProps = {
29
- message: Message.Message;
30
+ // TODO(wittjosiah): Find a simpler way to define this type.
31
+ message: Obj.Obj<Schema.Schema.Type<typeof Message.Message>>;
30
32
  members: SpaceMember[];
31
33
  editable?: boolean;
32
34
  onDelete?: (id: string) => void;
@@ -101,13 +103,13 @@ export const MessageContainer = ({
101
103
  {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}
102
104
  {proposalBlock && <ProposalBlock block={proposalBlock} />}
103
105
  {Ref.Array.targets(references).map((reference, index) => (
104
- <MessagePart key={index} part={reference} />
106
+ <MessagePart key={index} part={reference as Obj.Any} />
105
107
  ))}
106
108
  </MessageRoot>
107
109
  );
108
110
  };
109
111
 
110
- const MessagePart = ({ part }: { part: Type.Expando }) => {
112
+ const MessagePart = ({ part }: { part: Obj.Any }) => {
111
113
  return <MessageBlockObjectTile subject={part} />;
112
114
  };
113
115
 
@@ -45,7 +45,7 @@ export const ThreadCompanion = ({ subject }: { subject: any }) => {
45
45
  );
46
46
 
47
47
  const space = getSpace(subject);
48
- const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));
48
+ const objectsAnchoredTo = useQuery(space, Query.select(Filter.id(subject.id)).targetOf(AnchoredTo.AnchoredTo));
49
49
  const anchors = objectsAnchoredTo
50
50
  .toSorted((a, b) => sort?.(a, b) ?? 0)
51
51
  .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))
@@ -8,8 +8,9 @@ import { computed, effect } from '@preact/signals-core';
8
8
 
9
9
  import { type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';
10
10
  import { Filter, Obj, Query, Relation } from '@dxos/echo';
11
+ import { createDocAccessor, getTextInRange } from '@dxos/echo-db';
11
12
  import { type Markdown } from '@dxos/plugin-markdown/types';
12
- import { createDocAccessor, getSource, getSpace, getTextInRange } from '@dxos/react-client/echo';
13
+ import { getSpace } from '@dxos/react-client/echo';
13
14
  import { comments, createExternalCommentSync } from '@dxos/react-ui-editor';
14
15
  import { AnchoredTo, Thread } from '@dxos/types';
15
16
 
@@ -34,11 +35,11 @@ export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?:
34
35
  return [comments()];
35
36
  }
36
37
 
37
- const query = space.db.query(Query.select(Filter.ids(doc.id)).targetOf(AnchoredTo.AnchoredTo));
38
+ const query = space.db.query(Query.select(Filter.id(doc.id)).targetOf(AnchoredTo.AnchoredTo));
38
39
  const unsubscribe = query.subscribe();
39
40
 
40
41
  const anchors = computed(() =>
41
- query.objects
42
+ query.results
42
43
  .filter((anchor) => {
43
44
  const thread = Relation.getSource(anchor);
44
45
  return Obj.instanceOf(Thread.Thread, thread) && thread.status !== 'resolved';
@@ -102,7 +103,7 @@ export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?:
102
103
  }
103
104
  }
104
105
 
105
- const thread = query.objects.find((object) => getSource(object).id === id);
106
+ const thread = query.results.find((object) => Relation.getSource(object).id === id);
106
107
  if (thread) {
107
108
  thread.anchor = undefined;
108
109
  }
@@ -115,9 +116,9 @@ export const threads = (state: ThreadState, doc?: Markdown.Document, dispatch?:
115
116
  draft.anchor = cursor;
116
117
  }
117
118
 
118
- const relation = query.objects.find((object) => getSource(object).id === id);
119
+ const relation = query.results.find((object) => Relation.getSource(object).id === id);
119
120
  if (relation) {
120
- const thread = getSource(relation);
121
+ const thread = Relation.getSource(relation);
121
122
  if (Obj.instanceOf(Thread.Thread, thread)) {
122
123
  thread.name = getName(doc, cursor);
123
124
  relation.anchor = cursor;
@@ -9,8 +9,9 @@ import * as Schema from 'effect/Schema';
9
9
 
10
10
  import { ArtifactId, computeDiffsWithCursors } from '@dxos/assistant';
11
11
  import { Obj, Ref, Relation } from '@dxos/echo';
12
+ import { Database } from '@dxos/echo';
12
13
  import { createDocAccessor } from '@dxos/echo-db';
13
- import { DatabaseService, defineFunction } from '@dxos/functions';
14
+ import { defineFunction } from '@dxos/functions';
14
15
  import { DXN } from '@dxos/keys';
15
16
  import { Markdown } from '@dxos/plugin-markdown/types';
16
17
  import { AnchoredTo, Message, Thread } from '@dxos/types';
@@ -27,7 +28,7 @@ export default defineFunction({
27
28
  }),
28
29
  outputSchema: Schema.Void,
29
30
  handler: Effect.fn(function* ({ data: { id, diffs: _diffs } }) {
30
- const object = yield* DatabaseService.resolve(DXN.parse(id), Markdown.Document);
31
+ const object = yield* Database.Service.resolve(DXN.parse(id), Markdown.Document);
31
32
  const content = yield* Effect.promise(() => object.content.load());
32
33
  const accessor = createDocAccessor(content, ['content']);
33
34
 
@@ -46,8 +47,8 @@ export default defineFunction({
46
47
  [Relation.Target]: object,
47
48
  anchor: cursor,
48
49
  });
49
- yield* DatabaseService.add(thread);
50
- yield* DatabaseService.add(relation);
50
+ yield* Database.Service.add(thread);
51
+ yield* Database.Service.add(relation);
51
52
  }),
52
53
  ),
53
54
  Effect.allWith({ concurrency: 'unbounded' }),
@@ -19,6 +19,7 @@ export const translations = [
19
19
  'object name placeholder': 'New channel',
20
20
  'rename object label': 'Rename channel',
21
21
  'delete object label': 'Delete channel',
22
+ 'object deleted label': 'Channel deleted',
22
23
  },
23
24
  [meta.id]: {
24
25
  'plugin name': 'Chat',
@@ -50,6 +51,7 @@ export const translations = [
50
51
  'comments label': 'Comments',
51
52
  'show all label': 'All comments',
52
53
  'show unresolved label': 'Unresolved comments',
54
+ 'add comment label': 'Add comment',
53
55
 
54
56
  'channel companion label': 'Channel',
55
57
  'call panel label': 'Active Call',
@@ -5,14 +5,14 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Obj, Ref, Type } from '@dxos/echo';
8
- import { FormAnnotation } from '@dxos/echo/internal';
8
+ import { FormInputAnnotation } from '@dxos/echo/internal';
9
9
  import { Thread } from '@dxos/types';
10
10
 
11
11
  const _Channel = Schema.Struct({
12
12
  name: Schema.optional(Schema.String),
13
- defaultThread: Type.Ref(Thread.Thread).pipe(FormAnnotation.set(false)),
13
+ defaultThread: Type.Ref(Thread.Thread).pipe(FormInputAnnotation.set(false)),
14
14
  // TODO(wittjosiah): Should be an "ordered collection".
15
- threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormAnnotation.set(false)),
15
+ threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false)),
16
16
  }).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));
17
17
  export interface Channel extends Schema.Schema.Type<typeof _Channel> {}
18
18
  export interface ChannelEncoded extends Schema.Schema.Encoded<typeof _Channel> {}
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { Type } from '@dxos/echo';
7
+ import { Key } from '@dxos/echo';
8
8
  import { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';
9
9
  import { Collection } from '@dxos/schema';
10
10
  import { Actor, AnchoredTo, Message, Thread } from '@dxos/types';
@@ -14,17 +14,18 @@ import { meta } from '../meta';
14
14
  import * as Channel from './Channel';
15
15
 
16
16
  export namespace ThreadAction {
17
- export class onCreateSpace extends Schema.TaggedClass<onCreateSpace>()(`${meta.id}/action/on-space-created`, {
17
+ export class OnCreateSpace extends Schema.TaggedClass<OnCreateSpace>()(`${meta.id}/action/on-space-created`, {
18
18
  input: Schema.Struct({
19
19
  space: SpaceSchema,
20
20
  rootCollection: Collection.Collection,
21
+ isDefault: Schema.Boolean.pipe(Schema.optional),
21
22
  }),
22
23
  output: Schema.Void,
23
24
  }) {}
24
25
 
25
26
  export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {
26
27
  input: Schema.Struct({
27
- spaceId: Type.SpaceId,
28
+ spaceId: Key.SpaceId,
28
29
  name: Schema.optional(Schema.String),
29
30
  }),
30
31
  output: Schema.Struct({
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/create-proposals.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\nimport { createProposals } from '../functions';\n\nconst functions: FunctionDefinition[] = [createProposals];\n\nexport const ASSISTANT_BLUEPRINT_KEY = 'dxos.org/blueprint/thread';\n\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(\n Capabilities.BlueprintDefinition,\n Blueprint.make({\n key: ASSISTANT_BLUEPRINT_KEY,\n name: 'Thread',\n tools: Blueprint.toolDefinitions({ functions }),\n instructions: Template.make({\n // TODO(wittjosiah): Move example to function input schema annotation.\n source: trim`\n You can update markdown documents via proposals.\n For each diff, respond with the smallest possible matching span.\n For example:\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id goof.\"\n + \"This is good.\"\n `,\n }),\n }),\n ),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId, computeDiffsWithCursors } from '@dxos/assistant';\nimport { Obj, Ref, Relation } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { DXN } from '@dxos/keys';\nimport { Markdown } from '@dxos/plugin-markdown/types';\nimport { AnchoredTo, Message, Thread } from '@dxos/types';\n\nexport default defineFunction({\n key: 'dxos.org/function/thread/create-proposals',\n name: 'Create Proposals',\n description: 'Proposes a set of changes to a document.',\n inputSchema: Schema.Struct({\n id: ArtifactId,\n diffs: Schema.Array(Schema.String).annotations({\n description: 'The diffs to propose for the document.',\n }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ data: { id, diffs: _diffs } }) {\n const object = yield* DatabaseService.resolve(DXN.parse(id), Markdown.Document);\n const content = yield* Effect.promise(() => object.content.load());\n const accessor = createDocAccessor(content, ['content']);\n\n yield* Function.pipe(\n computeDiffsWithCursors(accessor, _diffs),\n Array.map(\n Effect.fnUntraced(function* ({ cursor, text }) {\n const proposal = Obj.make(Message.Message, {\n created: new Date().toISOString(),\n sender: { role: 'assistant' },\n blocks: [{ _tag: 'proposal', text }],\n });\n const thread = Thread.make({ name: 'Proposal', messages: [Ref.make(proposal)], status: 'active' });\n const relation = Relation.make(AnchoredTo.AnchoredTo, {\n [Relation.Source]: thread,\n [Relation.Target]: object,\n anchor: cursor,\n });\n yield* DatabaseService.add(thread);\n yield* DatabaseService.add(relation);\n }),\n ),\n Effect.allWith({ concurrency: 'unbounded' }),\n );\n }),\n});\n"],
5
- "mappings": ";;;AAIA,SAASA,cAA+BC,mBAAmB;AAC3D,SAASC,WAAWC,gBAAgB;AAEpC,SAASC,YAAY;;;ACHrB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,YAAYC,+BAA+B;AACpD,SAASC,KAAKC,KAAKC,gBAAgB;AACnC,SAASC,yBAAyB;AAClC,SAASC,iBAAiBC,sBAAsB;AAChD,SAASC,WAAW;AACpB,SAASC,gBAAgB;AACzB,SAASC,YAAYC,SAASC,cAAc;AAE5C,IAAA,2BAAeC,eAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,cAAO;IACzBC,IAAIC;IACJC,OAAcC,aAAaC,aAAM,EAAEC,YAAY;MAC7CR,aAAa;IACf,CAAA;EACF,CAAA;EACAS,cAAqBC;EACrBC,SAAgBC,UAAG,WAAW,EAAEC,MAAM,EAAEV,IAAIE,OAAOS,OAAM,EAAE,GAAE;AAC3D,UAAMC,SAAS,OAAOC,gBAAgBC,QAAQC,IAAIC,MAAMhB,EAAAA,GAAKiB,SAASC,QAAQ;AAC9E,UAAMC,UAAU,OAAcC,eAAQ,MAAMR,OAAOO,QAAQE,KAAI,CAAA;AAC/D,UAAMC,WAAWC,kBAAkBJ,SAAS;MAAC;KAAU;AAEvD,WAAgBK,cACdC,wBAAwBH,UAAUX,MAAAA,GAC5Be,UACGC,kBAAW,WAAW,EAAEC,QAAQC,KAAI,GAAE;AAC3C,YAAMC,WAAWC,IAAIC,KAAKC,QAAQA,SAAS;QACzCC,UAAS,oBAAIC,KAAAA,GAAOC,YAAW;QAC/BC,QAAQ;UAAEC,MAAM;QAAY;QAC5BC,QAAQ;UAAC;YAAEC,MAAM;YAAYX;UAAK;;MACpC,CAAA;AACA,YAAMY,SAASC,OAAOV,KAAK;QAAEpC,MAAM;QAAY+C,UAAU;UAACC,IAAIZ,KAAKF,QAAAA;;QAAYe,QAAQ;MAAS,CAAA;AAChG,YAAMC,WAAWC,SAASf,KAAKgB,WAAWA,YAAY;QACpD,CAACD,SAASE,MAAM,GAAGR;QACnB,CAACM,SAASG,MAAM,GAAGtC;QACnBuC,QAAQvB;MACV,CAAA;AACA,aAAOf,gBAAgBuC,IAAIX,MAAAA;AAC3B,aAAO5B,gBAAgBuC,IAAIN,QAAAA;IAC7B,CAAA,CAAA,GAEKO,eAAQ;MAAEC,aAAa;IAAY,CAAA,CAAA;EAE9C,CAAA;AACF,CAAA;;;AD5CA,IAAMC,YAAkC;EAACC;;AAElC,IAAMC,0BAA0B;AAEvC,IAAA,gCAAe,MAAyB;EACtCC,YAAYC,aAAaC,WAAWL,SAAAA;EACpCG,YACEC,aAAaE,qBACbC,UAAUC,KAAK;IACbC,KAAKP;IACLQ,MAAM;IACNC,OAAOJ,UAAUK,gBAAgB;MAAEZ;IAAU,CAAA;IAC7Ca,cAAcC,SAASN,KAAK;;MAE1BO,QAAQC;;;;;;;;;IASV,CAAA;EACF,CAAA,CAAA;;",
6
- "names": ["Capabilities", "contributes", "Blueprint", "Template", "trim", "Array", "Effect", "Function", "Schema", "ArtifactId", "computeDiffsWithCursors", "Obj", "Ref", "Relation", "createDocAccessor", "DatabaseService", "defineFunction", "DXN", "Markdown", "AnchoredTo", "Message", "Thread", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "diffs", "Array", "String", "annotations", "outputSchema", "Void", "handler", "fn", "data", "_diffs", "object", "DatabaseService", "resolve", "DXN", "parse", "Markdown", "Document", "content", "promise", "load", "accessor", "createDocAccessor", "pipe", "computeDiffsWithCursors", "map", "fnUntraced", "cursor", "text", "proposal", "Obj", "make", "Message", "created", "Date", "toISOString", "sender", "role", "blocks", "_tag", "thread", "Thread", "messages", "Ref", "status", "relation", "Relation", "AnchoredTo", "Source", "Target", "anchor", "add", "allWith", "concurrency", "functions", "createProposals", "ASSISTANT_BLUEPRINT_KEY", "contributes", "Capabilities", "Functions", "BlueprintDefinition", "Blueprint", "make", "key", "name", "tools", "toolDefinitions", "instructions", "Template", "source", "trim"]
7
- }
@@ -1,23 +0,0 @@
1
- // src/capabilities/index.ts
2
- import { lazy } from "@dxos/app-framework";
3
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-URVQHGMR.mjs"));
4
- var BlueprintDefinition = lazy(() => import("./blueprint-definition-TQ4JFMZZ.mjs"));
5
- var CallManager = lazy(() => import("./call-manager-4YFT4XA6.mjs"));
6
- var IntentResolver = lazy(() => import("./intent-resolver-YR6W4CRP.mjs"));
7
- var Markdown = lazy(() => import("./markdown-GSOBOXA7.mjs"));
8
- var ReactRoot = lazy(() => import("./react-root-RAWRPF7Z.mjs"));
9
- var ReactSurface = lazy(() => import("./react-surface-GOEFSXQ6.mjs"));
10
- var ThreadSettings = lazy(() => import("./settings-JN2HHORY.mjs"));
11
- var ThreadState = lazy(() => import("./state-UYPLBGZJ.mjs"));
12
-
13
- export {
14
- AppGraphBuilder,
15
- BlueprintDefinition,
16
- CallManager,
17
- IntentResolver,
18
- Markdown,
19
- ReactRoot,
20
- ReactSurface,
21
- ThreadState
22
- };
23
- //# sourceMappingURL=chunk-CBUNHCOE.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/Channel.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { FormAnnotation } from '@dxos/echo/internal';\nimport { Thread } from '@dxos/types';\n\nconst _Channel = Schema.Struct({\n name: Schema.optional(Schema.String),\n defaultThread: Type.Ref(Thread.Thread).pipe(FormAnnotation.set(false)),\n // TODO(wittjosiah): Should be an \"ordered collection\".\n threads: Type.Ref(Thread.Thread).pipe(Schema.Array, Schema.mutable, FormAnnotation.set(false)),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));\nexport interface Channel extends Schema.Schema.Type<typeof _Channel> {}\nexport interface ChannelEncoded extends Schema.Schema.Encoded<typeof _Channel> {}\nexport const Channel: Schema.Schema<Channel, ChannelEncoded> = _Channel;\n\nexport const make = (props: Pick<Obj.MakeProps<typeof Channel>, 'name'> = {}) =>\n Obj.make(Channel, {\n ...props,\n defaultThread: Ref.make(Obj.make(Thread.Thread, { messages: [], status: 'active' })),\n threads: [],\n });\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Type } from '@dxos/echo';\nimport { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';\nimport { Collection } from '@dxos/schema';\nimport { Actor, AnchoredTo, Message, Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\n\nimport * as Channel from './Channel';\n\nexport namespace ThreadAction {\n export class onCreateSpace extends Schema.TaggedClass<onCreateSpace>()(`${meta.id}/action/on-space-created`, {\n input: Schema.Struct({\n space: SpaceSchema,\n rootCollection: Collection.Collection,\n }),\n output: Schema.Void,\n }) {}\n\n export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {\n input: Schema.Struct({\n spaceId: Type.SpaceId,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Channel.Channel,\n }),\n }) {}\n\n export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(\n `${meta.id}/action/create-channel-thread`,\n {\n input: Schema.Struct({\n channel: Channel.Channel,\n }),\n output: Schema.Struct({\n object: Thread.Thread,\n }),\n },\n ) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n anchor: Schema.optional(Schema.String),\n subject: EchoObjectSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Delete extends Schema.TaggedClass<Delete>()(`${meta.id}/action/delete`, {\n input: Schema.Struct({\n anchor: AnchoredTo.AnchoredTo,\n subject: EchoObjectSchema,\n thread: Schema.optional(Thread.Thread),\n }),\n output: Schema.Void,\n }) {}\n\n export class Select extends Schema.TaggedClass<Select>()(`${meta.id}/action/select`, {\n input: Schema.Struct({\n current: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${meta.id}/action/toggle-resolved`, {\n input: Schema.Struct({\n thread: Thread.Thread,\n }),\n output: Schema.Void,\n }) {}\n\n export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${meta.id}/action/add-message`, {\n input: Schema.Struct({\n subject: EchoObjectSchema,\n anchor: AnchoredTo.AnchoredTo,\n sender: Actor.Actor,\n text: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${meta.id}/action/delete-message`, {\n input: Schema.Struct({\n anchor: AnchoredTo.AnchoredTo,\n subject: EchoObjectSchema,\n messageId: Schema.String,\n message: Schema.optional(Message.Message),\n messageIndex: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));\nexport type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: Thread.Thread;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** Object toolbar state. */\n toolbar: Record<string, boolean>;\n /** In-memory draft threads. */\n drafts: Record<string, AnchoredTo.AnchoredTo[]>;\n current?: string | undefined;\n};\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Obj", "Ref", "Type", "FormAnnotation", "Thread", "_Channel", "Struct", "name", "optional", "String", "defaultThread", "Type", "Ref", "Thread", "pipe", "FormAnnotation", "set", "threads", "Array", "mutable", "Obj", "typename", "version", "Channel", "make", "props", "messages", "status", "Schema", "Type", "EchoObjectSchema", "SpaceSchema", "Collection", "Actor", "AnchoredTo", "Message", "Thread", "ThreadAction", "onCreateSpace", "TaggedClass", "meta", "id", "input", "Struct", "space", "SpaceSchema", "rootCollection", "Collection", "output", "Void", "CreateChannel", "spaceId", "Type", "SpaceId", "name", "optional", "String", "object", "Channel", "CreateChannelThread", "channel", "Thread", "Create", "anchor", "subject", "EchoObjectSchema", "Delete", "AnchoredTo", "thread", "Select", "current", "ToggleResolved", "AddMessage", "sender", "Actor", "text", "DeleteMessage", "messageId", "message", "Message", "messageIndex", "Number", "ThreadSettingsSchema", "mutable"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, type PluginContext, contributes, createIntent, createResolver } from '@dxos/app-framework';\nimport { sleep } from '@dxos/async';\nimport { Obj, Relation, Type } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { CollectionAction, SpaceAction } from '@dxos/plugin-space/types';\nimport { Ref, getSpace } from '@dxos/react-client/echo';\nimport { AnchoredTo, Message, Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\nimport { Channel, ThreadAction } from '../types';\n\nimport { ThreadCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: ThreadAction.onCreateSpace,\n resolve: ({ space, rootCollection }) =>\n Effect.gen(function* () {\n const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { object: collection } = yield* dispatch(\n createIntent(CollectionAction.CreateQueryCollection, { typename: Type.getTypename(Channel.Channel) }),\n );\n rootCollection.objects.push(Ref.make(collection));\n\n const { object: channel } = yield* dispatch(\n createIntent(ThreadAction.CreateChannel, { name: 'General', spaceId: space.id }),\n );\n space.db.add(channel);\n }),\n }),\n createResolver({\n intent: ThreadAction.CreateChannel,\n resolve: ({ name }) => ({\n data: {\n object: Channel.make({ name }),\n },\n }),\n }),\n createResolver({\n intent: ThreadAction.CreateChannelThread,\n resolve: ({ channel }) => {\n const thread = Thread.make({ status: 'active' });\n channel.threads.push(Ref.make(thread));\n return {\n data: {\n object: thread,\n },\n };\n },\n }),\n // TODO(wittjosiah): Break this up into more composable pieces.\n createResolver({\n intent: ThreadAction.Create,\n resolve: ({ name, anchor: _anchor, subject }) => {\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = Obj.getDXN(subject).toString();\n const thread = Thread.make({ name });\n const anchor = Relation.make(AnchoredTo.AnchoredTo, {\n [Relation.Source]: thread,\n [Relation.Target]: subject,\n anchor: _anchor,\n });\n\n const draft = state.drafts[subjectId];\n if (draft) {\n draft.push(anchor);\n } else {\n state.drafts[subjectId] = [anchor];\n }\n\n return {\n intents: [\n createIntent(ThreadAction.Select, { current: Obj.getDXN(thread).toString() }),\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.getCapability(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: async ({ subject, anchor, thread: _thread }, undo) => {\n const thread = _thread ?? (Relation.getSource(anchor) as Thread.Thread);\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = Obj.getDXN(subject).toString();\n const draft = state.drafts[subjectId];\n if (draft) {\n // Check if we're deleting a draft; if so, remo ve it.\n const index = draft.findIndex((a) => a.id === anchor.id);\n if (index !== -1) {\n draft.splice(index, 1);\n return;\n }\n }\n\n const space = getSpace(anchor);\n if (!space) {\n return;\n }\n\n if (!undo) {\n // TODO(wittjosiah): Without sleep, rendering crashes at `Relation.setSource(anchor)`.\n space.db.remove(anchor);\n await sleep(100);\n space.db.remove(thread);\n\n return {\n undoable: {\n message: ['thread deleted label', { ns: meta.id }],\n data: { thread, anchor },\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): Without sleep, rendering crashes at `Relation.setSource(anchor)`.\n space.db.add(thread);\n await sleep(100);\n space.db.add(anchor);\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: ({ anchor, subject, sender, text }) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = Obj.getDXN(subject).toString();\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n const message = Obj.make(Message.Message, {\n created: new Date().toISOString(),\n sender,\n blocks: [{ _tag: 'text', text }],\n // TODO(wittjosiah): Context based on attention.\n // context: context ? Ref.make(context) : undefined,\n });\n thread.messages.push(Ref.make(message));\n\n const intents = [];\n const draft = state.drafts[subjectId]?.find((a) => a.id === anchor.id);\n if (draft) {\n // Move draft to document.\n thread.status = 'active';\n // TODO(wittjosiah): This causes the thread to flash as it transitions from draft to db.\n state.drafts[subjectId] = state.drafts[subjectId]?.filter((a) => a.id !== anchor.id);\n intents.push(createIntent(SpaceAction.AddObject, { object: thread, target: space, hidden: true }));\n intents.push(\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: AnchoredTo.AnchoredTo,\n source: thread,\n target: subject,\n fields: { anchor: draft.anchor },\n }),\n );\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, anchor, messageId, message, messageIndex }, undo) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\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, anchor })],\n };\n } else {\n thread.messages.splice(messageIndex, 1);\n }\n\n return {\n undoable: {\n message: ['message deleted label', { ns: meta.id }],\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, Ref.make(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": ["Effect", "Capabilities", "contributes", "createIntent", "createResolver", "sleep", "Obj", "Relation", "Type", "invariant", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "ObservabilityAction", "CollectionAction", "SpaceAction", "Ref", "getSpace", "AnchoredTo", "Message", "Thread", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "ThreadAction", "onCreateSpace", "resolve", "space", "rootCollection", "gen", "dispatch", "getCapability", "IntentDispatcher", "object", "collection", "createIntent", "CollectionAction", "CreateQueryCollection", "typename", "Type", "getTypename", "Channel", "objects", "push", "Ref", "make", "channel", "CreateChannel", "name", "spaceId", "id", "db", "add", "data", "CreateChannelThread", "thread", "Thread", "status", "threads", "Create", "anchor", "_anchor", "subject", "state", "ThreadCapabilities", "MutableState", "subjectId", "Obj", "getDXN", "toString", "Relation", "AnchoredTo", "Source", "Target", "draft", "drafts", "intents", "Select", "current", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "ToggleResolved", "undefined", "getSpace", "invariant", "ObservabilityAction", "SendEvent", "properties", "threadId", "Delete", "_thread", "undo", "getSource", "index", "findIndex", "a", "splice", "remove", "sleep", "undoable", "message", "ns", "meta", "AddMessage", "sender", "text", "Message", "created", "Date", "toISOString", "blocks", "_tag", "messages", "find", "filter", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "source", "fields", "threadLength", "length", "messageId", "messageLength", "DeleteMessage", "messageIndex", "hasObjectId"]
7
- }