@dxos/plugin-markdown 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a

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 (137) hide show
  1. package/dist/lib/browser/{MarkdownCard-JLUQITYK.mjs → MarkdownCard-AGWOTODZ.mjs} +20 -17
  2. package/dist/lib/browser/MarkdownCard-AGWOTODZ.mjs.map +7 -0
  3. package/dist/lib/browser/{MarkdownContainer-JW7TRDSA.mjs → MarkdownContainer-MV2UNAUV.mjs} +54 -58
  4. package/dist/lib/browser/MarkdownContainer-MV2UNAUV.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-E33BSTYF.mjs → anchor-sort-YWJI3BKT.mjs} +4 -4
  6. package/dist/lib/browser/{anchor-sort-E33BSTYF.mjs.map → anchor-sort-YWJI3BKT.mjs.map} +1 -1
  7. package/dist/lib/browser/{app-graph-serializer-OX62DNPT.mjs → app-graph-serializer-KYDFCUOW.mjs} +7 -7
  8. package/dist/lib/browser/app-graph-serializer-KYDFCUOW.mjs.map +7 -0
  9. package/dist/lib/browser/{blueprint-definition-5YKFUHRU.mjs → blueprint-definition-BHRMFZAC.mjs} +3 -3
  10. package/dist/lib/browser/{chunk-LAVZ2W6X.mjs → chunk-6KU5DKP7.mjs} +6 -5
  11. package/dist/lib/browser/chunk-6KU5DKP7.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-F6JJLKLN.mjs → chunk-HBBEHOP3.mjs} +12 -8
  13. package/dist/lib/browser/chunk-HBBEHOP3.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs → chunk-O6XUPW6S.mjs} +2 -2
  15. package/dist/lib/browser/{chunk-BEE7VQPU.mjs → chunk-XMT6PMU5.mjs} +6 -5
  16. package/dist/lib/browser/chunk-XMT6PMU5.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-Z5PDJNBV.mjs +22 -0
  18. package/dist/lib/browser/index.mjs +9 -8
  19. package/dist/lib/browser/index.mjs.map +3 -3
  20. package/dist/lib/browser/{intent-resolver-WDDH56JC.mjs → intent-resolver-XHVCZZHU.mjs} +5 -5
  21. package/dist/lib/browser/intent-resolver-XHVCZZHU.mjs.map +7 -0
  22. package/dist/lib/browser/meta.json +1 -1
  23. package/dist/lib/browser/{react-surface-L3NTMD4D.mjs → react-surface-3A2GO3BN.mjs} +7 -7
  24. package/dist/lib/browser/{react-surface-L3NTMD4D.mjs.map → react-surface-3A2GO3BN.mjs.map} +1 -1
  25. package/dist/lib/browser/{settings-AABBTB4Q.mjs → settings-XY265Y2Q.mjs} +4 -4
  26. package/dist/lib/browser/{settings-AABBTB4Q.mjs.map → settings-XY265Y2Q.mjs.map} +1 -1
  27. package/dist/lib/browser/{state-FTHQQX7V.mjs → state-6QODXCSZ.mjs} +3 -3
  28. package/dist/lib/browser/{state-FTHQQX7V.mjs.map → state-6QODXCSZ.mjs.map} +1 -1
  29. package/dist/lib/browser/{toolkit-2AJTHG74.mjs → toolkit-YA65QX2S.mjs} +15 -13
  30. package/dist/lib/browser/toolkit-YA65QX2S.mjs.map +7 -0
  31. package/dist/lib/browser/types/index.mjs +1 -1
  32. package/dist/lib/node-esm/{MarkdownCard-XL5EVSJ7.mjs → MarkdownCard-B2IWTFOC.mjs} +20 -17
  33. package/dist/lib/node-esm/MarkdownCard-B2IWTFOC.mjs.map +7 -0
  34. package/dist/lib/node-esm/{MarkdownContainer-HRGQXIXP.mjs → MarkdownContainer-J2R3DLCQ.mjs} +54 -58
  35. package/dist/lib/node-esm/MarkdownContainer-J2R3DLCQ.mjs.map +7 -0
  36. package/dist/lib/node-esm/{anchor-sort-ALP2NH24.mjs → anchor-sort-FCRYL2FX.mjs} +4 -4
  37. package/dist/lib/node-esm/{anchor-sort-ALP2NH24.mjs.map → anchor-sort-FCRYL2FX.mjs.map} +1 -1
  38. package/dist/lib/node-esm/{app-graph-serializer-56TD3BMX.mjs → app-graph-serializer-FAUQM3BH.mjs} +7 -7
  39. package/dist/lib/node-esm/app-graph-serializer-FAUQM3BH.mjs.map +7 -0
  40. package/dist/lib/node-esm/{blueprint-definition-GVW67KGV.mjs → blueprint-definition-XYFKMIDR.mjs} +3 -3
  41. package/dist/lib/node-esm/chunk-7RDNIMTF.mjs +24 -0
  42. package/dist/lib/node-esm/{chunk-DVK63TD3.mjs → chunk-FVI7LPC3.mjs} +12 -8
  43. package/dist/lib/node-esm/chunk-FVI7LPC3.mjs.map +7 -0
  44. package/dist/lib/node-esm/{chunk-FXILAQ5F.mjs → chunk-FWZKC6X5.mjs} +6 -5
  45. package/dist/lib/node-esm/chunk-FWZKC6X5.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs → chunk-XO3IEQJE.mjs} +2 -2
  47. package/dist/lib/node-esm/{chunk-O6EXWGGS.mjs → chunk-ZBXV4ON7.mjs} +6 -5
  48. package/dist/lib/node-esm/chunk-ZBXV4ON7.mjs.map +7 -0
  49. package/dist/lib/node-esm/index.mjs +9 -8
  50. package/dist/lib/node-esm/index.mjs.map +3 -3
  51. package/dist/lib/node-esm/{intent-resolver-2I5HKCUU.mjs → intent-resolver-7A2EXGZQ.mjs} +5 -5
  52. package/dist/lib/node-esm/intent-resolver-7A2EXGZQ.mjs.map +7 -0
  53. package/dist/lib/node-esm/meta.json +1 -1
  54. package/dist/lib/node-esm/{react-surface-YZSZFR5D.mjs → react-surface-RCLL5WVQ.mjs} +7 -7
  55. package/dist/lib/node-esm/{react-surface-YZSZFR5D.mjs.map → react-surface-RCLL5WVQ.mjs.map} +1 -1
  56. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs → settings-H3UDD3KO.mjs} +4 -4
  57. package/dist/lib/node-esm/{settings-CXGR6DH4.mjs.map → settings-H3UDD3KO.mjs.map} +1 -1
  58. package/dist/lib/node-esm/{state-NWMQ3XAI.mjs → state-W3PECOJX.mjs} +3 -3
  59. package/dist/lib/node-esm/{state-NWMQ3XAI.mjs.map → state-W3PECOJX.mjs.map} +1 -1
  60. package/dist/lib/node-esm/{toolkit-RC44I2MI.mjs → toolkit-HSIKUGNK.mjs} +15 -13
  61. package/dist/lib/node-esm/toolkit-HSIKUGNK.mjs.map +7 -0
  62. package/dist/lib/node-esm/types/index.mjs +1 -1
  63. package/dist/types/src/MarkdownPlugin.d.ts +1 -1
  64. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  68. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  69. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -1
  70. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  72. package/dist/types/src/components/MarkdownContainer.stories.d.ts +4 -4
  73. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +4 -4
  75. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  76. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +1 -1
  77. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/Suggestions.stories.d.ts +1 -2
  79. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/Toolbar.stories.d.ts +1 -1
  81. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  82. package/dist/types/src/functions/diff.d.ts.map +1 -1
  83. package/dist/types/src/functions/open.d.ts.map +1 -1
  84. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
  85. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  86. package/dist/types/src/types/Markdown.d.ts +5 -3
  87. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  88. package/dist/types/src/types/MarkdownAction.d.ts +2 -1
  89. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  90. package/dist/types/src/util.d.ts +1 -1
  91. package/dist/types/src/util.d.ts.map +1 -1
  92. package/dist/types/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +54 -54
  94. package/src/MarkdownPlugin.tsx +98 -98
  95. package/src/capabilities/app-graph-serializer.ts +2 -2
  96. package/src/capabilities/artifact-definition.ts +3 -2
  97. package/src/capabilities/intent-resolver.ts +2 -1
  98. package/src/capabilities/toolkit.ts +9 -7
  99. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +3 -6
  100. package/src/components/MarkdownCard/MarkdownCard.tsx +17 -16
  101. package/src/components/MarkdownContainer.stories.tsx +42 -33
  102. package/src/components/MarkdownContainer.tsx +16 -14
  103. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +11 -10
  104. package/src/components/MarkdownEditor/MarkdownEditor.tsx +35 -35
  105. package/src/components/Suggestions.stories.tsx +28 -27
  106. package/src/components/Toolbar.stories.tsx +5 -5
  107. package/src/extensions.tsx +3 -3
  108. package/src/functions/diff.ts +4 -2
  109. package/src/functions/open.ts +4 -2
  110. package/src/hooks/useSelectCurrentThread.tsx +2 -2
  111. package/src/types/Markdown.ts +4 -2
  112. package/src/types/MarkdownAction.ts +1 -1
  113. package/src/util.tsx +8 -2
  114. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +0 -7
  115. package/dist/lib/browser/MarkdownContainer-JW7TRDSA.mjs.map +0 -7
  116. package/dist/lib/browser/app-graph-serializer-OX62DNPT.mjs.map +0 -7
  117. package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-F6JJLKLN.mjs.map +0 -7
  119. package/dist/lib/browser/chunk-LAVZ2W6X.mjs.map +0 -7
  120. package/dist/lib/browser/chunk-SUOK6YMI.mjs +0 -22
  121. package/dist/lib/browser/intent-resolver-WDDH56JC.mjs.map +0 -7
  122. package/dist/lib/browser/toolkit-2AJTHG74.mjs.map +0 -7
  123. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +0 -7
  124. package/dist/lib/node-esm/MarkdownContainer-HRGQXIXP.mjs.map +0 -7
  125. package/dist/lib/node-esm/app-graph-serializer-56TD3BMX.mjs.map +0 -7
  126. package/dist/lib/node-esm/chunk-DVK63TD3.mjs.map +0 -7
  127. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +0 -7
  128. package/dist/lib/node-esm/chunk-JC2YWB5D.mjs +0 -24
  129. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +0 -7
  130. package/dist/lib/node-esm/intent-resolver-2I5HKCUU.mjs.map +0 -7
  131. package/dist/lib/node-esm/toolkit-RC44I2MI.mjs.map +0 -7
  132. /package/dist/lib/browser/{blueprint-definition-5YKFUHRU.mjs.map → blueprint-definition-BHRMFZAC.mjs.map} +0 -0
  133. /package/dist/lib/browser/{chunk-Z7P6JGGW.mjs.map → chunk-O6XUPW6S.mjs.map} +0 -0
  134. /package/dist/lib/browser/{chunk-SUOK6YMI.mjs.map → chunk-Z5PDJNBV.mjs.map} +0 -0
  135. /package/dist/lib/node-esm/{blueprint-definition-GVW67KGV.mjs.map → blueprint-definition-XYFKMIDR.mjs.map} +0 -0
  136. /package/dist/lib/node-esm/{chunk-JC2YWB5D.mjs.map → chunk-7RDNIMTF.mjs.map} +0 -0
  137. /package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs.map → chunk-XO3IEQJE.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-markdown",
