@dxos/plugin-observability 0.8.2-main.fbd8ed0 → 0.8.2-staging.7ac8446

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 (107) hide show
  1. package/dist/lib/browser/app-graph-builder-OCAR3KUZ.mjs +40 -0
  2. package/dist/lib/browser/app-graph-builder-OCAR3KUZ.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-LIQQMROG.mjs → chunk-6Q6ZJ3N4.mjs} +9 -38
  4. package/dist/lib/browser/chunk-6Q6ZJ3N4.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-RI4RE346.mjs +178 -0
  6. package/dist/lib/browser/chunk-RI4RE346.mjs.map +7 -0
  7. package/dist/lib/browser/{client-ready-SPQ37TSN.mjs → client-ready-LRY24QM5.mjs} +6 -6
  8. package/dist/lib/browser/client-ready-LRY24QM5.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +9 -11
  10. package/dist/lib/browser/index.mjs.map +2 -2
  11. package/dist/lib/browser/{intent-resolver-WIABW2ED.mjs → intent-resolver-ZKNJCLDV.mjs} +7 -7
  12. package/dist/lib/browser/intent-resolver-ZKNJCLDV.mjs.map +7 -0
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{react-surface-KCDNYTFB.mjs → react-surface-S36FDV7I.mjs} +3 -3
  15. package/dist/lib/browser/{settings-GNURBGMS.mjs → settings-JFZJTDH7.mjs} +5 -5
  16. package/dist/lib/browser/settings-JFZJTDH7.mjs.map +7 -0
  17. package/dist/lib/browser/types.mjs +1 -1
  18. package/dist/lib/node/{app-graph-builder-EXZP366Q.cjs → app-graph-builder-JPUTX4LQ.cjs} +25 -28
  19. package/dist/lib/node/app-graph-builder-JPUTX4LQ.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-53PICBRX.cjs → chunk-FIL4BZE2.cjs} +13 -42
  21. package/dist/lib/node/chunk-FIL4BZE2.cjs.map +7 -0
  22. package/dist/lib/node/chunk-V4ZLLL5M.cjs +198 -0
  23. package/dist/lib/node/chunk-V4ZLLL5M.cjs.map +7 -0
  24. package/dist/lib/node/{client-ready-ZWYA3DIS.cjs → client-ready-KHGLQOQZ.cjs} +10 -10
  25. package/dist/lib/node/client-ready-KHGLQOQZ.cjs.map +7 -0
  26. package/dist/lib/node/index.cjs +13 -15
  27. package/dist/lib/node/index.cjs.map +2 -2
  28. package/dist/lib/node/{intent-resolver-RFEYBIAO.cjs → intent-resolver-5SANBSGX.cjs} +13 -13
  29. package/dist/lib/node/intent-resolver-5SANBSGX.cjs.map +7 -0
  30. package/dist/lib/node/meta.json +1 -1
  31. package/dist/lib/node/{react-surface-OO2LWKVU.cjs → react-surface-MWJS6OMP.cjs} +8 -8
  32. package/dist/lib/node/{settings-4JLLQAVK.cjs → settings-ARLOGCYU.cjs} +8 -8
  33. package/dist/lib/node/settings-ARLOGCYU.cjs.map +7 -0
  34. package/dist/lib/node/types.cjs +3 -3
  35. package/dist/lib/node/types.cjs.map +1 -1
  36. package/dist/lib/node-esm/app-graph-builder-RKURIIFT.mjs +41 -0
  37. package/dist/lib/node-esm/app-graph-builder-RKURIIFT.mjs.map +7 -0
  38. package/dist/lib/node-esm/chunk-M3MGU3DN.mjs +179 -0
  39. package/dist/lib/node-esm/chunk-M3MGU3DN.mjs.map +7 -0
  40. package/dist/lib/node-esm/{chunk-UBJECDGC.mjs → chunk-MW737PHD.mjs} +9 -38
  41. package/dist/lib/node-esm/chunk-MW737PHD.mjs.map +7 -0
  42. package/dist/lib/node-esm/{client-ready-TPMUYLT3.mjs → client-ready-4BUMAISA.mjs} +6 -6
  43. package/dist/lib/node-esm/client-ready-4BUMAISA.mjs.map +7 -0
  44. package/dist/lib/node-esm/index.mjs +9 -11
  45. package/dist/lib/node-esm/index.mjs.map +2 -2
  46. package/dist/lib/node-esm/{intent-resolver-BLGADJN2.mjs → intent-resolver-5EFEXLWX.mjs} +7 -7
  47. package/dist/lib/node-esm/intent-resolver-5EFEXLWX.mjs.map +7 -0
  48. package/dist/lib/node-esm/meta.json +1 -1
  49. package/dist/lib/node-esm/{react-surface-7MITMWY2.mjs → react-surface-VLQBOZTX.mjs} +3 -3
  50. package/dist/lib/node-esm/{settings-VK3GEOYK.mjs → settings-765HDSFY.mjs} +5 -5
  51. package/dist/lib/node-esm/settings-765HDSFY.mjs.map +7 -0
  52. package/dist/lib/node-esm/types.mjs +1 -1
  53. package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/app-graph-builder.d.ts +179 -2
  55. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/client-ready.d.ts +2 -2
  57. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/index.d.ts +180 -4
  59. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  61. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/state.d.ts +1 -1
  63. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  64. package/dist/types/src/components/FeedbackForm.d.ts.map +1 -1
  65. package/dist/types/src/components/HelpContainer.d.ts.map +1 -1
  66. package/dist/types/src/components/ObservabilitySettings.d.ts +4 -4
  67. package/dist/types/src/components/ObservabilitySettings.d.ts.map +1 -1
  68. package/dist/types/src/translations.d.ts +0 -2
  69. package/dist/types/src/translations.d.ts.map +1 -1
  70. package/dist/types/src/types.d.ts +145 -241
  71. package/dist/types/src/types.d.ts.map +1 -1
  72. package/dist/types/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +21 -29
  74. package/src/capabilities/app-graph-builder.ts +17 -29
  75. package/src/capabilities/client-ready.ts +6 -6
  76. package/src/capabilities/intent-resolver.ts +7 -7
  77. package/src/capabilities/settings.ts +2 -2
  78. package/src/components/HelpContainer.tsx +4 -21
  79. package/src/components/ObservabilitySettings.tsx +5 -5
  80. package/src/translations.ts +1 -3
  81. package/src/types.ts +126 -128
  82. package/dist/lib/browser/app-graph-builder-3ROXVPV2.mjs +0 -43
  83. package/dist/lib/browser/app-graph-builder-3ROXVPV2.mjs.map +0 -7
  84. package/dist/lib/browser/chunk-LIQQMROG.mjs.map +0 -7
  85. package/dist/lib/browser/chunk-VJOTUVP6.mjs +0 -179
  86. package/dist/lib/browser/chunk-VJOTUVP6.mjs.map +0 -7
  87. package/dist/lib/browser/client-ready-SPQ37TSN.mjs.map +0 -7
  88. package/dist/lib/browser/intent-resolver-WIABW2ED.mjs.map +0 -7
  89. package/dist/lib/browser/settings-GNURBGMS.mjs.map +0 -7
  90. package/dist/lib/node/app-graph-builder-EXZP366Q.cjs.map +0 -7
  91. package/dist/lib/node/chunk-53PICBRX.cjs.map +0 -7
  92. package/dist/lib/node/chunk-BPWXRLLR.cjs +0 -199
  93. package/dist/lib/node/chunk-BPWXRLLR.cjs.map +0 -7
  94. package/dist/lib/node/client-ready-ZWYA3DIS.cjs.map +0 -7
  95. package/dist/lib/node/intent-resolver-RFEYBIAO.cjs.map +0 -7
  96. package/dist/lib/node/settings-4JLLQAVK.cjs.map +0 -7
  97. package/dist/lib/node-esm/app-graph-builder-T7J46NSQ.mjs +0 -44
  98. package/dist/lib/node-esm/app-graph-builder-T7J46NSQ.mjs.map +0 -7
  99. package/dist/lib/node-esm/chunk-QBN3AIYD.mjs +0 -180
  100. package/dist/lib/node-esm/chunk-QBN3AIYD.mjs.map +0 -7
  101. package/dist/lib/node-esm/chunk-UBJECDGC.mjs.map +0 -7
  102. package/dist/lib/node-esm/client-ready-TPMUYLT3.mjs.map +0 -7
  103. package/dist/lib/node-esm/intent-resolver-BLGADJN2.mjs.map +0 -7
  104. package/dist/lib/node-esm/settings-VK3GEOYK.mjs.map +0 -7
  105. /package/dist/lib/browser/{react-surface-KCDNYTFB.mjs.map → react-surface-S36FDV7I.mjs.map} +0 -0
  106. /package/dist/lib/node/{react-surface-OO2LWKVU.cjs.map → react-surface-MWJS6OMP.cjs.map} +0 -0
  107. /package/dist/lib/node-esm/{react-surface-7MITMWY2.mjs.map → react-surface-VLQBOZTX.mjs.map} +0 -0
