@dxos/plugin-space 0.8.2-main.fbd8ed0 → 0.8.2-staging.42af850

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 (156) hide show
  1. package/dist/lib/browser/{app-graph-builder-7X3SIPCD.mjs → app-graph-builder-DCWUULKX.mjs} +5 -5
  2. package/dist/lib/browser/{app-graph-serializer-VRU57AEZ.mjs → app-graph-serializer-MLU7XI2P.mjs} +4 -4
  3. package/dist/lib/browser/{chunk-KVRYWFZU.mjs → chunk-3LN4LJN6.mjs} +3 -8
  4. package/dist/lib/{node-esm/chunk-PIYAWT5N.mjs.map → browser/chunk-3LN4LJN6.mjs.map} +3 -3
  5. package/dist/lib/browser/{chunk-AR5R2F6B.mjs → chunk-7Y4M7GXO.mjs} +37 -31
  6. package/dist/lib/browser/{chunk-AR5R2F6B.mjs.map → chunk-7Y4M7GXO.mjs.map} +1 -1
  7. package/dist/lib/browser/{chunk-IQFFOAWD.mjs → chunk-N5QMRLKI.mjs} +2 -2
  8. package/dist/lib/browser/chunk-Q4BTFH2P.mjs +1900 -0
  9. package/dist/lib/{node-esm/chunk-FI3WV22Y.mjs.map → browser/chunk-Q4BTFH2P.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-UBSVH2NQ.mjs → chunk-VEBKN45O.mjs} +2 -2
  11. package/dist/lib/browser/chunk-W46VVHFM.mjs +288 -0
  12. package/dist/lib/browser/chunk-W46VVHFM.mjs.map +7 -0
  13. package/dist/lib/browser/{identity-created-ANRJHNMQ.mjs → identity-created-O63SIYOF.mjs} +2 -2
  14. package/dist/lib/browser/index.mjs +9 -12
  15. package/dist/lib/browser/index.mjs.map +1 -1
  16. package/dist/lib/browser/{intent-resolver-KRINV5QI.mjs → intent-resolver-KBF3YU6I.mjs} +25 -9
  17. package/dist/lib/browser/intent-resolver-KBF3YU6I.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-root-J3SP2HVW.mjs → react-root-PVKJE4EZ.mjs} +6 -6
  20. package/dist/lib/browser/{react-surface-J7T2IMH4.mjs → react-surface-252P4NCK.mjs} +6 -6
  21. package/dist/lib/browser/{schema-defs-OCBY7APN.mjs → schema-defs-JMN74RNK.mjs} +2 -2
  22. package/dist/lib/browser/{schema-tools-MYC4LTQD.mjs → schema-tools-JIEMHUXV.mjs} +9 -9
  23. package/dist/lib/browser/schema-tools-JIEMHUXV.mjs.map +7 -0
  24. package/dist/lib/browser/{settings-G24447B7.mjs → settings-2IN2WLUK.mjs} +2 -2
  25. package/dist/lib/browser/{spaces-ready-5I3RKYTT.mjs → spaces-ready-L4QAGTDE.mjs} +5 -5
  26. package/dist/lib/browser/{spaces-ready-5I3RKYTT.mjs.map → spaces-ready-L4QAGTDE.mjs.map} +1 -1
  27. package/dist/lib/browser/{state-SI4B5GHC.mjs → state-6HOSHLIN.mjs} +2 -2
  28. package/dist/lib/browser/types/index.mjs +1 -7
  29. package/dist/lib/node/{app-graph-builder-C2ISDMSL.cjs → app-graph-builder-WC445X77.cjs} +40 -40
  30. package/dist/lib/node/{app-graph-serializer-VLBCR3IX.cjs → app-graph-serializer-UPQOQVMJ.cjs} +20 -20
  31. package/dist/lib/node/{chunk-DQN4ZQDW.cjs → chunk-5WLAXYE3.cjs} +40 -34
  32. package/dist/lib/node/{chunk-DQN4ZQDW.cjs.map → chunk-5WLAXYE3.cjs.map} +1 -1
  33. package/dist/lib/node/{chunk-IKIDS6XF.cjs → chunk-7GQGM4ZF.cjs} +7 -13
  34. package/dist/lib/node/{chunk-IKIDS6XF.cjs.map → chunk-7GQGM4ZF.cjs.map} +3 -3
  35. package/dist/lib/node/{chunk-SCATWJKX.cjs → chunk-COQYISES.cjs} +27 -27
  36. package/dist/lib/node/{chunk-5YHUQJVB.cjs → chunk-DXL5TDFP.cjs} +6 -6
  37. package/dist/lib/node/{chunk-K6ZO4WDJ.cjs → chunk-FXHI7JNY.cjs} +121 -130
  38. package/dist/lib/node/chunk-FXHI7JNY.cjs.map +7 -0
  39. package/dist/lib/node/chunk-Q3YZEYZT.cjs +1904 -0
  40. package/dist/lib/node/{chunk-MXBE2VET.cjs.map → chunk-Q3YZEYZT.cjs.map} +3 -3
  41. package/dist/lib/node/{identity-created-NIPYGVG3.cjs → identity-created-UXEAUGC7.cjs} +6 -6
  42. package/dist/lib/node/index.cjs +68 -72
  43. package/dist/lib/node/index.cjs.map +1 -1
  44. package/dist/lib/node/{intent-resolver-MJVRY6YE.cjs → intent-resolver-SVFJKUH7.cjs} +75 -59
  45. package/dist/lib/node/intent-resolver-SVFJKUH7.cjs.map +7 -0
  46. package/dist/lib/node/meta.json +1 -1
  47. package/dist/lib/node/{react-root-M4BZ6VXB.cjs → react-root-DDPDUMCG.cjs} +11 -11
  48. package/dist/lib/node/{react-surface-RYKSYYKM.cjs → react-surface-JUIU37BX.cjs} +44 -44
  49. package/dist/lib/node/{schema-defs-2HJLXSNK.cjs → schema-defs-XLFBG3XK.cjs} +6 -6
  50. package/dist/lib/node/{schema-tools-OE3MFYYH.cjs → schema-tools-ZG6Z2QRC.cjs} +16 -16
  51. package/dist/lib/node/schema-tools-ZG6Z2QRC.cjs.map +7 -0
  52. package/dist/lib/node/{settings-AFWO4AWK.cjs → settings-FOH7EB5C.cjs} +6 -6
  53. package/dist/lib/node/{spaces-ready-BMPXSFHF.cjs → spaces-ready-VXQYCBII.cjs} +14 -14
  54. package/dist/lib/node/{spaces-ready-BMPXSFHF.cjs.map → spaces-ready-VXQYCBII.cjs.map} +1 -1
  55. package/dist/lib/node/{state-L2ZSDKLS.cjs → state-ZT3MTZXB.cjs} +6 -6
  56. package/dist/lib/node/types/index.cjs +12 -18
  57. package/dist/lib/node/types/index.cjs.map +2 -2
  58. package/dist/lib/node-esm/{app-graph-builder-WVCQZ324.mjs → app-graph-builder-E7CCGPQJ.mjs} +5 -5
  59. package/dist/lib/node-esm/{app-graph-serializer-GEUYYXKD.mjs → app-graph-serializer-UCMSLPIA.mjs} +4 -4
  60. package/dist/lib/node-esm/{chunk-PIYAWT5N.mjs → chunk-4X4Y63ND.mjs} +3 -8
  61. package/dist/lib/{browser/chunk-KVRYWFZU.mjs.map → node-esm/chunk-4X4Y63ND.mjs.map} +3 -3
  62. package/dist/lib/node-esm/chunk-FTELJGEG.mjs +289 -0
  63. package/dist/lib/node-esm/chunk-FTELJGEG.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-HNKAG5CX.mjs → chunk-GH2FGJXH.mjs} +37 -31
  65. package/dist/lib/node-esm/{chunk-HNKAG5CX.mjs.map → chunk-GH2FGJXH.mjs.map} +1 -1
  66. package/dist/lib/node-esm/chunk-HL2Z2GNW.mjs +1901 -0
  67. package/dist/lib/{browser/chunk-43UQWMD3.mjs.map → node-esm/chunk-HL2Z2GNW.mjs.map} +3 -3
  68. package/dist/lib/node-esm/{chunk-5NIBYPVF.mjs → chunk-OSPEGYX3.mjs} +2 -2
  69. package/dist/lib/node-esm/{chunk-S2W6HS4A.mjs → chunk-XAZNQ3QN.mjs} +2 -2
  70. package/dist/lib/node-esm/{identity-created-O5X2FFWU.mjs → identity-created-ZECO4NH3.mjs} +2 -2
  71. package/dist/lib/node-esm/index.mjs +9 -12
  72. package/dist/lib/node-esm/index.mjs.map +1 -1
  73. package/dist/lib/node-esm/{intent-resolver-JT6EB47M.mjs → intent-resolver-K2UDBF2R.mjs} +25 -9
  74. package/dist/lib/node-esm/intent-resolver-K2UDBF2R.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-root-S2LW4FS7.mjs → react-root-6F7B3OVO.mjs} +6 -6
  77. package/dist/lib/node-esm/{react-surface-ZNNMO7QQ.mjs → react-surface-NP3Y6BNZ.mjs} +6 -6
  78. package/dist/lib/node-esm/{schema-defs-B74N3GQ5.mjs → schema-defs-QZJS6UXN.mjs} +2 -2
  79. package/dist/lib/node-esm/{schema-tools-YTJLA3NQ.mjs → schema-tools-2Y4D42PD.mjs} +9 -9
  80. package/dist/lib/node-esm/schema-tools-2Y4D42PD.mjs.map +7 -0
  81. package/dist/lib/node-esm/{settings-MJVSCOI4.mjs → settings-Q4XDFSYD.mjs} +2 -2
  82. package/dist/lib/node-esm/{spaces-ready-XKG57SL5.mjs → spaces-ready-JHKPD4PH.mjs} +5 -5
  83. package/dist/lib/node-esm/{spaces-ready-XKG57SL5.mjs.map → spaces-ready-JHKPD4PH.mjs.map} +1 -1
  84. package/dist/lib/node-esm/{state-QUDYGEU6.mjs → state-4ATRHSKA.mjs} +2 -2
  85. package/dist/lib/node-esm/types/index.mjs +1 -7
  86. package/dist/types/src/capabilities/capabilities.d.ts +0 -8
  87. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/index.d.ts +1 -1
  89. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/schema-tools.d.ts +1 -1
  92. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  93. package/dist/types/src/index.d.ts +2 -2
  94. package/dist/types/src/index.d.ts.map +1 -1
  95. package/dist/types/src/types/index.d.ts +0 -1
  96. package/dist/types/src/types/index.d.ts.map +1 -1
  97. package/dist/types/src/types/types.d.ts +17 -1
  98. package/dist/types/src/types/types.d.ts.map +1 -1
  99. package/package.json +48 -48
  100. package/src/capabilities/capabilities.ts +0 -9
  101. package/src/capabilities/intent-resolver.ts +13 -1
  102. package/src/capabilities/schema-tools.ts +8 -8
  103. package/src/capabilities/spaces-ready.ts +1 -1
  104. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +2 -2
  105. package/src/components/PopoverRenameObject.tsx +1 -1
  106. package/src/components/PopoverRenameSpace.tsx +1 -1
  107. package/src/index.ts +2 -2
  108. package/src/types/index.ts +0 -1
  109. package/src/types/types.ts +16 -1
  110. package/dist/lib/browser/chunk-43UQWMD3.mjs +0 -1731
  111. package/dist/lib/browser/chunk-CY35NLWL.mjs +0 -296
  112. package/dist/lib/browser/chunk-CY35NLWL.mjs.map +0 -7
  113. package/dist/lib/browser/intent-resolver-KRINV5QI.mjs.map +0 -7
  114. package/dist/lib/browser/schema-tools-MYC4LTQD.mjs.map +0 -7
  115. package/dist/lib/node/chunk-K6ZO4WDJ.cjs.map +0 -7
  116. package/dist/lib/node/chunk-MXBE2VET.cjs +0 -1735
  117. package/dist/lib/node/intent-resolver-MJVRY6YE.cjs.map +0 -7
  118. package/dist/lib/node/schema-tools-OE3MFYYH.cjs.map +0 -7
  119. package/dist/lib/node-esm/chunk-CLRCW6PU.mjs +0 -297
  120. package/dist/lib/node-esm/chunk-CLRCW6PU.mjs.map +0 -7
  121. package/dist/lib/node-esm/chunk-FI3WV22Y.mjs +0 -1732
  122. package/dist/lib/node-esm/intent-resolver-JT6EB47M.mjs.map +0 -7
  123. package/dist/lib/node-esm/schema-tools-YTJLA3NQ.mjs.map +0 -7
  124. package/dist/types/src/types/thread.d.ts +0 -223
  125. package/dist/types/src/types/thread.d.ts.map +0 -1
  126. package/src/types/thread.ts +0 -30
  127. /package/dist/lib/browser/{app-graph-builder-7X3SIPCD.mjs.map → app-graph-builder-DCWUULKX.mjs.map} +0 -0
  128. /package/dist/lib/browser/{app-graph-serializer-VRU57AEZ.mjs.map → app-graph-serializer-MLU7XI2P.mjs.map} +0 -0
  129. /package/dist/lib/browser/{chunk-IQFFOAWD.mjs.map → chunk-N5QMRLKI.mjs.map} +0 -0
  130. /package/dist/lib/browser/{chunk-UBSVH2NQ.mjs.map → chunk-VEBKN45O.mjs.map} +0 -0
  131. /package/dist/lib/browser/{identity-created-ANRJHNMQ.mjs.map → identity-created-O63SIYOF.mjs.map} +0 -0
  132. /package/dist/lib/browser/{react-root-J3SP2HVW.mjs.map → react-root-PVKJE4EZ.mjs.map} +0 -0
  133. /package/dist/lib/browser/{react-surface-J7T2IMH4.mjs.map → react-surface-252P4NCK.mjs.map} +0 -0
  134. /package/dist/lib/browser/{schema-defs-OCBY7APN.mjs.map → schema-defs-JMN74RNK.mjs.map} +0 -0
  135. /package/dist/lib/browser/{settings-G24447B7.mjs.map → settings-2IN2WLUK.mjs.map} +0 -0
  136. /package/dist/lib/browser/{state-SI4B5GHC.mjs.map → state-6HOSHLIN.mjs.map} +0 -0
  137. /package/dist/lib/node/{app-graph-builder-C2ISDMSL.cjs.map → app-graph-builder-WC445X77.cjs.map} +0 -0
  138. /package/dist/lib/node/{app-graph-serializer-VLBCR3IX.cjs.map → app-graph-serializer-UPQOQVMJ.cjs.map} +0 -0
  139. /package/dist/lib/node/{chunk-SCATWJKX.cjs.map → chunk-COQYISES.cjs.map} +0 -0
  140. /package/dist/lib/node/{chunk-5YHUQJVB.cjs.map → chunk-DXL5TDFP.cjs.map} +0 -0
  141. /package/dist/lib/node/{identity-created-NIPYGVG3.cjs.map → identity-created-UXEAUGC7.cjs.map} +0 -0
  142. /package/dist/lib/node/{react-root-M4BZ6VXB.cjs.map → react-root-DDPDUMCG.cjs.map} +0 -0
  143. /package/dist/lib/node/{react-surface-RYKSYYKM.cjs.map → react-surface-JUIU37BX.cjs.map} +0 -0
  144. /package/dist/lib/node/{schema-defs-2HJLXSNK.cjs.map → schema-defs-XLFBG3XK.cjs.map} +0 -0
  145. /package/dist/lib/node/{settings-AFWO4AWK.cjs.map → settings-FOH7EB5C.cjs.map} +0 -0
  146. /package/dist/lib/node/{state-L2ZSDKLS.cjs.map → state-ZT3MTZXB.cjs.map} +0 -0
  147. /package/dist/lib/node-esm/{app-graph-builder-WVCQZ324.mjs.map → app-graph-builder-E7CCGPQJ.mjs.map} +0 -0
  148. /package/dist/lib/node-esm/{app-graph-serializer-GEUYYXKD.mjs.map → app-graph-serializer-UCMSLPIA.mjs.map} +0 -0
  149. /package/dist/lib/node-esm/{chunk-5NIBYPVF.mjs.map → chunk-OSPEGYX3.mjs.map} +0 -0
  150. /package/dist/lib/node-esm/{chunk-S2W6HS4A.mjs.map → chunk-XAZNQ3QN.mjs.map} +0 -0
  151. /package/dist/lib/node-esm/{identity-created-O5X2FFWU.mjs.map → identity-created-ZECO4NH3.mjs.map} +0 -0
  152. /package/dist/lib/node-esm/{react-root-S2LW4FS7.mjs.map → react-root-6F7B3OVO.mjs.map} +0 -0
  153. /package/dist/lib/node-esm/{react-surface-ZNNMO7QQ.mjs.map → react-surface-NP3Y6BNZ.mjs.map} +0 -0
  154. /package/dist/lib/node-esm/{schema-defs-B74N3GQ5.mjs.map → schema-defs-QZJS6UXN.mjs.map} +0 -0
  155. /package/dist/lib/node-esm/{settings-MJVSCOI4.mjs.map → settings-Q4XDFSYD.mjs.map} +0 -0
  156. /package/dist/lib/node-esm/{state-QUDYGEU6.mjs.map → state-4ATRHSKA.mjs.map} +0 -0
