@dxos/plugin-observability 0.8.3-staging.0fa589b → 0.8.4-main.28f8d3d

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 (108) hide show
  1. package/dist/lib/browser/{app-graph-builder-3ROXVPV2.mjs → app-graph-builder-2SLFJVUL.mjs} +4 -4
  2. package/dist/lib/{node-esm/app-graph-builder-T7J46NSQ.mjs.map → browser/app-graph-builder-2SLFJVUL.mjs.map} +3 -3
  3. package/dist/lib/browser/{chunk-RKH5BBR4.mjs → chunk-57RVSKYP.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-P7VVCZOC.mjs → chunk-AL5RST75.mjs} +21 -9
  5. package/dist/lib/browser/chunk-AL5RST75.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-NYBEHHJN.mjs → chunk-EAA6E4FU.mjs} +7 -7
  7. package/dist/lib/browser/{chunk-NYBEHHJN.mjs.map → chunk-EAA6E4FU.mjs.map} +3 -3
  8. package/dist/lib/browser/{chunk-BJ2ZWVOH.mjs → chunk-UUOBAWT2.mjs} +3 -3
  9. package/dist/lib/browser/{client-ready-LP3YSSAH.mjs → client-ready-NBJRF7OJ.mjs} +6 -6
  10. package/dist/lib/browser/client-ready-NBJRF7OJ.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +20 -20
  12. package/dist/lib/browser/index.mjs.map +3 -3
  13. package/dist/lib/browser/{intent-resolver-JESDDMKB.mjs → intent-resolver-NPEP5KJQ.mjs} +8 -8
  14. package/dist/lib/browser/intent-resolver-NPEP5KJQ.mjs.map +7 -0
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/{react-surface-LVUG4XN3.mjs → react-surface-245UEKB5.mjs} +6 -6
  17. package/dist/lib/browser/{react-surface-LVUG4XN3.mjs.map → react-surface-245UEKB5.mjs.map} +3 -3
  18. package/dist/lib/browser/{settings-V2DX26J3.mjs → settings-4WW5E4VA.mjs} +5 -5
  19. package/dist/lib/browser/{state-LG4FXJD2.mjs → state-N7RLB477.mjs} +4 -4
  20. package/dist/lib/browser/{state-LG4FXJD2.mjs.map → state-N7RLB477.mjs.map} +2 -2
  21. package/dist/lib/browser/types/index.mjs +10 -0
  22. package/dist/lib/node-esm/{app-graph-builder-T7J46NSQ.mjs → app-graph-builder-MMH6BVY4.mjs} +4 -4
  23. package/dist/lib/{browser/app-graph-builder-3ROXVPV2.mjs.map → node-esm/app-graph-builder-MMH6BVY4.mjs.map} +3 -3
  24. package/dist/lib/node-esm/{chunk-S2MXYKCI.mjs → chunk-5W5V4TVX.mjs} +21 -9
  25. package/dist/lib/node-esm/chunk-5W5V4TVX.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-KT5SDFBU.mjs → chunk-7XR7KMAA.mjs} +2 -2
  27. package/dist/lib/node-esm/{chunk-JJGRAKXD.mjs → chunk-D6QRS2CR.mjs} +7 -7
  28. package/dist/lib/node-esm/{chunk-JJGRAKXD.mjs.map → chunk-D6QRS2CR.mjs.map} +3 -3
  29. package/dist/lib/node-esm/{chunk-X2U2ZHWX.mjs → chunk-JTKEM7PT.mjs} +3 -3
  30. package/dist/lib/node-esm/{client-ready-FS62YRSD.mjs → client-ready-XDI3JWUY.mjs} +6 -6
  31. package/dist/lib/node-esm/client-ready-XDI3JWUY.mjs.map +7 -0
  32. package/dist/lib/node-esm/index.mjs +20 -20
  33. package/dist/lib/node-esm/index.mjs.map +3 -3
  34. package/dist/lib/node-esm/{intent-resolver-MREOBMHB.mjs → intent-resolver-OH4MMH5I.mjs} +8 -8
  35. package/dist/lib/node-esm/intent-resolver-OH4MMH5I.mjs.map +7 -0
  36. package/dist/lib/node-esm/meta.json +1 -1
  37. package/dist/lib/node-esm/{react-surface-B3JSZZAO.mjs → react-surface-ZR3IU2ZM.mjs} +6 -6
  38. package/dist/lib/node-esm/{react-surface-B3JSZZAO.mjs.map → react-surface-ZR3IU2ZM.mjs.map} +3 -3
  39. package/dist/lib/node-esm/{settings-BFFR4CHU.mjs → settings-BKKLNOFT.mjs} +5 -5
  40. package/dist/lib/node-esm/{state-IZNXQ5RA.mjs → state-LKANNCJJ.mjs} +4 -4
  41. package/dist/lib/node-esm/{state-IZNXQ5RA.mjs.map → state-LKANNCJJ.mjs.map} +2 -2
  42. package/dist/lib/node-esm/{types.mjs → types/index.mjs} +3 -3
  43. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  44. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  46. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  48. package/dist/types/src/components/HelpContainer.d.ts.map +1 -1
  49. package/dist/types/src/translations.d.ts +19 -19
  50. package/dist/types/src/translations.d.ts.map +1 -1
  51. package/dist/types/src/types/index.d.ts +2 -0
  52. package/dist/types/src/types/index.d.ts.map +1 -0
  53. package/dist/types/src/{types.d.ts → types/schema.d.ts} +36 -9
  54. package/dist/types/src/types/schema.d.ts.map +1 -0
  55. package/dist/types/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +32 -32
  57. package/src/ObservabilityPlugin.ts +3 -3
  58. package/src/capabilities/app-graph-builder.ts +2 -2
  59. package/src/capabilities/client-ready.ts +6 -5
  60. package/src/capabilities/intent-resolver.ts +3 -2
  61. package/src/capabilities/react-surface.tsx +1 -1
  62. package/src/capabilities/state.ts +2 -1
  63. package/src/components/HelpContainer.tsx +3 -2
  64. package/src/events.ts +1 -1
  65. package/src/translations.ts +6 -4
  66. package/src/types/index.ts +5 -0
  67. package/src/{types.ts → types/schema.ts} +20 -7
  68. package/dist/lib/browser/chunk-P7VVCZOC.mjs.map +0 -7
  69. package/dist/lib/browser/client-ready-LP3YSSAH.mjs.map +0 -7
  70. package/dist/lib/browser/intent-resolver-JESDDMKB.mjs.map +0 -7
  71. package/dist/lib/browser/types.mjs +0 -10
  72. package/dist/lib/node/app-graph-builder-EXZP366Q.cjs +0 -59
  73. package/dist/lib/node/app-graph-builder-EXZP366Q.cjs.map +0 -7
  74. package/dist/lib/node/chunk-2ERIOZP3.cjs +0 -36
  75. package/dist/lib/node/chunk-2ERIOZP3.cjs.map +0 -7
  76. package/dist/lib/node/chunk-B773OI2Y.cjs +0 -200
  77. package/dist/lib/node/chunk-B773OI2Y.cjs.map +0 -7
  78. package/dist/lib/node/chunk-HAIMXBCH.cjs +0 -38
  79. package/dist/lib/node/chunk-HAIMXBCH.cjs.map +0 -7
  80. package/dist/lib/node/chunk-UMH4JAVS.cjs +0 -199
  81. package/dist/lib/node/chunk-UMH4JAVS.cjs.map +0 -7
  82. package/dist/lib/node/client-ready-CTPKWHMP.cjs +0 -113
  83. package/dist/lib/node/client-ready-CTPKWHMP.cjs.map +0 -7
  84. package/dist/lib/node/index.cjs +0 -152
  85. package/dist/lib/node/index.cjs.map +0 -7
  86. package/dist/lib/node/intent-resolver-7G4GEUOA.cjs +0 -88
  87. package/dist/lib/node/intent-resolver-7G4GEUOA.cjs.map +0 -7
  88. package/dist/lib/node/meta.json +0 -1
  89. package/dist/lib/node/react-surface-CNFUEPBI.cjs +0 -55
  90. package/dist/lib/node/react-surface-CNFUEPBI.cjs.map +0 -7
  91. package/dist/lib/node/settings-RO5MXEQG.cjs +0 -39
  92. package/dist/lib/node/settings-RO5MXEQG.cjs.map +0 -7
  93. package/dist/lib/node/state-NXRP3P5D.cjs +0 -40
  94. package/dist/lib/node/state-NXRP3P5D.cjs.map +0 -7
  95. package/dist/lib/node/types.cjs +0 -32
  96. package/dist/lib/node/types.cjs.map +0 -7
  97. package/dist/lib/node-esm/chunk-S2MXYKCI.mjs.map +0 -7
  98. package/dist/lib/node-esm/client-ready-FS62YRSD.mjs.map +0 -7
  99. package/dist/lib/node-esm/intent-resolver-MREOBMHB.mjs.map +0 -7
  100. package/dist/types/src/types.d.ts.map +0 -1
  101. /package/dist/lib/browser/{chunk-RKH5BBR4.mjs.map → chunk-57RVSKYP.mjs.map} +0 -0
  102. /package/dist/lib/browser/{chunk-BJ2ZWVOH.mjs.map → chunk-UUOBAWT2.mjs.map} +0 -0
  103. /package/dist/lib/browser/{settings-V2DX26J3.mjs.map → settings-4WW5E4VA.mjs.map} +0 -0
  104. /package/dist/lib/browser/{types.mjs.map → types/index.mjs.map} +0 -0
  105. /package/dist/lib/node-esm/{chunk-KT5SDFBU.mjs.map → chunk-7XR7KMAA.mjs.map} +0 -0
  106. /package/dist/lib/node-esm/{chunk-X2U2ZHWX.mjs.map → chunk-JTKEM7PT.mjs.map} +0 -0
  107. /package/dist/lib/node-esm/{settings-BFFR4CHU.mjs.map → settings-BKKLNOFT.mjs.map} +0 -0
  108. /package/dist/lib/node-esm/{types.mjs.map → types/index.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-observability",
3
- "version": "0.8.3-staging.0fa589b",
3
+ "version": "0.8.4-main.28f8d3d",
4
4
  "description": "DXOS app framework plugin for hooking up app observability",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,21 +10,23 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "browser": "./dist/lib/browser/index.mjs",
15
16
  "node": "./dist/lib/node-esm/index.mjs"
16
17
  },
