@dxos/plugin-thread 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

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 (168) hide show
  1. package/dist/lib/browser/{app-graph-builder-SPAZN5XL.mjs → app-graph-builder-XFGLMIGK.mjs} +6 -5
  2. package/dist/lib/browser/app-graph-builder-XFGLMIGK.mjs.map +7 -0
  3. package/dist/lib/browser/blueprint-definition-RWH6FTW7.mjs +17 -0
  4. package/dist/lib/browser/blueprint-definition-RWH6FTW7.mjs.map +7 -0
  5. package/dist/lib/browser/blueprints/index.mjs +3 -3
  6. package/dist/lib/browser/{call-manager-YBRTG6T3.mjs → call-manager-GDGIKJKN.mjs} +4 -4
  7. package/dist/lib/browser/call-manager-GDGIKJKN.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-TAWDJPMD.mjs → chunk-2FIHSX35.mjs} +2 -2
  9. package/dist/lib/browser/chunk-2FIHSX35.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-VZICDGBW.mjs → chunk-4EUEMHNI.mjs} +48 -44
  11. package/dist/lib/browser/chunk-4EUEMHNI.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-ZFLSTQSE.mjs → chunk-CBX65FMW.mjs} +25 -26
  13. package/dist/lib/browser/chunk-CBX65FMW.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-DLO2G3DM.mjs → chunk-JBB73URQ.mjs} +2 -2
  15. package/dist/lib/browser/chunk-JBB73URQ.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +54 -53
  17. package/dist/lib/browser/index.mjs.map +3 -3
  18. package/dist/lib/browser/{markdown-TSXOA3GV.mjs → markdown-YJCSOWXX.mjs} +7 -7
  19. package/dist/lib/browser/markdown-YJCSOWXX.mjs.map +7 -0
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{operation-resolver-MDMEBYH2.mjs → operation-resolver-PROCP5L4.mjs} +9 -9
  22. package/dist/lib/browser/operation-resolver-PROCP5L4.mjs.map +7 -0
  23. package/dist/lib/browser/{react-root-Q7U5D3DA.mjs → react-root-FHK2SVPU.mjs} +6 -6
  24. package/dist/lib/browser/react-root-FHK2SVPU.mjs.map +7 -0
  25. package/dist/lib/browser/{react-surface-WDZQSDWH.mjs → react-surface-7MQA6VSH.mjs} +16 -15
  26. package/dist/lib/browser/react-surface-7MQA6VSH.mjs.map +7 -0
  27. package/dist/lib/browser/{repair-TDKAFAGH.mjs → repair-6OZ75AUU.mjs} +2 -2
  28. package/dist/lib/browser/{settings-OOKKVXV7.mjs → settings-TWKOTGSU.mjs} +5 -4
  29. package/dist/lib/browser/settings-TWKOTGSU.mjs.map +7 -0
  30. package/dist/lib/browser/{state-3LKZHDRI.mjs → state-SJR2GL5G.mjs} +2 -2
  31. package/dist/lib/browser/types/index.mjs +1 -1
  32. package/dist/lib/node-esm/{app-graph-builder-3LJAPDUW.mjs → app-graph-builder-IN6VLJBO.mjs} +6 -5
  33. package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs.map +7 -0
  34. package/dist/lib/node-esm/{blueprint-definition-MZZXXL37.mjs → blueprint-definition-QZ3GXYAN.mjs} +6 -6
  35. package/dist/lib/node-esm/blueprint-definition-QZ3GXYAN.mjs.map +7 -0
  36. package/dist/lib/node-esm/blueprints/index.mjs +3 -3
  37. package/dist/lib/node-esm/{call-manager-MMCTNFOH.mjs → call-manager-36UAAQCJ.mjs} +4 -4
  38. package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-AQHPP6ZX.mjs → chunk-2UQ73JQJ.mjs} +25 -25
  40. package/dist/lib/node-esm/chunk-2UQ73JQJ.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-KRBZBJRI.mjs → chunk-G7PZNN3Z.mjs} +2 -2
  42. package/dist/lib/node-esm/chunk-G7PZNN3Z.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-3RD3IVVD.mjs → chunk-RBRWHRHE.mjs} +48 -44
  44. package/dist/lib/node-esm/chunk-RBRWHRHE.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-ARTUUKTM.mjs → chunk-WMWUXWAS.mjs} +2 -2
  46. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs.map +7 -0
  47. package/dist/lib/node-esm/index.mjs +54 -53
  48. package/dist/lib/node-esm/index.mjs.map +3 -3
  49. package/dist/lib/node-esm/{markdown-N2UJ3D6L.mjs → markdown-6LRP3PAP.mjs} +7 -7
  50. package/dist/lib/node-esm/markdown-6LRP3PAP.mjs.map +7 -0
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/{operation-resolver-7PHDJZA2.mjs → operation-resolver-LPEPV5BF.mjs} +9 -9
  53. package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs.map +7 -0
  54. package/dist/lib/node-esm/{react-root-SZIGQRDZ.mjs → react-root-P5P4VGQJ.mjs} +6 -6
  55. package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs.map +7 -0
  56. package/dist/lib/node-esm/{react-surface-24PNWUDX.mjs → react-surface-M7VI5XG2.mjs} +16 -15
  57. package/dist/lib/node-esm/react-surface-M7VI5XG2.mjs.map +7 -0
  58. package/dist/lib/node-esm/{repair-LHLLGXKF.mjs → repair-6777EPOM.mjs} +2 -2
  59. package/dist/lib/node-esm/{settings-LXZQXSPL.mjs → settings-5O254B3Z.mjs} +5 -4
  60. package/dist/lib/node-esm/settings-5O254B3Z.mjs.map +7 -0
  61. package/dist/lib/node-esm/{state-YYAK5ENM.mjs → state-5R3TZJQE.mjs} +2 -2
  62. package/dist/lib/node-esm/types/index.mjs +1 -1
  63. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  64. package/dist/types/src/blueprints/index.d.ts +1 -1
  65. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  66. package/dist/types/src/blueprints/thread-blueprint.d.ts +3 -20
  67. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +3 -6
  70. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -1
  72. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  76. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  78. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  81. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  83. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  85. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
  87. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  88. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  89. package/dist/types/src/components/ChannelContainer.d.ts +1 -1
  90. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  91. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  94. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -1
  95. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  96. package/dist/types/src/functions/create-proposals.d.ts +8 -1
  97. package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
  98. package/dist/types/src/functions/index.d.ts +13 -1
  99. package/dist/types/src/functions/index.d.ts.map +1 -1
  100. package/dist/types/src/testing/stories.d.ts.map +1 -1
  101. package/dist/types/src/types/Channel.d.ts +422 -422
  102. package/dist/types/src/types/Channel.d.ts.map +1 -1
  103. package/dist/types/src/types/types.d.ts +1674 -1674
  104. package/dist/types/src/types/types.d.ts.map +1 -1
  105. package/dist/types/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +63 -61
  107. package/src/ThreadPlugin.tsx +29 -28
  108. package/src/blueprints/index.ts +1 -1
  109. package/src/blueprints/thread-blueprint.ts +14 -6
  110. package/src/calls-service.stories.tsx +1 -1
  111. package/src/capabilities/app-graph-builder/app-graph-builder.ts +4 -3
  112. package/src/capabilities/blueprint-definition/blueprint-definition.ts +6 -12
  113. package/src/capabilities/call-manager/call-manager.ts +2 -2
  114. package/src/capabilities/markdown/markdown.ts +5 -5
  115. package/src/capabilities/operation-resolver/operation-resolver.ts +7 -7
  116. package/src/capabilities/react-root/react-root.tsx +2 -2
  117. package/src/capabilities/react-surface/react-surface.tsx +13 -12
  118. package/src/capabilities/settings/settings.ts +3 -2
  119. package/src/components/Call/Call.tsx +1 -1
  120. package/src/components/Call/Toolbar.tsx +2 -1
  121. package/src/components/CallSidebar.tsx +1 -1
  122. package/src/components/ChannelContainer.stories.tsx +4 -5
  123. package/src/components/ChannelContainer.tsx +9 -8
  124. package/src/components/Chat.stories.tsx +5 -4
  125. package/src/components/ChatContainer.tsx +15 -16
  126. package/src/components/Comments.stories.tsx +1 -1
  127. package/src/components/Lobby/Lobby.tsx +1 -1
  128. package/src/components/Media/VideoObject.stories.tsx +1 -1
  129. package/src/components/MessageContainer.tsx +2 -2
  130. package/src/components/Participant/Participant.tsx +1 -1
  131. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +1 -1
  132. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +1 -1
  133. package/src/components/ThreadCompanion.tsx +8 -7
  134. package/src/components/ThreadSettings.tsx +3 -2
  135. package/src/functions/create-proposals.ts +9 -9
  136. package/src/functions/index.ts +5 -1
  137. package/src/hooks/analytics.ts +1 -1
  138. package/src/testing/stories.ts +2 -1
  139. package/src/types/Channel.ts +1 -1
  140. package/dist/lib/browser/app-graph-builder-SPAZN5XL.mjs.map +0 -7
  141. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs +0 -17
  142. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs.map +0 -7
  143. package/dist/lib/browser/call-manager-YBRTG6T3.mjs.map +0 -7
  144. package/dist/lib/browser/chunk-DLO2G3DM.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-TAWDJPMD.mjs.map +0 -7
  146. package/dist/lib/browser/chunk-VZICDGBW.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +0 -7
  148. package/dist/lib/browser/markdown-TSXOA3GV.mjs.map +0 -7
  149. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs.map +0 -7
  150. package/dist/lib/browser/react-root-Q7U5D3DA.mjs.map +0 -7
  151. package/dist/lib/browser/react-surface-WDZQSDWH.mjs.map +0 -7
  152. package/dist/lib/browser/settings-OOKKVXV7.mjs.map +0 -7
  153. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs.map +0 -7
  154. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +0 -7
  155. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +0 -7
  158. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs.map +0 -7
  159. package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +0 -7
  160. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs.map +0 -7
  161. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs.map +0 -7
  162. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs.map +0 -7
  163. package/dist/lib/node-esm/react-surface-24PNWUDX.mjs.map +0 -7
  164. package/dist/lib/node-esm/settings-LXZQXSPL.mjs.map +0 -7
  165. /package/dist/lib/browser/{repair-TDKAFAGH.mjs.map → repair-6OZ75AUU.mjs.map} +0 -0
  166. /package/dist/lib/browser/{state-3LKZHDRI.mjs.map → state-SJR2GL5G.mjs.map} +0 -0
  167. /package/dist/lib/node-esm/{repair-LHLLGXKF.mjs.map → repair-6777EPOM.mjs.map} +0 -0
  168. /package/dist/lib/node-esm/{state-YYAK5ENM.mjs.map → state-5R3TZJQE.mjs.map} +0 -0
