@dxos/plugin-space 0.8.1-main.ba2dec9 → 0.8.1-staging.391c573

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 (54) hide show
  1. package/dist/lib/browser/{chunk-PCEP3KQY.mjs → chunk-OWVFWTX4.mjs} +6 -4
  2. package/dist/lib/browser/chunk-OWVFWTX4.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +8 -2
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/{intent-resolver-GPNAQ2SG.mjs → intent-resolver-7PY5WDYC.mjs} +2 -2
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/{react-root-4CCSD7TZ.mjs → react-root-EP4XP4IK.mjs} +2 -2
  8. package/dist/lib/browser/{react-surface-FKMRI3WV.mjs → react-surface-VNNI5POA.mjs} +2 -2
  9. package/dist/lib/browser/schema-tools-6J5ZEDBC.mjs +123 -0
  10. package/dist/lib/browser/schema-tools-6J5ZEDBC.mjs.map +7 -0
  11. package/dist/lib/node/{chunk-QE4GVR6C.cjs → chunk-53J7HLYX.cjs} +12 -9
  12. package/dist/lib/node/chunk-53J7HLYX.cjs.map +7 -0
  13. package/dist/lib/node/index.cjs +49 -44
  14. package/dist/lib/node/index.cjs.map +3 -3
  15. package/dist/lib/node/{intent-resolver-ICHHI6I6.cjs → intent-resolver-QEIKJ5FR.cjs} +13 -13
  16. package/dist/lib/node/meta.json +1 -1
  17. package/dist/lib/node/{react-root-TCBTUOOJ.cjs → react-root-OW5NTN2U.cjs} +6 -6
  18. package/dist/lib/node/{react-surface-JSCCIZS5.cjs → react-surface-JTIQUBHB.cjs} +38 -38
  19. package/dist/lib/node/schema-tools-OZS4OC6X.cjs +146 -0
  20. package/dist/lib/node/schema-tools-OZS4OC6X.cjs.map +7 -0
  21. package/dist/lib/node-esm/{chunk-HJCEJNW3.mjs → chunk-FDVNOFE3.mjs} +6 -4
  22. package/dist/lib/node-esm/chunk-FDVNOFE3.mjs.map +7 -0
  23. package/dist/lib/node-esm/index.mjs +8 -2
  24. package/dist/lib/node-esm/index.mjs.map +3 -3
  25. package/dist/lib/node-esm/{intent-resolver-VR42K5GE.mjs → intent-resolver-7EYVRN3R.mjs} +2 -2
  26. package/dist/lib/node-esm/meta.json +1 -1
  27. package/dist/lib/node-esm/{react-root-THJBSTQS.mjs → react-root-RCKGZSZB.mjs} +2 -2
  28. package/dist/lib/node-esm/{react-surface-Z3BBQ5HX.mjs → react-surface-WKKBE5V4.mjs} +2 -2
  29. package/dist/lib/node-esm/schema-tools-KJVXGDBO.mjs +125 -0
  30. package/dist/lib/node-esm/schema-tools-KJVXGDBO.mjs.map +7 -0
  31. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  32. package/dist/types/src/capabilities/index.d.ts +1 -0
  33. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/schema-tool.test.d.ts +2 -0
  35. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/schema-tools.d.ts +13 -0
  37. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -0
  38. package/package.json +42 -39
  39. package/src/SpacePlugin.tsx +6 -0
  40. package/src/capabilities/index.ts +1 -0
  41. package/src/capabilities/schema-tool.test.ts +45 -0
  42. package/src/capabilities/schema-tools.ts +124 -0
  43. package/dist/lib/browser/chunk-PCEP3KQY.mjs.map +0 -7
  44. package/dist/lib/node/chunk-QE4GVR6C.cjs.map +0 -7
  45. package/dist/lib/node-esm/chunk-HJCEJNW3.mjs.map +0 -7
  46. /package/dist/lib/browser/{intent-resolver-GPNAQ2SG.mjs.map → intent-resolver-7PY5WDYC.mjs.map} +0 -0
  47. /package/dist/lib/browser/{react-root-4CCSD7TZ.mjs.map → react-root-EP4XP4IK.mjs.map} +0 -0
  48. /package/dist/lib/browser/{react-surface-FKMRI3WV.mjs.map → react-surface-VNNI5POA.mjs.map} +0 -0
  49. /package/dist/lib/node/{intent-resolver-ICHHI6I6.cjs.map → intent-resolver-QEIKJ5FR.cjs.map} +0 -0
  50. /package/dist/lib/node/{react-root-TCBTUOOJ.cjs.map → react-root-OW5NTN2U.cjs.map} +0 -0
  51. /package/dist/lib/node/{react-surface-JSCCIZS5.cjs.map → react-surface-JTIQUBHB.cjs.map} +0 -0
  52. /package/dist/lib/node-esm/{intent-resolver-VR42K5GE.mjs.map → intent-resolver-7EYVRN3R.mjs.map} +0 -0
  53. /package/dist/lib/node-esm/{react-root-THJBSTQS.mjs.map → react-root-RCKGZSZB.mjs.map} +0 -0
  54. /package/dist/lib/node-esm/{react-surface-Z3BBQ5HX.mjs.map → react-surface-WKKBE5V4.mjs.map} +0 -0
