@dxos/plugin-space 0.8.4-main.72ec0f3 → 0.8.4-main.7ace549

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 (187) hide show
  1. package/dist/lib/browser/{ObjectDetailsPanel-2BRUBHP6.mjs → ObjectDetailsPanel-ACGHWPDX.mjs} +2 -2
  2. package/dist/lib/browser/{ObjectDetailsPanel-2BRUBHP6.mjs.map → ObjectDetailsPanel-ACGHWPDX.mjs.map} +3 -3
  3. package/dist/lib/browser/{ObjectSettings-5LLWCVEK.mjs → ObjectSettings-U3IH7BMV.mjs} +2 -2
  4. package/dist/lib/browser/{ObjectSettings-5LLWCVEK.mjs.map → ObjectSettings-U3IH7BMV.mjs.map} +3 -3
  5. package/dist/lib/browser/{RecordArticle-SXDRWTTU.mjs → RecordArticle-2PFEBPXY.mjs} +1 -1
  6. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-VQAB3GCQ.mjs → app-graph-builder-HABMCWAI.mjs} +140 -151
  8. package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-KSLKMEPP.mjs → app-graph-serializer-G3VFEGTN.mjs} +4 -4
  10. package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
  11. package/dist/lib/browser/chunk-6A3NWBB6.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-K5J7ZB5P.mjs → chunk-C6DAPIFF.mjs} +3 -3
  13. package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-ERQMHU7L.mjs → chunk-GJOZILGC.mjs} +163 -105
  15. package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-J2BUK5E6.mjs → chunk-KCZ527AM.mjs} +169 -101
  17. package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-PU5IOFMG.mjs → chunk-P25R3AOK.mjs} +4 -47
  19. package/dist/lib/browser/{chunk-PU5IOFMG.mjs.map → chunk-P25R3AOK.mjs.map} +4 -4
  20. package/dist/lib/browser/{chunk-OLBBSOVI.mjs → chunk-POFUXISV.mjs} +53 -59
  21. package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +47 -94
  23. package/dist/lib/browser/index.mjs.map +3 -3
  24. package/dist/lib/browser/{intent-resolver-Q2XWHAVA.mjs → intent-resolver-RZEWNJ2K.mjs} +51 -40
  25. package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
  26. package/dist/lib/browser/meta.json +1 -1
  27. package/dist/lib/browser/{react-root-MM4HADPE.mjs → react-root-JCRD74GI.mjs} +6 -6
  28. package/dist/lib/browser/{react-surface-SGZC3Y4U.mjs → react-surface-VOETEAG3.mjs} +28 -14
  29. package/dist/lib/browser/react-surface-VOETEAG3.mjs.map +7 -0
  30. package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
  31. package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
  32. package/dist/lib/browser/{settings-WKLGKUHQ.mjs → settings-TRLI52I5.mjs} +2 -2
  33. package/dist/lib/browser/{spaces-ready-C5QC2UFL.mjs → spaces-ready-OHGCWZHQ.mjs} +13 -7
  34. package/dist/lib/browser/{spaces-ready-C5QC2UFL.mjs.map → spaces-ready-OHGCWZHQ.mjs.map} +2 -2
  35. package/dist/lib/browser/{state-Q7YRE5KG.mjs → state-C7N6EDDZ.mjs} +2 -2
  36. package/dist/lib/browser/types/index.mjs +9 -3
  37. package/dist/lib/node-esm/{ObjectDetailsPanel-6PZQIQG3.mjs → ObjectDetailsPanel-6OFTT3GG.mjs} +2 -2
  38. package/dist/lib/node-esm/{ObjectDetailsPanel-6PZQIQG3.mjs.map → ObjectDetailsPanel-6OFTT3GG.mjs.map} +3 -3
  39. package/dist/lib/node-esm/{ObjectSettings-OQSBOH7K.mjs → ObjectSettings-YXPJQMJ5.mjs} +2 -2
  40. package/dist/lib/node-esm/{ObjectSettings-OQSBOH7K.mjs.map → ObjectSettings-YXPJQMJ5.mjs.map} +3 -3
  41. package/dist/lib/node-esm/{RecordArticle-NACBH42P.mjs → RecordArticle-SSJ7PULS.mjs} +1 -1
  42. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
  43. package/dist/lib/node-esm/{app-graph-builder-24JCLJPX.mjs → app-graph-builder-T6VJKIOA.mjs} +140 -151
  44. package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
  45. package/dist/lib/node-esm/{app-graph-serializer-R723K764.mjs → app-graph-serializer-2NLWWFUB.mjs} +4 -4
  46. package/dist/lib/node-esm/{chunk-TJPQDQNI.mjs → chunk-7EV4SN47.mjs} +4 -47
  47. package/dist/lib/node-esm/{chunk-TJPQDQNI.mjs.map → chunk-7EV4SN47.mjs.map} +4 -4
  48. package/dist/lib/node-esm/{chunk-WC4VBFMA.mjs → chunk-AX3UGL5D.mjs} +53 -59
  49. package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-VH2EBZEV.mjs → chunk-I6FZP42D.mjs} +163 -105
  51. package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-ITQFSFQ3.mjs → chunk-JAMGJUFU.mjs} +169 -101
  53. package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-Z7BB6HC2.mjs → chunk-WWGV5FJM.mjs} +3 -3
  55. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-X34VDVMY.mjs +393 -0
  57. package/dist/lib/node-esm/chunk-X34VDVMY.mjs.map +7 -0
  58. package/dist/lib/node-esm/index.mjs +47 -94
  59. package/dist/lib/node-esm/index.mjs.map +3 -3
  60. package/dist/lib/node-esm/{intent-resolver-YK4ESSET.mjs → intent-resolver-4PHJWDXW.mjs} +51 -40
  61. package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
  62. package/dist/lib/node-esm/meta.json +1 -1
  63. package/dist/lib/node-esm/{react-root-5ANDLQMX.mjs → react-root-O5I5CDJ7.mjs} +6 -6
  64. package/dist/lib/node-esm/{react-surface-V7J2QB44.mjs → react-surface-J3XDMU2D.mjs} +28 -14
  65. package/dist/lib/node-esm/react-surface-J3XDMU2D.mjs.map +7 -0
  66. package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
  67. package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
  68. package/dist/lib/node-esm/{settings-RBB5633M.mjs → settings-MNQTKHL7.mjs} +2 -2
  69. package/dist/lib/node-esm/{spaces-ready-SJCXV6YH.mjs → spaces-ready-ZPU24DA2.mjs} +13 -7
  70. package/dist/lib/node-esm/{spaces-ready-SJCXV6YH.mjs.map → spaces-ready-ZPU24DA2.mjs.map} +2 -2
  71. package/dist/lib/node-esm/{state-362I5BMK.mjs → state-45TXZQJ6.mjs} +2 -2
  72. package/dist/lib/node-esm/types/index.mjs +9 -3
  73. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/capabilities.d.ts +9 -4
  76. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/index.d.ts +1 -1
  78. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/repair.d.ts +4 -0
  82. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  84. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  85. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +147 -253
  86. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  87. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +14 -7
  88. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  89. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +147 -253
  90. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  92. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +147 -253
  93. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
  95. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  96. package/dist/types/src/components/RecordArticle.stories.d.ts +147 -253
  97. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  99. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  100. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts +2 -2
  101. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
  102. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +147 -253
  103. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  105. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +147 -253
  106. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +147 -253
  108. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  110. package/dist/types/src/components/index.d.ts +2 -2
  111. package/dist/types/src/helpers/query.d.ts +1 -1
  112. package/dist/types/src/helpers/query.d.ts.map +1 -1
  113. package/dist/types/src/hooks/useTypeOptions.d.ts +2 -2
  114. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -1
  115. package/dist/types/src/translations.d.ts +147 -253
  116. package/dist/types/src/translations.d.ts.map +1 -1
  117. package/dist/types/src/types/form.d.ts +24 -0
  118. package/dist/types/src/types/form.d.ts.map +1 -0
  119. package/dist/types/src/types/index.d.ts +1 -0
  120. package/dist/types/src/types/index.d.ts.map +1 -1
  121. package/dist/types/src/types/types.d.ts +29 -72
  122. package/dist/types/src/types/types.d.ts.map +1 -1
  123. package/dist/types/src/util.d.ts +16 -32
  124. package/dist/types/src/util.d.ts.map +1 -1
  125. package/dist/types/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +54 -50
  127. package/src/SpacePlugin.ts +34 -84
  128. package/src/capabilities/app-graph-builder.ts +130 -227
  129. package/src/capabilities/capabilities.ts +10 -5
  130. package/src/capabilities/index.ts +1 -1
  131. package/src/capabilities/intent-resolver.ts +31 -35
  132. package/src/capabilities/react-surface.tsx +34 -8
  133. package/src/capabilities/repair.ts +57 -0
  134. package/src/capabilities/spaces-ready.ts +7 -1
  135. package/src/components/CreateDialog/CreateObjectDialog.tsx +33 -23
  136. package/src/components/CreateDialog/CreateObjectPanel.tsx +32 -25
  137. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +1 -1
  138. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -5
  139. package/src/components/ObjectSettings/BaseObjectSettings.tsx +1 -1
  140. package/src/components/ObjectSettings/ForeignKeys.tsx +5 -5
  141. package/src/components/RecordArticle.tsx +6 -6
  142. package/src/components/SchemaContainer.tsx +2 -2
  143. package/src/components/SpacePresence/SpacePresence.tsx +2 -2
  144. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +25 -6
  145. package/src/components/ViewEditor.tsx +9 -3
  146. package/src/helpers/query.ts +1 -1
  147. package/src/hooks/useTypeOptions.ts +3 -35
  148. package/src/translations.ts +52 -57
  149. package/src/types/form.ts +75 -0
  150. package/src/types/index.ts +1 -0
  151. package/src/types/types.ts +26 -36
  152. package/src/util.tsx +165 -107
  153. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +0 -7
  154. package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +0 -7
  155. package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +0 -7
  156. package/dist/lib/browser/chunk-J2BUK5E6.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +0 -7
  158. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs +0 -349
  159. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +0 -7
  160. package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +0 -7
  161. package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +0 -7
  162. package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +0 -7
  163. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs +0 -26
  164. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +0 -7
  165. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +0 -7
  166. package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +0 -7
  167. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs +0 -350
  168. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +0 -7
  169. package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +0 -7
  170. package/dist/lib/node-esm/chunk-VH2EBZEV.mjs.map +0 -7
  171. package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +0 -7
  172. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +0 -7
  173. package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +0 -7
  174. package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +0 -7
  175. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs +0 -27
  176. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +0 -7
  177. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  178. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  179. package/src/capabilities/schema-defs.ts +0 -31
  180. /package/dist/lib/browser/{app-graph-serializer-KSLKMEPP.mjs.map → app-graph-serializer-G3VFEGTN.mjs.map} +0 -0
  181. /package/dist/lib/browser/{react-root-MM4HADPE.mjs.map → react-root-JCRD74GI.mjs.map} +0 -0
  182. /package/dist/lib/browser/{settings-WKLGKUHQ.mjs.map → settings-TRLI52I5.mjs.map} +0 -0
  183. /package/dist/lib/browser/{state-Q7YRE5KG.mjs.map → state-C7N6EDDZ.mjs.map} +0 -0
  184. /package/dist/lib/node-esm/{app-graph-serializer-R723K764.mjs.map → app-graph-serializer-2NLWWFUB.mjs.map} +0 -0
  185. /package/dist/lib/node-esm/{react-root-5ANDLQMX.mjs.map → react-root-O5I5CDJ7.mjs.map} +0 -0
  186. /package/dist/lib/node-esm/{settings-RBB5633M.mjs.map → settings-MNQTKHL7.mjs.map} +0 -0
  187. /package/dist/lib/node-esm/{state-362I5BMK.mjs.map → state-45TXZQJ6.mjs.map} +0 -0