@@ -2,7 +2,7 @@
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, contributes, createResolver, IntentAction, type PluginsContext } from '@dxos/app-framework';
6
6
  import { log } from '@dxos/log';
7
7
  import { getTelemetryIdentity, storeObservabilityDisabled } from '@dxos/observability';
8
8
 
@@ -11,7 +11,7 @@ import { type ObservabilitySettingsProps } from '../components';
11
11
  import { OBSERVABILITY_PLUGIN } from '../meta';
12
12
  import { ObservabilityAction } from '../types';
13
13
 
14
- export default ({ context, namespace }: { context: PluginContext; namespace: string }) =>
14
+ export default ({ context, namespace }: { context: PluginsContext; namespace: string }) =>
15
15
  contributes(Capabilities.IntentResolver, [
16
16
  createResolver({
17
17
  intent: IntentAction.Track,
@@ -22,10 +22,10 @@ export default ({ context, namespace }: { context: PluginContext; namespace: str
22
22
  createResolver({
23
23
  intent: ObservabilityAction.Toggle,
24
24
  resolve: async ({ state }) => {
25
- const client = context.getCapability(ClientCapability);
26
- const observability = context.getCapability(ObservabilityCapabilities.Observability);
25
+ const client = context.requestCapability(ClientCapability);
26
+ const observability = context.requestCapability(ObservabilityCapabilities.Observability);
27
27
  const settings = context
28
- .getCapability(Capabilities.SettingsStore)
28
+ .requestCapability(Capabilities.SettingsStore)
29
29
  .getStore<ObservabilitySettingsProps>(OBSERVABILITY_PLUGIN)!.value;
30
30
  settings.enabled = state ?? !settings.enabled;
31
31
  observability.track({
@@ -43,7 +43,7 @@ export default ({ context, namespace }: { context: PluginContext; namespace: str
43
43
  createResolver({
44
44
  intent: ObservabilityAction.SendEvent,
45
45
  resolve: (data) => {
46
- const client = context.getCapability(ClientCapability);
46
+ const client = context.requestCapability(ClientCapability);
47
47
  const properties = 'properties' in data ? data.properties : {};
48
48
 
49
49
  // NOTE: This is to ensure that events fired before observability is ready are still sent.
@@ -61,7 +61,7 @@ export default ({ context, namespace }: { context: PluginContext; namespace: str
61
61
  createResolver({
62
62
  intent: ObservabilityAction.CaptureUserFeedback,
63
63
  resolve: async (data) => {
64
- const observability = context.getCapability(ObservabilityCapabilities.Observability);
64
+ const observability = context.requestCapability(ObservabilityCapabilities.Observability);
65
65
  observability.captureUserFeedback(data.message);
66
66
  },
67
67
  }),
@@ -3,13 +3,13 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, contributes } from '@dxos/app-framework';
6
- import { live } from '@dxos/live-object';
6
+ import { create } from '@dxos/live-object';
7
7
 
8
8
  import { type ObservabilitySettingsProps, ObservabilitySettingsSchema } from '../components';
9
9
  import { OBSERVABILITY_PLUGIN } from '../meta';
10
10
 
11
11
  export default () => {
12
- const settings = live<ObservabilitySettingsProps>({ enabled: true });
12
+ const settings = create<ObservabilitySettingsProps>({ enabled: true });
13
13
 
14
14
  return contributes(Capabilities.Settings, {
15
15
  schema: ObservabilitySettingsSchema,
@@ -2,37 +2,20 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { pipe } from 'effect';
6
5
  import React, { useCallback } from 'react';
7
6
 
8
- import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
7
+ import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
8
 
10
9
  import { FeedbackForm } from './FeedbackForm';
11
- import { OBSERVABILITY_PLUGIN } from '../meta';
12
10
  import { ObservabilityAction, type UserFeedback } from '../types';
13
11
 
14
12
  export const HelpContainer = () => {
15
13
  const { dispatchPromise: dispatch } = useIntentDispatcher();
16
14
 
17
15
  const handleSave = useCallback(
18
- (values: UserFeedback) =>
19
- dispatch(
20
- pipe(
21
- createIntent(ObservabilityAction.CaptureUserFeedback, values),
22
- chain(LayoutAction.UpdateComplementary, { part: 'complementary', options: { state: 'collapsed' } }),
23
- chain(LayoutAction.AddToast, {
24
- part: 'toast',
25
- subject: {
26
- id: `${OBSERVABILITY_PLUGIN}/feedback-success`,
27
- icon: 'ph--paper-plane-tilt--regular',
28
- duration: 3000,
29
- title: ['feedback toast label', { ns: OBSERVABILITY_PLUGIN }],
30
- description: ['feedback toast description', { ns: OBSERVABILITY_PLUGIN }],
31
- closeLabel: ['close label', { ns: 'os' }],
32
- },
33
- }),
34
- ),
35
- ),
16
+ (values: UserFeedback) => {
17
+ void dispatch(createIntent(ObservabilityAction.CaptureUserFeedback, values));
18
+ },
36
19
  [dispatch],
37
20
  );
38
21
 
@@ -2,19 +2,19 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
6
5
  import React from 'react';
7
6
 
8
7
  import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { S } from '@dxos/echo-schema';
9
9
  import { Input, Message, useTranslation } from '@dxos/react-ui';
10
10
  import { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';
11
11
 
12
12
  import { OBSERVABILITY_PLUGIN } from '../meta';
13
13
  import { ObservabilityAction } from '../types';
14
14
 
15
- export const ObservabilitySettingsSchema = Schema.mutable(
16
- Schema.Struct({
17
- enabled: Schema.Boolean,
15
+ export const ObservabilitySettingsSchema = S.mutable(
16
+ S.Struct({
17
+ enabled: S.Boolean,
18
18
  // TODO(wittjosiah): Separate settings for each observability feature.
19
19
  // metrics?: boolean;
20
20
  // telemetry?: boolean;
@@ -22,7 +22,7 @@ export const ObservabilitySettingsSchema = Schema.mutable(
22
22
  }),
23
23
  );
24
24
 
25
- export type ObservabilitySettingsProps = Schema.Schema.Type<typeof ObservabilitySettingsSchema>;
25
+ export type ObservabilitySettingsProps = S.Schema.Type<typeof ObservabilitySettingsSchema>;
26
26
 
27
27
  export const ObservabilitySettings = ({ settings }: { settings: ObservabilitySettingsProps }) => {
28
28
  const { t } = useTranslation(OBSERVABILITY_PLUGIN);
@@ -22,10 +22,8 @@ export default [
22
22
 
23
23
  'help label': 'Feedback & Support',
24
24
  'feedback text area label': 'Feedback',
25
- 'feedback text area placeholder': 'Please enter your feedback, technical issue, or feature request.',
25
+ 'feedback text area placeholder': 'Please describe your issue or suggestion.',
26
26
  'send feedback label': 'Send Feedback',
27
- 'feedback toast label': 'Thank you for your feedback!',
28
- 'feedback toast description': 'We will review your feedback and get back to you as soon as possible.',
29
27
  },
30
28
  },
31
29
  },
package/src/types.ts CHANGED
@@ -2,202 +2,200 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
6
-
7
- import { Type } from '@dxos/echo';
5
+ import { S } from '@dxos/echo-schema';
8
6
 
9
7
  import { OBSERVABILITY_PLUGIN } from './meta';
10
8
 
11
- const nonEmpty = <S extends Schema.Schema.Any>(field: string) =>
12
- Schema.nonEmptyString<S>({ message: () => `Missing field: ${field}` });
9
+ const nonEmpty = <S extends S.Schema.Any>(field: string) =>
10
+ S.nonEmptyString<S>({ message: () => `Missing field: ${field}` });
13
11
 
14
- const maxLength = <S extends Schema.Schema.Any>(field: string, length: number) =>
15
- Schema.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });
12
+ const maxLength = <S extends S.Schema.Any>(field: string, length: number) =>
13
+ S.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });
16
14
 
17
- export const UserFeedback = Schema.Struct({
18
- message: Schema.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),
15
+ export const UserFeedback = S.Struct({
16
+ message: S.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),
19
17
  });
20
18
 
21
- export type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;
19
+ export type UserFeedback = S.Schema.Type<typeof UserFeedback>;
22
20
 
23
21
  const OBSERVABILITY_ACTION = `${OBSERVABILITY_PLUGIN}/action`;
24
22
 
25
23
  export namespace ObservabilityAction {
26
- export class Toggle extends Schema.TaggedClass<Toggle>()(`${OBSERVABILITY_ACTION}/toggle`, {
27
- input: Schema.Struct({
28
- state: Schema.optional(Schema.Boolean),
24
+ export class Toggle extends S.TaggedClass<Toggle>()(`${OBSERVABILITY_ACTION}/toggle`, {
25
+ input: S.Struct({
26
+ state: S.optional(S.Boolean),
29
27
  }),
30
- output: Schema.Boolean,
28
+ output: S.Boolean,
31
29
  }) {}
32
30
 
33
- export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(
31
+ export class CaptureUserFeedback extends S.TaggedClass<CaptureUserFeedback>()(
34
32
  `${OBSERVABILITY_ACTION}/capture-feedback`,
35
33
  {
36
34
  input: UserFeedback,
37
- output: Schema.Void,
35
+ output: S.Void,
38
36
  },
39
37
  ) {}
40
38
 
41
39
  /** Base intent for sending events. */
42
- export class BaseSendEvent extends Schema.TaggedClass<BaseSendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
43
- input: Schema.Struct({
44
- name: Schema.String,
45
- properties: Schema.optional(Schema.Object),
40
+ export class BaseSendEvent extends S.TaggedClass<BaseSendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
41
+ input: S.Struct({
42
+ name: S.String,
43
+ properties: S.optional(S.Object),
46
44
  }),
47
- output: Schema.Void,
45
+ output: S.Void,
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 S.TaggedClass<SendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
52
50
  // NOTE: Sort alphabetically by name.
53
- input: Schema.Union(
54
- Schema.Struct({
55
- name: Schema.Literal('identity.create'),
51
+ input: S.Union(
52
+ S.Struct({
53
+ name: S.Literal('identity.create'),
56
54
  }),
57
- Schema.Struct({
58
- name: Schema.Literal('identity.join'),
55
+ S.Struct({
56
+ name: S.Literal('identity.join'),
59
57
  }),
60
- Schema.Struct({
61
- name: Schema.Literal('identity.recover'),
58
+ S.Struct({
59
+ name: S.Literal('identity.recover'),
62
60
  }),
63
- Schema.Struct({
64
- name: Schema.Literal('identity.share'),
61
+ S.Struct({
62
+ name: S.Literal('identity.share'),
65
63
  }),
66
- Schema.Struct({
67
- name: Schema.Literal('navigation.activate'),
68
- properties: Schema.Struct({
69
- subjectId: Schema.String,
70
- typename: Schema.optional(Schema.String),
64
+ S.Struct({
65
+ name: S.Literal('navigation.activate'),
66
+ properties: S.Struct({
67
+ subjectId: S.String,
68
+ typename: S.optional(S.String),
71
69
  }),
72
70
  }),
73
- Schema.Struct({
74
- name: Schema.Literal('page.load'),
75
- properties: Schema.Struct({
76
- loadDuration: Schema.Number,
71
+ S.Struct({
72
+ name: S.Literal('page.load'),
73
+ properties: S.Struct({
74
+ loadDuration: S.Number,
77
75
  }),
78
76
  }),
79
- Schema.Struct({
80
- name: Schema.Literal('plugins.toggle'),
81
- properties: Schema.Struct({
82
- plugin: Schema.String,
83
- enabled: Schema.Boolean,
77
+ S.Struct({
78
+ name: S.Literal('plugins.toggle'),
79
+ properties: S.Struct({
80
+ plugin: S.String,
81
+ enabled: S.Boolean,
84
82
  }),
85
83
  }),
86
- Schema.Struct({
87
- name: Schema.Literal('space.create'),
88
- properties: Schema.Struct({
89
- spaceId: Type.SpaceId,
84
+ S.Struct({
85
+ name: S.Literal('space.create'),
86
+ properties: S.Struct({
87
+ spaceId: S.String,
90
88
  }),
91
89
  }),
92
- Schema.Struct({
93
- name: Schema.Literal('space.join'),
94
- properties: Schema.Struct({
95
- spaceId: Type.SpaceId,
90
+ S.Struct({
91
+ name: S.Literal('space.join'),
92
+ properties: S.Struct({
93
+ spaceId: S.String,
96
94
  }),
97
95
  }),
98
- Schema.Struct({
99
- name: Schema.Literal('space.limit'),
100
- properties: Schema.Struct({
101
- spaceId: Type.SpaceId,
96
+ S.Struct({
97
+ name: S.Literal('space.limit'),
98
+ properties: S.Struct({
99
+ spaceId: S.String,
102
100
  }),
103
101
  }),
104
- Schema.Struct({
105
- name: Schema.Literal('space.lock'),
106
- properties: Schema.Struct({
107
- spaceId: Type.SpaceId,
102
+ S.Struct({
103
+ name: S.Literal('space.lock'),
104
+ properties: S.Struct({
105
+ spaceId: S.String,
108
106
  }),
109
107
  }),
110
- Schema.Struct({
111
- name: Schema.Literal('space.migrate'),
112
- properties: Schema.Struct({
113
- spaceId: Type.SpaceId,
114
- targetVersion: Schema.optional(Schema.String),
115
- version: Schema.optional(Schema.String),
108
+ S.Struct({
109
+ name: S.Literal('space.migrate'),
110
+ properties: S.Struct({
111
+ spaceId: S.String,
112
+ targetVersion: S.optional(S.String),
113
+ version: S.optional(S.String),
116
114
  }),
117
115
  }),
118
- Schema.Struct({
119
- name: Schema.Literal('space.object.add'),
120
- properties: Schema.Struct({
121
- spaceId: Type.SpaceId,
122
- objectId: Schema.String,
123
- typename: Schema.optional(Schema.String),
116
+ S.Struct({
117
+ name: S.Literal('space.object.add'),
118
+ properties: S.Struct({
119
+ spaceId: S.String,
120
+ objectId: S.String,
121
+ typename: S.optional(S.String),
124
122
  }),
125
123
  }),
126
- Schema.Struct({
127
- name: Schema.Literal('space.share'),
128
- properties: Schema.Struct({
129
- spaceId: Type.SpaceId,
124
+ S.Struct({
125
+ name: S.Literal('space.share'),
126
+ properties: S.Struct({
127
+ spaceId: S.String,
130
128
  }),
131
129
  }),
132
- Schema.Struct({
133
- name: Schema.Literal('space.unlock'),
134
- properties: Schema.Struct({
135
- spaceId: Type.SpaceId,
130
+ S.Struct({
131
+ name: S.Literal('space.unlock'),
132
+ properties: S.Struct({
133
+ spaceId: S.String,
136
134
  }),
137
135
  }),
138
- Schema.Struct({
139
- name: Schema.Literal('threads.create'),
140
- properties: Schema.Struct({
141
- spaceId: Type.SpaceId,
142
- threadId: Schema.String,
136
+ S.Struct({
137
+ name: S.Literal('threads.create'),
138
+ properties: S.Struct({
139
+ spaceId: S.String,
140
+ threadId: S.String,
143
141
  }),
144
142
  }),
145
- Schema.Struct({
146
- name: Schema.Literal('threads.delete'),
147
- properties: Schema.Struct({
148
- spaceId: Type.SpaceId,
149
- threadId: Schema.String,
143
+ S.Struct({
144
+ name: S.Literal('threads.delete'),
145
+ properties: S.Struct({
146
+ spaceId: S.String,
147
+ threadId: S.String,
150
148
  }),
151
149
  }),
152
- Schema.Struct({
153
- name: Schema.Literal('threads.message.add'),
154
- properties: Schema.Struct({
155
- spaceId: Type.SpaceId,
156
- threadId: Schema.String,
157
- threadLength: Schema.Number,
158
- messageId: Schema.String,
159
- messageLength: Schema.Number,
150
+ S.Struct({
151
+ name: S.Literal('threads.message.add'),
152
+ properties: S.Struct({
153
+ spaceId: S.String,
154
+ threadId: S.String,
155
+ threadLength: S.Number,
156
+ messageId: S.String,
157
+ messageLength: S.Number,
160
158
  }),
161
159
  }),
162
- Schema.Struct({
163
- name: Schema.Literal('threads.message.delete'),
164
- properties: Schema.Struct({
165
- spaceId: Type.SpaceId,
166
- threadId: Schema.String,
167
- messageId: Schema.String,
160
+ S.Struct({
161
+ name: S.Literal('threads.message.delete'),
162
+ properties: S.Struct({
163
+ spaceId: S.String,
164
+ threadId: S.String,
165
+ messageId: S.String,
168
166
  }),
169
167
  }),
170
- Schema.Struct({
171
- name: Schema.Literal('threads.message.undo-delete'),
172
- properties: Schema.Struct({
173
- spaceId: Type.SpaceId,
174
- threadId: Schema.String,
175
- messageId: Schema.String,
168
+ S.Struct({
169
+ name: S.Literal('threads.message.undo-delete'),
170
+ properties: S.Struct({
171
+ spaceId: S.String,
172
+ threadId: S.String,
173
+ messageId: S.String,
176
174
  }),
177
175
  }),
178
- Schema.Struct({
179
- name: Schema.Literal('threads.message.update'),
180
- properties: Schema.Struct({
181
- spaceId: Type.SpaceId,
182
- messageId: Schema.String,
183
- messageLength: Schema.Number,
176
+ S.Struct({
177
+ name: S.Literal('threads.message.update'),
178
+ properties: S.Struct({
179
+ spaceId: S.String,
180
+ messageId: S.String,
181
+ messageLength: S.Number,
184
182
  }),
185
183
  }),
186
- Schema.Struct({
187
- name: Schema.Literal('threads.toggle-resolved'),
188
- properties: Schema.Struct({
189
- spaceId: Type.SpaceId,
190
- threadId: Schema.String,
184
+ S.Struct({
185
+ name: S.Literal('threads.toggle-resolved'),
186
+ properties: S.Struct({
187
+ spaceId: S.String,
188
+ threadId: S.String,
191
189
  }),
192
190
  }),
193
- Schema.Struct({
194
- name: Schema.Literal('threads.undo-delete'),
195
- properties: Schema.Struct({
196
- spaceId: Type.SpaceId,
197
- threadId: Schema.String,
191
+ S.Struct({
192
+ name: S.Literal('threads.undo-delete'),
193
+ properties: S.Struct({
194
+ spaceId: S.String,
195
+ threadId: S.String,
198
196
  }),
199
197
  }),
200
198
  ),
201
- output: Schema.Void,
199
+ output: S.Void,
202
200
  }) {}
203
201
  }
@@ -1,43 +0,0 @@
1
- import {
2
- OBSERVABILITY_PLUGIN
3
- } from "./chunk-RKH5BBR4.mjs";
4
-
5
- // packages/plugins/plugin-observability/src/capabilities/app-graph-builder.ts
6
- import { Rx } from "@effect-rx/rx-react";
7
- import { Option, pipe } from "effect";
8
- import { Capabilities, contributes } from "@dxos/app-framework";
9
- import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
10
- var ATTENDABLE_PATH_SEPARATOR = "~";
11
- var DECK_COMPANION_TYPE = "dxos.org/plugin/deck/deck-companion";
12
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
13
- createExtension({
14
- id: `${OBSERVABILITY_PLUGIN}/help`,
15
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map((node2) => {
16
- return [
17
- {
18
- id: [
19
- node2.id,
20
- "help"
21
- ].join(ATTENDABLE_PATH_SEPARATOR),
22
- type: DECK_COMPANION_TYPE,
23
- data: null,
24
- properties: {
25
- label: [
26
- "help label",
27
- {
28
- ns: OBSERVABILITY_PLUGIN
29
- }
30
- ],
31
- icon: "ph--question--regular",
32
- disposition: "hidden",
33
- position: "hoist"
34
- }
35
- }
36
- ];
37
- }), Option.getOrElse(() => [])))
38
- })
39
- ]);
40
- export {
41
- app_graph_builder_default as default
42
- };
43
- //# sourceMappingURL=app-graph-builder-3ROXVPV2.mjs.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,SAASA,UAAU;AACnB,SAASC,QAAQC,YAAY;AAE7B,SAASC,cAAcC,mBAAuC;AAC9D,SAASC,iBAAiBC,eAAe;AAKzC,IAAMC,4BAA4B;AAClC,IAAMC,sBAAsB;AAE5B,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,oBAAAA;IACPC,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUA,MAAKH,OAAOU,UAAUF,OAAOG,KAAKR,KAAAA,IAAQK,OAAOI,KAAI,CAAA,GAC/EJ,OAAOK,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,OAAOe,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
- "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createExtension", "ROOT_ID", "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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/FeedbackForm.tsx", "../../../src/components/HelpContainer.tsx", "../../../src/components/ObservabilitySettings.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport { getSnapshot } from '@dxos/echo-schema';\nimport { IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { FormProvider, useFormContext, useInputProps } from '@dxos/react-ui-form';\n\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { UserFeedback } from '../types';\n\nconst defaultValues: UserFeedback = { message: '' };\n\nconst FormContent = () => {\n const { t } = useTranslation(OBSERVABILITY_PLUGIN);\n const { handleSave, canSave } = useFormContext<UserFeedback>();\n\n const messageProps = useInputProps(['message']);\n\n return (\n <div role='form' className='p-3 flex flex-col gap-2'>\n <div role='none' className='space-b-1'>\n <Input.Root validationValence={messageProps.getStatus().status}>\n <Input.Label>{t('feedback text area label')}</Input.Label>\n <Input.TextArea\n classNames={'text-sm'}\n rows={5}\n cols={30}\n placeholder={t('feedback text area placeholder')}\n value={messageProps.getValue() ?? ''}\n onChange={(e) => messageProps.onValueChange('string', e.target.value)}\n // TODO(wittjosiah): This aggressively shows validation errors.\n onBlur={messageProps.onBlur}\n />\n <Input.DescriptionAndValidation>\n <Input.Validation>{messageProps.getStatus().error}</Input.Validation>\n </Input.DescriptionAndValidation>\n </Input.Root>\n </div>\n\n <div role='none' className='space-b-2'>\n <IconButton\n icon='ph--paper-plane-tilt--regular'\n label={t('send feedback label')}\n variant='primary'\n type='submit'\n classNames='is-full'\n disabled={!canSave}\n onClick={handleSave}\n />\n </div>\n </div>\n );\n};\n\n// TODO(wittjosiah): Use `Form`?\nexport const FeedbackForm = ({ onSave }: { onSave: (values: UserFeedback) => void }) => {\n const formRef = useRef<HTMLDivElement>(null);\n const [_, update] = useState({});\n const forceRender = useCallback(() => update({}), [update]);\n\n const handleSave = useCallback(\n (values: UserFeedback) => {\n onSave(values);\n // TODO(wittjosiah): Force re-render to clear the form.\n forceRender();\n },\n [forceRender, onSave],\n );\n\n const initialValues = getSnapshot(defaultValues);\n\n return (\n <FormProvider formRef={formRef} schema={UserFeedback} initialValues={initialValues} onSave={handleSave}>\n <div ref={formRef}>\n <FormContent />\n </div>\n </FormProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { pipe } from 'effect';\nimport React, { useCallback } from 'react';\n\nimport { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\n\nimport { FeedbackForm } from './FeedbackForm';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { ObservabilityAction, type UserFeedback } from '../types';\n\nexport const HelpContainer = () => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const handleSave = useCallback(\n (values: UserFeedback) =>\n dispatch(\n pipe(\n createIntent(ObservabilityAction.CaptureUserFeedback, values),\n chain(LayoutAction.UpdateComplementary, { part: 'complementary', options: { state: 'collapsed' } }),\n chain(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${OBSERVABILITY_PLUGIN}/feedback-success`,\n icon: 'ph--paper-plane-tilt--regular',\n duration: 3000,\n title: ['feedback toast label', { ns: OBSERVABILITY_PLUGIN }],\n description: ['feedback toast description', { ns: OBSERVABILITY_PLUGIN }],\n closeLabel: ['close label', { ns: 'os' }],\n },\n }),\n ),\n ),\n [dispatch],\n );\n\n return <FeedbackForm onSave={handleSave} />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Input, Message, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { ObservabilityAction } from '../types';\n\nexport const ObservabilitySettingsSchema = Schema.mutable(\n Schema.Struct({\n enabled: Schema.Boolean,\n // TODO(wittjosiah): Separate settings for each observability feature.\n // metrics?: boolean;\n // telemetry?: boolean;\n // errors?: boolean;\n }),\n);\n\nexport type ObservabilitySettingsProps = Schema.Schema.Type<typeof ObservabilitySettingsSchema>;\n\nexport const ObservabilitySettings = ({ settings }: { settings: ObservabilitySettingsProps }) => {\n const { t } = useTranslation(OBSERVABILITY_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput\n label={t('observability enabled label')}\n secondary={\n <Message.Root valence='info'>\n <Message.Body>{t('observability description')}</Message.Body>\n </Message.Root>\n }\n >\n <Input.Switch\n checked={settings.enabled}\n onCheckedChange={(checked) => dispatch(createIntent(ObservabilityAction.Toggle, { state: !!checked }))}\n />\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useRef", "useState", "getSnapshot", "IconButton", "Input", "useTranslation", "FormProvider", "useFormContext", "useInputProps", "defaultValues", "message", "FormContent", "t", "useTranslation", "OBSERVABILITY_PLUGIN", "handleSave", "canSave", "useFormContext", "messageProps", "useInputProps", "div", "role", "className", "Input", "Root", "validationValence", "getStatus", "status", "Label", "TextArea", "classNames", "rows", "cols", "placeholder", "value", "getValue", "onChange", "e", "onValueChange", "target", "onBlur", "DescriptionAndValidation", "Validation", "error", "IconButton", "icon", "label", "variant", "type", "disabled", "onClick", "FeedbackForm", "onSave", "formRef", "useRef", "_", "update", "useState", "forceRender", "useCallback", "values", "initialValues", "getSnapshot", "FormProvider", "schema", "UserFeedback", "ref", "pipe", "React", "useCallback", "chain", "createIntent", "LayoutAction", "useIntentDispatcher", "HelpContainer", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleSave", "useCallback", "values", "pipe", "createIntent", "ObservabilityAction", "CaptureUserFeedback", "chain", "LayoutAction", "UpdateComplementary", "part", "options", "state", "AddToast", "subject", "id", "OBSERVABILITY_PLUGIN", "icon", "duration", "title", "ns", "description", "closeLabel", "React", "FeedbackForm", "onSave", "Schema", "React", "createIntent", "useIntentDispatcher", "Input", "Message", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "ObservabilitySettingsSchema", "Schema", "mutable", "Struct", "enabled", "Boolean", "ObservabilitySettings", "settings", "t", "useTranslation", "OBSERVABILITY_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "secondary", "Message", "Root", "valence", "Body", "Input", "Switch", "checked", "onCheckedChange", "createIntent", "ObservabilityAction", "Toggle", "state"]
7
- }