17
18
  "./types": {
18
- "types": "./dist/types/src/types.d.ts",
19
- "browser": "./dist/lib/browser/types.mjs",
20
- "node": "./dist/lib/node-esm/types.mjs"
19
+ "source": "./src/types/index.ts",
20
+ "types": "./dist/types/src/types/index.d.ts",
21
+ "browser": "./dist/lib/browser/types/index.mjs",
22
+ "node": "./dist/lib/node-esm/types/index.mjs"
21
23
  }
22
24
  },
23
25
  "types": "dist/types/src/index.d.ts",
24
26
  "typesVersions": {
25
27
  "*": {
26
28
  "types": [
27
- "dist/types/src/types.d.ts"
29
+ "dist/types/src/types/index.d.ts"
28
30
  ]
29
31
  }
30
32
  },
@@ -35,45 +37,43 @@
35
37
  "dependencies": {
36
38
  "@preact-signals/safe-react": "^0.9.0",
37
39
  "@preact/signals-core": "^1.9.0",
38
- "effect": "^3.13.3",
40
+ "effect": "3.17.7",
39
41
  "localforage": "^1.10.0",
40
- "@dxos/app-framework": "0.8.3-staging.0fa589b",
41
- "@dxos/context": "0.8.3-staging.0fa589b",
42
- "@dxos/echo-schema": "0.8.3-staging.0fa589b",
43
- "@dxos/echo": "0.8.3-staging.0fa589b",
44
- "@dxos/live-object": "0.8.3-staging.0fa589b",
45
- "@dxos/invariant": "0.8.3-staging.0fa589b",
46
- "@dxos/log": "0.8.3-staging.0fa589b",
47
- "@dxos/local-storage": "0.8.3-staging.0fa589b",
48
- "@dxos/observability": "0.8.3-staging.0fa589b",
49
- "@dxos/plugin-graph": "0.8.3-staging.0fa589b",
50
- "@dxos/protocols": "0.8.3-staging.0fa589b",
51
- "@dxos/react-client": "0.8.3-staging.0fa589b",
52
- "@dxos/react-ui-form": "0.8.3-staging.0fa589b",
53
- "@dxos/react-ui-stack": "0.8.3-staging.0fa589b",
54
- "@dxos/util": "0.8.3-staging.0fa589b",
55
- "@dxos/async": "0.8.3-staging.0fa589b"
42
+ "@dxos/app-framework": "0.8.4-main.28f8d3d",
43
+ "@dxos/context": "0.8.4-main.28f8d3d",
44
+ "@dxos/echo-schema": "0.8.4-main.28f8d3d",
45
+ "@dxos/live-object": "0.8.4-main.28f8d3d",
46
+ "@dxos/local-storage": "0.8.4-main.28f8d3d",
47
+ "@dxos/async": "0.8.4-main.28f8d3d",
48
+ "@dxos/log": "0.8.4-main.28f8d3d",
49
+ "@dxos/observability": "0.8.4-main.28f8d3d",
50
+ "@dxos/echo": "0.8.4-main.28f8d3d",
51
+ "@dxos/plugin-graph": "0.8.4-main.28f8d3d",
52
+ "@dxos/protocols": "0.8.4-main.28f8d3d",
53
+ "@dxos/react-client": "0.8.4-main.28f8d3d",
54
+ "@dxos/react-ui-form": "0.8.4-main.28f8d3d",
55
+ "@dxos/invariant": "0.8.4-main.28f8d3d",
56
+ "@dxos/react-ui-stack": "0.8.4-main.28f8d3d",
57
+ "@dxos/util": "0.8.4-main.28f8d3d"
56
58
  },