@@ -3,18 +3,18 @@ import {
3
3
  useInputSurfaceLookup,
4
4
  usePath,
5
5
  useTypeOptions
6
- } from "./chunk-TJPQDQNI.mjs";
6
+ } from "./chunk-7EV4SN47.mjs";
7
7
  import {
8
8
  SpaceCapabilities
9
- } from "./chunk-Z7BB6HC2.mjs";
9
+ } from "./chunk-WWGV5FJM.mjs";
10
10
  import {
11
11
  COMPOSER_SPACE_LOCK,
12
12
  getSpaceDisplayName
13
- } from "./chunk-VH2EBZEV.mjs";
13
+ } from "./chunk-I6FZP42D.mjs";
14
14
  import {
15
15
  SpaceAction,
16
16
  SpaceForm
17
- } from "./chunk-2PN7QNGV.mjs";
17
+ } from "./chunk-X34VDVMY.mjs";
18
18
  import {
19
19
  meta
20
20
  } from "./chunk-BDEFTL6K.mjs";
@@ -124,42 +124,42 @@ var AwaitingObject = ({ id }) => {
124
124
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
125
125
  import * as Effect from "effect/Effect";
126
126
  import * as Function2 from "effect/Function";
127
- import React3, { useCallback as useCallback3, useRef, useState as useState2 } from "react";
127
+ import * as Option2 from "effect/Option";
128
+ import React3, { useCallback as useCallback3, useMemo, useRef, useState as useState2 } from "react";
128
129
  import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2 } from "@dxos/app-framework";