@@ -1,15 +1,6 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- __export
4
- } from "./chunk-HSLMI22Q.mjs";
5
2
 
6
3
  // src/blueprints/thread-blueprint.ts
7
- var thread_blueprint_exports = {};
8
- __export(thread_blueprint_exports, {
9
- Key: () => Key,
10
- functions: () => functions,
11
- make: () => make
12
- });
13
4
  import { Blueprint, Template } from "@dxos/blueprints";
14
5
  import { trim } from "@dxos/util";
15
6
 
@@ -18,12 +9,10 @@ import * as Array from "effect/Array";
18
9
  import * as Effect from "effect/Effect";
19
10
  import * as Function from "effect/Function";
20
11
  import * as Schema from "effect/Schema";
21
- import { ArtifactId, computeDiffsWithCursors } from "@dxos/assistant";
22
- import { Obj, Ref, Relation } from "@dxos/echo";
23
- import { Database } from "@dxos/echo";
12
+ import { computeDiffsWithCursors } from "@dxos/assistant";
13
+ import { Database, Obj, Ref, Relation, Type } from "@dxos/echo";
24
14
  import { createDocAccessor } from "@dxos/echo-db";
25
15
  import { defineFunction } from "@dxos/functions";
26
- import { DXN } from "@dxos/keys";
27
16
  import { Markdown } from "@dxos/plugin-markdown/types";