@@ -26,26 +26,26 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_root_M4BZ6VXB_exports = {};
30
- __export(react_root_M4BZ6VXB_exports, {
29
+ var react_root_DDPDUMCG_exports = {};
30
+ __export(react_root_DDPDUMCG_exports, {
31
31
  default: () => react_root_default
32
32
  });
33
- module.exports = __toCommonJS(react_root_M4BZ6VXB_exports);
34
- var import_chunk_MXBE2VET = require("./chunk-MXBE2VET.cjs");
35
- var import_chunk_DQN4ZQDW = require("./chunk-DQN4ZQDW.cjs");
36
- var import_chunk_IKIDS6XF = require("./chunk-IKIDS6XF.cjs");
37
- var import_chunk_SCATWJKX = require("./chunk-SCATWJKX.cjs");
38
- var import_chunk_K6ZO4WDJ = require("./chunk-K6ZO4WDJ.cjs");
33
+ module.exports = __toCommonJS(react_root_DDPDUMCG_exports);
34
+ var import_chunk_Q3YZEYZT = require("./chunk-Q3YZEYZT.cjs");
35
+ var import_chunk_5WLAXYE3 = require("./chunk-5WLAXYE3.cjs");
36
+ var import_chunk_7GQGM4ZF = require("./chunk-7GQGM4ZF.cjs");
37
+ var import_chunk_COQYISES = require("./chunk-COQYISES.cjs");
38
+ var import_chunk_FXHI7JNY = require("./chunk-FXHI7JNY.cjs");
39
39
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
40
40
  var import_react = __toESM(require("react"));
41
41
  var import_app_framework = require("@dxos/app-framework");
42
42
  var react_root_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactRoot, {
43
43
  id: import_chunk_6P2DB4QQ.SPACE_PLUGIN,
44
44
  root: () => {
45
- const state = (0, import_app_framework.useCapability)(import_chunk_IKIDS6XF.SpaceCapabilities.State);
46
- return state.awaiting ? /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.AwaitingObject, {
45
+ const state = (0, import_app_framework.useCapability)(import_chunk_7GQGM4ZF.SpaceCapabilities.State);
46
+ return state.awaiting ? /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.AwaitingObject, {
47
47
  id: state.awaiting
48
48
  }) : null;
49
49
  }
50
50
  });
51
- //# sourceMappingURL=react-root-M4BZ6VXB.cjs.map
51
+ //# sourceMappingURL=react-root-DDPDUMCG.cjs.map
@@ -26,16 +26,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_surface_RYKSYYKM_exports = {};
30
- __export(react_surface_RYKSYYKM_exports, {
29
+ var react_surface_JUIU37BX_exports = {};
30
+ __export(react_surface_JUIU37BX_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_RYKSYYKM_exports);
34
- var import_chunk_MXBE2VET = require("./chunk-MXBE2VET.cjs");
35
- var import_chunk_DQN4ZQDW = require("./chunk-DQN4ZQDW.cjs");
36
- var import_chunk_IKIDS6XF = require("./chunk-IKIDS6XF.cjs");
37
- var import_chunk_SCATWJKX = require("./chunk-SCATWJKX.cjs");
38
- var import_chunk_K6ZO4WDJ = require("./chunk-K6ZO4WDJ.cjs");
33
+ module.exports = __toCommonJS(react_surface_JUIU37BX_exports);
34
+ var import_chunk_Q3YZEYZT = require("./chunk-Q3YZEYZT.cjs");
35
+ var import_chunk_5WLAXYE3 = require("./chunk-5WLAXYE3.cjs");
36
+ var import_chunk_7GQGM4ZF = require("./chunk-7GQGM4ZF.cjs");
37
+ var import_chunk_COQYISES = require("./chunk-COQYISES.cjs");
38
+ var import_chunk_FXHI7JNY = require("./chunk-FXHI7JNY.cjs");
39
39
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
40
40
  var import_react = __toESM(require("react"));
41
41
  var import_app_framework = require("@dxos/app-framework");
@@ -56,7 +56,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
56
56
  component: ({ data, role, ...rest }) => /* @__PURE__ */ import_react.default.createElement(import_app_framework.Surface, {
57
57
  data: {
58
58
  id: data.subject.id,
59
- subject: data.subject.properties[import_chunk_K6ZO4WDJ.CollectionType.typename]?.target
59
+ subject: data.subject.properties[import_chunk_FXHI7JNY.CollectionType.typename]?.target
60
60
  },
61
61
  role,
62
62
  ...rest
@@ -66,8 +66,8 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
66
66
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/collection-fallback`,
67
67
  role: "article",
68
68
  position: "fallback",
69
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_K6ZO4WDJ.CollectionType, data.subject),
70
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.CollectionMain, {
69
+ filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_FXHI7JNY.CollectionType, data.subject),
70
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.CollectionMain, {
71
71
  collection: data.subject
72
72
  })
73
73
  }),
@@ -75,7 +75,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
75
75
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/plugin-settings`,
76
76
  role: "article",
77
77
  filter: (data) => data.subject instanceof import_local_storage.SettingsStore && data.subject.prefix === import_chunk_6P2DB4QQ.SPACE_PLUGIN,
78
- component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SpacePluginSettings, {
78
+ component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SpacePluginSettings, {
79
79
  settings: subject.value
80
80
  })
81
81
  }),
@@ -83,7 +83,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
83
83
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/companion/object-settings`,
84
84
  role: "article",
85
85
  filter: (data) => (0, import_echo.isEchoObject)(data.companionTo) && data.subject === "settings",
86
- component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.ObjectSettingsContainer, {
86
+ component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.ObjectSettingsContainer, {
87
87
  object: data.companionTo,
88
88
  role
89
89
  })
@@ -99,7 +99,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
99
99
  if (!space || !spaceId) {
100
100
  return null;
101
101
  }
102
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SpaceSettingsContainer, {
102
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SpaceSettingsContainer, {
103
103
  space
104
104
  });
105
105
  }
@@ -116,7 +116,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
116
116
  if (!space || !spaceId) {
117
117
  return null;
118
118
  }
119
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.MembersContainer, {
119
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.MembersContainer, {
120
120
  space,
121
121
  createInvitationUrl
122
122
  });
@@ -133,34 +133,34 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
133
133
  if (!space || !spaceId) {
134
134
  return null;
135
135
  }
136
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SchemaContainer, {
136
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SchemaContainer, {
137
137
  space
138
138
  });
139
139
  }
140
140
  }),
141
141
  (0, import_app_framework.createSurface)({
142
- id: import_chunk_MXBE2VET.JOIN_DIALOG,
142
+ id: import_chunk_Q3YZEYZT.JOIN_DIALOG,
143
143
  role: "dialog",
144
- filter: (data) => data.component === import_chunk_MXBE2VET.JOIN_DIALOG,
145
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.JoinDialog, data.props)
144
+ filter: (data) => data.component === import_chunk_Q3YZEYZT.JOIN_DIALOG,
145
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.JoinDialog, data.props)
146
146
  }),
147
147
  (0, import_app_framework.createSurface)({
148
- id: import_chunk_MXBE2VET.CREATE_SPACE_DIALOG,
148
+ id: import_chunk_Q3YZEYZT.CREATE_SPACE_DIALOG,
149
149
  role: "dialog",
150
- filter: (data) => data.component === import_chunk_MXBE2VET.CREATE_SPACE_DIALOG,
151
- component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.CreateSpaceDialog, null)
150
+ filter: (data) => data.component === import_chunk_Q3YZEYZT.CREATE_SPACE_DIALOG,
151
+ component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.CreateSpaceDialog, null)
152
152
  }),
153
153
  (0, import_app_framework.createSurface)({
154
- id: import_chunk_MXBE2VET.CREATE_OBJECT_DIALOG,
154
+ id: import_chunk_Q3YZEYZT.CREATE_OBJECT_DIALOG,
155
155
  role: "dialog",
156
- filter: (data) => data.component === import_chunk_MXBE2VET.CREATE_OBJECT_DIALOG,
157
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.CreateObjectDialog, data.props)
156
+ filter: (data) => data.component === import_chunk_Q3YZEYZT.CREATE_OBJECT_DIALOG,
157
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.CreateObjectDialog, data.props)
158
158
  }),
159
159
  (0, import_app_framework.createSurface)({
160
160
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/create-initial-space-form-[hue]`,
161
161
  role: "form-input",
162
162
  filter: (data) => {
163
- const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_K6ZO4WDJ.HueAnnotationId);
163
+ const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_FXHI7JNY.HueAnnotationId);
164
164
  return !!annotation;
165
165
  },
166
166
  component: ({ data: _, ...inputProps }) => {
@@ -183,7 +183,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
183
183
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/create-initial-space-form-[icon]`,
184
184
  role: "form-input",
185
185
  filter: (data) => {
186
- const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_K6ZO4WDJ.IconAnnotationId);
186
+ const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_FXHI7JNY.IconAnnotationId);
187
187
  return !!annotation;
188
188
  },
189
189
  component: ({ data: _, ...inputProps }) => {
@@ -203,18 +203,18 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
203
203
  }
204
204
  }),
205
205
  (0, import_app_framework.createSurface)({
206
- id: import_chunk_MXBE2VET.POPOVER_RENAME_SPACE,
206
+ id: import_chunk_Q3YZEYZT.POPOVER_RENAME_SPACE,
207
207
  role: "popover",
208
- filter: (data) => data.component === import_chunk_MXBE2VET.POPOVER_RENAME_SPACE && (0, import_echo.isSpace)(data.props),
209
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.PopoverRenameSpace, {
208
+ filter: (data) => data.component === import_chunk_Q3YZEYZT.POPOVER_RENAME_SPACE && (0, import_echo.isSpace)(data.props),
209
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.PopoverRenameSpace, {
210
210
  space: data.props
211
211
  })
212
212
  }),
213
213
  (0, import_app_framework.createSurface)({
214
- id: import_chunk_MXBE2VET.POPOVER_RENAME_OBJECT,
214
+ id: import_chunk_Q3YZEYZT.POPOVER_RENAME_OBJECT,
215
215
  role: "popover",
216
- filter: (data) => data.component === import_chunk_MXBE2VET.POPOVER_RENAME_OBJECT && (0, import_echo.isLiveObject)(data.props),
217
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.PopoverRenameObject, {
216
+ filter: (data) => data.component === import_chunk_Q3YZEYZT.POPOVER_RENAME_OBJECT && (0, import_echo.isLiveObject)(data.props),
217
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.PopoverRenameObject, {
218
218
  object: data.props
219
219
  })
220
220
  }),
@@ -222,7 +222,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
222
222
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/menu-footer`,
223
223
  role: "menu-footer",
224
224
  filter: (data) => (0, import_echo.isEchoObject)(data.subject),
225
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.MenuFooter, {
225
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.MenuFooter, {
226
226
  object: data.subject
227
227
  })
228
228
  }),