3
- "version": "0.8.4-main.dedc0f3",
3
+ "version": "0.8.4-main.ead640a",
4
4
  "description": "DXOS Surface plugin for interacting with Markdown",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -35,69 +35,69 @@
35
35
  "src"
36
36
  ],
37
37
  "dependencies": {
38
- "@automerge/automerge": "3.1.1",
38
+ "@automerge/automerge": "3.1.2",
39
39
  "@codemirror/search": "^6.5.11",
40
- "@codemirror/view": "^6.38.2",
41
- "@effect/ai": "0.25.2",
40
+ "@codemirror/view": "^6.38.4",
41
+ "@effect/ai": "0.29.1",
42
+ "@effect/experimental": "0.56.0",
42
43
  "@preact-signals/safe-react": "^0.9.0",
43
- "@preact/signals-core": "^1.9.0",
44
+ "@preact/signals-core": "^1.12.1",
44
45
  "react-dropzone": "^14.2.3",
45
- "@dxos/ai": "0.8.4-main.dedc0f3",
46
- "@dxos/app-framework": "0.8.4-main.dedc0f3",
47
- "@dxos/assistant": "0.8.4-main.dedc0f3",
48
- "@dxos/async": "0.8.4-main.dedc0f3",
49
- "@dxos/echo": "0.8.4-main.dedc0f3",
50
- "@dxos/blueprints": "0.8.4-main.dedc0f3",
51
- "@dxos/echo-db": "0.8.4-main.dedc0f3",
52
- "@dxos/echo-schema": "0.8.4-main.dedc0f3",
53
- "@dxos/functions": "0.8.4-main.dedc0f3",
54
- "@dxos/invariant": "0.8.4-main.dedc0f3",
55
- "@dxos/lit-ui": "0.8.4-main.dedc0f3",
56
- "@dxos/keys": "0.8.4-main.dedc0f3",
57
- "@dxos/live-object": "0.8.4-main.dedc0f3",
58
- "@dxos/local-storage": "0.8.4-main.dedc0f3",
59
- "@dxos/log": "0.8.4-main.dedc0f3",
60
- "@dxos/plugin-attention": "0.8.4-main.dedc0f3",
61
- "@dxos/plugin-client": "0.8.4-main.dedc0f3",
62
- "@dxos/plugin-deck": "0.8.4-main.dedc0f3",
63
- "@dxos/plugin-graph": "0.8.4-main.dedc0f3",
64
- "@dxos/plugin-preview": "0.8.4-main.dedc0f3",
65
- "@dxos/plugin-theme": "0.8.4-main.dedc0f3",
66
- "@dxos/plugin-space": "0.8.4-main.dedc0f3",
67
- "@dxos/react-client": "0.8.4-main.dedc0f3",
68
- "@dxos/react-hooks": "0.8.4-main.dedc0f3",
69
- "@dxos/react-ui-attention": "0.8.4-main.dedc0f3",
70
- "@dxos/react-ui-editor": "0.8.4-main.dedc0f3",
71
- "@dxos/react-ui-form": "0.8.4-main.dedc0f3",
72
- "@dxos/react-ui-stack": "0.8.4-main.dedc0f3",
73
- "@dxos/schema": "0.8.4-main.dedc0f3",
74
- "@dxos/util": "0.8.4-main.dedc0f3"
46
+ "@dxos/ai": "0.8.4-main.ead640a",
47
+ "@dxos/app-framework": "0.8.4-main.ead640a",
48
+ "@dxos/assistant": "0.8.4-main.ead640a",
49
+ "@dxos/echo": "0.8.4-main.ead640a",
50
+ "@dxos/echo-db": "0.8.4-main.ead640a",
51
+ "@dxos/async": "0.8.4-main.ead640a",
52
+ "@dxos/functions": "0.8.4-main.ead640a",
53
+ "@dxos/keys": "0.8.4-main.ead640a",
54
+ "@dxos/lit-ui": "0.8.4-main.ead640a",
55
+ "@dxos/blueprints": "0.8.4-main.ead640a",
56
+ "@dxos/live-object": "0.8.4-main.ead640a",
57
+ "@dxos/local-storage": "0.8.4-main.ead640a",
58
+ "@dxos/invariant": "0.8.4-main.ead640a",
59
+ "@dxos/log": "0.8.4-main.ead640a",
60
+ "@dxos/plugin-attention": "0.8.4-main.ead640a",
61
+ "@dxos/plugin-client": "0.8.4-main.ead640a",
62
+ "@dxos/plugin-deck": "0.8.4-main.ead640a",
63
+ "@dxos/plugin-graph": "0.8.4-main.ead640a",
64
+ "@dxos/plugin-preview": "0.8.4-main.ead640a",
65
+ "@dxos/plugin-space": "0.8.4-main.ead640a",
66
+ "@dxos/plugin-theme": "0.8.4-main.ead640a",
67
+ "@dxos/react-client": "0.8.4-main.ead640a",
68
+ "@dxos/react-hooks": "0.8.4-main.ead640a",
69
+ "@dxos/react-ui-form": "0.8.4-main.ead640a",
70
+ "@dxos/react-ui-attention": "0.8.4-main.ead640a",
71
+ "@dxos/react-ui-stack": "0.8.4-main.ead640a",
72
+ "@dxos/schema": "0.8.4-main.ead640a",
73
+ "@dxos/util": "0.8.4-main.ead640a",
74
+ "@dxos/react-ui-editor": "0.8.4-main.ead640a"
75
75
  },