@@ -26,12 +26,12 @@ 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_JSCCIZS5_exports = {};
30
- __export(react_surface_JSCCIZS5_exports, {
29
+ var react_surface_JTIQUBHB_exports = {};
30
+ __export(react_surface_JTIQUBHB_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_JSCCIZS5_exports);
34
- var import_chunk_QE4GVR6C = require("./chunk-QE4GVR6C.cjs");
33
+ module.exports = __toCommonJS(react_surface_JTIQUBHB_exports);
34
+ var import_chunk_53J7HLYX = require("./chunk-53J7HLYX.cjs");
35
35
  var import_chunk_YZKNRFHU = require("./chunk-YZKNRFHU.cjs");
36
36
  var import_chunk_OVGKWJOC = require("./chunk-OVGKWJOC.cjs");
37
37
  var import_chunk_WAJKBO3J = require("./chunk-WAJKBO3J.cjs");
@@ -62,7 +62,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
62
62
  role: "article",
63
63
  position: "fallback",
64
64
  filter: (data) => data.subject instanceof import_chunk_WAJKBO3J.CollectionType,
65
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.CollectionMain, {
65
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.CollectionMain, {
66
66
  collection: data.subject
67
67
  })
68
68
  }),
@@ -71,7 +71,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
71
71
  // TODO(burdon): Add role name syntax to minimal plugin docs.
72
72
  role: "complementary--settings",
73
73
  filter: (data) => (0, import_echo.isSpace)(data.subject),
74
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SpaceSettingsPanel, {
74
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SpaceSettingsPanel, {
75
75
  space: data.subject
76
76
  })
77
77
  }),
@@ -80,7 +80,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
80
80
  role: "complementary--settings",
81
81
  position: "hoist",
82
82
  filter: (data) => (0, import_echo.isEchoObject)(data.subject),
83
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.BaseObjectSettings, {
83
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.BaseObjectSettings, {
84
84
  object: data.subject
85
85
  })
86
86
  }),
@@ -89,58 +89,58 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
89
89
  role: "complementary--settings",
90
90
  position: "fallback",
91
91
  filter: (data) => (0, import_echo.isEchoObject)(data.subject),
92
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.AdvancedObjectSettings, {
92
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.AdvancedObjectSettings, {
93
93
  object: data.subject
94
94
  })
95
95
  }),