57
59
  "devDependencies": {
58
- "@effect-rx/rx-react": "^0.34.1",
59
- "@effect/platform": "0.80.12",
60
- "@phosphor-icons/react": "^2.1.5",
60
+ "@effect-rx/rx-react": "0.38.0",
61
+ "@effect/platform": "0.90.2",
61
62
  "@types/react": "~18.2.0",
62
63
  "react": "~18.2.0",
63
64
  "vite": "5.4.7",
64
- "@dxos/react-ui": "0.8.3-staging.0fa589b",
65
- "@dxos/react-ui-theme": "0.8.3-staging.0fa589b",
66
- "@dxos/storybook-utils": "0.8.3-staging.0fa589b"
65
+ "@dxos/react-ui": "0.8.4-main.28f8d3d",
66
+ "@dxos/react-ui-theme": "0.8.4-main.28f8d3d",
67
+ "@dxos/storybook-utils": "0.8.4-main.28f8d3d"
67
68
  },
68
69
  "peerDependencies": {
69
70
  "@effect-rx/rx-react": "^0.34.1",
70
- "@effect/platform": "0.80.12",
71
- "@phosphor-icons/react": "^2.1.5",
71
+ "@effect/platform": "^0.80.12",
72
72
  "effect": "^3.13.3",
73
73
  "react": "~18.2.0",
74
74
  "react-dom": "~18.2.0",
75
- "@dxos/react-ui-theme": "0.8.3-staging.0fa589b",
76
- "@dxos/react-ui": "0.8.3-staging.0fa589b"
75
+ "@dxos/react-ui": "0.8.4-main.28f8d3d",
76
+ "@dxos/react-ui-theme": "0.8.4-main.28f8d3d"
77
77
  },