76
76
  "devDependencies": {
77
- "@effect-rx/rx-react": "0.38.0",
78
- "@effect/platform": "0.90.2",
79
- "@types/react": "~18.2.0",
80
- "@types/react-dom": "~18.2.0",
81
- "effect": "3.17.7",
82
- "react": "~18.2.0",
83
- "react-dom": "~18.2.0",
84
- "vite": "7.1.1",
85
- "@dxos/plugin-storybook-layout": "0.8.4-main.dedc0f3",
86
- "@dxos/debug": "0.8.4-main.dedc0f3",
87
- "@dxos/plugin-theme": "0.8.4-main.dedc0f3",
88
- "@dxos/random": "0.8.4-main.dedc0f3",
89
- "@dxos/react-ui": "0.8.4-main.dedc0f3",
90
- "@dxos/react-ui-theme": "0.8.4-main.dedc0f3",
91
- "@dxos/storybook-utils": "0.8.4-main.dedc0f3"
77
+ "@effect-rx/rx-react": "0.42.4",
78
+ "@effect/platform": "0.92.1",
79
+ "@types/react": "~19.2.2",
80
+ "@types/react-dom": "~19.2.1",
81
+ "effect": "3.18.3",
82
+ "react": "~19.2.0",
83
+ "react-dom": "~19.2.0",
84
+ "vite": "7.1.9",
85
+ "@dxos/debug": "0.8.4-main.ead640a",
86
+ "@dxos/plugin-storybook-layout": "0.8.4-main.ead640a",
87
+ "@dxos/plugin-theme": "0.8.4-main.ead640a",
88
+ "@dxos/random": "0.8.4-main.ead640a",
89
+ "@dxos/react-ui": "0.8.4-main.ead640a",
90
+ "@dxos/react-ui-theme": "0.8.4-main.ead640a",
91
+ "@dxos/storybook-utils": "0.8.4-main.ead640a"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "@effect-rx/rx-react": "^0.34.1",
95
95
  "@effect/platform": "^0.80.12",
96
96
  "effect": "^3.13.3",
97
- "react": "~18.2.0",
98
- "react-dom": "~18.2.0",
99
- "@dxos/react-ui": "0.8.4-main.dedc0f3",
100
- "@dxos/react-ui-theme": "0.8.4-main.dedc0f3"
97
+ "react": "^19.0.0",
98
+ "react-dom": "^19.0.0",
99
+ "@dxos/react-ui": "0.8.4-main.ead640a",
100
+ "@dxos/react-ui-theme": "0.8.4-main.ead640a"
101
101
  },