96
96
  (0, import_app_framework.createSurface)({
97
- id: import_chunk_QE4GVR6C.SPACE_SETTINGS_DIALOG,
97
+ id: import_chunk_53J7HLYX.SPACE_SETTINGS_DIALOG,
98
98
  role: "dialog",
99
- filter: (data) => data.component === import_chunk_QE4GVR6C.SPACE_SETTINGS_DIALOG,
100
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SpaceSettingsDialog, {
99
+ filter: (data) => data.component === import_chunk_53J7HLYX.SPACE_SETTINGS_DIALOG,
100
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SpaceSettingsDialog, {
101
101
  ...data.props,
102
102
  createInvitationUrl
103
103
  })
104
104
  }),
105
105
  (0, import_app_framework.createSurface)({
106
- id: import_chunk_QE4GVR6C.JOIN_DIALOG,
106
+ id: import_chunk_53J7HLYX.JOIN_DIALOG,
107
107
  role: "dialog",
108
- filter: (data) => data.component === import_chunk_QE4GVR6C.JOIN_DIALOG,
109
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.JoinDialog, data.props)
108
+ filter: (data) => data.component === import_chunk_53J7HLYX.JOIN_DIALOG,
109
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.JoinDialog, data.props)
110
110
  }),
111
111
  (0, import_app_framework.createSurface)({
112
- id: import_chunk_QE4GVR6C.CREATE_SPACE_DIALOG,
112
+ id: import_chunk_53J7HLYX.CREATE_SPACE_DIALOG,
113
113
  role: "dialog",
114
- filter: (data) => data.component === import_chunk_QE4GVR6C.CREATE_SPACE_DIALOG,
115
- component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.CreateSpaceDialog, null)
114
+ filter: (data) => data.component === import_chunk_53J7HLYX.CREATE_SPACE_DIALOG,
115
+ component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.CreateSpaceDialog, null)
116
116
  }),
117
117
  (0, import_app_framework.createSurface)({
118
- id: import_chunk_QE4GVR6C.CREATE_OBJECT_DIALOG,
118
+ id: import_chunk_53J7HLYX.CREATE_OBJECT_DIALOG,
119
119
  role: "dialog",
120
- filter: (data) => data.component === import_chunk_QE4GVR6C.CREATE_OBJECT_DIALOG,
121
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.CreateObjectDialog, data.props)
120
+ filter: (data) => data.component === import_chunk_53J7HLYX.CREATE_OBJECT_DIALOG,
121
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.CreateObjectDialog, data.props)
122
122
  }),
123
123
  (0, import_app_framework.createSurface)({
124
- id: import_chunk_QE4GVR6C.POPOVER_RENAME_SPACE,
124
+ id: import_chunk_53J7HLYX.POPOVER_RENAME_SPACE,
125
125
  role: "popover",
126
- filter: (data) => data.component === import_chunk_QE4GVR6C.POPOVER_RENAME_SPACE && (0, import_echo.isSpace)(data.props),
127
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.PopoverRenameSpace, {
126
+ filter: (data) => data.component === import_chunk_53J7HLYX.POPOVER_RENAME_SPACE && (0, import_echo.isSpace)(data.props),
127
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.PopoverRenameSpace, {
128
128
  space: data.props
129
129
  })
130
130
  }),
131
131
  (0, import_app_framework.createSurface)({
132
- id: import_chunk_QE4GVR6C.POPOVER_RENAME_OBJECT,
132
+ id: import_chunk_53J7HLYX.POPOVER_RENAME_OBJECT,
133
133
  role: "popover",
134
- filter: (data) => data.component === import_chunk_QE4GVR6C.POPOVER_RENAME_OBJECT && (0, import_echo.isReactiveObject)(data.props),
135
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.PopoverRenameObject, {
134
+ filter: (data) => data.component === import_chunk_53J7HLYX.POPOVER_RENAME_OBJECT && (0, import_echo.isReactiveObject)(data.props),
135
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.PopoverRenameObject, {
136
136
  object: data.props
137
137
  })
138
138
  }),