78
78
  "publishConfig": {
79
79
  "access": "public"
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { allOf, Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';
5
+ import { Capabilities, Events, allOf, contributes, defineModule, definePlugin } from '@dxos/app-framework';
6
6
  import { type Observability } from '@dxos/observability';
7
7
 
8
8
  import {
@@ -14,9 +14,9 @@ import {
14
14
  ObservabilityState,
15
15
  ReactSurface,
16
16
  } from './capabilities';
17
- import { ObservabilityEvents, ClientReadyEvent } from './events';
17
+ import { ClientReadyEvent, ObservabilityEvents } from './events';
18
18
  import { meta } from './meta';
19
- import translations from './translations';
19
+ import { translations } from './translations';
20
20
 
21
21
  export const ObservabilityPlugin = (options: { namespace: string; observability: () => Promise<Observability> }) =>
22
22
  definePlugin(meta, [
@@ -5,8 +5,8 @@
5
5
  import { Rx } from '@effect-rx/rx-react';
6
6
  import { Option, pipe } from 'effect';
7
7
 
8
- import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
9
- import { createExtension, ROOT_ID } from '@dxos/plugin-graph';
8
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
9
+ import { ROOT_ID, createExtension } from '@dxos/plugin-graph';
10
10
 
11
11
  import { OBSERVABILITY_PLUGIN } from '../meta';
12
12
 
@@ -4,18 +4,19 @@
4
4
 
5
5
  import {
6
6
  Capabilities,
7
- contributes,
8
- createIntent,
9
7
  LayoutAction,
10
- SettingsAction,
11
8
  type PluginContext,
9
+ SettingsAction,
10
+ contributes,
11
+ createIntent,
12
12
  } from '@dxos/app-framework';
13
- import { setupTelemetryListeners, type Observability } from '@dxos/observability';
13
+ import { type Observability, setupTelemetryListeners } from '@dxos/observability';
14
14
 
15
- import { ClientCapability, ObservabilityCapabilities } from './capabilities';
16
15
  import { OBSERVABILITY_PLUGIN } from '../meta';
17
16
  import { ObservabilityAction } from '../types';
18
17
 
18
+ import { ClientCapability, ObservabilityCapabilities } from './capabilities';
19
+
19
20
  type ClientReadyOptions = {
20
21
  context: PluginContext;
21
22
  namespace: string;
@@ -2,15 +2,16 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createResolver, IntentAction, type PluginContext } from '@dxos/app-framework';
5
+ import { Capabilities, IntentAction, type PluginContext, contributes, createResolver } from '@dxos/app-framework';
6
6
  import { log } from '@dxos/log';
7
7
  import { getTelemetryIdentity, storeObservabilityDisabled } from '@dxos/observability';
8
8
 
9
- import { ClientCapability, ObservabilityCapabilities } from './capabilities';
10
9
  import { type ObservabilitySettingsProps } from '../components';
11
10
  import { OBSERVABILITY_PLUGIN } from '../meta';
12
11
  import { ObservabilityAction } from '../types';
13
12
 
13
+ import { ClientCapability, ObservabilityCapabilities } from './capabilities';
14
+
14
15
  export default ({ context, namespace }: { context: PluginContext; namespace: string }) =>
15
16
  contributes(Capabilities.IntentResolver, [
16
17
  createResolver({
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { contributes, Capabilities, createSurface } from '@dxos/app-framework';
7
+ import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
8
8
  import { SettingsStore } from '@dxos/local-storage';
9
9
 
10
10
  import { HelpContainer, ObservabilitySettings, type ObservabilitySettingsProps } from '../components';
@@ -6,9 +6,10 @@ import { contributes } from '@dxos/app-framework';
6
6
  import { LocalStorageStore } from '@dxos/local-storage';
7
7
  import { getObservabilityGroup } from '@dxos/observability';
8
8
 
9
- import { ObservabilityCapabilities } from './capabilities';
10
9
  import { OBSERVABILITY_PLUGIN } from '../meta';
11
10
 
11
+ import { ObservabilityCapabilities } from './capabilities';
12
+
12
13
  export default async ({ namespace }: { namespace: string }) => {
13
14
  const state = new LocalStorageStore<ObservabilityCapabilities.State>(OBSERVABILITY_PLUGIN);
14
15
 
@@ -5,12 +5,13 @@
5
5
  import { pipe } from 'effect';
6
6
  import React, { useCallback } from 'react';
7
7
 
8
- import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { LayoutAction, chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
9
 
10
- import { FeedbackForm } from './FeedbackForm';
11
10
  import { OBSERVABILITY_PLUGIN } from '../meta';
12
11
  import { ObservabilityAction, type UserFeedback } from '../types';
13
12
 
13
+ import { FeedbackForm } from './FeedbackForm';
14
+
14
15
  export const HelpContainer = () => {
15
16
  const { dispatchPromise: dispatch } = useIntentDispatcher();
16
17
 
package/src/events.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineEvent, Events } from '@dxos/app-framework';
5
+ import { Events, defineEvent } from '@dxos/app-framework';
6
6
 
7
7
  import { OBSERVABILITY_PLUGIN } from './meta';
8
8
 
@@ -2,12 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { OBSERVABILITY_PLUGIN } from './meta';
5
+ import { type Resource } from '@dxos/react-ui';
6
6
 
7
- export default [
7
+ import { meta } from './meta';
8
+
9
+ export const translations = [
8
10
  {
9
11
  'en-US': {
10
- [OBSERVABILITY_PLUGIN]: {
12
+ [meta.id]: {
11
13
  'plugin name': 'Telemetry',
12
14
  'observability toast label': 'Privacy Notice',
13
15
  'observability toast description':
@@ -29,4 +31,4 @@ export default [
29
31
  },
30
32
  },
31
33
  },
32
- ];
34
+ ] as const satisfies Resource[];
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './schema';
@@ -6,7 +6,7 @@ import { Schema } from 'effect';
6
6
 
7
7
  import { Type } from '@dxos/echo';
8
8
 
9
- import { OBSERVABILITY_PLUGIN } from './meta';
9
+ import { meta } from '../meta';
10
10
 
11
11
  const nonEmpty = <S extends Schema.Schema.Any>(field: string) =>
12
12
  Schema.nonEmptyString<S>({ message: () => `Missing field: ${field}` });
@@ -20,10 +20,8 @@ export const UserFeedback = Schema.Struct({
20
20
 
21
21
  export type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;
22
22
 
23
- const OBSERVABILITY_ACTION = `${OBSERVABILITY_PLUGIN}/action`;
24
-
25
23
  export namespace ObservabilityAction {
26
- export class Toggle extends Schema.TaggedClass<Toggle>()(`${OBSERVABILITY_ACTION}/toggle`, {
24
+ export class Toggle extends Schema.TaggedClass<Toggle>()(`${meta.id}/action/toggle`, {
27
25
  input: Schema.Struct({
28
26
  state: Schema.optional(Schema.Boolean),
29
27
  }),
@@ -31,7 +29,7 @@ export namespace ObservabilityAction {
31
29
  }) {}
32
30
 
33
31
  export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(
34
- `${OBSERVABILITY_ACTION}/capture-feedback`,
32
+ `${meta.id}/action/capture-feedback`,
35
33
  {
36
34
  input: UserFeedback,
37
35
  output: Schema.Void,
@@ -39,7 +37,7 @@ export namespace ObservabilityAction {
39
37
  ) {}
40
38
 
41
39
  /** Base intent for sending events. */
42
- export class BaseSendEvent extends Schema.TaggedClass<BaseSendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
40
+ export class BaseSendEvent extends Schema.TaggedClass<BaseSendEvent>()(`${meta.id}/action/send-event`, {
43
41
  input: Schema.Struct({
44
42
  name: Schema.String,
45
43
  properties: Schema.optional(Schema.Object),
@@ -48,7 +46,7 @@ export namespace ObservabilityAction {
48
46
  }) {}
49
47
 
50
48
  /** Intent with strict types for first-party events. */
51
- export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
49
+ export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${meta.id}/action/send-event`, {
52
50
  // NOTE: Sort alphabetically by name.
53
51
  input: Schema.Union(
54
52
  Schema.Struct({
@@ -115,6 +113,21 @@ export namespace ObservabilityAction {
115
113
  version: Schema.optional(Schema.String),
116
114
  }),
117
115
  }),
116
+ Schema.Struct({
117
+ name: Schema.Literal('space.schema.use'),
118
+ properties: Schema.Struct({
119
+ spaceId: Type.SpaceId,
120
+ typename: Schema.String,
121
+ }),
122
+ }),
123
+ Schema.Struct({
124
+ name: Schema.Literal('space.schema.add'),
125
+ properties: Schema.Struct({
126
+ spaceId: Type.SpaceId,
127
+ objectId: Schema.String,
128
+ typename: Schema.String,
129
+ }),
130
+ }),
118
131
  Schema.Struct({
119
132
  name: Schema.Literal('space.object.add'),
120
133
  properties: Schema.Struct({
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n\nimport { OBSERVABILITY_PLUGIN } from './meta';\n\nconst nonEmpty = <S extends Schema.Schema.Any>(field: string) =>\n Schema.nonEmptyString<S>({ message: () => `Missing field: ${field}` });\n\nconst maxLength = <S extends Schema.Schema.Any>(field: string, length: number) =>\n Schema.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });\n\nexport const UserFeedback = Schema.Struct({\n message: Schema.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),\n});\n\nexport type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;\n\nconst OBSERVABILITY_ACTION = `${OBSERVABILITY_PLUGIN}/action`;\n\nexport namespace ObservabilityAction {\n export class Toggle extends Schema.TaggedClass<Toggle>()(`${OBSERVABILITY_ACTION}/toggle`, {\n input: Schema.Struct({\n state: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Boolean,\n }) {}\n\n export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(\n `${OBSERVABILITY_ACTION}/capture-feedback`,\n {\n input: UserFeedback,\n output: Schema.Void,\n },\n ) {}\n\n /** Base intent for sending events. */\n export class BaseSendEvent extends Schema.TaggedClass<BaseSendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {\n input: Schema.Struct({\n name: Schema.String,\n properties: Schema.optional(Schema.Object),\n }),\n output: Schema.Void,\n }) {}\n\n /** Intent with strict types for first-party events. */\n export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {\n // NOTE: Sort alphabetically by name.\n input: Schema.Union(\n Schema.Struct({\n name: Schema.Literal('identity.create'),\n }),\n Schema.Struct({\n name: Schema.Literal('identity.join'),\n }),\n Schema.Struct({\n name: Schema.Literal('identity.recover'),\n }),\n Schema.Struct({\n name: Schema.Literal('identity.share'),\n }),\n Schema.Struct({\n name: Schema.Literal('navigation.activate'),\n properties: Schema.Struct({\n subjectId: Schema.String,\n typename: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('page.load'),\n properties: Schema.Struct({\n loadDuration: Schema.Number,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('plugins.toggle'),\n properties: Schema.Struct({\n plugin: Schema.String,\n enabled: Schema.Boolean,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.create'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.join'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.limit'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.lock'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.migrate'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n targetVersion: Schema.optional(Schema.String),\n version: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.object.add'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n objectId: Schema.String,\n typename: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.share'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.unlock'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.create'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.add'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n threadLength: Schema.Number,\n messageId: Schema.String,\n messageLength: Schema.Number,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n messageId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.undo-delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n messageId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.update'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n messageId: Schema.String,\n messageLength: Schema.Number,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.toggle-resolved'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.undo-delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n ),\n output: Schema.Void,\n }) {}\n}\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Type", "nonEmpty", "field", "Schema", "nonEmptyString", "message", "maxLength", "length", "UserFeedback", "Struct", "String", "pipe", "OBSERVABILITY_ACTION", "OBSERVABILITY_PLUGIN", "ObservabilityAction", "Toggle", "TaggedClass", "input", "state", "optional", "Boolean", "output", "CaptureUserFeedback", "Void", "BaseSendEvent", "name", "properties", "Object", "SendEvent", "Union", "Literal", "subjectId", "typename", "loadDuration", "Number", "plugin", "enabled", "spaceId", "Type", "SpaceId", "targetVersion", "version", "objectId", "threadId", "threadLength", "messageId", "messageLength"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/client-ready.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n SettingsAction,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { setupTelemetryListeners, type Observability } from '@dxos/observability';\n\nimport { ClientCapability, ObservabilityCapabilities } from './capabilities';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { ObservabilityAction } from '../types';\n\ntype ClientReadyOptions = {\n context: PluginContext;\n namespace: string;\n observability: Observability;\n};\n\nexport default async ({ context, namespace, observability }: ClientReadyOptions) => {\n const manager = context.getCapability(Capabilities.PluginManager);\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const state = context.getCapability(ObservabilityCapabilities.State);\n const client = context.getCapability(ClientCapability);\n\n const sendPrivacyNotice = async () => {\n const environment = client?.config?.values.runtime?.app?.env?.DX_ENVIRONMENT;\n const notify =\n environment && environment !== 'ci' && !environment.endsWith('.local') && !environment.endsWith('.lan');\n if (!state.notified && notify) {\n await dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${OBSERVABILITY_PLUGIN}/notice`,\n title: ['observability toast label', { ns: OBSERVABILITY_PLUGIN }],\n description: ['observability toast description', { ns: OBSERVABILITY_PLUGIN }],\n duration: Infinity,\n icon: 'ph--info--regular',\n actionLabel: ['observability toast action label', { ns: OBSERVABILITY_PLUGIN }],\n actionAlt: ['observability toast action alt', { ns: OBSERVABILITY_PLUGIN }],\n closeLabel: ['observability toast close label', { ns: OBSERVABILITY_PLUGIN }],\n onAction: () => dispatch(createIntent(SettingsAction.Open, { plugin: OBSERVABILITY_PLUGIN })),\n },\n }),\n );\n\n state.notified = true;\n }\n };\n\n // Ensure errors are tagged with enabled plugins to help with reproductions.\n manager.enabled.map((plugin) => observability?.setTag(`pluginEnabled-${plugin}`, 'true', 'errors'));\n\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'page.load',\n properties: {\n // TODO(wittjosiah): These apis are deprecated. Is there a better way to find this information?\n loadDuration: window.performance.timing.loadEventEnd - window.performance.timing.loadEventStart,\n },\n }),\n );\n\n // Start client observability (i.e. not running as shared worker)\n // TODO(nf): how to prevent multiple instances for single shared worker?\n const cleanup = setupTelemetryListeners(namespace, client, observability);\n\n await Promise.all([\n observability.setIdentityTags(client.services.services),\n observability.startRuntimeMetrics(client),\n observability.startNetworkMetrics(client.services.services),\n observability.startSpacesMetrics(client, namespace),\n ]);\n\n if (client.halo.identity.get()) {\n await sendPrivacyNotice();\n } else {\n const subscription = client.halo.identity.subscribe(async (identity) => {\n if (identity && observability) {\n await sendPrivacyNotice();\n await observability.setIdentityTags(client.services.services);\n subscription.unsubscribe();\n }\n });\n }\n\n return contributes(ObservabilityCapabilities.Observability, observability, async () => {\n cleanup();\n await observability.close();\n });\n};\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,SACEA,cACAC,aACAC,cACAC,cACAC,sBAEK;AACP,SAASC,+BAAmD;AAY5D,IAAA,uBAAe,OAAO,EAAEC,SAASC,WAAWC,cAAa,MAAsB;AAC7E,QAAMC,UAAUH,QAAQI,cAAcC,aAAaC,aAAa;AAChE,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKR,QAAQI,cAAcC,aAAaI,gBAAgB;AACzF,QAAMC,QAAQV,QAAQI,cAAcO,0BAA0BC,KAAK;AACnE,QAAMC,SAASb,QAAQI,cAAcU,gBAAAA;AAErC,QAAMC,oBAAoB,YAAA;AACxB,UAAMC,cAAcH,QAAQI,QAAQC,OAAOC,SAASC,KAAKC,KAAKC;AAC9D,UAAMC,SACJP,eAAeA,gBAAgB,QAAQ,CAACA,YAAYQ,SAAS,QAAA,KAAa,CAACR,YAAYQ,SAAS,MAAA;AAClG,QAAI,CAACd,MAAMe,YAAYF,QAAQ;AAC7B,YAAMf,SACJkB,aAAaC,aAAaC,UAAU;QAClCC,MAAM;QACNC,SAAS;UACPC,IAAI,GAAGC,oBAAAA;UACPC,OAAO;YAAC;YAA6B;cAAEC,IAAIF;YAAqB;;UAChEG,aAAa;YAAC;YAAmC;cAAED,IAAIF;YAAqB;;UAC5EI,UAAUC;UACVC,MAAM;UACNC,aAAa;YAAC;YAAoC;cAAEL,IAAIF;YAAqB;;UAC7EQ,WAAW;YAAC;YAAkC;cAAEN,IAAIF;YAAqB;;UACzES,YAAY;YAAC;YAAmC;cAAEP,IAAIF;YAAqB;;UAC3EU,UAAU,MAAMlC,SAASkB,aAAaiB,eAAeC,MAAM;YAAEC,QAAQb;UAAqB,CAAA,CAAA;QAC5F;MACF,CAAA,CAAA;AAGFtB,YAAMe,WAAW;IACnB;EACF;AAGAtB,UAAQ2C,QAAQC,IAAI,CAACF,WAAW3C,eAAe8C,OAAO,iBAAiBH,MAAAA,IAAU,QAAQ,QAAA,CAAA;AAEzF,QAAMrC,SACJkB,aAAauB,oBAAoBC,WAAW;IAC1CC,MAAM;IACNC,YAAY;;MAEVC,cAAcC,OAAOC,YAAYC,OAAOC,eAAeH,OAAOC,YAAYC,OAAOE;IACnF;EACF,CAAA,CAAA;AAKF,QAAMC,UAAUC,wBAAwB3D,WAAWY,QAAQX,aAAAA;AAE3D,QAAM2D,QAAQC,IAAI;IAChB5D,cAAc6D,gBAAgBlD,OAAOmD,SAASA,QAAQ;IACtD9D,cAAc+D,oBAAoBpD,MAAAA;IAClCX,cAAcgE,oBAAoBrD,OAAOmD,SAASA,QAAQ;IAC1D9D,cAAciE,mBAAmBtD,QAAQZ,SAAAA;GAC1C;AAED,MAAIY,OAAOuD,KAAKC,SAASC,IAAG,GAAI;AAC9B,UAAMvD,kBAAAA;EACR,OAAO;AACL,UAAMwD,eAAe1D,OAAOuD,KAAKC,SAASG,UAAU,OAAOH,aAAAA;AACzD,UAAIA,YAAYnE,eAAe;AAC7B,cAAMa,kBAAAA;AACN,cAAMb,cAAc6D,gBAAgBlD,OAAOmD,SAASA,QAAQ;AAC5DO,qBAAaE,YAAW;MAC1B;IACF,CAAA;EACF;AAEA,SAAOC,YAAY/D,0BAA0BgE,eAAezE,eAAe,YAAA;AACzEyD,YAAAA;AACA,UAAMzD,cAAc0E,MAAK;EAC3B,CAAA;AACF;",
6
- "names": ["Capabilities", "contributes", "createIntent", "LayoutAction", "SettingsAction", "setupTelemetryListeners", "context", "namespace", "observability", "manager", "getCapability", "Capabilities", "PluginManager", "dispatchPromise", "dispatch", "IntentDispatcher", "state", "ObservabilityCapabilities", "State", "client", "ClientCapability", "sendPrivacyNotice", "environment", "config", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "notify", "endsWith", "notified", "createIntent", "LayoutAction", "AddToast", "part", "subject", "id", "OBSERVABILITY_PLUGIN", "title", "ns", "description", "duration", "Infinity", "icon", "actionLabel", "actionAlt", "closeLabel", "onAction", "SettingsAction", "Open", "plugin", "enabled", "map", "setTag", "ObservabilityAction", "SendEvent", "name", "properties", "loadDuration", "window", "performance", "timing", "loadEventEnd", "loadEventStart", "cleanup", "setupTelemetryListeners", "Promise", "all", "setIdentityTags", "services", "startRuntimeMetrics", "startNetworkMetrics", "startSpacesMetrics", "halo", "identity", "get", "subscription", "subscribe", "unsubscribe", "contributes", "Observability", "close"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver, IntentAction, type PluginContext } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { getTelemetryIdentity, storeObservabilityDisabled } from '@dxos/observability';\n\nimport { ClientCapability, ObservabilityCapabilities } from './capabilities';\nimport { type ObservabilitySettingsProps } from '../components';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { ObservabilityAction } from '../types';\n\nexport default ({ context, namespace }: { context: PluginContext; namespace: string }) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: IntentAction.Track,\n resolve: (intent) => {\n log.info('intent', { intent });\n },\n }),\n createResolver({\n intent: ObservabilityAction.Toggle,\n resolve: async ({ state }) => {\n const client = context.getCapability(ClientCapability);\n const observability = context.getCapability(ObservabilityCapabilities.Observability);\n const settings = context\n .getCapability(Capabilities.SettingsStore)\n .getStore<ObservabilitySettingsProps>(OBSERVABILITY_PLUGIN)!.value;\n settings.enabled = state ?? !settings.enabled;\n observability.track({\n ...getTelemetryIdentity(client),\n action: 'observability.toggle',\n properties: {\n enabled: settings.enabled,\n },\n });\n observability.setMode(settings.enabled ? 'basic' : 'disabled');\n await storeObservabilityDisabled(namespace, !settings.enabled);\n return { data: settings.enabled };\n },\n }),\n createResolver({\n intent: ObservabilityAction.SendEvent,\n resolve: (data) => {\n const client = context.getCapability(ClientCapability);\n const properties = 'properties' in data ? data.properties : {};\n\n // NOTE: This is to ensure that events fired before observability is ready are still sent.\n // TODO(wittjosiah): If the intent dispatcher supports concurrent actions in the future,\n // then this could be awaited still rather than voiding.\n void context.waitForCapability(ObservabilityCapabilities.Observability).then((observability) => {\n observability.track({\n ...getTelemetryIdentity(client),\n action: data.name,\n properties,\n });\n });\n },\n }),\n createResolver({\n intent: ObservabilityAction.CaptureUserFeedback,\n resolve: async (data) => {\n const observability = context.getCapability(ObservabilityCapabilities.Observability);\n observability.captureUserFeedback(data.message);\n },\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,gBAAgBC,oBAAwC;AAC5F,SAASC,WAAW;AACpB,SAASC,sBAAsBC,kCAAkC;;AAOjE,IAAA,0BAAe,CAAC,EAAEC,SAASC,UAAS,MAClCC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,aAAaC;IACrBC,SAAS,CAACH,WAAAA;AACRI,UAAIC,KAAK,UAAU;QAAEL;MAAO,GAAA;;;;;;IAC9B;EACF,CAAA;EACAD,eAAe;IACbC,QAAQM,oBAAoBC;IAC5BJ,SAAS,OAAO,EAAEK,MAAK,MAAE;AACvB,YAAMC,SAASf,QAAQgB,cAAcC,gBAAAA;AACrC,YAAMC,gBAAgBlB,QAAQgB,cAAcG,0BAA0BC,aAAa;AACnF,YAAMC,WAAWrB,QACdgB,cAAcb,aAAamB,aAAa,EACxCC,SAAqCC,oBAAAA,EAAuBC;AAC/DJ,eAASK,UAAUZ,SAAS,CAACO,SAASK;AACtCR,oBAAcS,MAAM;QAClB,GAAGC,qBAAqBb,MAAAA;QACxBc,QAAQ;QACRC,YAAY;UACVJ,SAASL,SAASK;QACpB;MACF,CAAA;AACAR,oBAAca,QAAQV,SAASK,UAAU,UAAU,UAAA;AACnD,YAAMM,2BAA2B/B,WAAW,CAACoB,SAASK,OAAO;AAC7D,aAAO;QAAEO,MAAMZ,SAASK;MAAQ;IAClC;EACF,CAAA;EACArB,eAAe;IACbC,QAAQM,oBAAoBsB;IAC5BzB,SAAS,CAACwB,SAAAA;AACR,YAAMlB,SAASf,QAAQgB,cAAcC,gBAAAA;AACrC,YAAMa,aAAa,gBAAgBG,OAAOA,KAAKH,aAAa,CAAC;AAK7D,WAAK9B,QAAQmC,kBAAkBhB,0BAA0BC,aAAa,EAAEgB,KAAK,CAAClB,kBAAAA;AAC5EA,sBAAcS,MAAM;UAClB,GAAGC,qBAAqBb,MAAAA;UACxBc,QAAQI,KAAKI;UACbP;QACF,CAAA;MACF,CAAA;IACF;EACF,CAAA;EACAzB,eAAe;IACbC,QAAQM,oBAAoB0B;IAC5B7B,SAAS,OAAOwB,SAAAA;AACd,YAAMf,gBAAgBlB,QAAQgB,cAAcG,0BAA0BC,aAAa;AACnFF,oBAAcqB,oBAAoBN,KAAKO,OAAO;IAChD;EACF,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "createResolver", "IntentAction", "log", "getTelemetryIdentity", "storeObservabilityDisabled", "context", "namespace", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "IntentAction", "Track", "resolve", "log", "info", "ObservabilityAction", "Toggle", "state", "client", "getCapability", "ClientCapability", "observability", "ObservabilityCapabilities", "Observability", "settings", "SettingsStore", "getStore", "OBSERVABILITY_PLUGIN", "value", "enabled", "track", "getTelemetryIdentity", "action", "properties", "setMode", "storeObservabilityDisabled", "data", "SendEvent", "waitForCapability", "then", "name", "CaptureUserFeedback", "captureUserFeedback", "message"]
7
- }
@@ -1,10 +0,0 @@
1
- import {
2
- ObservabilityAction,
3
- UserFeedback
4
- } from "./chunk-P7VVCZOC.mjs";
5
- import "./chunk-RKH5BBR4.mjs";
6
- export {
7
- ObservabilityAction,
8
- UserFeedback
9
- };
10
- //# sourceMappingURL=types.mjs.map
@@ -1,59 +0,0 @@
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 app_graph_builder_EXZP366Q_exports = {};
20
- __export(app_graph_builder_EXZP366Q_exports, {
21
- default: () => app_graph_builder_default
22
- });
23
- module.exports = __toCommonJS(app_graph_builder_EXZP366Q_exports);
24
- var import_chunk_2ERIOZP3 = require("./chunk-2ERIOZP3.cjs");
25
- var import_rx_react = require("@effect-rx/rx-react");
26
- var import_effect = require("effect");
27
- var import_app_framework = require("@dxos/app-framework");
28
- var import_plugin_graph = require("@dxos/plugin-graph");
29
- var ATTENDABLE_PATH_SEPARATOR = "~";
30
- var DECK_COMPANION_TYPE = "dxos.org/plugin/deck/deck-companion";
31
- var app_graph_builder_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
32
- (0, import_plugin_graph.createExtension)({
33
- id: `${import_chunk_2ERIOZP3.OBSERVABILITY_PLUGIN}/help`,
34
- connector: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => node2.id === import_plugin_graph.ROOT_ID ? import_effect.Option.some(node2) : import_effect.Option.none()), import_effect.Option.map((node2) => {
35
- return [
36
- {
37
- id: [
38
- node2.id,
39
- "help"
40
- ].join(ATTENDABLE_PATH_SEPARATOR),
41
- type: DECK_COMPANION_TYPE,
42
- data: null,
43
- properties: {
44
- label: [
45
- "help label",
46
- {
47
- ns: import_chunk_2ERIOZP3.OBSERVABILITY_PLUGIN
48
- }
49
- ],
50
- icon: "ph--question--regular",
51
- disposition: "hidden",
52
- position: "hoist"
53
- }
54
- }
55
- ];
56
- }), import_effect.Option.getOrElse(() => [])))
57
- })
58
- ]);
59
- //# sourceMappingURL=app-graph-builder-EXZP366Q.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { createExtension, ROOT_ID } from '@dxos/plugin-graph';\n\nimport { OBSERVABILITY_PLUGIN } from '../meta';\n\n// NOTE: Copied from @dxos/plugin-deck to break circular dependency.\nconst ATTENDABLE_PATH_SEPARATOR = '~';\nconst DECK_COMPANION_TYPE = 'dxos.org/plugin/deck/deck-companion';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${OBSERVABILITY_PLUGIN}/help`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map((node) => {\n return [\n {\n id: [node.id, 'help'].join(ATTENDABLE_PATH_SEPARATOR),\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['help label', { ns: OBSERVABILITY_PLUGIN }],\n icon: 'ph--question--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,sBAAmB;AACnB,oBAA6B;AAE7B,2BAA8D;AAC9D,0BAAyC;AAKzC,IAAMA,4BAA4B;AAClC,IAAMC,sBAAsB;AAE5B,IAAA,4BAAe,CAACC,gBACdC,kCAAYC,kCAAaC,iBAAiB;MACxCC,qCAAgB;IACdC,IAAI,GAAGC,0CAAAA;IACPC,WAAW,CAACC,SACVC,mBAAGC,KAAK,CAACC,YACPC,oBACED,IAAIH,IAAAA,GACJK,qBAAOC,QAAQ,CAACN,UAAUA,MAAKH,OAAOU,8BAAUF,qBAAOG,KAAKR,KAAAA,IAAQK,qBAAOI,KAAI,CAAA,GAC/EJ,qBAAOK,IAAI,CAACV,UAAAA;AACV,aAAO;QACL;UACEH,IAAI;YAACG,MAAKH;YAAI;YAAQc,KAAKrB,yBAAAA;UAC3BsB,MAAMrB;UACNsB,MAAM;UACNC,YAAY;YACVC,OAAO;cAAC;cAAc;gBAAEC,IAAIlB;cAAqB;;YACjDmB,MAAM;YACNC,aAAa;YACbC,UAAU;UACZ;QACF;;IAEJ,CAAA,GACAd,qBAAOe,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
- "names": ["ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "OBSERVABILITY_PLUGIN", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "join", "type", "data", "properties", "label", "ns", "icon", "disposition", "position", "getOrElse"]
7
- }
@@ -1,36 +0,0 @@
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 chunk_2ERIOZP3_exports = {};
20
- __export(chunk_2ERIOZP3_exports, {
21
- OBSERVABILITY_PLUGIN: () => OBSERVABILITY_PLUGIN,
22
- meta: () => meta
23
- });
24
- module.exports = __toCommonJS(chunk_2ERIOZP3_exports);
25
- var OBSERVABILITY_PLUGIN = "dxos.org/plugin/observability";
26
- var meta = {
27
- id: OBSERVABILITY_PLUGIN,
28
- name: "Telemetry",
29
- icon: "ph--eye--regular"
30
- };
31
- // Annotate the CommonJS export names for ESM import in node:
32
- 0 && (module.exports = {
33
- OBSERVABILITY_PLUGIN,
34
- meta
35
- });
36
- //# sourceMappingURL=chunk-2ERIOZP3.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const OBSERVABILITY_PLUGIN = 'dxos.org/plugin/observability';\n\nexport const meta: PluginMeta = {\n id: OBSERVABILITY_PLUGIN,\n name: 'Telemetry',\n icon: 'ph--eye--regular',\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,uBAAuB;AAE7B,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,MAAM;AACR;",
6
- "names": ["OBSERVABILITY_PLUGIN", "meta", "id", "name", "icon"]
7
- }