@dxos/plugin-registry 0.8.4-main.72ec0f3 → 0.8.4-main.7996785055

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 (169) hide show
  1. package/dist/lib/browser/PluginArticle-XBWRL2VJ.mjs +29 -0
  2. package/dist/lib/browser/PluginArticle-XBWRL2VJ.mjs.map +7 -0
  3. package/dist/lib/browser/PluginRegistry-YU7M4VWL.mjs +82 -0
  4. package/dist/lib/browser/PluginRegistry-YU7M4VWL.mjs.map +7 -0
  5. package/dist/lib/browser/app-graph-builder-M6TK7ZTK.mjs +168 -0
  6. package/dist/lib/browser/app-graph-builder-M6TK7ZTK.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-FGKYAUX2.mjs +25 -0
  8. package/dist/lib/browser/chunk-FGKYAUX2.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-Y5BNERPC.mjs +193 -0
  10. package/dist/lib/browser/chunk-Y5BNERPC.mjs.map +7 -0
  11. package/dist/lib/browser/cli/index.mjs +222 -0
  12. package/dist/lib/browser/cli/index.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +29 -31
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/open-plugin-registry-Z3I6SBRQ.mjs +18 -0
  17. package/dist/lib/browser/open-plugin-registry-Z3I6SBRQ.mjs.map +7 -0
  18. package/dist/lib/browser/operation-handler-BLH2Y76R.mjs +16 -0
  19. package/dist/lib/browser/operation-handler-BLH2Y76R.mjs.map +7 -0
  20. package/dist/lib/browser/react-surface-6NL2F2O3.mjs +85 -0
  21. package/dist/lib/browser/react-surface-6NL2F2O3.mjs.map +7 -0
  22. package/dist/lib/node-esm/PluginArticle-FIVZRB45.mjs +30 -0
  23. package/dist/lib/node-esm/PluginArticle-FIVZRB45.mjs.map +7 -0
  24. package/dist/lib/node-esm/PluginRegistry-RHD6ZITD.mjs +83 -0
  25. package/dist/lib/node-esm/PluginRegistry-RHD6ZITD.mjs.map +7 -0
  26. package/dist/lib/node-esm/app-graph-builder-FSZAEWLX.mjs +169 -0
  27. package/dist/lib/node-esm/app-graph-builder-FSZAEWLX.mjs.map +7 -0
  28. package/dist/lib/node-esm/chunk-44X3W2YY.mjs +27 -0
  29. package/dist/lib/node-esm/chunk-44X3W2YY.mjs.map +7 -0
  30. package/dist/lib/node-esm/chunk-576PZRDS.mjs +194 -0
  31. package/dist/lib/node-esm/chunk-576PZRDS.mjs.map +7 -0
  32. package/dist/lib/node-esm/cli/index.mjs +223 -0
  33. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  34. package/dist/lib/node-esm/index.mjs +68 -0
  35. package/dist/lib/node-esm/index.mjs.map +7 -0
  36. package/dist/lib/node-esm/meta.json +1 -0
  37. package/dist/lib/node-esm/open-plugin-registry-4ZDMAWN2.mjs +19 -0
  38. package/dist/lib/node-esm/open-plugin-registry-4ZDMAWN2.mjs.map +7 -0
  39. package/dist/lib/node-esm/operation-handler-FQX7TJYA.mjs +18 -0
  40. package/dist/lib/node-esm/operation-handler-FQX7TJYA.mjs.map +7 -0
  41. package/dist/lib/node-esm/react-surface-FUOA7DZ3.mjs +86 -0
  42. package/dist/lib/node-esm/react-surface-FUOA7DZ3.mjs.map +7 -0
  43. package/dist/types/src/RegistryPlugin.d.ts +2 -1
  44. package/dist/types/src/RegistryPlugin.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  46. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  47. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  48. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/index.d.ts +3 -3
  50. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
  52. package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
  53. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
  54. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
  55. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  56. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  57. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  58. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  59. package/dist/types/src/cli/commands/disable.d.ts +11 -0
  60. package/dist/types/src/cli/commands/disable.d.ts.map +1 -0
  61. package/dist/types/src/cli/commands/enable.d.ts +11 -0
  62. package/dist/types/src/cli/commands/enable.d.ts.map +1 -0
  63. package/dist/types/src/cli/commands/index.d.ts +3 -0
  64. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  65. package/dist/types/src/cli/commands/list.d.ts +7 -0
  66. package/dist/types/src/cli/commands/list.d.ts.map +1 -0
  67. package/dist/types/src/cli/commands/util.d.ts +11 -0
  68. package/dist/types/src/cli/commands/util.d.ts.map +1 -0
  69. package/dist/types/src/cli/index.d.ts +3 -0
  70. package/dist/types/src/cli/index.d.ts.map +1 -0
  71. package/dist/types/src/cli/plugin.d.ts +3 -0
  72. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  73. package/dist/types/src/cli/storage.d.ts +18 -0
  74. package/dist/types/src/cli/storage.d.ts.map +1 -0
  75. package/dist/types/src/components/PluginDetail/PluginDetail.d.ts +15 -0
  76. package/dist/types/src/components/PluginDetail/PluginDetail.d.ts.map +1 -0
  77. package/dist/types/src/components/{PluginDetail.stories.d.ts → PluginDetail/PluginDetail.stories.d.ts} +8 -1
  78. package/dist/types/src/components/PluginDetail/PluginDetail.stories.d.ts.map +1 -0
  79. package/dist/types/src/components/PluginDetail/index.d.ts +2 -0
  80. package/dist/types/src/components/PluginDetail/index.d.ts.map +1 -0
  81. package/dist/types/src/components/{PluginItem.d.ts → PluginList/PluginItem.d.ts} +2 -2
  82. package/dist/types/src/components/PluginList/PluginItem.d.ts.map +1 -0
  83. package/dist/types/src/components/{PluginList.d.ts → PluginList/PluginList.d.ts} +1 -1
  84. package/dist/types/src/components/PluginList/PluginList.d.ts.map +1 -0
  85. package/dist/types/src/components/PluginList/PluginList.stories.d.ts.map +1 -0
  86. package/dist/types/src/components/PluginList/index.d.ts +2 -0
  87. package/dist/types/src/components/PluginList/index.d.ts.map +1 -0
  88. package/dist/types/src/components/index.d.ts +0 -1
  89. package/dist/types/src/components/index.d.ts.map +1 -1
  90. package/dist/types/src/containers/PluginArticle/PluginArticle.d.ts +7 -0
  91. package/dist/types/src/containers/PluginArticle/PluginArticle.d.ts.map +1 -0
  92. package/dist/types/src/containers/PluginArticle/index.d.ts +3 -0
  93. package/dist/types/src/containers/PluginArticle/index.d.ts.map +1 -0
  94. package/dist/types/src/containers/PluginRegistry/PluginRegistry.d.ts +14 -0
  95. package/dist/types/src/containers/PluginRegistry/PluginRegistry.d.ts.map +1 -0
  96. package/dist/types/src/containers/PluginRegistry/index.d.ts +3 -0
  97. package/dist/types/src/containers/PluginRegistry/index.d.ts.map +1 -0
  98. package/dist/types/src/containers/index.d.ts +4 -0
  99. package/dist/types/src/containers/index.d.ts.map +1 -0
  100. package/dist/types/src/meta.d.ts +7 -3
  101. package/dist/types/src/meta.d.ts.map +1 -1
  102. package/dist/types/src/operations/index.d.ts +3 -0
  103. package/dist/types/src/operations/index.d.ts.map +1 -0
  104. package/dist/types/src/operations/open-plugin-registry.d.ts +5 -0
  105. package/dist/types/src/operations/open-plugin-registry.d.ts.map +1 -0
  106. package/dist/types/tsconfig.tsbuildinfo +1 -1
  107. package/package.json +50 -32
  108. package/src/RegistryPlugin.tsx +10 -24
  109. package/src/capabilities/app-graph-builder/app-graph-builder.ts +137 -0
  110. package/src/capabilities/app-graph-builder/index.ts +7 -0
  111. package/src/capabilities/index.ts +3 -5
  112. package/src/capabilities/operation-handler/index.ts +11 -0
  113. package/src/capabilities/operation-handler/operation-handler.ts +16 -0
  114. package/src/capabilities/react-surface/index.ts +7 -0
  115. package/src/capabilities/react-surface/react-surface.tsx +88 -0
  116. package/src/cli/commands/disable.ts +47 -0
  117. package/src/cli/commands/enable.ts +44 -0
  118. package/src/cli/commands/index.ts +14 -0
  119. package/src/cli/commands/list.ts +41 -0
  120. package/src/cli/commands/util.ts +24 -0
  121. package/src/cli/index.ts +6 -0
  122. package/src/cli/plugin.ts +17 -0
  123. package/src/cli/storage.ts +50 -0
  124. package/src/components/PluginDetail/PluginDetail.stories.tsx +44 -0
  125. package/src/components/PluginDetail/PluginDetail.tsx +84 -0
  126. package/src/components/PluginDetail/index.ts +5 -0
  127. package/src/components/{PluginItem.tsx → PluginList/PluginItem.tsx} +18 -14
  128. package/src/components/PluginList/PluginList.stories.tsx +87 -0
  129. package/src/components/{PluginList.tsx → PluginList/PluginList.tsx} +2 -2
  130. package/src/components/PluginList/index.ts +5 -0
  131. package/src/components/index.ts +0 -1
  132. package/src/containers/PluginArticle/PluginArticle.tsx +28 -0
  133. package/src/containers/PluginArticle/index.ts +7 -0
  134. package/src/containers/PluginRegistry/PluginRegistry.tsx +94 -0
  135. package/src/containers/PluginRegistry/index.ts +7 -0
  136. package/src/containers/index.ts +8 -0
  137. package/src/meta.ts +14 -7
  138. package/src/operations/index.ts +7 -0
  139. package/src/operations/open-plugin-registry.ts +21 -0
  140. package/dist/lib/browser/app-graph-builder-6CNBP3A4.mjs +0 -162
  141. package/dist/lib/browser/app-graph-builder-6CNBP3A4.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-XPEFEID2.mjs +0 -19
  143. package/dist/lib/browser/chunk-XPEFEID2.mjs.map +0 -7
  144. package/dist/lib/browser/intent-resolver-LKNUYBTN.mjs +0 -23
  145. package/dist/lib/browser/intent-resolver-LKNUYBTN.mjs.map +0 -7
  146. package/dist/lib/browser/react-surface-IGCXOVE2.mjs +0 -359
  147. package/dist/lib/browser/react-surface-IGCXOVE2.mjs.map +0 -7
  148. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  149. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  150. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  151. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  152. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  153. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  154. package/dist/types/src/components/PluginDetail.d.ts +0 -9
  155. package/dist/types/src/components/PluginDetail.d.ts.map +0 -1
  156. package/dist/types/src/components/PluginDetail.stories.d.ts.map +0 -1
  157. package/dist/types/src/components/PluginItem.d.ts.map +0 -1
  158. package/dist/types/src/components/PluginList.d.ts.map +0 -1
  159. package/dist/types/src/components/PluginList.stories.d.ts.map +0 -1
  160. package/dist/types/src/components/RegistryContainer.d.ts +0 -7
  161. package/dist/types/src/components/RegistryContainer.d.ts.map +0 -1
  162. package/src/capabilities/app-graph-builder.ts +0 -156
  163. package/src/capabilities/intent-resolver.ts +0 -27
  164. package/src/capabilities/react-surface.tsx +0 -86
  165. package/src/components/PluginDetail.stories.tsx +0 -45
  166. package/src/components/PluginDetail.tsx +0 -82
  167. package/src/components/PluginList.stories.tsx +0 -80
  168. package/src/components/RegistryContainer.tsx +0 -76
  169. /package/dist/types/src/components/{PluginList.stories.d.ts → PluginList/PluginList.stories.d.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ import {
2
+ meta,
3
+ registryCategoryId
4
+ } from "./chunk-FGKYAUX2.mjs";
5
+
6
+ // src/capabilities/react-surface/react-surface.tsx
7
+ import * as Effect from "effect/Effect";
8
+ import React, { useMemo } from "react";
9
+ import { Capabilities, Capability, Plugin } from "@dxos/app-framework";
10
+ import { Surface, usePluginManager } from "@dxos/app-framework/ui";
11
+
12
+ // src/containers/index.ts
13
+ import { lazy } from "react";
14
+ var PluginArticle = lazy(() => import("./PluginArticle-XBWRL2VJ.mjs"));
15
+ var PluginRegistry = lazy(() => import("./PluginRegistry-YU7M4VWL.mjs"));
16
+
17
+ // src/capabilities/react-surface/react-surface.tsx
18
+ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
19
+ Surface.create({
20
+ id: `${meta.id}.all`,
21
+ role: "article",
22
+ filter: (data) => data.subject === registryCategoryId("all"),
23
+ component: () => {
24
+ const manager = usePluginManager();
25
+ const filtered = useMemo(() => manager.getPlugins().filter(({ meta: meta2 }) => !manager.getCore().includes(meta2.id)), []);
26
+ return /* @__PURE__ */ React.createElement(PluginRegistry, {
27
+ id: registryCategoryId("all"),
28
+ plugins: filtered
29
+ });
30
+ }
31
+ }),
32
+ Surface.create({
33
+ id: `${meta.id}.installed`,
34
+ role: "article",
35
+ filter: (data) => data.subject === registryCategoryId("installed"),
36
+ component: () => {
37
+ const manager = usePluginManager();
38
+ const filtered = useMemo(() => manager.getPlugins().filter(({ meta: meta2 }) => !manager.getCore().includes(meta2.id)).filter(({ meta: meta2 }) => manager.getEnabled().includes(meta2.id)), []);
39
+ return /* @__PURE__ */ React.createElement(PluginRegistry, {
40
+ id: registryCategoryId("installed"),
41
+ plugins: filtered
42
+ });
43
+ }
44
+ }),
45
+ Surface.create({
46
+ id: `${meta.id}.recommended`,
47
+ role: "article",
48
+ filter: (data) => data.subject === registryCategoryId("recommended"),
49
+ component: () => {
50
+ const manager = usePluginManager();
51
+ const filtered = useMemo(() => manager.getPlugins().filter(({ meta: meta2 }) => !manager.getCore().includes(meta2.id)).filter(({ meta: meta2 }) => !meta2.tags?.includes("labs")), []);
52
+ return /* @__PURE__ */ React.createElement(PluginRegistry, {
53
+ id: registryCategoryId("recommended"),
54
+ plugins: filtered
55
+ });
56
+ }
57
+ }),
58
+ Surface.create({
59
+ id: `${meta.id}.labs`,
60
+ role: "article",
61
+ filter: (data) => data.subject === registryCategoryId("labs"),
62
+ component: () => {
63
+ const manager = usePluginManager();
64
+ const filtered = useMemo(() => manager.getPlugins().filter(({ meta: meta2 }) => meta2.tags?.includes("labs")), []);
65
+ return /* @__PURE__ */ React.createElement(PluginRegistry, {
66
+ id: registryCategoryId("labs"),
67
+ plugins: filtered
68
+ });
69
+ }
70
+ }),
71
+ Surface.create({
72
+ id: `${meta.id}.plugin-details`,
73
+ role: "article",
74
+ filter: (data) => Plugin.isPlugin(data.subject),
75
+ component: ({ data: { subject } }) => {
76
+ return /* @__PURE__ */ React.createElement(PluginArticle, {
77
+ subject
78
+ });
79
+ }
80
+ })
81
+ ])));
82
+ export {
83
+ react_surface_default as default
84
+ };
85
+ //# sourceMappingURL=react-surface-6NL2F2O3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React, { useMemo } from 'react';\n\nimport { Capabilities, Capability, Plugin } from '@dxos/app-framework';\nimport { Surface, usePluginManager } from '@dxos/app-framework/ui';\n\nimport { PluginArticle, PluginRegistry } from '../../containers';\nimport { registryCategoryId, meta } from '../../meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: `${meta.id}.all`,\n role: 'article',\n filter: (data): data is any => data.subject === registryCategoryId('all'),\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () => manager.getPlugins().filter(({ meta }) => !manager.getCore().includes(meta.id)),\n [],\n );\n\n return <PluginRegistry id={registryCategoryId('all')} plugins={filtered} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.installed`,\n role: 'article',\n filter: (data): data is any => data.subject === registryCategoryId('installed'),\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () =>\n manager\n .getPlugins()\n .filter(({ meta }) => !manager.getCore().includes(meta.id))\n .filter(({ meta }) => manager.getEnabled().includes(meta.id)),\n [],\n );\n\n return <PluginRegistry id={registryCategoryId('installed')} plugins={filtered} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.recommended`,\n role: 'article',\n filter: (data): data is any => data.subject === registryCategoryId('recommended'),\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(\n () =>\n manager\n .getPlugins()\n .filter(({ meta }) => !manager.getCore().includes(meta.id))\n .filter(({ meta }) => !meta.tags?.includes('labs')),\n [],\n );\n\n return <PluginRegistry id={registryCategoryId('recommended')} plugins={filtered} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.labs`,\n role: 'article',\n filter: (data): data is any => data.subject === registryCategoryId('labs'),\n component: () => {\n const manager = usePluginManager();\n const filtered = useMemo(() => manager.getPlugins().filter(({ meta }) => meta.tags?.includes('labs')), []);\n\n return <PluginRegistry id={registryCategoryId('labs')} plugins={filtered} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.plugin-details`,\n role: 'article',\n filter: (data): data is { subject: Plugin.Plugin } => Plugin.isPlugin(data.subject),\n component: ({ data: { subject } }) => {\n return <PluginArticle subject={subject} />;\n },\n }),\n ]),\n ),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const PluginArticle: ComponentType<any> = lazy(() => import('./PluginArticle'));\nexport const PluginRegistry: ComponentType<any> = lazy(() => import('./PluginRegistry'));\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "React", "useMemo", "Capabilities", "Capability", "Plugin", "Surface", "usePluginManager", "lazy", "PluginArticle", "lazy", "PluginRegistry", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "subject", "registryCategoryId", "component", "manager", "usePluginManager", "filtered", "useMemo", "getPlugins", "getCore", "includes", "PluginRegistry", "plugins", "getEnabled", "tags", "Plugin", "isPlugin", "PluginArticle"]
7
+ }
@@ -0,0 +1,30 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ PluginDetail
4
+ } from "./chunk-576PZRDS.mjs";
5
+ import "./chunk-44X3W2YY.mjs";
6
+
7
+ // src/containers/PluginArticle/PluginArticle.tsx
8
+ import React, { useCallback } from "react";
9
+ import { usePluginManager } from "@dxos/app-framework/ui";
10
+ import { runAndForwardErrors } from "@dxos/effect";
11
+ var PluginArticle = ({ subject: plugin }) => {
12
+ const manager = usePluginManager();
13
+ const enabled = manager.getEnabled().includes(plugin.meta.id);
14
+ const handleEnableChange = useCallback((enabled2) => enabled2 ? runAndForwardErrors(manager.enable(plugin.meta.id)) : runAndForwardErrors(manager.disable(plugin.meta.id)), [
15
+ manager,
16
+ plugin.meta.id
17
+ ]);
18
+ return /* @__PURE__ */ React.createElement(PluginDetail, {
19
+ plugin,
20
+ enabled,
21
+ onEnabledChange: handleEnableChange
22
+ });
23
+ };
24
+
25
+ // src/containers/PluginArticle/index.ts
26
+ var PluginArticle_default = PluginArticle;
27
+ export {
28
+ PluginArticle_default as default
29
+ };
30
+ //# sourceMappingURL=PluginArticle-FIVZRB45.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/PluginArticle/PluginArticle.tsx", "../../../src/containers/PluginArticle/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { usePluginManager } from '@dxos/app-framework/ui';\nimport { runAndForwardErrors } from '@dxos/effect';\n\nimport { PluginDetail } from '../../components';\n\n// TODO(burdon): Convert to ECHO type.\nexport type PluginArticleProps = { subject: Plugin.Plugin };\n\nexport const PluginArticle = ({ subject: plugin }: PluginArticleProps) => {\n const manager = usePluginManager();\n const enabled = manager.getEnabled().includes(plugin.meta.id);\n const handleEnableChange = useCallback(\n (enabled: boolean) =>\n enabled\n ? runAndForwardErrors(manager.enable(plugin.meta.id))\n : runAndForwardErrors(manager.disable(plugin.meta.id)),\n [manager, plugin.meta.id],\n );\n\n return <PluginDetail plugin={plugin} enabled={enabled} onEnabledChange={handleEnableChange} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { PluginArticle } from './PluginArticle';\n\nexport default PluginArticle;\n"],
5
+ "mappings": ";;;;;;;AAIA,OAAOA,SAASC,mBAAmB;AAGnC,SAASC,wBAAwB;AACjC,SAASC,2BAA2B;AAO7B,IAAMC,gBAAgB,CAAC,EAAEC,SAASC,OAAM,MAAsB;AACnE,QAAMC,UAAUC,iBAAAA;AAChB,QAAMC,UAAUF,QAAQG,WAAU,EAAGC,SAASL,OAAOM,KAAKC,EAAE;AAC5D,QAAMC,qBAAqBC,YACzB,CAACN,aACCA,WACIO,oBAAoBT,QAAQU,OAAOX,OAAOM,KAAKC,EAAE,CAAA,IACjDG,oBAAoBT,QAAQW,QAAQZ,OAAOM,KAAKC,EAAE,CAAA,GACxD;IAACN;IAASD,OAAOM,KAAKC;GAAG;AAG3B,SAAO,sBAAA,cAACM,cAAAA;IAAab;IAAgBG;IAAkBW,iBAAiBN;;AAC1E;;;ACrBA,IAAA,wBAAeO;",
6
+ "names": ["React", "useCallback", "usePluginManager", "runAndForwardErrors", "PluginArticle", "subject", "plugin", "manager", "usePluginManager", "enabled", "getEnabled", "includes", "meta", "id", "handleEnableChange", "useCallback", "runAndForwardErrors", "enable", "disable", "PluginDetail", "onEnabledChange", "PluginArticle"]
7
+ }
@@ -0,0 +1,83 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ PluginList
4
+ } from "./chunk-576PZRDS.mjs";
5
+ import {
6
+ getPluginPath
7
+ } from "./chunk-44X3W2YY.mjs";
8
+
9
+ // src/containers/PluginRegistry/PluginRegistry.tsx
10
+ import { useAtomValue } from "@effect-atom/atom-react";
11
+ import * as Effect from "effect/Effect";
12
+ import React, { useCallback, useMemo } from "react";
13
+ import { useCapabilities, useOperationInvoker, usePluginManager } from "@dxos/app-framework/ui";
14
+ import { AppCapabilities, LayoutOperation, SettingsOperation } from "@dxos/app-toolkit";
15
+ import { runAndForwardErrors } from "@dxos/effect";
16
+ import { ObservabilityOperation } from "@dxos/plugin-observability/operations";
17
+ import { ScrollArea } from "@dxos/react-ui";
18
+ import { composable, composableProps } from "@dxos/ui-theme";
19
+ var sortByPluginMeta = ({ meta: { name: a = "" } }, { meta: { name: b = "" } }) => a.localeCompare(b);
20
+ var PluginRegistry = composable(({ id, plugins: pluginsProp, ...props }, forwardedRef) => {
21
+ const manager = usePluginManager();
22
+ const { invoke, invokePromise } = useOperationInvoker();
23
+ const plugins = useMemo(() => pluginsProp.sort(sortByPluginMeta), [
24
+ pluginsProp
25
+ ]);
26
+ const enabled = useAtomValue(manager.enabled);
27
+ const allSettings = useCapabilities(AppCapabilities.Settings);
28
+ const handleChange = useCallback((id2, enabled2) => Effect.gen(function* () {
29
+ if (enabled2) {
30
+ yield* manager.enable(id2);
31
+ } else {
32
+ yield* manager.disable(id2);
33
+ }
34
+ yield* invoke(ObservabilityOperation.SendEvent, {
35
+ name: "plugins.toggle",
36
+ properties: {
37
+ plugin: id2,
38
+ enabled: enabled2
39
+ }
40
+ });
41
+ }).pipe(runAndForwardErrors), [
42
+ invoke,
43
+ manager
44
+ ]);
45
+ const handleClick = useCallback((pluginId) => invokePromise(LayoutOperation.Open, {
46
+ subject: [
47
+ getPluginPath(pluginId)
48
+ ],
49
+ pivotId: id,
50
+ positioning: "end"
51
+ }), [
52
+ invokePromise,
53
+ id
54
+ ]);
55
+ const hasSettings = useCallback((pluginId) => allSettings.some((s) => s.prefix === pluginId), [
56
+ allSettings
57
+ ]);
58
+ const handleSettings = useCallback((pluginId) => invokePromise(SettingsOperation.Open, {
59
+ plugin: pluginId
60
+ }), [
61
+ invokePromise
62
+ ]);
63
+ return /* @__PURE__ */ React.createElement(ScrollArea.Root, {
64
+ ...composableProps(props),
65
+ orientation: "vertical",
66
+ ref: forwardedRef
67
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(PluginList, {
68
+ plugins,
69
+ enabled,
70
+ onClick: handleClick,
71
+ onChange: handleChange,
72
+ hasSettings,
73
+ onSettings: handleSettings
74
+ })));
75
+ });
76
+ PluginRegistry.displayName = "PluginRegistry";
77
+
78
+ // src/containers/PluginRegistry/index.ts
79
+ var PluginRegistry_default = PluginRegistry;
80
+ export {
81
+ PluginRegistry_default as default
82
+ };
83
+ //# sourceMappingURL=PluginRegistry-RHD6ZITD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/PluginRegistry/PluginRegistry.tsx", "../../../src/containers/PluginRegistry/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { useCapabilities, useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation, SettingsOperation } from '@dxos/app-toolkit';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/operations';\nimport { ScrollArea } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport { PluginList } from '../../components';\nimport { getPluginPath } from '../../meta';\n\nconst sortByPluginMeta = ({ meta: { name: a = '' } }: Plugin.Plugin, { meta: { name: b = '' } }: Plugin.Plugin) =>\n a.localeCompare(b);\n\nexport type PluginRegistryProps = {\n id: string;\n plugins: Plugin.Plugin[];\n};\n\nexport const PluginRegistry = composable<HTMLDivElement, PluginRegistryProps>(\n ({ id, plugins: pluginsProp, ...props }, forwardedRef) => {\n const manager = usePluginManager();\n const { invoke, invokePromise } = useOperationInvoker();\n const plugins = useMemo(() => pluginsProp.sort(sortByPluginMeta), [pluginsProp]);\n const enabled = useAtomValue(manager.enabled);\n const allSettings = useCapabilities(AppCapabilities.Settings);\n\n // TODO(wittjosiah): Factor out to an intent?\n const handleChange = useCallback(\n (id: string, enabled: boolean) =>\n Effect.gen(function* () {\n if (enabled) {\n yield* manager.enable(id);\n } else {\n yield* manager.disable(id);\n }\n\n yield* invoke(ObservabilityOperation.SendEvent, {\n name: 'plugins.toggle',\n properties: {\n plugin: id,\n enabled,\n },\n });\n }).pipe(runAndForwardErrors),\n [invoke, manager],\n );\n\n const handleClick = useCallback(\n (pluginId: string) =>\n invokePromise(LayoutOperation.Open, {\n subject: [getPluginPath(pluginId)],\n pivotId: id,\n positioning: 'end',\n }),\n [invokePromise, id],\n );\n\n const hasSettings = useCallback(\n (pluginId: string) => allSettings.some((s) => s.prefix === pluginId),\n [allSettings],\n );\n\n const handleSettings = useCallback(\n (pluginId: string) => invokePromise(SettingsOperation.Open, { plugin: pluginId }),\n [invokePromise],\n );\n\n return (\n <ScrollArea.Root {...composableProps(props)} orientation='vertical' ref={forwardedRef}>\n <ScrollArea.Viewport>\n <PluginList\n plugins={plugins}\n enabled={enabled}\n onClick={handleClick}\n onChange={handleChange}\n hasSettings={hasSettings}\n onSettings={handleSettings}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n\nPluginRegistry.displayName = 'PluginRegistry';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { PluginRegistry } from './PluginRegistry';\n\nexport default PluginRegistry;\n"],
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,oBAAoB;AAC7B,YAAYC,YAAY;AACxB,OAAOC,SAASC,aAAaC,eAAe;AAG5C,SAASC,iBAAiBC,qBAAqBC,wBAAwB;AACvE,SAASC,iBAAiBC,iBAAiBC,yBAAyB;AACpE,SAASC,2BAA2B;AACpC,SAASC,8BAA8B;AACvC,SAASC,kBAAkB;AAC3B,SAASC,YAAYC,uBAAuB;AAK5C,IAAMC,mBAAmB,CAAC,EAAEC,MAAM,EAAEC,MAAMC,IAAI,GAAE,EAAE,GAAmB,EAAEF,MAAM,EAAEC,MAAME,IAAI,GAAE,EAAE,MAC3FD,EAAEE,cAAcD,CAAAA;AAOX,IAAME,iBAAiBC,WAC5B,CAAC,EAAEC,IAAIC,SAASC,aAAa,GAAGC,MAAAA,GAASC,iBAAAA;AACvC,QAAMC,UAAUC,iBAAAA;AAChB,QAAM,EAAEC,QAAQC,cAAa,IAAKC,oBAAAA;AAClC,QAAMR,UAAUS,QAAQ,MAAMR,YAAYS,KAAKnB,gBAAAA,GAAmB;IAACU;GAAY;AAC/E,QAAMU,UAAUC,aAAaR,QAAQO,OAAO;AAC5C,QAAME,cAAcC,gBAAgBC,gBAAgBC,QAAQ;AAG5D,QAAMC,eAAeC,YACnB,CAACnB,KAAYY,aACJQ,WAAI,aAAA;AACT,QAAIR,UAAS;AACX,aAAOP,QAAQgB,OAAOrB,GAAAA;IACxB,OAAO;AACL,aAAOK,QAAQiB,QAAQtB,GAAAA;IACzB;AAEA,WAAOO,OAAOgB,uBAAuBC,WAAW;MAC9C9B,MAAM;MACN+B,YAAY;QACVC,QAAQ1B;QACRY,SAAAA;MACF;IACF,CAAA;EACF,CAAA,EAAGe,KAAKC,mBAAAA,GACV;IAACrB;IAAQF;GAAQ;AAGnB,QAAMwB,cAAcV,YAClB,CAACW,aACCtB,cAAcuB,gBAAgBC,MAAM;IAClCC,SAAS;MAACC,cAAcJ,QAAAA;;IACxBK,SAASnC;IACToC,aAAa;EACf,CAAA,GACF;IAAC5B;IAAeR;GAAG;AAGrB,QAAMqC,cAAclB,YAClB,CAACW,aAAqBhB,YAAYwB,KAAK,CAACC,MAAMA,EAAEC,WAAWV,QAAAA,GAC3D;IAAChB;GAAY;AAGf,QAAM2B,iBAAiBtB,YACrB,CAACW,aAAqBtB,cAAckC,kBAAkBV,MAAM;IAAEN,QAAQI;EAAS,CAAA,GAC/E;IAACtB;GAAc;AAGjB,SACE,sBAAA,cAACmC,WAAWC,MAAI;IAAE,GAAGC,gBAAgB1C,KAAAA;IAAQ2C,aAAY;IAAWC,KAAK3C;KACvE,sBAAA,cAACuC,WAAWK,UAAQ,MAClB,sBAAA,cAACC,YAAAA;IACChD;IACAW;IACAsC,SAASrB;IACTsB,UAAUjC;IACVmB;IACAe,YAAYX;;AAKtB,CAAA;AAGF3C,eAAeuD,cAAc;;;ACvF7B,IAAA,yBAAeC;",
6
+ "names": ["useAtomValue", "Effect", "React", "useCallback", "useMemo", "useCapabilities", "useOperationInvoker", "usePluginManager", "AppCapabilities", "LayoutOperation", "SettingsOperation", "runAndForwardErrors", "ObservabilityOperation", "ScrollArea", "composable", "composableProps", "sortByPluginMeta", "meta", "name", "a", "b", "localeCompare", "PluginRegistry", "composable", "id", "plugins", "pluginsProp", "props", "forwardedRef", "manager", "usePluginManager", "invoke", "invokePromise", "useOperationInvoker", "useMemo", "sort", "enabled", "useAtomValue", "allSettings", "useCapabilities", "AppCapabilities", "Settings", "handleChange", "useCallback", "gen", "enable", "disable", "ObservabilityOperation", "SendEvent", "properties", "plugin", "pipe", "runAndForwardErrors", "handleClick", "pluginId", "LayoutOperation", "Open", "subject", "getPluginPath", "pivotId", "positioning", "hasSettings", "some", "s", "prefix", "handleSettings", "SettingsOperation", "ScrollArea", "Root", "composableProps", "orientation", "ref", "Viewport", "PluginList", "onClick", "onChange", "onSettings", "displayName", "PluginRegistry"]
7
+ }
@@ -0,0 +1,169 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ REGISTRY_ID,
4
+ REGISTRY_KEY,
5
+ meta,
6
+ registryCategoryId
7
+ } from "./chunk-44X3W2YY.mjs";
8
+
9
+ // src/capabilities/app-graph-builder/app-graph-builder.ts
10
+ import * as Effect from "effect/Effect";
11
+ import { Capabilities, Capability } from "@dxos/app-framework";
12
+ import { AppCapabilities, SettingsOperation } from "@dxos/app-toolkit";
13
+ import { Operation } from "@dxos/operation";
14
+ import { GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
15
+ var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
16
+ const capabilities = yield* Capability.Service;
17
+ const extensions = yield* Effect.all([
18
+ GraphBuilder.createExtension({
19
+ id: meta.id,
20
+ match: NodeMatcher.whenRoot,
21
+ actions: () => Effect.succeed([
22
+ {
23
+ id: meta.id,
24
+ data: () => Operation.invoke(SettingsOperation.OpenPluginRegistry),
25
+ properties: {
26
+ label: [
27
+ "open plugin registry label",
28
+ {
29
+ ns: meta.id
30
+ }
31
+ ],
32
+ icon: "ph--squares-four--regular",
33
+ disposition: "menu"
34
+ }
35
+ }
36
+ ])
37
+ }),
38
+ GraphBuilder.createExtension({
39
+ id: meta.id,
40
+ match: NodeMatcher.whenRoot,
41
+ connector: () => Effect.succeed([
42
+ {
43
+ id: REGISTRY_ID,
44
+ type: meta.id,
45
+ properties: {
46
+ label: [
47
+ "plugin registry label",
48
+ {
49
+ ns: meta.id
50
+ }
51
+ ],
52
+ icon: "ph--squares-four--regular",
53
+ disposition: "pin-end",
54
+ testId: "treeView.pluginRegistry"
55
+ },
56
+ nodes: [
57
+ {
58
+ id: registryCategoryId("all"),
59
+ type: "category",
60
+ data: registryCategoryId("all"),
61
+ properties: {
62
+ label: [
63
+ "all plugins label",
64
+ {
65
+ ns: meta.id
66
+ }
67
+ ],
68
+ icon: "ph--squares-four--regular",
69
+ key: REGISTRY_KEY,
70
+ testId: "pluginRegistry.all"
71
+ }
72
+ },
73
+ {
74
+ id: registryCategoryId("installed"),
75
+ type: "category",
76
+ data: registryCategoryId("installed"),
77
+ properties: {
78
+ label: [
79
+ "installed plugins label",
80
+ {
81
+ ns: meta.id
82
+ }
83
+ ],
84
+ icon: "ph--check--regular",
85
+ key: REGISTRY_KEY,
86
+ testId: "pluginRegistry.installed"
87
+ }
88
+ },
89
+ {
90
+ id: registryCategoryId("recommended"),
91
+ type: "category",
92
+ data: registryCategoryId("recommended"),
93
+ properties: {
94
+ label: [
95
+ "recommended plugins label",
96
+ {
97
+ ns: meta.id
98
+ }
99
+ ],
100
+ icon: "ph--star--regular",
101
+ key: REGISTRY_KEY,
102
+ testId: "pluginRegistry.recommended"
103
+ }
104
+ },
105
+ {
106
+ id: registryCategoryId("labs"),
107
+ type: "category",
108
+ data: registryCategoryId("labs"),
109
+ properties: {
110
+ label: [
111
+ "labs plugins label",
112
+ {
113
+ ns: meta.id
114
+ }
115
+ ],
116
+ icon: "ph--flask--regular",
117
+ key: REGISTRY_KEY,
118
+ testId: "pluginRegistry.labs"
119
+ }
120
+ }
121
+ ]
122
+ }
123
+ ])
124
+ }),
125
+ GraphBuilder.createExtension({
126
+ id: `${meta.id}.actions`,
127
+ match: NodeMatcher.whenId(`root/${REGISTRY_ID}`),
128
+ actions: () => Effect.succeed([
129
+ {
130
+ id: `${meta.id}.load-by-url`,
131
+ data: Effect.fnUntraced(function* () {
132
+ }),
133
+ properties: {
134
+ label: [
135
+ "load by url label",
136
+ {
137
+ ns: meta.id
138
+ }
139
+ ],
140
+ icon: "ph--cloud-arrow-down--regular",
141
+ disabled: true
142
+ }
143
+ }
144
+ ])
145
+ }),
146
+ GraphBuilder.createExtension({
147
+ id: `${meta.id}.plugins`,
148
+ match: NodeMatcher.whenId(`root/${REGISTRY_ID}`),
149
+ connector: () => {
150
+ const manager = capabilities.get(Capabilities.PluginManager);
151
+ return Effect.succeed(manager.getPlugins().map((plugin) => ({
152
+ id: plugin.meta.id,
153
+ type: "org.dxos.plugin",
154
+ data: plugin,
155
+ properties: {
156
+ label: plugin.meta.name ?? plugin.meta.id,
157
+ icon: plugin.meta.icon ?? "ph--circle--regular",
158
+ disposition: "hidden"
159
+ }
160
+ })));
161
+ }
162
+ })
163
+ ]);
164
+ return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
165
+ }));
166
+ export {
167
+ app_graph_builder_default as default
168
+ };
169
+ //# sourceMappingURL=app-graph-builder-FSZAEWLX.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, SettingsOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/operation';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\n\nimport { REGISTRY_ID, REGISTRY_KEY, registryCategoryId, meta } from '../../meta';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n {\n id: meta.id,\n data: () => Operation.invoke(SettingsOperation.OpenPluginRegistry),\n properties: {\n label: ['open plugin registry label', { ns: meta.id }],\n icon: 'ph--squares-four--regular',\n disposition: 'menu',\n },\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: meta.id,\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n {\n id: REGISTRY_ID,\n type: meta.id,\n properties: {\n label: ['plugin registry label', { ns: meta.id }],\n icon: 'ph--squares-four--regular',\n disposition: 'pin-end',\n testId: 'treeView.pluginRegistry',\n },\n nodes: [\n {\n id: registryCategoryId('all'),\n type: 'category' as const,\n data: registryCategoryId('all'),\n properties: {\n label: ['all plugins label', { ns: meta.id }],\n icon: 'ph--squares-four--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.all',\n },\n },\n {\n id: registryCategoryId('installed'),\n type: 'category' as const,\n data: registryCategoryId('installed'),\n properties: {\n label: ['installed plugins label', { ns: meta.id }],\n icon: 'ph--check--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.installed',\n },\n },\n {\n id: registryCategoryId('recommended'),\n type: 'category' as const,\n data: registryCategoryId('recommended'),\n properties: {\n label: ['recommended plugins label', { ns: meta.id }],\n icon: 'ph--star--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.recommended',\n },\n },\n {\n id: registryCategoryId('labs'),\n type: 'category' as const,\n data: registryCategoryId('labs'),\n properties: {\n label: ['labs plugins label', { ns: meta.id }],\n icon: 'ph--flask--regular',\n key: REGISTRY_KEY,\n testId: 'pluginRegistry.labs',\n },\n },\n ],\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}.actions`,\n match: NodeMatcher.whenId(`root/${REGISTRY_ID}`),\n actions: () =>\n Effect.succeed([\n {\n id: `${meta.id}.load-by-url`,\n data: Effect.fnUntraced(function* () {}),\n properties: {\n label: ['load by url label', { ns: meta.id }],\n icon: 'ph--cloud-arrow-down--regular',\n disabled: true,\n },\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}.plugins`,\n match: NodeMatcher.whenId(`root/${REGISTRY_ID}`),\n connector: () => {\n const manager = capabilities.get(Capabilities.PluginManager);\n return Effect.succeed(\n manager.getPlugins().map((plugin) => ({\n id: plugin.meta.id,\n type: 'org.dxos.plugin',\n data: plugin,\n properties: {\n label: plugin.meta.name ?? plugin.meta.id,\n icon: plugin.meta.icon ?? 'ph--circle--regular',\n disposition: 'hidden',\n },\n })),\n );\n },\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "SettingsOperation", "Operation", "GraphBuilder", "NodeMatcher", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "extensions", "all", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenRoot", "actions", "succeed", "data", "Operation", "invoke", "SettingsOperation", "OpenPluginRegistry", "properties", "label", "ns", "icon", "disposition", "connector", "REGISTRY_ID", "type", "testId", "nodes", "registryCategoryId", "key", "REGISTRY_KEY", "whenId", "disabled", "manager", "get", "Capabilities", "PluginManager", "getPlugins", "map", "plugin", "name", "contributes", "AppCapabilities", "AppGraphBuilder"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // src/meta.ts
4
+ import { pinnedWorkspaceId } from "@dxos/app-toolkit";
5
+ import { trim } from "@dxos/util";
6
+ var REGISTRY_ID = pinnedWorkspaceId("dxos:plugin-registry");
7
+ var REGISTRY_KEY = "plugin-registry";
8
+ var CATEGORY_SEPARATOR = ">";
9
+ var registryCategoryId = (category) => `${REGISTRY_KEY}${CATEGORY_SEPARATOR}${category}`;
10
+ var getPluginPath = (pluginId) => `root/${REGISTRY_ID}/${pluginId}`;
11
+ var meta = {
12
+ id: "org.dxos.plugin.registry",
13
+ name: "Plugins",
14
+ description: trim`
15
+ Plugin management system for discovering, installing, and configuring workspace extensions.
16
+ Browse available plugins and customize your workspace capabilities.
17
+ `
18
+ };
19
+
20
+ export {
21
+ REGISTRY_ID,
22
+ REGISTRY_KEY,
23
+ registryCategoryId,
24
+ getPluginPath,
25
+ meta
26
+ };
27
+ //# sourceMappingURL=chunk-44X3W2YY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { pinnedWorkspaceId } from '@dxos/app-toolkit';\nimport { trim } from '@dxos/util';\n\nexport const REGISTRY_ID = pinnedWorkspaceId('dxos:plugin-registry');\nexport const REGISTRY_KEY = 'plugin-registry';\n\n// TODO(wittjosiah): Should this be a special separator or use the standard path separator?\nconst CATEGORY_SEPARATOR = '>';\n\n/** Build a registry category node ID. */\nexport const registryCategoryId = (category: string): string => `${REGISTRY_KEY}${CATEGORY_SEPARATOR}${category}`;\n\n/** Qualified graph path to a specific plugin node. */\nexport const getPluginPath = (pluginId: string): string => `root/${REGISTRY_ID}/${pluginId}`;\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.registry',\n name: 'Plugins',\n description: trim`\n Plugin management system for discovering, installing, and configuring workspace extensions.\n Browse available plugins and customize your workspace capabilities.\n `,\n};\n"],
5
+ "mappings": ";;;AAKA,SAASA,yBAAyB;AAClC,SAASC,YAAY;AAEd,IAAMC,cAAcC,kBAAkB,sBAAA;AACtC,IAAMC,eAAe;AAG5B,IAAMC,qBAAqB;AAGpB,IAAMC,qBAAqB,CAACC,aAA6B,GAAGH,YAAAA,GAAeC,kBAAAA,GAAqBE,QAAAA;AAGhG,IAAMC,gBAAgB,CAACC,aAA6B,QAAQP,WAAAA,IAAeO,QAAAA;AAE3E,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;AAIf;",
6
+ "names": ["pinnedWorkspaceId", "trim", "REGISTRY_ID", "pinnedWorkspaceId", "REGISTRY_KEY", "CATEGORY_SEPARATOR", "registryCategoryId", "category", "getPluginPath", "pluginId", "meta", "id", "name", "description", "trim"]
7
+ }