139
139
  (0, import_app_framework.createSurface)({
140
- id: import_chunk_QE4GVR6C.POPOVER_ADD_SPACE,
140
+ id: import_chunk_53J7HLYX.POPOVER_ADD_SPACE,
141
141
  role: "popover",
142
- filter: (data) => data.component === import_chunk_QE4GVR6C.POPOVER_ADD_SPACE,
143
- component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.PopoverAddSpace, null)
142
+ filter: (data) => data.component === import_chunk_53J7HLYX.POPOVER_ADD_SPACE,
143
+ component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.PopoverAddSpace, null)
144
144
  }),
145
145
  (0, import_app_framework.createSurface)({
146
146
  id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/navtree-presence`,
@@ -148,7 +148,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
148
148
  filter: (data) => typeof data.id === "string" && (0, import_echo.isEchoObject)(data.subject),
149
149
  component: ({ data }) => {
150
150
  const state = (0, import_app_framework.useCapability)(import_chunk_YZKNRFHU.SpaceCapabilities.MutableState);
151
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SmallPresenceLive, {
151
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SmallPresenceLive, {
152
152
  id: data.id,
153
153
  open: data.open,
154
154
  viewers: state.viewersByObject[data.id]
@@ -161,7 +161,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
161
161
  role: "navtree-item-end",
162
162
  position: "fallback",
163
163
  filter: (data) => typeof data.id === "string",
164
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SmallPresenceLive, {
164
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SmallPresenceLive, {
165
165
  id: data.id,
166
166
  open: data.open
167
167
  })
@@ -170,7 +170,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
170
170
  id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/navtree-sync-status`,
171
171
  role: "navtree-item-end",
172
172
  filter: (data) => (0, import_echo.isSpace)(data.subject),
173
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.InlineSyncStatus, {
173
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.InlineSyncStatus, {
174
174
  space: data.subject,
175
175
  open: data.open
176
176
  })
@@ -183,7 +183,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
183
183
  component: ({ data }) => {
184
184
  const space = (0, import_echo.isSpace)(data.subject) ? data.subject : (0, import_echo.getSpace)(data.subject);
185
185
  const object = (0, import_echo.isSpace)(data.subject) ? data.subject.state.get() === import_echo.SpaceState.SPACE_READY ? space?.properties[import_chunk_WAJKBO3J.CollectionType.typename]?.target : void 0 : data.subject;
186
- return object ? /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SpacePresence, {
186
+ return object ? /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SpacePresence, {
187
187
  object
188
188
  }) : null;
189
189
  }
@@ -192,7 +192,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
192
192
  id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/collection-section`,
193
193
  role: "section",
194
194
  filter: (data) => data.subject instanceof import_chunk_WAJKBO3J.CollectionType,
195
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.CollectionSection, {
195
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.CollectionSection, {
196
196
  collection: data.subject
197
197
  })
198
198
  }),
@@ -200,7 +200,7 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
200
200
  id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/settings`,
201
201
  role: "article",
202
202
  filter: (data) => data.subject instanceof import_local_storage.SettingsStore && data.subject.prefix === import_chunk_WZR6OAN3.SPACE_PLUGIN,
203
- component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SpacePluginSettings, {
203
+ component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SpacePluginSettings, {
204
204
  settings: subject.value
205
205
  })
206
206
  }),
@@ -208,14 +208,14 @@ var react_surface_default = ({ createInvitationUrl }) => (0, import_app_framewor
208
208
  id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/menu-footer`,
209
209
  role: "menu-footer",
210
210
  filter: (data) => (0, import_echo.isEchoObject)(data.subject),
211
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.MenuFooter, {
211
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.MenuFooter, {
212
212
  object: data.subject
213
213
  })
214
214
  }),
215
215
  (0, import_app_framework.createSurface)({
216
216
  id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/status`,
217
217
  role: "status",
218
- component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_QE4GVR6C.SyncStatus, null)
218
+ component: () => /* @__PURE__ */ import_react.default.createElement(import_chunk_53J7HLYX.SyncStatus, null)
219
219
  })
220
220
  ]);