@@ -231,8 +231,8 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
231
231
  role: "navtree-item-end",
232
232
  filter: (data) => typeof data.id === "string" && (0, import_echo.isEchoObject)(data.subject),
233
233
  component: ({ data }) => {
234
- const state = (0, import_app_framework.useCapability)(import_chunk_IKIDS6XF.SpaceCapabilities.MutableState);
235
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SmallPresenceLive, {
234
+ const state = (0, import_app_framework.useCapability)(import_chunk_7GQGM4ZF.SpaceCapabilities.MutableState);
235
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SmallPresenceLive, {
236
236
  id: data.id,
237
237
  open: data.open,
238
238
  viewers: state.viewersByObject[data.id]
@@ -245,7 +245,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
245
245
  role: "navtree-item-end",
246
246
  position: "fallback",
247
247
  filter: (data) => typeof data.id === "string",
248
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SmallPresenceLive, {
248
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SmallPresenceLive, {
249
249
  id: data.id,
250
250
  open: data.open
251
251
  })
@@ -255,7 +255,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
255
255
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/navtree-sync-status`,
256
256
  role: "navtree-item-end",
257
257
  filter: (data) => (0, import_echo.isSpace)(data.subject),
258
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.InlineSyncStatus, {
258
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.InlineSyncStatus, {
259
259
  space: data.subject,
260
260
  open: data.open
261
261
  })
@@ -267,8 +267,8 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
267
267
  filter: (data) => (0, import_echo.isSpace)(data.subject) || (0, import_echo.isEchoObject)(data.subject),
268
268
  component: ({ data }) => {
269
269
  const space = (0, import_echo.isSpace)(data.subject) ? data.subject : (0, import_echo.getSpace)(data.subject);
270
- const object = (0, import_echo.isSpace)(data.subject) ? data.subject.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_K6ZO4WDJ.CollectionType.typename]?.target : void 0 : data.subject;
271
- return object ? /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SpacePresence, {
270
+ const object = (0, import_echo.isSpace)(data.subject) ? data.subject.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_FXHI7JNY.CollectionType.typename]?.target : void 0 : data.subject;
271
+ return object ? /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SpacePresence, {
272
272
  object
273
273
  }) : null;
274
274
  }
@@ -276,15 +276,15 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
276
276
  (0, import_app_framework.createSurface)({
277
277
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/collection-section`,
278
278
  role: "section",
279
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_K6ZO4WDJ.CollectionType, data.subject),
280
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.CollectionSection, {
279
+ filter: (data) => (0, import_echo_schema.isInstanceOf)(import_chunk_FXHI7JNY.CollectionType, data.subject),
280
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.CollectionSection, {
281
281
  collection: data.subject
282
282
  })
283
283
  }),