102
102
  "publishConfig": {
103
103
  "access": "public"
@@ -28,103 +28,103 @@ import { translations } from './translations';
28
28
  import { Markdown, MarkdownAction } from './types';
29
29
  import { serializer } from './util';
30
30
 
31
- export const MarkdownPlugin = () =>
32
- definePlugin(meta, [
33
- defineModule({
34
- id: `${meta.id}/module/translations`,
35
- activatesOn: Events.SetupTranslations,
36
- activate: () => contributes(Capabilities.Translations, [...translations, ...editorTranslations]),
37
- }),
38
- defineModule({
39
- id: `${meta.id}/module/settings`,
40
- activatesOn: Events.SetupSettings,
41
- activate: MarkdownSettings,
42
- }),
43
- defineModule({
44
- id: `${meta.id}/module/state`,
45
- // TODO(wittjosiah): Does not integrate with settings store.
46
- // Should this be a different event?
47
- // Should settings store be renamed to be more generic?
48
- activatesOn: Events.SetupSettings,
49
- activate: MarkdownState,
50
- }),
51
- defineModule({
52
- id: `${meta.id}/module/metadata`,
53
- activatesOn: Events.SetupMetadata,
54
- activate: () =>
55
- contributes(Capabilities.Metadata, {
56
- id: Markdown.Document.typename,
57
- metadata: {
58
- label: (object: Markdown.Document) => object.name || object.fallbackName,
59
- icon: 'ph--text-aa--regular',
60
- blueprints: [BLUEPRINT_KEY],
61
- graphProps: {
62
- managesAutofocus: true,
63
- },
64
- // TODO(wittjosiah): Move out of metadata.
65
- loadReferences: async (doc: Markdown.Document) => await Ref.Array.loadAll<Obj.Any>([doc.content]),
66
- serializer,
67
- // TODO(wittjosiah): Consider how to do generic comments without these.
68
- comments: 'anchored',
69
- selectionMode: 'multi-range',
70
- getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {
71
- if (doc.content) {
72
- const [start, end] = anchor.split(':');
73
- return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);
74
- }
75
- },
31
+ export const MarkdownPlugin = definePlugin(meta, () => [
32
+ defineModule({
33
+ id: `${meta.id}/module/translations`,
34
+ activatesOn: Events.SetupTranslations,
35
+ activate: () => contributes(Capabilities.Translations, [...translations, ...editorTranslations]),
36
+ }),
37
+ defineModule({
38
+ id: `${meta.id}/module/settings`,
39
+ activatesOn: Events.SetupSettings,
40
+ activate: MarkdownSettings,
41
+ }),
42
+ defineModule({
43
+ id: `${meta.id}/module/state`,
44
+ // TODO(wittjosiah): Does not integrate with settings store.
45
+ // Should this be a different event?
46
+ // Should settings store be renamed to be more generic?
47
+ activatesOn: Events.SetupSettings,
48
+ activate: MarkdownState,
49
+ }),
50
+ defineModule({
51
+ id: `${meta.id}/module/metadata`,
52
+ activatesOn: Events.SetupMetadata,
53
+ activate: () =>
54
+ contributes(Capabilities.Metadata, {
55
+ id: Markdown.Document.typename,
56
+ metadata: {
57
+ label: (object: Markdown.Document) => object.name || object.fallbackName,
58
+ icon: 'ph--text-aa--regular',
59
+ iconClassName: 'text-indigoSurfaceText',
60
+ blueprints: [BLUEPRINT_KEY],
61
+ graphProps: {
62
+ managesAutofocus: true,
76
63
  },
64
+ // TODO(wittjosiah): Move out of metadata.
65
+ loadReferences: async (doc: Markdown.Document) => await Ref.Array.loadAll<Obj.Any>([doc.content]),
66
+ serializer,
67
+ // TODO(wittjosiah): Consider how to do generic comments without these.
68
+ comments: 'anchored',
69
+ selectionMode: 'multi-range',
70
+ getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {
71
+ if (doc.content) {
72
+ const [start, end] = anchor.split(':');
73
+ return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);
74
+ }
75
+ },
76
+ },
77
+ }),
78
+ }),
79
+ defineModule({
80
+ id: `${meta.id}/module/object-form`,
81
+ activatesOn: ClientEvents.SetupSchema,
82
+ activate: () =>
83
+ contributes(
84
+ SpaceCapabilities.ObjectForm,
85
+ defineObjectForm({
86
+ objectSchema: Markdown.Document,
87
+ getIntent: () => createIntent(MarkdownAction.Create, {}),
77
88
  }),
78
- }),
79
- defineModule({
80
- id: `${meta.id}/module/object-form`,
81
- activatesOn: ClientEvents.SetupSchema,
82
- activate: () =>
83
- contributes(
84
- SpaceCapabilities.ObjectForm,
85
- defineObjectForm({
86
- objectSchema: Markdown.Document,
87
- getIntent: () => createIntent(MarkdownAction.Create, {}),
88
- }),
89
- ),
90
- }),
91
- defineModule({
92
- id: `${meta.id}/module/schema`,
93
- activatesOn: ClientEvents.SetupSchema,
94
- activate: () => contributes(ClientCapabilities.Schema, [DataType.Text]),
95
- }),
96
- defineModule({
97
- id: `${meta.id}/module/react-surface`,
98
- activatesOn: Events.SetupReactSurface,
99
- // TODO(wittjosiah): Should occur before the editor is loaded when surfaces activation is more granular.
100
- activatesBefore: [MarkdownEvents.SetupExtensions],
101
- activate: ReactSurface,
102
- }),
103
- defineModule({
104
- id: `${meta.id}/module/intent-resolver`,
105
- activatesOn: Events.SetupIntentResolver,
106
- activate: IntentResolver,
107
- }),
108
- defineModule({
109
- id: `${meta.id}/module/app-graph-serializer`,
110
- activatesOn: Events.AppGraphReady,
111
- activate: AppGraphSerializer,
112
- }),
113
- defineModule({
114
- id: `${meta.id}/module/anchor-sort`,
115
- // TODO(wittjosiah): More relevant event?
116
- activatesOn: Events.AppGraphReady,
117
- activate: AnchorSort,
118
- }),
119
- defineModule({
120
- id: `${meta.id}/module/blueprint`,
121
- activatesOn: Events.SetupArtifactDefinition,
122
- activate: BlueprintDefinition,
123
- }),
124
- defineModule({
125
- id: `${meta.id}/module/toolkit`,
126
- // TODO(wittjosiah): Use a different event.
127
- activatesOn: Events.Startup,
128
- activate: Toolkit,
129
- }),
130
- ]);
89
+ ),
90
+ }),
91
+ defineModule({
92
+ id: `${meta.id}/module/schema`,
93
+ activatesOn: ClientEvents.SetupSchema,
94
+ activate: () => contributes(ClientCapabilities.Schema, [DataType.Text]),
95
+ }),
96
+ defineModule({
97
+ id: `${meta.id}/module/react-surface`,
98
+ activatesOn: Events.SetupReactSurface,
99
+ // TODO(wittjosiah): Should occur before the editor is loaded when surfaces activation is more granular.
100
+ activatesBefore: [MarkdownEvents.SetupExtensions],
101
+ activate: ReactSurface,
102
+ }),
103
+ defineModule({
104
+ id: `${meta.id}/module/intent-resolver`,
105
+ activatesOn: Events.SetupIntentResolver,
106
+ activate: IntentResolver,
107
+ }),
108
+ defineModule({
109
+ id: `${meta.id}/module/app-graph-serializer`,
110
+ activatesOn: Events.AppGraphReady,
111
+ activate: AppGraphSerializer,
112
+ }),
113
+ defineModule({
114
+ id: `${meta.id}/module/anchor-sort`,
115
+ // TODO(wittjosiah): More relevant event?
116
+ activatesOn: Events.AppGraphReady,
117
+ activate: AnchorSort,
118
+ }),
119
+ defineModule({
120
+ id: `${meta.id}/module/blueprint`,
121
+ activatesOn: Events.SetupArtifactDefinition,
122
+ activate: BlueprintDefinition,
123
+ }),
124
+ defineModule({
125
+ id: `${meta.id}/module/toolkit`,
126
+ // TODO(wittjosiah): Use a different event.
127
+ activatesOn: Events.Startup,
128
+ activate: Toolkit,
129
+ }),
130
+ ]);
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { pipe } from 'effect';
5
+ import * as Function from 'effect/Function';
6
6
 
7
7
  import { Capabilities, type PluginContext, chain, contributes, createIntent } from '@dxos/app-framework';
8
8
  import { Obj } from '@dxos/echo';
@@ -42,7 +42,7 @@ export default (context: PluginContext) =>
42
42
 
43
43
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
44
44
  const result = await dispatch(
45
- pipe(
45
+ Function.pipe(
46
46
  createIntent(MarkdownAction.Create, { name: data.name, content: data.data }),
47
47
  chain(SpaceAction.AddObject, { target }),
48
48
  ),
@@ -5,7 +5,8 @@
5
5
  // ISSUE(burdon): defineArtifact
6
6
  // @ts-nocheck
7
7
 
8
- import { Schema, pipe } from 'effect';
8
+ import * as Function from 'effect/Function';
9
+ import * as Schema from 'effect/Schema';
9
10
 
10
11
  import { ToolResult, createTool } from '@dxos/ai';
11
12
  import { Capabilities, chain, contributes, createIntent } from '@dxos/app-framework';
@@ -46,7 +47,7 @@ export default () => {
46
47
  invariant(extensions?.space, 'No space');
47
48
  invariant(extensions?.dispatch, 'No intent dispatcher');
48
49
 
49
- const intent = pipe(
50
+ const intent = Function.pipe(
50
51
  createIntent(MarkdownAction.Create, {
51
52
  spaceId: extensions.space.id,
52
53
  name,
@@ -3,7 +3,8 @@
3
3
  //
4
4
 
5
5
  import { next as A } from '@automerge/automerge';
6
- import { Option, type Schema } from 'effect';
6
+ import * as Option from 'effect/Option';
7
+ import type * as Schema from 'effect/Schema';
7
8
 
8
9
  import {
9
10
  Capabilities,
@@ -2,8 +2,10 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { AiTool, AiToolkit } from '@effect/ai';
6
- import { Effect, Schema } from 'effect';
5
+ import * as Tool from '@effect/ai/Tool';
6
+ import * as Toolkit from '@effect/ai/Toolkit';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Schema from 'effect/Schema';
7
9
 
8
10
  import { Capabilities, type Capability, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
9
11
  import { invariant } from '@dxos/invariant';
@@ -13,8 +15,8 @@ import { SpaceAction } from '@dxos/plugin-space/types';
13
15
  import { MarkdownAction } from '../types';
14
16
 
15
17
  // TODO(burdon): Reconcile with functions (currently reuses plugin framework intents).
16
- class Toolkit extends AiToolkit.make(
17
- AiTool.make('create-document', {
18
+ class MarkdownToolkit extends Toolkit.make(
19
+ Tool.make('create-document', {
18
20
  description: 'Creates a new markdown document.',
19
21
  parameters: {
20
22
  name: Schema.optional(Schema.String),
@@ -26,7 +28,7 @@ class Toolkit extends AiToolkit.make(
26
28
  }),
27
29
  ) {
28
30
  static layer = (context: PluginContext) =>
29
- Toolkit.toLayer({
31
+ MarkdownToolkit.toLayer({
30
32
  'create-document': ({ name, content }) => {
31
33
  const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);
32
34
  const space = getActiveSpace(context);
@@ -42,6 +44,6 @@ class Toolkit extends AiToolkit.make(
42
44
  }
43
45
 
44
46
  export default (context: PluginContext): Capability<any>[] => [
45
- contributes(Capabilities.Toolkit, Toolkit),
46
- contributes(Capabilities.ToolkitHandler, Toolkit.layer(context)),
47
+ contributes(Capabilities.Toolkit, MarkdownToolkit),
48
+ contributes(Capabilities.ToolkitHandler, MarkdownToolkit.layer(context)),
47
49
  ];
@@ -2,8 +2,6 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
@@ -11,8 +9,8 @@ import { IntentPlugin } from '@dxos/app-framework';
11
9
  import { withPluginManager } from '@dxos/app-framework/testing';
12
10
  import { Markdown } from '@dxos/plugin-markdown/types';
13
11
  import { faker } from '@dxos/random';
12
+ import { withTheme } from '@dxos/react-ui/testing';
14
13
  import { CardContainer } from '@dxos/react-ui-stack/testing';
15
- import { withLayout, withTheme } from '@dxos/storybook-utils';
16
14
 
17
15
  import { translations } from '../../translations';
18
16
 
@@ -31,18 +29,17 @@ const meta: Meta<typeof MarkdownCard> = {
31
29
  );
32
30
  },
33
31
  decorators: [
32
+ withTheme,
34
33
  withPluginManager({
35
34
  plugins: [IntentPlugin()],
36
35
  }),
37
- withTheme,
38
- withLayout(),
39
36
  ],
40
37
  parameters: {
41
38
  layout: 'centered',
42
39
  translations,
43
40
  },
44
41
  tags: ['cards'],
45
- } satisfies Meta<typeof MarkdownCard>;
42
+ };
46
43
 
47
44
  export default meta;
48
45
 
@@ -2,20 +2,20 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { pipe } from 'effect';
5
+ import * as Function from 'effect/Function';
6
6
  import React, { useCallback } from 'react';
7
7
 
8
8
  import { LayoutAction, chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
9
  import { Obj } from '@dxos/echo';
10
10
  import { type PreviewProps } from '@dxos/plugin-preview';
11
11
  import { fullyQualifiedId } from '@dxos/react-client/echo';
12
- import { Button, Icon, useTranslation } from '@dxos/react-ui';
12
+ import { IconButton, useTranslation } from '@dxos/react-ui';
13
13
  import { Card } from '@dxos/react-ui-stack';
14
14
  import { DataType } from '@dxos/schema';
15
15
 
16
16
  import { meta } from '../../meta';
17
17
  import { Markdown } from '../../types';
18
- import { getAbstract, getFallbackName } from '../../util';
18
+ import { getContentSnippet, getFallbackName } from '../../util';
19
19
 
20
20
  // TODO(burdon): Factor out.
21
21
  const getTitle = (subject: Markdown.Document | DataType.Text, fallback: string) => {
@@ -29,9 +29,9 @@ const getTitle = (subject: Markdown.Document | DataType.Text, fallback: string)
29
29
  // TODO(burdon): Factor out.
30
30
  const getSnippet = (subject: Markdown.Document | DataType.Text, fallback: string) => {
31
31
  if (Obj.instanceOf(Markdown.Document, subject)) {
32
- return getAbstract(subject.content?.target?.content ?? fallback);
32
+ return Obj.getDescription(subject) || getContentSnippet(subject.content?.target?.content ?? fallback);
33
33
  } else if (Obj.instanceOf(DataType.Text, subject)) {
34
- return getAbstract(subject.content);
34
+ return getContentSnippet(subject.content ?? fallback);
35
35
  }
36
36
  };
37
37
 
@@ -46,7 +46,7 @@ export const MarkdownCard = ({ subject, role }: MarkdownCardProps) => {
46
46
  const handleNavigate = useCallback(
47
47
  () =>
48
48
  dispatch(
49
- pipe(
49
+ Function.pipe(
50
50
  createIntent(LayoutAction.UpdatePopover, {
51
51
  part: 'popover',
52
52
  subject: null,
@@ -60,16 +60,17 @@ export const MarkdownCard = ({ subject, role }: MarkdownCardProps) => {
60
60
 
61
61
  return (
62
62
  <Card.SurfaceRoot role={role}>
63
- <Card.Heading>{getTitle(subject, t('fallback title'))}</Card.Heading>
64
- {snippet && <Card.Text classNames='line-clamp-3 break-words col-span-2'>{snippet}</Card.Text>}
65
- {role === 'card--popover' && (
66
- <Card.Chrome>
67
- <Button onClick={handleNavigate}>
68
- <span className='grow'>{t('navigate to document label')}</span>
69
- <Icon icon='ph--arrow-right--regular' />
70
- </Button>
71
- </Card.Chrome>
72
- )}
63
+ <Card.Heading classNames='flex items-center'>
64
+ {getTitle(subject, t('fallback title'))}
65
+ <span className='grow' />
66
+ <IconButton
67
+ iconOnly
68
+ icon='ph--arrow-right--regular'
69
+ label={t('navigate to document label')}
70
+ onClick={handleNavigate}
71
+ />
72
+ </Card.Heading>
73
+ {snippet && <Card.Text classNames='line-clamp-3 text-sm text-description'>{snippet}</Card.Text>}
73
74
  </Card.SurfaceRoot>
74
75
  );
75
76
  };