28
17
  import { AnchoredTo, Message, Thread } from "@dxos/types";
29
18
  var create_proposals_default = defineFunction({
@@ -31,14 +20,16 @@ var create_proposals_default = defineFunction({
31
20
  name: "Create Proposals",
32
21
  description: "Proposes a set of changes to a document.",
33
22
  inputSchema: Schema.Struct({
34
- id: ArtifactId,
23
+ doc: Type.Ref(Markdown.Document).annotations({
24
+ description: "The ID of the document."
25
+ }),
35
26
  diffs: Schema.Array(Schema.String).annotations({
36
27
  description: "The diffs to propose for the document."
37
28
  })
38
29
  }),
39
30
  outputSchema: Schema.Void,
40
- handler: Effect.fn(function* ({ data: { id, diffs: _diffs } }) {
41
- const object = yield* Database.Service.resolve(DXN.parse(id), Markdown.Document);
31
+ handler: Effect.fn(function* ({ data: { doc, diffs: _diffs } }) {
32
+ const object = yield* Database.load(doc);
42
33
  const content = yield* Effect.promise(() => object.content.load());
43
34
  const accessor = createDocAccessor(content, [
44
35
  "content"
@@ -68,21 +59,24 @@ var create_proposals_default = defineFunction({
68
59
  [Relation.Target]: object,
69
60
  anchor: cursor
70
61
  });
71
- yield* Database.Service.add(thread);
72
- yield* Database.Service.add(relation);
62
+ yield* Database.add(thread);
63
+ yield* Database.add(relation);
73
64
  })), Effect.allWith({
74
65
  concurrency: "unbounded"
75
66
  }));
76
67
  })
77
68
  });
78
69
 
70
+ // src/functions/index.ts
71
+ var ThreadFunctions = {
72
+ CreateProposals: create_proposals_default
73
+ };
74
+
79
75
  // src/blueprints/thread-blueprint.ts
80
- var functions = [
81
- create_proposals_default
82
- ];
83
- var Key = "dxos.org/blueprint/thread";
76
+ var BLUEPRINT_KEY = "dxos.org/blueprint/thread";
77
+ var functions = Object.values(ThreadFunctions);
84
78
  var make = () => Blueprint.make({
85
- key: Key,
79
+ key: BLUEPRINT_KEY,
86
80
  name: "Thread",
87
81
  tools: Blueprint.toolDefinitions({
88
82
  functions
@@ -100,8 +94,14 @@ var make = () => Blueprint.make({
100
94
  `
101
95
  })
102
96
  });
97
+ var blueprint = {
98
+ key: BLUEPRINT_KEY,
99
+ functions,
100
+ make
101
+ };
102
+ var thread_blueprint_default = blueprint;
103
103
 
104
104
  export {
105
- thread_blueprint_exports
105
+ thread_blueprint_default
106
106
  };
107
- //# sourceMappingURL=chunk-AQHPP6ZX.mjs.map
107
+ //# sourceMappingURL=chunk-2UQ73JQJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/blueprints/thread-blueprint.ts", "../../../src/functions/create-proposals.ts", "../../../src/functions/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type AppCapabilities } from '@dxos/app-toolkit';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { trim } from '@dxos/util';\n\nimport { ThreadFunctions } from '../functions';\n\nconst BLUEPRINT_KEY = 'dxos.org/blueprint/thread';\n\nconst functions = Object.values(ThreadFunctions);\n\nconst make = () =>\n Blueprint.make({\n key: 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\nconst blueprint: AppCapabilities.BlueprintDefinition = {\n key: BLUEPRINT_KEY,\n functions,\n make,\n};\n\nexport default blueprint;\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 { computeDiffsWithCursors } from '@dxos/assistant';\nimport { Database, Obj, Ref, Relation, Type } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { defineFunction } from '@dxos/functions';\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 doc: Type.Ref(Markdown.Document).annotations({\n description: 'The ID of the document.',\n }),\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: { doc, diffs: _diffs } }) {\n const object = yield* Database.load(doc);\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* Database.add(thread);\n yield* Database.add(relation);\n }),\n ),\n Effect.allWith({ concurrency: 'unbounded' }),\n );\n }),\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport CreateProposals from './create-proposals';\n\nexport const ThreadFunctions = {\n CreateProposals,\n};\n"],
5
+ "mappings": ";;;AAKA,SAASA,WAAWC,gBAAgB;AACpC,SAASC,YAAY;;;ACFrB,YAAYC,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,+BAA+B;AACxC,SAASC,UAAUC,KAAKC,KAAKC,UAAUC,YAAY;AACnD,SAASC,yBAAyB;AAClC,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,YAAYC,SAASC,cAAc;AAE5C,IAAA,2BAAeC,eAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,cAAO;IACzBC,KAAKC,KAAKC,IAAIC,SAASC,QAAQ,EAAEC,YAAY;MAC3CR,aAAa;IACf,CAAA;IACAS,OAAcC,aAAaC,aAAM,EAAEH,YAAY;MAC7CR,aAAa;IACf,CAAA;EACF,CAAA;EACAY,cAAqBC;EACrBC,SAAgBC,UAAG,WAAW,EAAEC,MAAM,EAAEb,KAAKM,OAAOQ,OAAM,EAAE,GAAE;AAC5D,UAAMC,SAAS,OAAOC,SAASC,KAAKjB,GAAAA;AACpC,UAAMkB,UAAU,OAAcC,eAAQ,MAAMJ,OAAOG,QAAQD,KAAI,CAAA;AAC/D,UAAMG,WAAWC,kBAAkBH,SAAS;MAAC;KAAU;AAEvD,WAAgBI,cACdC,wBAAwBH,UAAUN,MAAAA,GAC5BU,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;QAAElC,MAAM;QAAY6C,UAAU;UAACvC,IAAI4B,KAAKF,QAAAA;;QAAYc,QAAQ;MAAS,CAAA;AAChG,YAAMC,WAAWC,SAASd,KAAKe,WAAWA,YAAY;QACpD,CAACD,SAASE,MAAM,GAAGP;QACnB,CAACK,SAASG,MAAM,GAAGhC;QACnBiC,QAAQtB;MACV,CAAA;AACA,aAAOV,SAASiC,IAAIV,MAAAA;AACpB,aAAOvB,SAASiC,IAAIN,QAAAA;IACtB,CAAA,CAAA,GAEKO,eAAQ;MAAEC,aAAa;IAAY,CAAA,CAAA;EAE9C,CAAA;AACF,CAAA;;;AClDO,IAAMC,kBAAkB;EAC7BC;AACF;;;AFEA,IAAMC,gBAAgB;AAEtB,IAAMC,YAAYC,OAAOC,OAAOC,eAAAA;AAEhC,IAAMC,OAAO,MACXC,UAAUD,KAAK;EACbE,KAAKP;EACLQ,MAAM;EACNC,OAAOH,UAAUI,gBAAgB;IAAET;EAAU,CAAA;EAC7CU,cAAcC,SAASP,KAAK;;IAE1BQ,QAAQC;;;;;;;;;EASV,CAAA;AACF,CAAA;AAEF,IAAMC,YAAiD;EACrDR,KAAKP;EACLC;EACAI;AACF;AAEA,IAAA,2BAAeU;",
6
+ "names": ["Blueprint", "Template", "trim", "Array", "Effect", "Function", "Schema", "computeDiffsWithCursors", "Database", "Obj", "Ref", "Relation", "Type", "createDocAccessor", "defineFunction", "Markdown", "AnchoredTo", "Message", "Thread", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "doc", "Type", "Ref", "Markdown", "Document", "annotations", "diffs", "Array", "String", "outputSchema", "Void", "handler", "fn", "data", "_diffs", "object", "Database", "load", "content", "promise", "accessor", "createDocAccessor", "pipe", "computeDiffsWithCursors", "map", "fnUntraced", "cursor", "text", "proposal", "Obj", "make", "Message", "created", "Date", "toISOString", "sender", "role", "blocks", "_tag", "thread", "Thread", "messages", "status", "relation", "Relation", "AnchoredTo", "Source", "Target", "anchor", "add", "allWith", "concurrency", "ThreadFunctions", "CreateProposals", "BLUEPRINT_KEY", "functions", "Object", "values", "ThreadFunctions", "make", "Blueprint", "key", "name", "tools", "toolDefinitions", "instructions", "Template", "source", "trim", "blueprint"]
7
+ }
@@ -6,7 +6,7 @@ import {
6
6
 
7
7
  // src/hooks/analytics.ts
8
8
  import { useCallback } from "react";
9
- import { useOperationInvoker } from "@dxos/app-framework/react";
9
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
10
10
  import { Obj } from "@dxos/echo";
11
11
  import { ObservabilityOperation } from "@dxos/plugin-observability/types";
12
12
  import { useOnTransition } from "@dxos/react-ui";
@@ -182,4 +182,4 @@ export {
182
182
  useStatus,
183
183
  useVideoStreamTrack
184
184
  };
185
- //# sourceMappingURL=chunk-KRBZBJRI.mjs.map
185
+ //# sourceMappingURL=chunk-G7PZNN3Z.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/analytics.ts", "../../../src/hooks/useBlackCanvasStreamTrack.tsx", "../../../src/hooks/useDebugMode.ts", "../../../src/hooks/useInaudibleAudioStreamTrack.tsx", "../../../src/hooks/useStatus.ts", "../../../src/hooks/useVideoStreamTrack.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Obj } from '@dxos/echo';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/types';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { type ContentBlock } from '@dxos/types';\n\nexport const useOnEditAnalytics = (\n message: any | undefined,\n textBlock: ContentBlock.Text | undefined,\n editing: boolean,\n) => {\n const { invokePromise } = useOperationInvoker();\n\n const onEdit = useCallback(() => {\n if (!message || !textBlock) {\n return;\n }\n const db = Obj.getDatabase(message);\n if (!db) {\n return;\n }\n\n void invokePromise(ObservabilityOperation.SendEvent, {\n name: 'threads.message.update',\n properties: {\n spaceId: db.spaceId,\n messageId: message.id,\n messageLength: textBlock?.text.length,\n },\n });\n }, [invokePromise, message, textBlock]);\n\n useOnTransition(editing, true, false, onEdit);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { createBlackCanvasStreamTrack } from '../calls/util/stub-media-streams';\n\nexport const useBlackCanvasStreamTrack = () => {\n const [blackCanvasStreamTrack, setBlackCanvasStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n useEffect(() => {\n const ctx = new Context();\n scheduleTask(ctx, async () => {\n const blackCanvasStreamTrack = await createBlackCanvasStreamTrack({ ctx, width: 720, height: 480 });\n setBlackCanvasStreamTrack(blackCanvasStreamTrack);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, []);\n\n return blackCanvasStreamTrack;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\n// TODO(burdon): Standardize across plugins/composer.\nexport const useDebugMode = () => {\n const [enabled, setEnabled] = useState(false);\n useEffect(() => {\n const handler = (ev: KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'd' && ev.ctrlKey) {\n ev.preventDefault();\n setEnabled(!enabled);\n }\n };\n\n document.addEventListener('keypress', handler);\n return () => {\n document.removeEventListener('keypress', handler);\n };\n }, [enabled]);\n\n return enabled;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { createInaudibleAudioStreamTrack } from '../calls/util/stub-media-streams';\n\nexport const useInaudibleAudioStreamTrack = () => {\n const [audioStreamTrack, setAudioStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n useEffect(() => {\n const ctx = new Context();\n scheduleTask(ctx, async () => {\n const audioStreamTrack = await createInaudibleAudioStreamTrack({ ctx });\n setAudioStreamTrack(audioStreamTrack);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, []);\n\n return audioStreamTrack;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Generalize and factor out.\nexport const useStatus = (space?: Space, channel?: string) => {\n const [processing, setProcessing] = useState(false);\n useEffect(() => {\n if (!space || !channel) {\n return;\n }\n\n const unsubscribe = space.listen(`status/${channel}`, (status) => {\n const { event } = status.payload ?? {};\n setProcessing(event === 'processing');\n });\n\n const t = setInterval(() => {\n setProcessing((prev: any) => {\n if (typeof prev?.ts === 'number' && Date.now() - prev.ts > 30_000) {\n return undefined;\n } else {\n return prev;\n }\n });\n }, 1_000);\n\n return () => {\n unsubscribe();\n clearInterval(t);\n };\n }, [space, channel]);\n\n return processing;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type RefObject, useEffect, useRef, useState } from 'react';\n\nexport const useVideoStreamTrack = (videoElement: RefObject<HTMLVideoElement | null>, videoSrc: string) => {\n // Get video stream track.\n const [videoStreamTrack, setVideoStreamTrack] = useState<MediaStreamTrack | undefined>(undefined);\n const hadRun = useRef(false);\n useEffect(() => {\n // This is done to capture only one video stream.\n if (!videoElement.current || hadRun.current || !videoSrc) {\n return;\n }\n hadRun.current = true;\n videoElement.current.addEventListener('playing', () => {\n if (videoStreamTrack) {\n return;\n }\n const stream = (videoElement.current as any).captureStream();\n const track = stream.getTracks()[0];\n if (track && !videoStreamTrack) {\n setVideoStreamTrack(track);\n }\n stream.onaddtrack = (event: MediaStreamTrackEvent) => {\n if (event.track.kind === 'video' && !videoStreamTrack) {\n setVideoStreamTrack(event.track);\n }\n };\n });\n videoElement.current.src = videoSrc;\n }, [videoElement.current, videoSrc]);\n\n return videoStreamTrack;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useCallback", "useOperationInvoker", "Obj", "ObservabilityOperation", "useOnTransition", "useOnEditAnalytics", "message", "textBlock", "editing", "invokePromise", "useOperationInvoker", "onEdit", "useCallback", "db", "Obj", "getDatabase", "ObservabilityOperation", "SendEvent", "name", "properties", "spaceId", "messageId", "id", "messageLength", "text", "length", "useOnTransition", "useEffect", "useState", "scheduleTask", "Context", "useBlackCanvasStreamTrack", "blackCanvasStreamTrack", "setBlackCanvasStreamTrack", "useState", "undefined", "useEffect", "ctx", "Context", "scheduleTask", "createBlackCanvasStreamTrack", "width", "height", "dispose", "useEffect", "useState", "useDebugMode", "enabled", "setEnabled", "useState", "useEffect", "handler", "ev", "key", "toLowerCase", "ctrlKey", "preventDefault", "document", "addEventListener", "removeEventListener", "useEffect", "useState", "scheduleTask", "Context", "useInaudibleAudioStreamTrack", "audioStreamTrack", "setAudioStreamTrack", "useState", "undefined", "useEffect", "ctx", "Context", "scheduleTask", "createInaudibleAudioStreamTrack", "dispose", "useEffect", "useState", "useStatus", "space", "channel", "processing", "setProcessing", "useState", "useEffect", "unsubscribe", "listen", "status", "event", "payload", "t", "setInterval", "prev", "ts", "Date", "now", "undefined", "clearInterval", "useEffect", "useRef", "useState", "useVideoStreamTrack", "videoElement", "videoSrc", "videoStreamTrack", "setVideoStreamTrack", "useState", "undefined", "hadRun", "useRef", "useEffect", "current", "addEventListener", "stream", "captureStream", "track", "getTracks", "onaddtrack", "event", "kind", "src"]
7
+ }
@@ -3,7 +3,7 @@ import {
3
3
  useDebugMode,
4
4
  useOnEditAnalytics,
5
5
  useStatus
6
- } from "./chunk-KRBZBJRI.mjs";
6
+ } from "./chunk-G7PZNN3Z.mjs";
7
7
  import {
8
8
  getMessageMetadata
9
9
  } from "./chunk-ABUFOZVX.mjs";
@@ -11,12 +11,12 @@ import {
11
11
  ThreadCapabilities,
12
12
  ThreadOperation,
13
13
  meta
14
- } from "./chunk-ARTUUKTM.mjs";
14
+ } from "./chunk-WMWUXWAS.mjs";
15
15
 
16
16
  // src/components/Call/Call.tsx
17
17
  import { useAtomValue as useAtomValue3 } from "@effect-atom/atom-react";
18
18
  import React9 from "react";
19
- import { useCapability as useCapability3 } from "@dxos/app-framework/react";
19
+ import { useCapability as useCapability3 } from "@dxos/app-framework/ui";
20
20
 
21
21
  // src/components/Media/AudioStream.tsx
22
22
  import React, { useEffect, useRef } from "react";
@@ -105,7 +105,7 @@ VideoObject.displayName = "VideoObject";
105
105
  // src/components/Participant/Participant.tsx
106
106
  import { useAtomValue } from "@effect-atom/atom-react";
107
107
  import React6, { memo as memo2, useMemo as useMemo2 } from "react";
108
- import { useCapability } from "@dxos/app-framework/react";
108
+ import { useCapability } from "@dxos/app-framework/ui";
109
109
 
110
110
  // src/components/ResponsiveGrid/ResponsiveContainer.tsx
111
111
  import React3 from "react";
@@ -535,7 +535,8 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
535
535
  // src/components/Call/Toolbar.tsx
536
536
  import { useAtomValue as useAtomValue2 } from "@effect-atom/atom-react";
537
537
  import React8 from "react";
538
- import { useAppGraph, useCapability as useCapability2 } from "@dxos/app-framework/react";
538
+ import { useCapability as useCapability2 } from "@dxos/app-framework/ui";
539
+ import { useAppGraph } from "@dxos/app-toolkit/ui";
539
540
  import { Obj } from "@dxos/echo";
540
541
  import { Node, useActionRunner } from "@dxos/plugin-graph";
541
542
  import { useActions, useNode } from "@dxos/plugin-graph";
@@ -931,7 +932,7 @@ var command = [
931
932
  // src/components/MessageContainer.tsx
932
933
  import { EditorView } from "@codemirror/view";
933
934
  import React11, { forwardRef as forwardRef2, useCallback as useCallback2, useEffect as useEffect7, useRef as useRef3, useState as useState5 } from "react";
934
- import { Surface } from "@dxos/app-framework/react";
935
+ import { Surface } from "@dxos/app-framework/ui";
935
936
  import { Ref } from "@dxos/echo";
936
937
  import { useObject } from "@dxos/echo-react";
937
938
  import { PublicKey } from "@dxos/react-client";
@@ -1104,7 +1105,7 @@ var MessageBlockObjectTile = /* @__PURE__ */ forwardRef2(({ subject }, forwarded
1104
1105
  return /* @__PURE__ */ React11.createElement(Card.Root, {
1105
1106
  className: mx7("grid col-span-3 plb-1 pr-4", hoverableControls, hoverableFocusedWithinControls),
1106
1107
  ref: forwardedRef
1107
- }, /* @__PURE__ */ React11.createElement(Surface, {
1108
+ }, /* @__PURE__ */ React11.createElement(Surface.Surface, {
1108
1109
  role: "card-content",
1109
1110
  limit: 1,
1110
1111
  data: {
@@ -1154,21 +1155,23 @@ var ChatContainer = ({ classNames, space, thread, context, current, autoFocusTex
1154
1155
  if (!messageRef.current?.length) {
1155
1156
  return false;
1156
1157
  }
1157
- thread.messages.push(Ref2.make(Obj2.make(Message.Message, {
1158
- created: (/* @__PURE__ */ new Date()).toISOString(),
1159
- sender: {
1160
- identityDid: identity.did
1161
- },
1162
- blocks: [
1163
- {
1164
- _tag: "text",
1165
- text: messageRef.current
1166
- }
1167
- ],
1168
- properties: context ? {
1169
- context: Ref2.make(context)
1170
- } : void 0
1171
- })));
1158
+ Obj2.change(thread, (t2) => {
1159
+ t2.messages.push(Ref2.make(Obj2.make(Message.Message, {
1160
+ created: (/* @__PURE__ */ new Date()).toISOString(),
1161
+ sender: {
1162
+ identityDid: identity.did
1163
+ },
1164
+ blocks: [
1165
+ {
1166
+ _tag: "text",
1167
+ text: messageRef.current
1168
+ }
1169
+ ],
1170
+ properties: context ? {
1171
+ context: Ref2.make(context)
1172
+ } : void 0
1173
+ })));
1174
+ });
1172
1175
  messageRef.current = "";
1173
1176
  setAutoFocus(true);
1174
1177
  scrollToEnd("smooth");
@@ -1184,9 +1187,9 @@ var ChatContainer = ({ classNames, space, thread, context, current, autoFocusTex
1184
1187
  classNames
1185
1188
  ]
1186
1189
  }, /* @__PURE__ */ React12.createElement(ScrollArea.Root, {
1187
- classNames: "col-span-2"
1190
+ orientation: "vertical"
1188
1191
  }, /* @__PURE__ */ React12.createElement(ScrollArea.Viewport, {
1189
- classNames: "overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]"
1192
+ classNames: "col-span-2"
1190
1193
  }, /* @__PURE__ */ React12.createElement("div", {
1191
1194
  role: "none",
1192
1195
  className: mx8(threadLayout, "place-self-end")
@@ -1198,7 +1201,7 @@ var ChatContainer = ({ classNames, space, thread, context, current, autoFocusTex
1198
1201
  role: "none",
1199
1202
  className: "bs-px -mbs-px",
1200
1203
  ref: threadScrollRef
1201
- })), /* @__PURE__ */ React12.createElement(ScrollArea.Scrollbar, null, /* @__PURE__ */ React12.createElement(ScrollArea.Thumb, null))), /* @__PURE__ */ React12.createElement(MessageTextbox, {
1204
+ }))), /* @__PURE__ */ React12.createElement(MessageTextbox, {
1202
1205
  extensions,
1203
1206
  autoFocus,
1204
1207
  onSend: handleCreate,
@@ -1212,7 +1215,7 @@ var ChatContainer_default = ChatContainer;
1212
1215
  // src/components/ChannelContainer.tsx
1213
1216
  import { Atom, useAtomValue as useAtomValue4 } from "@effect-atom/atom-react";
1214
1217
  import React13, { useCallback as useCallback3, useEffect as useEffect8, useMemo as useMemo6, useState as useState7 } from "react";
1215
- import { useCapabilities, useCapability as useCapability4 } from "@dxos/app-framework/react";
1218
+ import { useCapabilities, useCapability as useCapability4 } from "@dxos/app-framework/ui";
1216
1219
  import { Context } from "@dxos/context";
1217
1220
  import { failUndefined } from "@dxos/debug";
1218
1221
  import { Obj as Obj3 } from "@dxos/echo";
@@ -1221,7 +1224,7 @@ import { useClient } from "@dxos/react-client";
1221
1224
  import { getSpace } from "@dxos/react-client/echo";
1222
1225
  import { useIdentity as useIdentity3 } from "@dxos/react-client/halo";
1223
1226
  import { ElevationProvider, Input as Input2, useTranslation as useTranslation6 } from "@dxos/react-ui";
1224
- import { ControlGroup, ControlGroupButton, ControlItemInput } from "@dxos/react-ui-form";
1227
+ import { Settings } from "@dxos/react-ui-form";
1225
1228
  import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from "@dxos/react-ui-menu";
1226
1229
  import { useSoundEffect } from "@dxos/react-ui-sfx";
1227
1230
  import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
@@ -1241,7 +1244,7 @@ var ChannelContainer = ({ role, subject: channel, roomId: roomIdProp, fullscreen
1241
1244
  useEffect8(() => {
1242
1245
  const ctx = new Context(void 0, {
1243
1246
  F: __dxlog_file3,
1244
- L: 55
1247
+ L: 56
1245
1248
  });
1246
1249
  callManager.left.on(ctx, (roomId2) => {
1247
1250
  extensions.forEach((extension) => {
@@ -1283,7 +1286,7 @@ var ChannelContainer = ({ role, subject: channel, roomId: roomIdProp, fullscreen
1283
1286
  } catch (err) {
1284
1287
  log2.catch(err, void 0, {
1285
1288
  F: __dxlog_file3,
1286
- L: 99,
1289
+ L: 100,
1287
1290
  S: void 0,
1288
1291
  C: (f, a) => f(...a)
1289
1292
  });
@@ -1300,7 +1303,7 @@ var ChannelContainer = ({ role, subject: channel, roomId: roomIdProp, fullscreen
1300
1303
  } catch (err) {
1301
1304
  log2.catch(err, void 0, {
1302
1305
  F: __dxlog_file3,
1303
- L: 111,
1306
+ L: 112,
1304
1307
  S: void 0,
1305
1308
  C: (f, a) => f(...a)
1306
1309
  });
@@ -1344,9 +1347,9 @@ var DisplayNameMissing = () => {
1344
1347
  client,
1345
1348
  displayName
1346
1349
  ]);
1347
- return /* @__PURE__ */ React13.createElement(ControlGroup, {
1350
+ return /* @__PURE__ */ React13.createElement(Settings.Group, {
1348
1351
  classNames: "p-4 place-content-center"
1349
- }, /* @__PURE__ */ React13.createElement(ControlItemInput, {
1352
+ }, /* @__PURE__ */ React13.createElement(Settings.ItemInput, {
1350
1353
  title: t("display name label"),
1351
1354
  description: t("display name description")
1352
1355
  }, /* @__PURE__ */ React13.createElement(Input2.TextInput, {
@@ -1354,7 +1357,7 @@ var DisplayNameMissing = () => {
1354
1357
  onChange: handleChange,
1355
1358
  placeholder: t("display name input placeholder"),
1356
1359
  classNames: "md:min-is-64"
1357
- })), /* @__PURE__ */ React13.createElement(ControlGroupButton, {
1360
+ })), /* @__PURE__ */ React13.createElement(Settings.GroupButton, {
1358
1361
  disabled: !displayName,
1359
1362
  onClick: handleSave
1360
1363
  }, t("set display name label")));
@@ -1407,7 +1410,7 @@ var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
1407
1410
  // src/components/CallSidebar.tsx
1408
1411
  import { useAtomValue as useAtomValue5 } from "@effect-atom/atom-react";
1409
1412
  import React14 from "react";
1410
- import { useCapability as useCapability5 } from "@dxos/app-framework/react";
1413
+ import { useCapability as useCapability5 } from "@dxos/app-framework/ui";
1411
1414
  var CallSidebar = () => {
1412
1415
  const call = useCapability5(ThreadCapabilities.CallManager);
1413
1416
  const roomId = useAtomValue5(call.roomIdAtom);
@@ -1420,14 +1423,15 @@ var CallSidebar = () => {
1420
1423
  // src/components/ThreadCompanion.tsx
1421
1424
  import { useAtomValue as useAtomValue6 } from "@effect-atom/atom-react";
1422
1425
  import React18, { useCallback as useCallback5, useMemo as useMemo8 } from "react";
1423
- import { Common } from "@dxos/app-framework";
1424
- import { useCapabilities as useCapabilities2, useCapability as useCapability6, useOperationInvoker } from "@dxos/app-framework/react";
1426
+ import { Capabilities } from "@dxos/app-framework";
1427
+ import { useCapabilities as useCapabilities2, useCapability as useCapability6, useOperationInvoker } from "@dxos/app-framework/ui";
1428
+ import { AppCapabilities, CollaborationOperation, LayoutOperation } from "@dxos/app-toolkit";
1425
1429
  import { Filter, Obj as Obj6, Query, Relation as Relation3 } from "@dxos/echo";
1426
1430
  import { Ref as Ref3, useQuery } from "@dxos/react-client/echo";
1427
1431
  import { useIdentity as useIdentity5 } from "@dxos/react-client/halo";
1428
1432
  import { useTranslation as useTranslation10 } from "@dxos/react-ui";
1433
+ import { Layout } from "@dxos/react-ui";
1429
1434
  import { useAttended } from "@dxos/react-ui-attention";
1430
- import { Layout } from "@dxos/react-ui-mosaic";
1431
1435
  import { Tabs } from "@dxos/react-ui-tabs";
1432
1436
  import { AnchoredTo, Thread } from "@dxos/types";
1433
1437
  import { mx as mx10 } from "@dxos/ui-theme";
@@ -1622,10 +1626,10 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
1622
1626
  // src/components/ThreadSettings.tsx
1623
1627
  import React17 from "react";
1624
1628
  import { useTranslation as useTranslation9 } from "@dxos/react-ui";
1625
- import { ControlPage } from "@dxos/react-ui-form";
1629
+ import { Settings as Settings2 } from "@dxos/react-ui-form";
1626
1630
  var ThreadSettings = ({ settings: _settings }) => {
1627
1631
  const { t: _t } = useTranslation9(meta.id);
1628
- return /* @__PURE__ */ React17.createElement(ControlPage, null);
1632
+ return /* @__PURE__ */ React17.createElement(Settings2.Root, null);
1629
1633
  };
1630
1634
 
1631
1635
  // src/components/ThreadCompanion.tsx
@@ -1637,7 +1641,7 @@ var ThreadCompanion = ({ subject }) => {
1637
1641
  const { invokePromise } = useOperationInvoker();
1638
1642
  const identity = useIdentity5();
1639
1643
  const subjectId = Obj6.getDXN(subject).toString();
1640
- const registry = useCapability6(Common.Capability.AtomRegistry);
1644
+ const registry = useCapability6(Capabilities.AtomRegistry);
1641
1645
  const stateAtom = useCapability6(ThreadCapabilities.State);
1642
1646
  const viewStoreAtom = useCapability6(ThreadCapabilities.ViewState);
1643
1647
  const state = useAtomValue6(stateAtom);
@@ -1674,7 +1678,7 @@ var ThreadCompanion = ({ subject }) => {
1674
1678
  viewStoreAtom,
1675
1679
  subjectId
1676
1680
  ]);
1677
- const anchorSorts = useCapabilities2(Common.Capability.AnchorSort);
1681
+ const anchorSorts = useCapabilities2(AppCapabilities.AnchorSort);
1678
1682
  const sort = useMemo8(() => anchorSorts.find(({ key }) => key === Obj6.getTypename(subject))?.sort, [
1679
1683
  anchorSorts,
1680
1684
  subject
@@ -1691,7 +1695,7 @@ var ThreadCompanion = ({ subject }) => {
1691
1695
  ...registry.get(stateAtom),
1692
1696
  current: threadId
1693
1697
  });
1694
- void invokePromise(Common.LayoutOperation.ScrollIntoView, {
1698
+ void invokePromise(LayoutOperation.ScrollIntoView, {
1695
1699
  subject: Obj6.getDXN(subject).toString(),
1696
1700
  cursor: anchor.anchor,
1697
1701
  ref: threadId
@@ -1753,7 +1757,7 @@ var ThreadCompanion = ({ subject }) => {
1753
1757
  if (!proposal || !anchor.anchor) {
1754
1758
  return;
1755
1759
  }
1756
- await invokePromise(Common.CollaborationOperation.AcceptProposal, {
1760
+ await invokePromise(CollaborationOperation.AcceptProposal, {
1757
1761
  subject,
1758
1762
  anchor: anchor.anchor,
1759
1763
  proposal
@@ -1811,4 +1815,4 @@ export {
1811
1815
  ThreadCompanion,
1812
1816
  ThreadSettings
1813
1817
  };
1814
- //# sourceMappingURL=chunk-3RD3IVVD.mjs.map
1818
+ //# sourceMappingURL=chunk-RBRWHRHE.mjs.map