129
- import { useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
130
- import { Obj as Obj2, Query, Type as Type2 } from "@dxos/echo";
130
+ import { useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
131
+ import { Obj as Obj2, Type } from "@dxos/echo";
132
+ import { EntityKind, SystemTypeAnnotation, getTypeAnnotation as getTypeAnnotation2 } from "@dxos/echo/internal";
131
133
  import { invariant } from "@dxos/invariant";
132
134
  import { useClient as useClient2 } from "@dxos/react-client";
133
- import { getSpace, isLiveObject, isSpace, useQuery as useQuery2, useSpaces } from "@dxos/react-client/echo";
135
+ import { getSpace, isLiveObject, isSpace, useSpaces } from "@dxos/react-client/echo";
134
136
  import { Dialog, IconButton, useTranslation as useTranslation3 } from "@dxos/react-ui";
135
137
  import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
136
- import { Collection, StoredSchema, getTypenameFromQuery } from "@dxos/schema";
137
- import { isNonNullable as isNonNullable2 } from "@dxos/util";
138
138
 
139
139
  // src/components/CreateDialog/CreateObjectPanel.tsx
140
140
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
141
141
  import * as Option from "effect/Option";
142
142
  import React2, { useCallback as useCallback2 } from "react";
143
- import { Type } from "@dxos/echo";
144
- import { ViewAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
143
+ import { getTypeAnnotation } from "@dxos/echo/internal";
145
144
  import { Icon as Icon2, toLocalizedString, useDefaultValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
146
145
  import { Form } from "@dxos/react-ui-form";
147
146
  import { SearchList } from "@dxos/react-ui-searchlist";
148
147
  import { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from "@dxos/react-ui-stack";
148
+ import { ViewAnnotation } from "@dxos/schema";
149
149
  import { isNonNullable } from "@dxos/util";
150
- var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
150
+ var CreateObjectPanel = ({ schemas, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
151
151
  var _effect = _useSignals2();
152
152
  try {
153
153
  const { t } = useTranslation2(meta.id);
154
154
  const initialFormValues = useDefaultValue(_initialFormValues, () => ({}));
155
- const form = forms.find((form2) => Type.getTypename(form2.objectSchema) === typename);
156
- const options = forms.filter((form2) => {
155
+ const metadata = typename && resolve?.(typename);
156
+ const options = schemas.filter((schema) => {
157
157
  if (views == null) {
158
158
  return true;
159
159
  } else {
160
- return views === ViewAnnotation.get(form2.objectSchema).pipe(Option.getOrElse(() => false));
160
+ return views === ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false));
161
161
  }
162
- }).map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
162
+ }).map((schema) => getTypeAnnotation(schema)).filter(isNonNullable).sort((a, b) => {
163
163
  const nameA = t("typename label", {
164
164
  ns: a.typename,
165
165
  defaultValue: a.typename
@@ -171,34 +171,34 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormVa
171
171
  return nameA.localeCompare(nameB);
172
172
  });
173
173
  const handleCreateObject = useCallback2(async (props) => {
174
- if (!form) {
174
+ if (!metadata) {
175
175
  return;
176
176
  }
177
177
  await onCreateObject?.({
178
- form,
178
+ metadata,
179
179
  data: props
180
180
  });
181
181
  }, [
182
182
  onCreateObject,
183
- form
183
+ metadata
184
184
  ]);
185
185
  const handleSetTypename = useCallback2(async (typename2) => {
186
- const form2 = forms.find((form3) => getTypeAnnotation(form3.objectSchema)?.typename === typename2);
187
- if (form2 && !form2.formSchema) {
186
+ const metadata2 = resolve?.(typename2);
187
+ if (metadata2 && !metadata2.inputSchema) {
188
188
  await onCreateObject?.({
189
- form: form2
189
+ metadata: metadata2
190
190
  });
191
191
  } else {
192
192
  onTypenameChange?.(typename2);
193
193
  }
194
194
  }, [
195
- forms,
195
+ resolve,
196
196
  onCreateObject
197
197
  ]);
198
198
  const inputSurfaceLookup = useInputSurfaceLookup({
199
199
  target
200
200
  });
201
- return !form ? /* @__PURE__ */ React2.createElement(SelectSchema, {
201
+ return !metadata ? /* @__PURE__ */ React2.createElement(SelectSchema, {
202
202
  options,
203
203
  resolve,
204
204
  onChange: handleSetTypename
@@ -206,13 +206,13 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormVa
206
206
  spaces,
207
207
  defaultSpaceId,
208
208
  onChange: onTargetChange
209
- }) : form.formSchema ? /* @__PURE__ */ React2.createElement("div", {
209
+ }) : metadata.inputSchema ? /* @__PURE__ */ React2.createElement("div", {
210
210
  role: "none",
211
211
  className: cardDialogOverflow
212
212
  }, /* @__PURE__ */ React2.createElement(Form, {
213
213
  autoFocus: true,
214
214
  values: initialFormValues,
215
- schema: form.formSchema,
215
+ schema: metadata.inputSchema,
216
216
  testId: "create-object-form",
217
217
  onSave: handleCreateObject,
218
218
  lookupComponent: inputSurfaceLookup,
@@ -286,7 +286,7 @@ var SelectSchema = ({ options, resolve, onChange }) => {
286
286
  }, /* @__PURE__ */ React2.createElement("span", {
287
287
  className: "flex gap-2 items-center grow truncate"
288
288
  }, /* @__PURE__ */ React2.createElement(Icon2, {
289
- icon: resolve?.(option.typename).icon ?? "ph--placeholder--regular",
289
+ icon: resolve?.(option.typename)?.icon ?? "ph--placeholder--regular",
290
290
  size: 5
291
291
  }), t("typename label", {
292
292
  ns: option.typename,
@@ -306,19 +306,27 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
306
306
  const manager = usePluginManager();
307
307
  const { t } = useTranslation3(meta.id);
308
308
  const { dispatch } = useIntentDispatcher2();
309
- const forms = useCapabilities(SpaceCapabilities.ObjectForm);
310
309
  const [target, setTarget] = useState2(initialTarget);
311
310
  const [typename, setTypename] = useState2(initialTypename);
312
311
  const client = useClient2();
313
312
  const spaces = useSpaces();
314
- const space = isSpace(target) ? target : getSpace(target);
315
- const queryCollections = useQuery2(space, Query.type(Collection.QueryCollection));
316
- const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
317
313
  const closeRef = useRef(null);
318
- const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
314
+ const resolve = useCallback3((typename2) => {
315
+ const metadata = manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata;
316
+ return metadata?.createObjectIntent ? metadata : void 0;
317
+ }, [
319
318
  manager
320
319
  ]);
321
- const handleCreateObject = useCallback3(({ form, data = {} }) => Effect.gen(function* () {
320
+ const space = isSpace(target) ? target : getSpace(target);
321
+ const schemas = space?.db.schemaRegistry.query({
322
+ location: [
323
+ "runtime"
324
+ ]
325
+ }).runSync();
326
+ const userSchemas = useMemo(() => schemas?.filter((schema) => getTypeAnnotation2(schema)?.kind !== EntityKind.Relation).filter((schema) => !!resolve(Type.getTypename(schema))).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option2.getOrElse(() => false))) ?? [], [
327
+ schemas
328
+ ]);
329
+ const handleCreateObject = useCallback3(({ metadata, data = {} }) => Effect.gen(function* () {
322
330
  if (!target) {
323
331
  return;
324
332
  }
@@ -326,18 +334,18 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
326
334
  const space2 = isSpace(target) ? target : getSpace(target);
327
335
  invariant(space2, "Missing space", {
328
336
  F: __dxlog_file,
329
- L: 77,
337
+ L: 87,
330
338
  S: this,
331
339
  A: [
332
340
  "space",
333
341
  "'Missing space'"
334
342
  ]
335
343
  });
336
- const { object } = yield* dispatch(form.getIntent(data, {
344
+ const { object } = yield* dispatch(metadata.createObjectIntent(data, {
337
345
  space: space2
338
346
  }));
339
- if (isLiveObject(object) && !Obj2.instanceOf(StoredSchema, object)) {
340
- const hidden = form.hidden || hiddenTypenames.includes(Type2.getTypename(form.objectSchema));
347
+ if (isLiveObject(object) && !Obj2.instanceOf(Type.PersistentType, object)) {
348
+ const hidden = !metadata.addToCollectionOnCreate;
341
349
  const addObjectIntent = createIntent2(SpaceAction.AddObject, {
342
350
  target,
343
351
  object,
@@ -357,7 +365,6 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
357
365
  dispatch,
358
366
  target,
359
367
  resolve,
360
- hiddenTypenames,
361
368
  _shouldNavigate
362
369
  ]);
363
370
  return (
@@ -371,7 +378,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
371
378
  }, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title", {
372
379
  object: t("typename label", {
373
380
  ns: typename,
374
- defaultValue: views ? "View" : "Item"
381
+ defaultValue: views ? "View" : "Object"
375
382
  })
376
383
  })), /* @__PURE__ */ React3.createElement(Dialog.Close, {
377
384
  asChild: true
@@ -385,7 +392,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
385
392
  variant: "ghost",
386
393
  autoFocus: true
387
394
  }))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
388
- forms,
395
+ schemas: userSchemas,
389
396
  spaces,
390
397
  target,
391
398
  views,
@@ -616,7 +623,7 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
616
623
 
617
624
  // src/components/MembersContainer/MembersContainer.tsx
618
625
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
619
- import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
626
+ import React7, { useCallback as useCallback6, useMemo as useMemo2, useState as useState3 } from "react";
620
627
  import { QR } from "react-qr-rounded";
621
628
  import { createIntent as createIntent5 } from "@dxos/app-framework";
622
629
  import { useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework/react";
@@ -628,7 +635,7 @@ import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
628
635
  import { Button as Button2, Clipboard, Icon as Icon3, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
629
636
  import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
630
637
  import { StackItem } from "@dxos/react-ui-stack";
631
- import { Collection as Collection2 } from "@dxos/schema";
638
+ import { Collection } from "@dxos/schema";
632
639
  import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
633
640
  import { hexToEmoji } from "@dxos/util";
634
641
  var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer/MembersContainer.tsx";
@@ -663,7 +670,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
663
670
  setInternalActiveAction(nextAction);
664
671
  localStorage.setItem(activeActionKey, nextAction);
665
672
  };
666
- const target = space.properties[Collection2.Collection.typename]?.target?.objects[0]?.target;
673
+ const target = space.properties[Collection.Collection.typename]?.target?.objects[0]?.target;
667
674
  const locked = space.properties[COMPOSER_SPACE_LOCK];
668
675
  const handleChangeLocked = useCallback6(() => {
669
676
  space.properties[COMPOSER_SPACE_LOCK] = !locked;
@@ -671,7 +678,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
671
678
  locked,
672
679
  space
673
680
  ]);
674
- const inviteActions = useMemo(() => ({
681
+ const inviteActions = useMemo2(() => ({
675
682
  inviteOne: {
676
683
  label: t("invite one label", {
677
684
  ns: "os"
@@ -1082,7 +1089,7 @@ var useQuerySpaceSchemas = (space) => {
1082
1089
 
1083
1090
  // src/components/SpacePresence/SpacePresence.tsx
1084
1091
  import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1085
- import * as Option2 from "effect/Option";
1092
+ import * as Option3 from "effect/Option";
1086
1093
  import React12, { forwardRef, useCallback as useCallback9, useEffect as useEffect3, useState as useState7 } from "react";
1087
1094
  import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework/react";
1088
1095
  import { generateName } from "@dxos/display-name";
@@ -1093,6 +1100,21 @@ import { useIdentity } from "@dxos/react-client/halo";
1093
1100
  import { Avatar, List, ListItem, Popover as Popover2, Tooltip, useDefaultValue as useDefaultValue2, useTranslation as useTranslation12 } from "@dxos/react-ui";
1094
1101
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
1095
1102
  import { ComplexMap, keyToFallback } from "@dxos/util";
1103
+
1104
+ // src/capabilities/index.ts
1105
+ import { lazy } from "@dxos/app-framework";
1106
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-T6VJKIOA.mjs"));
1107
+ var AppGraphSerializer = lazy(() => import("./app-graph-serializer-2NLWWFUB.mjs"));
1108
+ var IdentityCreated = lazy(() => import("./identity-created-OXLKCJE3.mjs"));
1109
+ var IntentResolver = lazy(() => import("./intent-resolver-4PHJWDXW.mjs"));
1110
+ var ReactRoot = lazy(() => import("./react-root-O5I5CDJ7.mjs"));
1111
+ var ReactSurface = lazy(() => import("./react-surface-J3XDMU2D.mjs"));
1112
+ var Repair = lazy(() => import("./repair-EHZS6MFY.mjs"));
1113
+ var SpaceSettings = lazy(() => import("./settings-MNQTKHL7.mjs"));
1114
+ var SpaceState = lazy(() => import("./state-45TXZQJ6.mjs"));
1115
+ var SpacesReady = lazy(() => import("./spaces-ready-ZPU24DA2.mjs"));
1116
+
1117
+ // src/components/SpacePresence/SpacePresence.tsx
1096
1118
  var REFRESH_INTERVAL = 5e3;
1097
1119
  var ACTIVITY_DURATION = 3e4;
1098
1120
  var noViewers = new ComplexMap(PublicKey.hash);
@@ -1220,7 +1242,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1220
1242
  const attended = useAttended();
1221
1243
  const startOfAttention = attended.at(-1);
1222
1244
  const path = usePath(graph, startOfAttention);
1223
- const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1245
+ const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1224
1246
  const getActiveViewers = (viewers2) => {
1225
1247
  const moment = Date.now();
1226
1248
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
@@ -1321,13 +1343,13 @@ var SpacePluginSettings = ({ settings }) => {
1321
1343
  import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1322
1344
  import * as Function3 from "effect/Function";
1323
1345
  import * as Schema from "effect/Schema";
1324
- import React14, { useCallback as useCallback10, useMemo as useMemo2, useState as useState8 } from "react";
1346
+ import React14, { useCallback as useCallback10, useMemo as useMemo3, useState as useState8 } from "react";
1325
1347
  import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9 } from "@dxos/app-framework";
1326
- import { useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
1348
+ import { useCapabilities, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
1327
1349
  import { log as log3 } from "@dxos/log";
1328
1350
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1329
1351
  import { useClient as useClient7 } from "@dxos/react-client";
1330
- import { SpaceState } from "@dxos/react-client/echo";
1352
+ import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
1331
1353
  import { Button as Button5, Input as Input5, useFileDownload, useMulticastObservable, useTranslation as useTranslation14 } from "@dxos/react-ui";
1332
1354
  import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
1333
1355
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
@@ -1344,14 +1366,14 @@ var SpaceSettingsContainer = ({ space }) => {
1344
1366
  const { t } = useTranslation14(meta.id);
1345
1367
  const { dispatchPromise: dispatch } = useIntentDispatcher9();
1346
1368
  const client = useClient7();
1347
- const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
1369
+ const archived = useMulticastObservable(space.state) === SpaceState2.SPACE_INACTIVE;
1348
1370
  const [edgeReplication, setEdgeReplication] = useState8(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1349
1371
  const toggleEdgeReplication = useCallback10(async (next) => {
1350
1372
  setEdgeReplication(next);
1351
1373
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1352
1374
  log3.catch(err, void 0, {
1353
1375
  F: __dxlog_file4,
1354
- L: 57,
1376
+ L: 58,
1355
1377
  S: void 0,
1356
1378
  C: (f, a) => f(...a)
1357
1379
  });
@@ -1388,7 +1410,7 @@ var SpaceSettingsContainer = ({ space }) => {
1388
1410
  toggleEdgeReplication,
1389
1411
  archived
1390
1412
  ]);
1391
- const values = useMemo2(() => ({
1413
+ const values = useMemo3(() => ({
1392
1414
  name: space.properties.name,
1393
1415
  icon: space.properties.icon,
1394
1416
  hue: space.properties.hue,
@@ -1401,7 +1423,7 @@ var SpaceSettingsContainer = ({ space }) => {
1401
1423
  edgeReplication,
1402
1424
  archived
1403
1425
  ]);
1404
- const customElements = useMemo2(() => ({
1426
+ const customElements = useMemo3(() => ({
1405
1427
  name: ({ type, label, getValue, onValueChange }) => {
1406
1428
  const handleChange = useCallback10(({ target: { value: value2 } }) => onValueChange(type, value2), [
1407
1429
  onValueChange,
@@ -1498,6 +1520,17 @@ var SpaceSettingsContainer = ({ space }) => {
1498
1520
  space,
1499
1521
  download
1500
1522
  ]);
1523
+ const repairs = useCapabilities(SpaceCapabilities.Repair);
1524
+ const handleRepair = useCallback10(async () => {
1525
+ await Promise.all(repairs.map((repair) => repair({
1526
+ space,
1527
+ isDefault: client.spaces.default === space
1528
+ })));
1529
+ }, [
1530
+ client,
1531
+ space,
1532
+ repairs
1533
+ ]);
1501
1534
  return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
1502
1535
  scrollable: true
1503
1536
  }, /* @__PURE__ */ React14.createElement(ControlPage4, null, /* @__PURE__ */ React14.createElement(ControlSection4, {
@@ -1515,8 +1548,18 @@ var SpaceSettingsContainer = ({ space }) => {
1515
1548
  Custom: customElements,
1516
1549
  outerSpacing: false,
1517
1550
  classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1518
- })), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1519
- title: t("backup space label", {
1551
+ })), /* @__PURE__ */ React14.createElement(ControlSection4, {
1552
+ title: t("space controls title", {
1553
+ ns: meta.id
1554
+ }),
1555
+ description: t("space controls description", {
1556
+ ns: meta.id
1557
+ })
1558
+ }, /* @__PURE__ */ React14.createElement("div", {
1559
+ role: "none",
1560
+ className: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1561
+ }, /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1562
+ title: t("backup space title", {
1520
1563
  ns: meta.id
1521
1564
  }),
1522
1565
  description: t("backup space description", {
@@ -1524,7 +1567,16 @@ var SpaceSettingsContainer = ({ space }) => {
1524
1567
  })
1525
1568
  }, /* @__PURE__ */ React14.createElement(Button5, {
1526
1569
  onClick: handleBackup
1527
- }, t("download backup")))));
1570
+ }, t("download backup label"))), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1571
+ title: t("repair space title", {
1572
+ ns: meta.id
1573
+ }),
1574
+ description: t("repair space description", {
1575
+ ns: meta.id
1576
+ })
1577
+ }, /* @__PURE__ */ React14.createElement(Button5, {
1578
+ onClick: handleRepair
1579
+ }, t("repair space label")))))));
1528
1580
  } finally {
1529
1581
  _effect.f();
1530
1582
  }
@@ -1532,7 +1584,7 @@ var SpaceSettingsContainer = ({ space }) => {
1532
1584
 
1533
1585
  // src/components/SyncStatus/InlineSyncStatus.tsx
1534
1586
  import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1535
- import * as Option3 from "effect/Option";
1587
+ import * as Option4 from "effect/Option";
1536
1588
  import React15, { useEffect as useEffect4, useState as useState9 } from "react";
1537
1589
  import { useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
1538
1590
  import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
@@ -1564,7 +1616,7 @@ var InlineSyncStatus = ({ space, open }) => {
1564
1616
  const attended = useAttended2();
1565
1617
  const startOfAttention = attended.at(-1);
1566
1618
  const path = usePath(graph, startOfAttention);
1567
- const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1619
+ const containsAttended = !open && !isAttended && id && Option4.isSome(path) ? path.value.includes(id) : false;
1568
1620
  const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
1569
1621
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1570
1622
  const syncState = useSpaceSyncState(space);
@@ -1826,16 +1878,16 @@ import * as Array2 from "effect/Array";
1826
1878
  import * as Effect3 from "effect/Effect";
1827
1879
  import * as EffectFunction from "effect/Function";
1828
1880
  import * as Match from "effect/Match";
1829
- import * as Option4 from "effect/Option";
1881
+ import * as Option5 from "effect/Option";
1830
1882
  import * as SchemaAST from "effect/SchemaAST";
1831
- import { DXN, Filter as Filter2, Query as Query2 } from "@dxos/echo";
1832
- import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation2, unwrapOptional } from "@dxos/echo/internal";
1883
+ import { DXN, Filter as Filter2, Query } from "@dxos/echo";
1884
+ import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation3, unwrapOptional } from "@dxos/echo/internal";
1833
1885
  import { log as log4 } from "@dxos/log";
1834
1886
  import { Person } from "@dxos/types";
1835
1887
  var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/helpers/query.ts";
1836
1888
  var evalQuery = (queryString) => {
1837
1889
  const globals = {
1838
- Query: Query2,
1890
+ Query,
1839
1891
  Filter: Filter2,
1840
1892
  Person
1841
1893
  };
@@ -1848,26 +1900,26 @@ var evalQuery = (queryString) => {
1848
1900
  S: void 0,
1849
1901
  C: (f, a) => f(...a)
1850
1902
  });
1851
- return Query2.select(Filter2.nothing());
1903
+ return Query.select(Filter2.nothing());
1852
1904
  }
1853
1905
  };
1854
1906
  var resolveSchemaWithClientAndSpace = (client, space, query) => {
1855
1907
  const resolve = Effect3.fn(function* (dxn) {
1856
1908
  const typename = DXN.parse(dxn).asTypeDXN()?.type;
1857
1909
  if (!typename) {
1858
- return Option4.none();
1910
+ return Option5.none();
1859
1911
  }
1860
1912
  const staticSchema = client.graph.schemaRegistry.getSchema(typename);
1861
1913
  if (staticSchema) {
1862
- return Option4.some(staticSchema);
1914
+ return Option5.some(staticSchema);
1863
1915
  }
1864
1916
  const query2 = space.db.schemaRegistry.query({
1865
1917
  typename
1866
1918
  });
1867
1919
  const schemas = yield* Effect3.promise(() => query2.run());
1868
- return Array2.head(schemas).pipe(Option4.map((schema) => schema.snapshot));
1920
+ return Array2.head(schemas);
1869
1921
  });
1870
- return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option4.getOrUndefined(schema)), Effect3.runPromise);
1922
+ return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option5.getOrUndefined(schema)), Effect3.runPromise);
1871
1923
  };
1872
1924
  var resolveSchema = (query, resolve) => {
1873
1925
  return Match.value(query).pipe(
@@ -1875,46 +1927,46 @@ var resolveSchema = (query, resolve) => {
1875
1927
  // TODO(wittjosiah): Reconcile with filter match?
1876
1928
  Match.when({
1877
1929
  type: "select"
1878
- }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1930
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
1879
1931
  Match.when({
1880
1932
  type: "filter"
1881
- }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1933
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
1882
1934
  Match.when({
1883
1935
  type: "reference-traversal"
1884
- }, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option4.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option4.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option4.map((annotation) => annotation.typename))), Effect3.flatMap(Option4.match({
1885
- onNone: () => Effect3.succeed(Option4.none()),
1936
+ }, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option5.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option5.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option5.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option5.map((annotation) => annotation.typename))), Effect3.flatMap(Option5.match({
1937
+ onNone: () => Effect3.succeed(Option5.none()),
1886
1938
  onSome: (typename) => resolve(DXN.fromTypename(typename).toString())
1887
1939
  })))),
1888
1940
  Match.when({
1889
1941
  type: "relation",
1890
1942
  filter: Match.defined
1891
- }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1943
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
1892
1944
  Match.when({
1893
1945
  type: "relation-traversal"
1894
- }, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => getTypeAnnotation2(schema)), Option4.flatMap((annotation) => Option4.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option4.match({
1895
- onNone: () => Effect3.succeed(Option4.none()),
1946
+ }, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option5.map((schema) => getTypeAnnotation3(schema)), Option5.flatMap((annotation) => Option5.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option5.match({
1947
+ onNone: () => Effect3.succeed(Option5.none()),
1896
1948
  onSome: (typename) => resolve(typename)
1897
1949
  })))),
1898
1950
  Match.when({
1899
1951
  type: "options"
1900
1952
  }, ({ query: query2 }) => resolveSchema(query2, resolve)),
1901
1953
  Match.orElse((_q) => {
1902
- return Effect3.succeed(Option4.none());
1954
+ return Effect3.succeed(Option5.none());
1903
1955
  })
1904
1956
  );
1905
1957
  };
1906
1958
  var typenameFromFilter = (filter) => Match.value(filter).pipe(Match.withReturnType(), Match.when({
1907
1959
  type: "object"
1908
- }, ({ typename }) => Option4.fromNullable(typename)), Match.when({
1960
+ }, ({ typename }) => Option5.fromNullable(typename)), Match.when({
1909
1961
  type: "and"
1910
- }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.when({
1962
+ }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option5.isSome), Option5.flatten)), Match.when({
1911
1963
  type: "or"
1912
- }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.orElse(() => Option4.none()));
1964
+ }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option5.isSome), Option5.flatten)), Match.orElse(() => Option5.none()));
1913
1965
  var getQueryTarget = (query, space) => {
1914
1966
  return Match.value(query).pipe(Match.when({
1915
1967
  type: "options"
1916
1968
  }, ({ options }) => {
1917
- return Option4.fromNullable(options.queues).pipe(Option4.flatMap((queues) => Array2.head(queues)), Option4.flatMap((queueDxn) => Option4.fromNullable(DXN.tryParse(queueDxn))), Option4.flatMap((queueDxn) => Option4.fromNullable(space?.queues.get(queueDxn))), Option4.getOrElse(() => space));
1969
+ return Option5.fromNullable(options.queues).pipe(Option5.flatMap((queues) => Array2.head(queues)), Option5.flatMap((queueDxn) => Option5.fromNullable(DXN.tryParse(queueDxn))), Option5.flatMap((queueDxn) => Option5.fromNullable(space?.queues.get(queueDxn))), Option5.getOrElse(() => space));
1918
1970
  }), Match.orElse(() => space));
1919
1971
  };
1920
1972
 
@@ -1924,9 +1976,9 @@ import * as Schema2 from "effect/Schema";
1924
1976
  import React17, { useCallback as useCallback11, useState as useState11 } from "react";
1925
1977
  import { createIntent as createIntent10 } from "@dxos/app-framework";
1926
1978
  import { useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework/react";
1927
- import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query3, Tag, Type as Type3 } from "@dxos/echo";
1979
+ import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query2, Tag, Type as Type2 } from "@dxos/echo";
1928
1980
  import { useClient as useClient10 } from "@dxos/react-client";
1929
- import { getSpace as getSpace4, useQuery as useQuery3 } from "@dxos/react-client/echo";
1981
+ import { getSpace as getSpace4, useQuery as useQuery2 } from "@dxos/react-client/echo";
1930
1982
  import { useAsyncEffect } from "@dxos/react-ui";
1931
1983
  import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
1932
1984
  import { View } from "@dxos/schema";
@@ -1937,14 +1989,21 @@ var ViewEditor = ({ view }) => {
1937
1989
  const client = useClient10();
1938
1990
  const space = getSpace4(view);
1939
1991
  const [schema, setSchema] = useState11(() => Schema2.Struct({}));
1940
- const tags = useQuery3(space, Filter3.type(Tag.Tag));
1992
+ const tags = useQuery2(space, Filter3.type(Tag.Tag));
1941
1993
  const types = useTypeOptions({
1942
1994
  space,
1943
- annotation: [
1944
- "dynamic",
1945
- "limited-static",
1946
- "object-form"
1947
- ]
1995
+ annotation: {
1996
+ location: [
1997
+ "database",
1998
+ "runtime"
1999
+ ],
2000
+ kind: [
2001
+ "user"
2002
+ ],
2003
+ registered: [
2004
+ "registered"
2005
+ ]
2006
+ }
1948
2007
  });
1949
2008
  useAsyncEffect(async () => {
1950
2009
  if (!view?.query || !space) {
@@ -1965,11 +2024,11 @@ var ViewEditor = ({ view }) => {
1965
2024
  return;
1966
2025
  }
1967
2026
  const queue = target && DXN2.tryParse(target) ? target : void 0;
1968
- const query = queue ? Query3.fromAst(newQuery).options({
2027
+ const query = queue ? Query2.fromAst(newQuery).options({
1969
2028
  queues: [
1970
2029
  queue
1971
2030
  ]
1972
- }) : Query3.fromAst(newQuery);
2031
+ }) : Query2.fromAst(newQuery);
1973
2032
  view.query.ast = query.ast;
1974
2033
  const newSchema = await resolveSchemaWithClientAndSpace(client, space, query.ast);
1975
2034
  if (!newSchema) {
@@ -1977,8 +2036,7 @@ var ViewEditor = ({ view }) => {
1977
2036
  }
1978
2037
  const newView = View.make({
1979
2038
  query,
1980
- jsonSchema: Type3.toJsonSchema(newSchema),
1981
- presentation: Obj6.make(Type3.Expando, {})
2039
+ jsonSchema: Type2.toJsonSchema(newSchema)
1982
2040
  });
1983
2041
  view.projection = Obj6.getSnapshot(newView).projection;
1984
2042
  setSchema(() => newSchema);
@@ -2002,12 +2060,12 @@ var ViewEditor = ({ view }) => {
2002
2060
  registry: space.db.schemaRegistry,
2003
2061
  schema,
2004
2062
  view,
2005
- mode: "query",
2063
+ mode: "tag",
2006
2064
  outerSpacing: false,
2007
2065
  tags,
2008
2066
  types,
2009
2067
  onQueryChanged: handleQueryChanged,
2010
- onDelete: Type3.isMutable(schema) ? handleDelete : void 0
2068
+ onDelete: Type2.isMutable(schema) ? handleDelete : void 0
2011
2069
  });
2012
2070
  } finally {
2013
2071
  _effect.f();
@@ -2015,11 +2073,11 @@ var ViewEditor = ({ view }) => {
2015
2073
  };
2016
2074
 
2017
2075
  // src/components/index.ts
2018
- import { lazy } from "react";
2019
- var CollectionArticle = lazy(() => import("./CollectionArticle-KHXYT3SH.mjs"));
2020
- var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-6PZQIQG3.mjs"));
2021
- var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-OQSBOH7K.mjs"));
2022
- var RecordArticle = lazy(() => import("./RecordArticle-NACBH42P.mjs"));
2076
+ import { lazy as lazy2 } from "react";
2077
+ var CollectionArticle = lazy2(() => import("./CollectionArticle-KHXYT3SH.mjs"));
2078
+ var ObjectDetailsPanel = lazy2(() => import("./ObjectDetailsPanel-6OFTT3GG.mjs"));
2079
+ var ObjectSettingsContainer = lazy2(() => import("./ObjectSettings-YXPJQMJ5.mjs"));
2080
+ var RecordArticle = lazy2(() => import("./RecordArticle-SSJ7PULS.mjs"));
2023
2081
 
2024
2082
  export {
2025
2083
  AwaitingObject,
@@ -2054,6 +2112,16 @@ export {
2054
2112
  CollectionArticle,
2055
2113
  ObjectDetailsPanel,
2056
2114
  ObjectSettingsContainer,
2057
- RecordArticle
2115
+ RecordArticle,
2116
+ AppGraphBuilder,
2117
+ AppGraphSerializer,
2118
+ IdentityCreated,
2119
+ IntentResolver,
2120
+ ReactRoot,
2121
+ ReactSurface,
2122
+ Repair,
2123
+ SpaceSettings,
2124
+ SpaceState,
2125
+ SpacesReady
2058
2126
  };
2059
- //# sourceMappingURL=chunk-ITQFSFQ3.mjs.map
2127
+ //# sourceMappingURL=chunk-JAMGJUFU.mjs.map