284
284
  (0, import_app_framework.createSurface)({
285
285
  id: `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}/status`,
286
286
  role: "status",
287
- component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_MXBE2VET.SyncStatus, null)
287
+ component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_Q3YZEYZT.SyncStatus, null)
288
288
  })
289
289
  ]);
290
- //# sourceMappingURL=react-surface-RYKSYYKM.cjs.map
290
+ //# sourceMappingURL=react-surface-JUIU37BX.cjs.map
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var schema_defs_2HJLXSNK_exports = {};
20
- __export(schema_defs_2HJLXSNK_exports, {
19
+ var schema_defs_XLFBG3XK_exports = {};
20
+ __export(schema_defs_XLFBG3XK_exports, {
21
21
  default: () => schema_defs_default
22
22
  });
23
- module.exports = __toCommonJS(schema_defs_2HJLXSNK_exports);
24
- var import_chunk_IKIDS6XF = require("./chunk-IKIDS6XF.cjs");
23
+ module.exports = __toCommonJS(schema_defs_XLFBG3XK_exports);
24
+ var import_chunk_7GQGM4ZF = require("./chunk-7GQGM4ZF.cjs");
25
25
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_plugin_client = require("@dxos/plugin-client");
@@ -29,7 +29,7 @@ var schema_defs_default = (context) => {
29
29
  const registry = context.getCapability(import_app_framework.Capabilities.RxRegistry);
30
30
  const client = context.getCapability(import_plugin_client.ClientCapabilities.Client);
31
31
  let previous = [];
32
- const cancel = registry.subscribe(context.capabilities(import_chunk_IKIDS6XF.SpaceCapabilities.ObjectForm), (_forms) => {
32
+ const cancel = registry.subscribe(context.capabilities(import_chunk_7GQGM4ZF.SpaceCapabilities.ObjectForm), (_forms) => {
33
33
  const forms = Array.from(new Set(_forms));
34
34
  const newSchemas = forms.filter((form) => !previous.includes(form)).map((form) => form.objectSchema);
35
35
  previous = forms;
@@ -39,4 +39,4 @@ var schema_defs_default = (context) => {
39
39
  });
40
40
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Null, null, () => cancel());
41
41
  };
42
- //# sourceMappingURL=schema-defs-2HJLXSNK.cjs.map
42
+ //# sourceMappingURL=schema-defs-XLFBG3XK.cjs.map
@@ -16,23 +16,23 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var schema_tools_OE3MFYYH_exports = {};
20
- __export(schema_tools_OE3MFYYH_exports, {
19
+ var schema_tools_ZG6Z2QRC_exports = {};
20
+ __export(schema_tools_ZG6Z2QRC_exports, {
21
21
  TypeNameSchema: () => TypeNameSchema,
22
22
  default: () => schema_tools_default
23
23
  });
24
- module.exports = __toCommonJS(schema_tools_OE3MFYYH_exports);
24
+ module.exports = __toCommonJS(schema_tools_ZG6Z2QRC_exports);
25
25
  var import_effect = require("effect");
26
+ var import_ai = require("@dxos/ai");
26
27
  var import_app_framework = require("@dxos/app-framework");
27
- var import_artifact = require("@dxos/artifact");
28
28
  var import_echo_schema = require("@dxos/echo-schema");
29
29
  var import_invariant = require("@dxos/invariant");
30
30
  var import_react_ui_theme = require("@dxos/react-ui-theme");
31
31
  var import_schema = require("@dxos/schema");
32
32
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/capabilities/schema-tools.ts";
33
33
  var TypeNameSchema = import_effect.Schema.String.pipe(import_effect.Schema.pattern(/^\w+\.\w{2,}\/[\w/]+$/i), import_effect.Schema.annotations({
34
- [import_effect.SchemaAST.TitleAnnotationId]: "TypeName",
35
- [import_effect.SchemaAST.DescriptionAnnotationId]: "Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.",
34
+ title: "TypeName",
35
+ description: "Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.",
36
36
  [import_effect.SchemaAST.ExamplesAnnotationId]: [
37
37
  "example.com/type/Document",
38
38
  "example.com/type/FlightList"
@@ -43,10 +43,10 @@ var formatDescription = `The format of the property. Additional information:
43
43
  This tuple is GeoJSON. You must specify \`${import_echo_schema.FormatEnum.GeoPoint}\` as [Longitude, Latitude]`;
44
44
  var PropertyDefinitionSchema = import_effect.Schema.Struct({
45
45
  name: import_effect.Schema.String.annotations({
46
- [import_effect.SchemaAST.DescriptionAnnotationId]: "The name of the property."
46
+ description: "The name of the property."
47
47
  }),
48
48
  format: import_effect.Schema.Union(...import_echo_schema.FormatEnums.map((format) => import_effect.Schema.Literal(format))).annotations({
49
- [import_effect.SchemaAST.DescriptionAnnotationId]: formatDescription
49
+ description: formatDescription
50
50
  }),
51
51
  config: import_effect.Schema.optional(import_effect.Schema.Struct({
52
52
  options: import_effect.Schema.optional(import_effect.Schema.Array(import_echo_schema.SelectOptionSchema).annotations({
@@ -56,7 +56,7 @@ var PropertyDefinitionSchema = import_effect.Schema.Struct({
56
56
  }).pipe(import_effect.Schema.mutable);
57
57
  var SYSTEM_NAMESPACE = "dxos.org/echo/schema";
58
58
  var schema_tools_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.Tools, [
59
- (0, import_artifact.defineTool)(SYSTEM_NAMESPACE, {
59
+ (0, import_ai.createTool)(SYSTEM_NAMESPACE, {
60
60
  name: "list",
61
61
  description: "List registered schemas in the space.",
62
62
  caption: "Listing registered schemas...",
@@ -73,13 +73,13 @@ var schema_tools_default = () => (0, import_app_framework.contributes)(import_ap
73
73
  });
74
74
  const space = extensions.space;
75
75
  const schemas = await space.db.schemaRegistry.query({}).run();
76
- return import_artifact.ToolResult.Success(schemas.map((schema) => ({
76
+ return import_ai.ToolResult.Success(schemas.map((schema) => ({
77
77
  typename: schema.typename,
78
78
  version: schema.version
79
79
  })));
80
80
  }
81
81
  }),
82
- (0, import_artifact.defineTool)(SYSTEM_NAMESPACE, {
82
+ (0, import_ai.createTool)(SYSTEM_NAMESPACE, {
83
83
  name: "get",
84
84
  description: "Get a specific schema by its typename.",
85
85
  caption: "Getting schema...",
@@ -103,12 +103,12 @@ var schema_tools_default = () => (0, import_app_framework.contributes)(import_ap
103
103
  typename
104
104
  }).firstOrUndefined();
105
105
  if (!schema) {
106
- return import_artifact.ToolResult.Error(`Schema not found: ${typename}`);
106
+ return import_ai.ToolResult.Error(`Schema not found: ${typename}`);
107
107
  }
108
- return import_artifact.ToolResult.Success(schema);
108
+ return import_ai.ToolResult.Success(schema);
109
109
  }
110
110
  }),
111
- (0, import_artifact.defineTool)(SYSTEM_NAMESPACE, {
111
+ (0, import_ai.createTool)(SYSTEM_NAMESPACE, {
112
112
  name: "create",
113
113
  description: "Create a new schema with the provided definition.",
114
114
  caption: "Creating schema...",
@@ -135,7 +135,7 @@ var schema_tools_default = () => (0, import_app_framework.contributes)(import_ap
135
135
  const [registeredSchema] = await space.db.schemaRegistry.register([
136
136
  schema
137
137
  ]);
138
- return import_artifact.ToolResult.Success(registeredSchema);
138
+ return import_ai.ToolResult.Success(registeredSchema);
139
139
  }
140
140
  })
141
141
  ]);
@@ -143,4 +143,4 @@ var schema_tools_default = () => (0, import_app_framework.contributes)(import_ap
143
143
  0 && (module.exports = {
144
144
  TypeNameSchema
145
145
  });
146
- //# sourceMappingURL=schema-tools-OE3MFYYH.cjs.map
146
+ //# sourceMappingURL=schema-tools-ZG6Z2QRC.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/schema-tools.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema, SchemaAST } from 'effect';\n\nimport { createTool, ToolResult } from '@dxos/ai';\nimport { Capabilities, contributes, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type Space } from '@dxos/client/echo';\nimport { FormatEnum, FormatEnums, SelectOptionSchema, GeoPoint, toJsonSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { hues } from '@dxos/react-ui-theme';\nimport { getSchemaFromPropertyDefinitions } from '@dxos/schema';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\n// TODO(ZaymonFC): Move this somewhere common.\nexport const TypeNameSchema = Schema.String.pipe(\n Schema.pattern(/^\\w+\\.\\w{2,}\\/[\\w/]+$/i),\n Schema.annotations({\n title: 'TypeName',\n description:\n 'Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.',\n [SchemaAST.ExamplesAnnotationId]: ['example.com/type/Document', 'example.com/type/FlightList'],\n }),\n);\n\nconst formatDescription = `The format of the property. Additional information:\n ${FormatEnum.GeoPoint}: ${JSON.stringify(toJsonSchema(GeoPoint))}\n This tuple is GeoJSON. You must specify \\`${FormatEnum.GeoPoint}\\` as [Longitude, Latitude]`;\n\n// TODO(ZaymonFC): All properties are default optional, but maybe we should allow for required properties.\nconst PropertyDefinitionSchema = Schema.Struct({\n name: Schema.String.annotations({ description: 'The name of the property.' }),\n format: Schema.Union(...FormatEnums.map((format) => Schema.Literal(format))).annotations({\n description: formatDescription,\n }),\n config: Schema.optional(\n Schema.Struct({\n options: Schema.optional(\n Schema.Array(SelectOptionSchema)\n .annotations({\n description: `Options for SingleSelect/MultiSelect formats. Available colors: ${hues.join(', ')}`,\n })\n .pipe(Schema.mutable),\n ),\n }),\n ),\n}).pipe(Schema.mutable);\n\nconst SYSTEM_NAMESPACE = 'dxos.org/echo/schema';\n\nexport default () =>\n contributes(Capabilities.Tools, [\n createTool(SYSTEM_NAMESPACE, {\n name: 'list',\n description: 'List registered schemas in the space.',\n caption: 'Listing registered schemas...',\n schema: Schema.Struct({}),\n execute: async (_input, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schemas = await space.db.schemaRegistry.query({}).run();\n return ToolResult.Success(\n schemas.map((schema) => ({\n typename: schema.typename,\n version: schema.version,\n })),\n );\n },\n }),\n createTool(SYSTEM_NAMESPACE, {\n name: 'get',\n description: 'Get a specific schema by its typename.',\n caption: 'Getting schema...',\n schema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The fully qualified typename of the schema.',\n }),\n }),\n execute: async ({ typename }, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();\n if (!schema) {\n return ToolResult.Error(`Schema not found: ${typename}`);\n }\n\n return ToolResult.Success(schema);\n },\n }),\n createTool(SYSTEM_NAMESPACE, {\n name: 'create',\n description: 'Create a new schema with the provided definition.',\n caption: 'Creating schema...',\n schema: Schema.Struct({\n typename: TypeNameSchema.annotations({\n description:\n 'The fully qualified schema typename. Must start with a domain, and then one or more path components (e.g., \"example.com/type/TypeName\").',\n }),\n properties: Schema.Array(PropertyDefinitionSchema).pipe(\n Schema.annotations({ description: 'Array of property definitions for the schema.' }),\n Schema.mutable,\n ),\n }),\n execute: async ({ typename, properties }, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schema = getSchemaFromPropertyDefinitions(typename, properties);\n const [registeredSchema] = await space.db.schemaRegistry.register([schema]);\n\n return ToolResult.Success(registeredSchema);\n },\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["TypeNameSchema", "Schema", "String", "pipe", "pattern", "annotations", "title", "description", "SchemaAST", "ExamplesAnnotationId", "formatDescription", "FormatEnum", "GeoPoint", "JSON", "stringify", "toJsonSchema", "PropertyDefinitionSchema", "Struct", "name", "format", "Union", "FormatEnums", "map", "Literal", "config", "optional", "options", "Array", "SelectOptionSchema", "hues", "join", "mutable", "SYSTEM_NAMESPACE", "contributes", "Capabilities", "Tools", "createTool", "caption", "schema", "execute", "_input", "extensions", "invariant", "space", "schemas", "db", "schemaRegistry", "query", "run", "ToolResult", "Success", "typename", "version", "firstOrUndefined", "Error", "properties", "getSchemaFromPropertyDefinitions", "registeredSchema", "register"]
7
+ }
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var settings_AFWO4AWK_exports = {};
20
- __export(settings_AFWO4AWK_exports, {
19
+ var settings_FOH7EB5C_exports = {};
20
+ __export(settings_FOH7EB5C_exports, {
21
21
  default: () => settings_default
22
22
  });
23
- module.exports = __toCommonJS(settings_AFWO4AWK_exports);
24
- var import_chunk_K6ZO4WDJ = require("./chunk-K6ZO4WDJ.cjs");
23
+ module.exports = __toCommonJS(settings_FOH7EB5C_exports);
24
+ var import_chunk_FXHI7JNY = require("./chunk-FXHI7JNY.cjs");
25
25
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_live_object = require("@dxos/live-object");
@@ -30,9 +30,9 @@ var settings_default = () => {
30
30
  showHidden: false
31
31
  });
32
32
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Settings, {
33
- schema: import_chunk_K6ZO4WDJ.SpaceSettingsSchema,
33
+ schema: import_chunk_FXHI7JNY.SpaceSettingsSchema,
34
34
  prefix: import_chunk_6P2DB4QQ.SPACE_PLUGIN,
35
35
  value: settings
36
36
  });
37
37
  };
38
- //# sourceMappingURL=settings-AFWO4AWK.cjs.map
38
+ //# sourceMappingURL=settings-FOH7EB5C.cjs.map
@@ -16,14 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var spaces_ready_BMPXSFHF_exports = {};
20
- __export(spaces_ready_BMPXSFHF_exports, {
19
+ var spaces_ready_VXQYCBII_exports = {};
20
+ __export(spaces_ready_VXQYCBII_exports, {
21
21
  default: () => spaces_ready_default
22
22
  });
23
- module.exports = __toCommonJS(spaces_ready_BMPXSFHF_exports);
24
- var import_chunk_IKIDS6XF = require("./chunk-IKIDS6XF.cjs");
25
- var import_chunk_SCATWJKX = require("./chunk-SCATWJKX.cjs");
26
- var import_chunk_K6ZO4WDJ = require("./chunk-K6ZO4WDJ.cjs");
23
+ module.exports = __toCommonJS(spaces_ready_VXQYCBII_exports);
24
+ var import_chunk_7GQGM4ZF = require("./chunk-7GQGM4ZF.cjs");
25
+ var import_chunk_COQYISES = require("./chunk-COQYISES.cjs");
26
+ var import_chunk_FXHI7JNY = require("./chunk-FXHI7JNY.cjs");
27
27
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
28
28
  var import_effect = require("effect");
29
29
  var import_app_framework = require("@dxos/app-framework");
@@ -41,7 +41,7 @@ var import_echo = require("@dxos/react-client/echo");
41
41
  var import_util = require("@dxos/util");
42
42
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/capabilities/spaces-ready.ts";
43
43
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
44
- var WAIT_FOR_OBJECT_TIMEOUT = 1e3;
44
+ var WAIT_FOR_OBJECT_TIMEOUT = 5e3;
45
45
  var spaces_ready_default = async (context) => {
46
46
  const subscriptions = new import_async.SubscriptionList();
47
47
  const spaceSubscriptions = new import_async.SubscriptionList();
@@ -50,7 +50,7 @@ var spaces_ready_default = async (context) => {
50
50
  const layout = context.getCapability(import_app_framework.Capabilities.Layout);
51
51
  const deck = context.getCapability(import_plugin_deck.DeckCapabilities.DeckState);
52
52
  const attention = context.getCapability(import_plugin_attention.AttentionCapabilities.Attention);
53
- const state = context.getCapability(import_chunk_IKIDS6XF.SpaceCapabilities.MutableState);
53
+ const state = context.getCapability(import_chunk_7GQGM4ZF.SpaceCapabilities.MutableState);
54
54
  const client = context.getCapability(import_plugin_client.ClientCapabilities.Client);
55
55
  const defaultSpace = client.spaces.default;
56
56
  await defaultSpace.waitUntilReady();
@@ -60,15 +60,15 @@ var spaces_ready_default = async (context) => {
60
60
  subject: defaultSpace.id
61
61
  }));
62
62
  }
63
- if (typeof defaultSpace.properties[import_chunk_SCATWJKX.COMPOSER_SPACE_LOCK] !== "boolean") {
64
- defaultSpace.properties[import_chunk_SCATWJKX.COMPOSER_SPACE_LOCK] = true;
63
+ if (typeof defaultSpace.properties[import_chunk_COQYISES.COMPOSER_SPACE_LOCK] !== "boolean") {
64
+ defaultSpace.properties[import_chunk_COQYISES.COMPOSER_SPACE_LOCK] = true;
65
65
  }
66
66
  const { objects: [spacesOrder] } = await defaultSpace.db.query(import_echo.Filter.type(import_echo_schema.Expando, {
67
- key: import_chunk_SCATWJKX.SHARED
67
+ key: import_chunk_COQYISES.SHARED
68
68
  })).run();
69
69
  if (!spacesOrder) {
70
70
  defaultSpace.db.add((0, import_live_object.live)({
71
- key: import_chunk_SCATWJKX.SHARED,
71
+ key: import_chunk_COQYISES.SHARED,
72
72
  order: []
73
73
  }));
74
74
  }
@@ -83,7 +83,7 @@ var spaces_ready_default = async (context) => {
83
83
  const timeout = setTimeout(async () => {
84
84
  const node2 = graph.getNode(active[0]).pipe(import_effect.Option.getOrNull);
85
85
  if (!node2) {
86
- await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.WaitForObject, {
86
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_FXHI7JNY.SpaceAction.WaitForObject, {
87
87
  id: active[0]
88
88
  }));
89
89
  }
@@ -208,4 +208,4 @@ var spaces_ready_default = async (context) => {
208
208
  subscriptions.clear();
209
209
  });
210
210
  };
211
- //# sourceMappingURL=spaces-ready-BMPXSFHF.cjs.map
211
+ //# sourceMappingURL=spaces-ready-VXQYCBII.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/spaces-ready.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Option } from 'effect';\n\nimport { contributes, createIntent, type PluginContext, Capabilities, LayoutAction } from '@dxos/app-framework';\nimport { SubscriptionList } from '@dxos/async';\nimport { Expando } from '@dxos/echo-schema';\nimport { scheduledEffect } from '@dxos/echo-signals/core';\nimport { live } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DeckCapabilities } from '@dxos/plugin-deck';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { Filter, FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from '@dxos/react-client/echo';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { SpaceAction } from '../types';\nimport { COMPOSER_SPACE_LOCK, SHARED } from '../util';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 1000;\n\nexport default async (context: PluginContext) => {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const layout = context.getCapability(Capabilities.Layout);\n const deck = context.getCapability(DeckCapabilities.DeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const state = context.getCapability(SpaceCapabilities.MutableState);\n const client = context.getCapability(ClientCapabilities.Client);\n\n const defaultSpace = client.spaces.default;\n await defaultSpace.waitUntilReady();\n\n if (deck.activeDeck === 'default') {\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: defaultSpace.id }));\n }\n\n // Initialize space sharing lock in default space.\n if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {\n defaultSpace.properties[COMPOSER_SPACE_LOCK] = true;\n }\n\n const {\n objects: [spacesOrder],\n } = await defaultSpace.db.query(Filter.type(Expando, { key: SHARED })).run();\n if (!spacesOrder) {\n // TODO(wittjosiah): Cannot be a Folder because Spaces are not TypedObjects so can't be saved in the database.\n // Instead, we store order as an array of space ids.\n defaultSpace.db.add(live({ key: SHARED, order: [] }));\n }\n\n // Await missing objects.\n subscriptions.add(\n scheduledEffect(\n () => ({ active: layout.active }),\n ({ active }) => {\n if (active.length !== 1) {\n return;\n }\n\n const node = graph.getNode(active[0]).pipe(Option.getOrNull);\n if (!node && active[0].length === FQ_ID_LENGTH) {\n const timeout = setTimeout(async () => {\n const node = graph.getNode(active[0]).pipe(Option.getOrNull);\n if (!node) {\n await dispatch(createIntent(SpaceAction.WaitForObject, { id: active[0] }));\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n return () => clearTimeout(timeout);\n }\n },\n ),\n );\n\n // Cache space names.\n subscriptions.add(\n client.spaces.subscribe(async (spaces) => {\n // TODO(wittjosiah): Remove. This is a hack to be able to migrate the default space properties.\n if (defaultSpace.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {\n await defaultSpace.internal.migrate();\n }\n\n spaces\n .filter((space) => space.state.get() === SpaceState.SPACE_READY)\n .forEach((space) => {\n subscriptions.add(\n scheduledEffect(\n () => ({ name: space.properties.name }),\n ({ name }) => (state.spaceNames[space.id] = name),\n ),\n );\n });\n }).unsubscribe,\n );\n\n // Broadcast active node to other peers in the space.\n subscriptions.add(\n scheduledEffect(\n () => ({ current: attention.current, active: layout.active, inactive: layout.inactive }),\n ({ current, active, inactive }) => {\n const send = () => {\n const spaces = client.spaces.get();\n const identity = client.halo.identity.get();\n if (identity) {\n // Group parts by space for efficient messaging.\n const idsBySpace = reduceGroupBy(active, (id) => {\n try {\n const [spaceId] = parseFullyQualifiedId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id) => {\n try {\n const [spaceId] = parseFullyQualifiedId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n // NOTE: Ensure all spaces are included so that we send the correct `removed` object arrays.\n for (const space of spaces) {\n if (!idsBySpace.has(space.id)) {\n idsBySpace.set(space.id, []);\n }\n }\n\n for (const [spaceId, added] of idsBySpace) {\n const removed = removedBySpace.get(spaceId) ?? [];\n const space = spaces.find((space) => space.id === spaceId);\n if (!space) {\n continue;\n }\n\n void space\n .postMessage('viewing', {\n identityKey: identity.identityKey.toHex(),\n attended: current,\n added,\n removed,\n })\n // TODO(burdon): This seems defensive; why would this fail? Backoff interval.\n .catch((err) => {\n log.warn('Failed to broadcast active node for presence.', { err: err.message });\n });\n }\n }\n };\n\n send();\n // Send at interval to allow peers to expire entries if they become disconnected.\n const interval = setInterval(() => send(), ACTIVE_NODE_BROADCAST_INTERVAL);\n return () => clearInterval(interval);\n },\n ),\n );\n\n // Listen for active nodes from other peers in the space.\n subscriptions.add(\n client.spaces.subscribe((spaces) => {\n spaceSubscriptions.clear();\n spaces.forEach((space) => {\n spaceSubscriptions.add(\n space.listen('viewing', (message) => {\n const { added, removed, attended } = message.payload;\n\n const identityKey = PublicKey.safeFrom(message.payload.identityKey);\n const currentIdentity = client.halo.identity.get();\n if (\n identityKey &&\n !currentIdentity?.identityKey.equals(identityKey) &&\n Array.isArray(added) &&\n Array.isArray(removed)\n ) {\n added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in state.viewersByObject)) {\n state.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n state.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!state.viewersByIdentity.has(identityKey)) {\n state.viewersByIdentity.set(identityKey, new Set());\n }\n state.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n state.viewersByObject[id]?.delete(identityKey);\n state.viewersByIdentity.get(identityKey)?.delete(id);\n // It’s okay for these to be empty sets/maps, reduces churn.\n }\n });\n }\n }),\n );\n });\n }).unsubscribe,\n );\n\n // Enable edge replication for all spaces.\n try {\n await Promise.all(\n client.spaces.get().map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n );\n state.enabledEdgeReplication = true;\n } catch (err) {\n log.catch(err);\n }\n\n return contributes(Capabilities.Null, null, () => {\n spaceSubscriptions.clear();\n subscriptions.clear();\n });\n};\n"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Option } from 'effect';\n\nimport { contributes, createIntent, type PluginContext, Capabilities, LayoutAction } from '@dxos/app-framework';\nimport { SubscriptionList } from '@dxos/async';\nimport { Expando } from '@dxos/echo-schema';\nimport { scheduledEffect } from '@dxos/echo-signals/core';\nimport { live } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DeckCapabilities } from '@dxos/plugin-deck';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { Filter, FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from '@dxos/react-client/echo';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { SpaceAction } from '../types';\nimport { COMPOSER_SPACE_LOCK, SHARED } from '../util';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 5_000;\n\nexport default async (context: PluginContext) => {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const layout = context.getCapability(Capabilities.Layout);\n const deck = context.getCapability(DeckCapabilities.DeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const state = context.getCapability(SpaceCapabilities.MutableState);\n const client = context.getCapability(ClientCapabilities.Client);\n\n const defaultSpace = client.spaces.default;\n await defaultSpace.waitUntilReady();\n\n if (deck.activeDeck === 'default') {\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: defaultSpace.id }));\n }\n\n // Initialize space sharing lock in default space.\n if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {\n defaultSpace.properties[COMPOSER_SPACE_LOCK] = true;\n }\n\n const {\n objects: [spacesOrder],\n } = await defaultSpace.db.query(Filter.type(Expando, { key: SHARED })).run();\n if (!spacesOrder) {\n // TODO(wittjosiah): Cannot be a Folder because Spaces are not TypedObjects so can't be saved in the database.\n // Instead, we store order as an array of space ids.\n defaultSpace.db.add(live({ key: SHARED, order: [] }));\n }\n\n // Await missing objects.\n subscriptions.add(\n scheduledEffect(\n () => ({ active: layout.active }),\n ({ active }) => {\n if (active.length !== 1) {\n return;\n }\n\n const node = graph.getNode(active[0]).pipe(Option.getOrNull);\n if (!node && active[0].length === FQ_ID_LENGTH) {\n const timeout = setTimeout(async () => {\n const node = graph.getNode(active[0]).pipe(Option.getOrNull);\n if (!node) {\n await dispatch(createIntent(SpaceAction.WaitForObject, { id: active[0] }));\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n return () => clearTimeout(timeout);\n }\n },\n ),\n );\n\n // Cache space names.\n subscriptions.add(\n client.spaces.subscribe(async (spaces) => {\n // TODO(wittjosiah): Remove. This is a hack to be able to migrate the default space properties.\n if (defaultSpace.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {\n await defaultSpace.internal.migrate();\n }\n\n spaces\n .filter((space) => space.state.get() === SpaceState.SPACE_READY)\n .forEach((space) => {\n subscriptions.add(\n scheduledEffect(\n () => ({ name: space.properties.name }),\n ({ name }) => (state.spaceNames[space.id] = name),\n ),\n );\n });\n }).unsubscribe,\n );\n\n // Broadcast active node to other peers in the space.\n subscriptions.add(\n scheduledEffect(\n () => ({ current: attention.current, active: layout.active, inactive: layout.inactive }),\n ({ current, active, inactive }) => {\n const send = () => {\n const spaces = client.spaces.get();\n const identity = client.halo.identity.get();\n if (identity) {\n // Group parts by space for efficient messaging.\n const idsBySpace = reduceGroupBy(active, (id) => {\n try {\n const [spaceId] = parseFullyQualifiedId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id) => {\n try {\n const [spaceId] = parseFullyQualifiedId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n // NOTE: Ensure all spaces are included so that we send the correct `removed` object arrays.\n for (const space of spaces) {\n if (!idsBySpace.has(space.id)) {\n idsBySpace.set(space.id, []);\n }\n }\n\n for (const [spaceId, added] of idsBySpace) {\n const removed = removedBySpace.get(spaceId) ?? [];\n const space = spaces.find((space) => space.id === spaceId);\n if (!space) {\n continue;\n }\n\n void space\n .postMessage('viewing', {\n identityKey: identity.identityKey.toHex(),\n attended: current,\n added,\n removed,\n })\n // TODO(burdon): This seems defensive; why would this fail? Backoff interval.\n .catch((err) => {\n log.warn('Failed to broadcast active node for presence.', { err: err.message });\n });\n }\n }\n };\n\n send();\n // Send at interval to allow peers to expire entries if they become disconnected.\n const interval = setInterval(() => send(), ACTIVE_NODE_BROADCAST_INTERVAL);\n return () => clearInterval(interval);\n },\n ),\n );\n\n // Listen for active nodes from other peers in the space.\n subscriptions.add(\n client.spaces.subscribe((spaces) => {\n spaceSubscriptions.clear();\n spaces.forEach((space) => {\n spaceSubscriptions.add(\n space.listen('viewing', (message) => {\n const { added, removed, attended } = message.payload;\n\n const identityKey = PublicKey.safeFrom(message.payload.identityKey);\n const currentIdentity = client.halo.identity.get();\n if (\n identityKey &&\n !currentIdentity?.identityKey.equals(identityKey) &&\n Array.isArray(added) &&\n Array.isArray(removed)\n ) {\n added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in state.viewersByObject)) {\n state.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n state.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!state.viewersByIdentity.has(identityKey)) {\n state.viewersByIdentity.set(identityKey, new Set());\n }\n state.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n state.viewersByObject[id]?.delete(identityKey);\n state.viewersByIdentity.get(identityKey)?.delete(id);\n // It’s okay for these to be empty sets/maps, reduces churn.\n }\n });\n }\n }),\n );\n });\n }).unsubscribe,\n );\n\n // Enable edge replication for all spaces.\n try {\n await Promise.all(\n client.spaces.get().map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n );\n state.enabledEdgeReplication = true;\n } catch (err) {\n log.catch(err);\n }\n\n return contributes(Capabilities.Null, null, () => {\n spaceSubscriptions.clear();\n subscriptions.clear();\n });\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["ACTIVE_NODE_BROADCAST_INTERVAL", "WAIT_FOR_OBJECT_TIMEOUT", "context", "subscriptions", "SubscriptionList", "spaceSubscriptions", "dispatchPromise", "dispatch", "getCapability", "Capabilities", "IntentDispatcher", "graph", "AppGraph", "layout", "Layout", "deck", "DeckCapabilities", "DeckState", "attention", "AttentionCapabilities", "Attention", "state", "SpaceCapabilities", "MutableState", "client", "ClientCapabilities", "Client", "defaultSpace", "spaces", "default", "waitUntilReady", "activeDeck", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "subject", "id", "properties", "COMPOSER_SPACE_LOCK", "objects", "spacesOrder", "db", "query", "Filter", "type", "Expando", "key", "SHARED", "run", "add", "live", "order", "scheduledEffect", "active", "length", "node", "getNode", "pipe", "Option", "getOrNull", "FQ_ID_LENGTH", "timeout", "setTimeout", "SpaceAction", "WaitForObject", "clearTimeout", "subscribe", "get", "SpaceState", "SPACE_REQUIRES_MIGRATION", "internal", "migrate", "filter", "space", "SPACE_READY", "forEach", "name", "spaceNames", "unsubscribe", "current", "inactive", "send", "identity", "halo", "idsBySpace", "reduceGroupBy", "spaceId", "parseFullyQualifiedId", "removedBySpace", "has", "set", "added", "removed", "find", "postMessage", "identityKey", "toHex", "attended", "catch", "err", "log", "warn", "message", "interval", "setInterval", "clearInterval", "clear", "listen", "payload", "PublicKey", "safeFrom", "currentIdentity", "equals", "Array", "isArray", "viewersByObject", "ComplexMap", "hash", "lastSeen", "Date", "now", "currentlyAttended", "Set", "viewersByIdentity", "delete", "Promise", "all", "map", "setEdgeReplicationPreference", "EdgeReplicationSetting", "ENABLED", "enabledEdgeReplication", "contributes", "Null"]
7
7
  }
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var state_L2ZSDKLS_exports = {};
20
- __export(state_L2ZSDKLS_exports, {
19
+ var state_ZT3MTZXB_exports = {};
20
+ __export(state_ZT3MTZXB_exports, {
21
21
  default: () => state_default
22
22
  });
23
- module.exports = __toCommonJS(state_L2ZSDKLS_exports);
24
- var import_chunk_IKIDS6XF = require("./chunk-IKIDS6XF.cjs");
23
+ module.exports = __toCommonJS(state_ZT3MTZXB_exports);
24
+ var import_chunk_7GQGM4ZF = require("./chunk-7GQGM4ZF.cjs");
25
25
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
26
26
  var import_signals_core = require("@preact/signals-core");
27
27
  var import_app_framework = require("@dxos/app-framework");
@@ -53,9 +53,9 @@ var state_default = (context) => {
53
53
  state.values.navigableCollections = enabled;
54
54
  }
55
55
  });
56
- return (0, import_app_framework.contributes)(import_chunk_IKIDS6XF.SpaceCapabilities.State, state.values, () => {
56
+ return (0, import_app_framework.contributes)(import_chunk_7GQGM4ZF.SpaceCapabilities.State, state.values, () => {
57
57
  unsubscribe();
58
58
  state.close();
59
59
  });
60
60
  };
61
- //# sourceMappingURL=state-L2ZSDKLS.cjs.map
61
+ //# sourceMappingURL=state-ZT3MTZXB.cjs.map