221
- //# sourceMappingURL=react-surface-JSCCIZS5.cjs.map
221
+ //# sourceMappingURL=react-surface-JTIQUBHB.cjs.map
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var schema_tools_OZS4OC6X_exports = {};
20
+ __export(schema_tools_OZS4OC6X_exports, {
21
+ TypeNameSchema: () => TypeNameSchema,
22
+ default: () => schema_tools_default
23
+ });
24
+ module.exports = __toCommonJS(schema_tools_OZS4OC6X_exports);
25
+ var import_SchemaAST = require("effect/SchemaAST");
26
+ var import_app_framework = require("@dxos/app-framework");
27
+ var import_artifact = require("@dxos/artifact");
28
+ var import_echo_schema = require("@dxos/echo-schema");
29
+ var import_invariant = require("@dxos/invariant");
30
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
31
+ var import_schema = require("@dxos/schema");
32
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/capabilities/schema-tools.ts";
33
+ var TypeNameSchema = import_echo_schema.S.String.pipe(import_echo_schema.S.pattern(/^\w+\.\w{2,}\/[\w/]+$/i), import_echo_schema.S.annotations({
34
+ [import_SchemaAST.TitleAnnotationId]: "TypeName",
35
+ [import_SchemaAST.DescriptionAnnotationId]: "Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.",
36
+ [import_SchemaAST.ExamplesAnnotationId]: [
37
+ "example.com/type/Document",
38
+ "example.com/type/FlightList"
39
+ ]
40
+ }));
41
+ var formatDescription = `The format of the property. Additional information:
42
+ ${import_echo_schema.FormatEnum.GeoPoint}: ${JSON.stringify((0, import_echo_schema.toJsonSchema)(import_echo_schema.GeoPoint))}
43
+ This tuple is GeoJSON. You must specify \`${import_echo_schema.FormatEnum.GeoPoint}\` as [Longitude, Latitude]`;
44
+ var PropertyDefinitionSchema = import_echo_schema.S.Struct({
45
+ name: import_echo_schema.S.String.annotations({
46
+ [import_SchemaAST.DescriptionAnnotationId]: "The name of the property."
47
+ }),
48
+ format: import_echo_schema.S.Union(...import_echo_schema.FormatEnums.map((format) => import_echo_schema.S.Literal(format))).annotations({
49
+ [import_SchemaAST.DescriptionAnnotationId]: formatDescription
50
+ }),
51
+ config: import_echo_schema.S.optional(import_echo_schema.S.Struct({
52
+ options: import_echo_schema.S.optional(import_echo_schema.S.Array(import_echo_schema.SelectOptionSchema).annotations({
53
+ description: `Options for SingleSelect/MultiSelect formats. Available colors: ${import_react_ui_theme.hues.join(", ")}`
54
+ }).pipe(import_echo_schema.S.mutable))
55
+ }))
56
+ }).pipe(import_echo_schema.S.mutable);
57
+ var SYSTEM_NAMESPACE = "dxos.org/echo/schema";
58
+ var schema_tools_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.Tools, [
59
+ (0, import_artifact.defineTool)(SYSTEM_NAMESPACE, {
60
+ name: "list",
61
+ description: "List registered schemas in the space.",
62
+ caption: "Listing registered schemas...",
63
+ schema: import_echo_schema.S.Struct({}),
64
+ execute: async (_input, { extensions }) => {
65
+ (0, import_invariant.invariant)(extensions?.space, "No space.", {
66
+ F: __dxlog_file,
67
+ L: 67,
68
+ S: void 0,
69
+ A: [
70
+ "extensions?.space",
71
+ "'No space.'"
72
+ ]
73
+ });
74
+ const space = extensions.space;
75
+ const schemas = await space.db.schemaRegistry.query({}).run();
76
+ return import_artifact.ToolResult.Success(schemas.map((schema) => ({
77
+ typename: schema.typename,
78
+ version: schema.version
79
+ })));
80
+ }
81
+ }),
82
+ (0, import_artifact.defineTool)(SYSTEM_NAMESPACE, {
83
+ name: "get",
84
+ description: "Get a specific schema by its typename.",
85
+ caption: "Getting schema...",
86
+ schema: import_echo_schema.S.Struct({
87
+ typename: import_echo_schema.S.String.annotations({
88
+ description: "The fully qualified typename of the schema."
89
+ })
90
+ }),
91
+ execute: async ({ typename }, { extensions }) => {
92
+ (0, import_invariant.invariant)(extensions?.space, "No space.", {
93
+ F: __dxlog_file,
94
+ L: 89,
95
+ S: void 0,
96
+ A: [
97
+ "extensions?.space",
98
+ "'No space.'"
99
+ ]
100
+ });
101
+ const space = extensions.space;
102
+ const schema = await space.db.schemaRegistry.query({
103
+ typename
104
+ }).firstOrUndefined();
105
+ if (!schema) {
106
+ return import_artifact.ToolResult.Error(`Schema not found: ${typename}`);
107
+ }
108
+ return import_artifact.ToolResult.Success(schema);
109
+ }
110
+ }),
111
+ (0, import_artifact.defineTool)(SYSTEM_NAMESPACE, {
112
+ name: "create",
113
+ description: "Create a new schema with the provided definition.",
114
+ caption: "Creating schema...",
115
+ schema: import_echo_schema.S.Struct({
116
+ typename: TypeNameSchema.annotations({
117
+ description: 'The fully qualified schema typename. Must start with a domain, and then one or more path components (e.g., "example.com/type/TypeName").'
118
+ }),
119
+ properties: import_echo_schema.S.Array(PropertyDefinitionSchema).pipe(import_echo_schema.S.annotations({
120
+ description: "Array of property definitions for the schema."
121
+ }), import_echo_schema.S.mutable)
122
+ }),
123
+ execute: async ({ typename, properties }, { extensions }) => {
124
+ (0, import_invariant.invariant)(extensions?.space, "No space.", {
125
+ F: __dxlog_file,
126
+ L: 115,
127
+ S: void 0,
128
+ A: [
129
+ "extensions?.space",
130
+ "'No space.'"
131
+ ]
132
+ });
133
+ const space = extensions.space;
134
+ const schema = (0, import_schema.echoSchemaFromPropertyDefinitions)(typename, properties);
135
+ const [registeredSchema] = await space.db.schemaRegistry.register([
136
+ schema
137
+ ]);
138
+ return import_artifact.ToolResult.Success(registeredSchema);
139
+ }
140
+ })
141
+ ]);
142
+ // Annotate the CommonJS export names for ESM import in node:
143
+ 0 && (module.exports = {
144
+ TypeNameSchema
145
+ });
146
+ //# sourceMappingURL=schema-tools-OZS4OC6X.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 { DescriptionAnnotationId, ExamplesAnnotationId, TitleAnnotationId } from 'effect/SchemaAST';\n\nimport { Capabilities, contributes, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport { type Space } from '@dxos/client/echo';\nimport { FormatEnum, FormatEnums, S, SelectOptionSchema, GeoPoint, toJsonSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { hues } from '@dxos/react-ui-theme';\nimport { echoSchemaFromPropertyDefinitions } 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 = S.String.pipe(\n S.pattern(/^\\w+\\.\\w{2,}\\/[\\w/]+$/i),\n S.annotations({\n [TitleAnnotationId]: 'TypeName',\n [DescriptionAnnotationId]:\n 'Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.',\n [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 = S.Struct({\n name: S.String.annotations({ [DescriptionAnnotationId]: 'The name of the property.' }),\n format: S.Union(...FormatEnums.map((format) => S.Literal(format))).annotations({\n [DescriptionAnnotationId]: formatDescription,\n }),\n config: S.optional(\n S.Struct({\n options: S.optional(\n S.Array(SelectOptionSchema)\n .annotations({\n description: `Options for SingleSelect/MultiSelect formats. Available colors: ${hues.join(', ')}`,\n })\n .pipe(S.mutable),\n ),\n }),\n ),\n}).pipe(S.mutable);\n\nconst SYSTEM_NAMESPACE = 'dxos.org/echo/schema';\n\nexport default () =>\n contributes(Capabilities.Tools, [\n defineTool(SYSTEM_NAMESPACE, {\n name: 'list',\n description: 'List registered schemas in the space.',\n caption: 'Listing registered schemas...',\n schema: S.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 defineTool(SYSTEM_NAMESPACE, {\n name: 'get',\n description: 'Get a specific schema by its typename.',\n caption: 'Getting schema...',\n schema: S.Struct({\n typename: S.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 defineTool(SYSTEM_NAMESPACE, {\n name: 'create',\n description: 'Create a new schema with the provided definition.',\n caption: 'Creating schema...',\n schema: S.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: S.Array(PropertyDefinitionSchema).pipe(\n S.annotations({ description: 'Array of property definitions for the schema.' }),\n S.mutable,\n ),\n }),\n execute: async ({ typename, properties }, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schema = echoSchemaFromPropertyDefinitions(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", "S", "String", "pipe", "pattern", "annotations", "TitleAnnotationId", "DescriptionAnnotationId", "ExamplesAnnotationId", "formatDescription", "FormatEnum", "GeoPoint", "JSON", "stringify", "toJsonSchema", "PropertyDefinitionSchema", "Struct", "name", "format", "Union", "FormatEnums", "map", "Literal", "config", "optional", "options", "Array", "SelectOptionSchema", "description", "hues", "join", "mutable", "SYSTEM_NAMESPACE", "contributes", "Capabilities", "Tools", "defineTool", "caption", "schema", "execute", "_input", "extensions", "invariant", "space", "schemas", "db", "schemaRegistry", "query", "run", "ToolResult", "Success", "typename", "version", "firstOrUndefined", "Error", "properties", "echoSchemaFromPropertyDefinitions", "registeredSchema", "register"]
7
+ }
@@ -419,10 +419,11 @@ import { lazy } from "@dxos/app-framework";
419
419
  var AppGraphBuilder = lazy(() => import("./app-graph-builder-TERVM2SL.mjs"));
420
420
  var AppGraphSerializer = lazy(() => import("./app-graph-serializer-GZRSWHEN.mjs"));
421
421
  var IdentityCreated = lazy(() => import("./identity-created-3CGEXNPO.mjs"));
422
- var IntentResolver = lazy(() => import("./intent-resolver-VR42K5GE.mjs"));
423
- var ReactRoot = lazy(() => import("./react-root-THJBSTQS.mjs"));
424
- var ReactSurface = lazy(() => import("./react-surface-Z3BBQ5HX.mjs"));
422
+ var IntentResolver = lazy(() => import("./intent-resolver-7EYVRN3R.mjs"));
423
+ var ReactRoot = lazy(() => import("./react-root-RCKGZSZB.mjs"));
424
+ var ReactSurface = lazy(() => import("./react-surface-WKKBE5V4.mjs"));
425
425
  var Schema = lazy(() => import("./schema-LOR2EVGY.mjs"));
426
+ var Tools = lazy(() => import("./schema-tools-KJVXGDBO.mjs"));
426
427
  var SpaceSettings = lazy(() => import("./settings-H6MXTEQM.mjs"));
427
428
  var SpaceState = lazy(() => import("./state-VYA6OFHD.mjs"));
428
429
  var SpacesReady = lazy(() => import("./spaces-ready-HKAQG5SA.mjs"));
@@ -1808,8 +1809,9 @@ export {
1808
1809
  ReactRoot,
1809
1810
  ReactSurface,
1810
1811
  Schema,
1812
+ Tools,
1811
1813
  SpaceSettings,
1812
1814
  SpaceState,
1813
1815
  SpacesReady
1814
1816
  };
1815
- //# sourceMappingURL=chunk-HJCEJNW3.mjs.map
1817
+ //# sourceMappingURL=chunk-FDVNOFE3.mjs.map