@dxos/plugin-observability 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef

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 (211) hide show
  1. package/dist/lib/browser/ObservabilitySettings-H6UKYDDT.mjs +27 -0
  2. package/dist/lib/browser/ObservabilitySettings-H6UKYDDT.mjs.map +7 -0
  3. package/dist/lib/browser/capture-user-feedback-3BXDUCZM.mjs +24 -0
  4. package/dist/lib/browser/capture-user-feedback-3BXDUCZM.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-DLBA63VM.mjs +83 -0
  6. package/dist/lib/browser/chunk-DLBA63VM.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  8. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-LHGNFXDI.mjs +32 -0
  10. package/dist/lib/browser/chunk-LHGNFXDI.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-VQC6DG6V.mjs +53 -0
  12. package/dist/lib/browser/chunk-VQC6DG6V.mjs.map +7 -0
  13. package/dist/lib/browser/components/index.mjs +45 -0
  14. package/dist/lib/browser/components/index.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +23 -117
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/operations/index.mjs +15 -0
  19. package/dist/lib/browser/operations/index.mjs.map +7 -0
  20. package/dist/lib/browser/send-event-F3D32CJX.mjs +22 -0
  21. package/dist/lib/browser/send-event-F3D32CJX.mjs.map +7 -0
  22. package/dist/lib/browser/toggle-PPNDFGWJ.mjs +47 -0
  23. package/dist/lib/browser/toggle-PPNDFGWJ.mjs.map +7 -0
  24. package/dist/lib/browser/translations.mjs +8 -0
  25. package/dist/lib/browser/translations.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +12 -6
  27. package/dist/lib/node-esm/ObservabilitySettings-HXTWPHHR.mjs +28 -0
  28. package/dist/lib/node-esm/ObservabilitySettings-HXTWPHHR.mjs.map +7 -0
  29. package/dist/lib/node-esm/capture-user-feedback-LUPWJWGK.mjs +25 -0
  30. package/dist/lib/node-esm/capture-user-feedback-LUPWJWGK.mjs.map +7 -0
  31. package/dist/lib/node-esm/chunk-3B7HMSKM.mjs +84 -0
  32. package/dist/lib/node-esm/chunk-3B7HMSKM.mjs.map +7 -0
  33. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  34. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  35. package/dist/lib/node-esm/chunk-J4EHZPH2.mjs +34 -0
  36. package/dist/lib/node-esm/chunk-J4EHZPH2.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-NCIKZY6L.mjs +54 -0
  38. package/dist/lib/node-esm/chunk-NCIKZY6L.mjs.map +7 -0
  39. package/dist/lib/node-esm/components/index.mjs +46 -0
  40. package/dist/lib/node-esm/components/index.mjs.map +7 -0
  41. package/dist/lib/node-esm/index.mjs +23 -117
  42. package/dist/lib/node-esm/index.mjs.map +4 -4
  43. package/dist/lib/node-esm/meta.json +1 -1
  44. package/dist/lib/node-esm/operations/index.mjs +16 -0
  45. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  46. package/dist/lib/node-esm/send-event-OKTEXC7M.mjs +23 -0
  47. package/dist/lib/node-esm/send-event-OKTEXC7M.mjs.map +7 -0
  48. package/dist/lib/node-esm/toggle-YS2KFMXS.mjs +48 -0
  49. package/dist/lib/node-esm/toggle-YS2KFMXS.mjs.map +7 -0
  50. package/dist/lib/node-esm/translations.mjs +9 -0
  51. package/dist/lib/node-esm/translations.mjs.map +7 -0
  52. package/dist/lib/node-esm/types/index.mjs +12 -6
  53. package/dist/types/src/ObservabilityPlugin.d.ts +9 -2
  54. package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
  55. package/dist/types/src/ObservabilityPlugin.node.d.ts +4 -0
  56. package/dist/types/src/ObservabilityPlugin.node.d.ts.map +1 -0
  57. package/dist/types/src/ObservabilityPlugin.test.d.ts +2 -0
  58. package/dist/types/src/ObservabilityPlugin.test.d.ts.map +1 -0
  59. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  60. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/client-ready.d.ts +5 -5
  62. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/index.d.ts +16 -15
  64. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  66. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  67. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  68. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/settings.d.ts +5 -2
  70. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/state.d.ts +10 -3
  72. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  73. package/dist/types/src/components/FeedbackForm/FeedbackForm.d.ts +9 -0
  74. package/dist/types/src/components/FeedbackForm/FeedbackForm.d.ts.map +1 -0
  75. package/dist/types/src/components/FeedbackForm/FeedbackForm.stories.d.ts +36 -0
  76. package/dist/types/src/components/FeedbackForm/FeedbackForm.stories.d.ts.map +1 -0
  77. package/dist/types/src/components/FeedbackForm/index.d.ts +2 -0
  78. package/dist/types/src/components/FeedbackForm/index.d.ts.map +1 -0
  79. package/dist/types/src/components/ObservabilitySettings/ObservabilitySettings.d.ts +6 -0
  80. package/dist/types/src/components/ObservabilitySettings/ObservabilitySettings.d.ts.map +1 -0
  81. package/dist/types/src/components/ObservabilitySettings/ObservabilitySettings.stories.d.ts +36 -0
  82. package/dist/types/src/components/ObservabilitySettings/ObservabilitySettings.stories.d.ts.map +1 -0
  83. package/dist/types/src/components/ObservabilitySettings/index.d.ts +2 -0
  84. package/dist/types/src/components/ObservabilitySettings/index.d.ts.map +1 -0
  85. package/dist/types/src/components/index.d.ts +2 -2
  86. package/dist/types/src/components/index.d.ts.map +1 -1
  87. package/dist/types/src/containers/HelpContainer/HelpContainer.d.ts +4 -0
  88. package/dist/types/src/containers/HelpContainer/HelpContainer.d.ts.map +1 -0
  89. package/dist/types/src/containers/HelpContainer/index.d.ts +2 -0
  90. package/dist/types/src/containers/HelpContainer/index.d.ts.map +1 -0
  91. package/dist/types/src/containers/index.d.ts +3 -0
  92. package/dist/types/src/containers/index.d.ts.map +1 -0
  93. package/dist/types/src/index.d.ts +4 -4
  94. package/dist/types/src/index.d.ts.map +1 -1
  95. package/dist/types/src/meta.d.ts +2 -2
  96. package/dist/types/src/meta.d.ts.map +1 -1
  97. package/dist/types/src/operations/capture-user-feedback.d.ts +5 -0
  98. package/dist/types/src/operations/capture-user-feedback.d.ts.map +1 -0
  99. package/dist/types/src/operations/definitions.d.ts +23 -0
  100. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  101. package/dist/types/src/operations/index.d.ts +5 -0
  102. package/dist/types/src/operations/index.d.ts.map +1 -0
  103. package/dist/types/src/operations/send-event.d.ts +5 -0
  104. package/dist/types/src/operations/send-event.d.ts.map +1 -0
  105. package/dist/types/src/operations/toggle.d.ts +5 -0
  106. package/dist/types/src/operations/toggle.d.ts.map +1 -0
  107. package/dist/types/src/translations.d.ts +17 -17
  108. package/dist/types/src/translations.d.ts.map +1 -1
  109. package/dist/types/src/types/Settings.d.ts +7 -0
  110. package/dist/types/src/types/Settings.d.ts.map +1 -0
  111. package/dist/types/src/types/capabilities.d.ts +31 -0
  112. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  113. package/dist/types/src/types/events.d.ts +6 -0
  114. package/dist/types/src/types/events.d.ts.map +1 -0
  115. package/dist/types/src/types/index.d.ts +3 -1
  116. package/dist/types/src/types/index.d.ts.map +1 -1
  117. package/dist/types/tsconfig.tsbuildinfo +1 -1
  118. package/package.json +74 -42
  119. package/src/ObservabilityPlugin.node.ts +33 -0
  120. package/src/ObservabilityPlugin.test.ts +25 -0
  121. package/src/ObservabilityPlugin.ts +67 -50
  122. package/src/capabilities/app-graph-builder.ts +28 -38
  123. package/src/capabilities/client-ready.ts +88 -79
  124. package/src/capabilities/index.ts +12 -8
  125. package/src/capabilities/operation-handler.ts +16 -0
  126. package/src/capabilities/react-surface.tsx +33 -19
  127. package/src/capabilities/settings.ts +26 -14
  128. package/src/capabilities/state.ts +20 -13
  129. package/src/components/FeedbackForm/FeedbackForm.stories.tsx +44 -0
  130. package/src/components/FeedbackForm/FeedbackForm.tsx +49 -0
  131. package/src/components/FeedbackForm/index.ts +5 -0
  132. package/src/components/ObservabilitySettings/ObservabilitySettings.stories.tsx +34 -0
  133. package/src/components/ObservabilitySettings/ObservabilitySettings.tsx +34 -0
  134. package/src/components/ObservabilitySettings/index.ts +5 -0
  135. package/src/components/index.ts +4 -2
  136. package/src/containers/HelpContainer/HelpContainer.tsx +57 -0
  137. package/src/containers/HelpContainer/index.ts +5 -0
  138. package/src/containers/index.ts +7 -0
  139. package/src/index.ts +8 -4
  140. package/src/meta.ts +8 -3
  141. package/src/operations/capture-user-feedback.ts +22 -0
  142. package/src/operations/definitions.ts +76 -0
  143. package/src/operations/index.ts +14 -0
  144. package/src/operations/send-event.ts +24 -0
  145. package/src/operations/toggle.ts +47 -0
  146. package/src/translations.ts +17 -17
  147. package/src/types/Settings.ts +22 -0
  148. package/src/types/capabilities.ts +44 -0
  149. package/src/types/events.ts +15 -0
  150. package/src/types/index.ts +3 -1
  151. package/dist/lib/browser/app-graph-builder-URADSG7H.mjs +0 -43
  152. package/dist/lib/browser/app-graph-builder-URADSG7H.mjs.map +0 -7
  153. package/dist/lib/browser/chunk-DS6CC4U2.mjs +0 -191
  154. package/dist/lib/browser/chunk-DS6CC4U2.mjs.map +0 -7
  155. package/dist/lib/browser/chunk-G754T676.mjs +0 -18
  156. package/dist/lib/browser/chunk-G754T676.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-GIXCFOTS.mjs +0 -179
  158. package/dist/lib/browser/chunk-GIXCFOTS.mjs.map +0 -7
  159. package/dist/lib/browser/chunk-SCJ3DALL.mjs +0 -11
  160. package/dist/lib/browser/chunk-SCJ3DALL.mjs.map +0 -7
  161. package/dist/lib/browser/client-ready-R6AHJ7S2.mjs +0 -102
  162. package/dist/lib/browser/client-ready-R6AHJ7S2.mjs.map +0 -7
  163. package/dist/lib/browser/intent-resolver-FPED2K7L.mjs +0 -77
  164. package/dist/lib/browser/intent-resolver-FPED2K7L.mjs.map +0 -7
  165. package/dist/lib/browser/react-surface-PI4EO5L6.mjs +0 -32
  166. package/dist/lib/browser/react-surface-PI4EO5L6.mjs.map +0 -7
  167. package/dist/lib/browser/settings-YPFHGPX2.mjs +0 -25
  168. package/dist/lib/browser/settings-YPFHGPX2.mjs.map +0 -7
  169. package/dist/lib/browser/state-OVWHPB7K.mjs +0 -26
  170. package/dist/lib/browser/state-OVWHPB7K.mjs.map +0 -7
  171. package/dist/lib/node-esm/app-graph-builder-HIU5PUNC.mjs +0 -44
  172. package/dist/lib/node-esm/app-graph-builder-HIU5PUNC.mjs.map +0 -7
  173. package/dist/lib/node-esm/chunk-4SMSG2RN.mjs +0 -13
  174. package/dist/lib/node-esm/chunk-4SMSG2RN.mjs.map +0 -7
  175. package/dist/lib/node-esm/chunk-HUZC43ID.mjs +0 -180
  176. package/dist/lib/node-esm/chunk-HUZC43ID.mjs.map +0 -7
  177. package/dist/lib/node-esm/chunk-VGDRT4ZD.mjs +0 -192
  178. package/dist/lib/node-esm/chunk-VGDRT4ZD.mjs.map +0 -7
  179. package/dist/lib/node-esm/chunk-ZS4YMD63.mjs +0 -19
  180. package/dist/lib/node-esm/chunk-ZS4YMD63.mjs.map +0 -7
  181. package/dist/lib/node-esm/client-ready-OYW7KJYM.mjs +0 -103
  182. package/dist/lib/node-esm/client-ready-OYW7KJYM.mjs.map +0 -7
  183. package/dist/lib/node-esm/intent-resolver-OZBOPHXD.mjs +0 -78
  184. package/dist/lib/node-esm/intent-resolver-OZBOPHXD.mjs.map +0 -7
  185. package/dist/lib/node-esm/react-surface-N34XWDMU.mjs +0 -33
  186. package/dist/lib/node-esm/react-surface-N34XWDMU.mjs.map +0 -7
  187. package/dist/lib/node-esm/settings-EOJWJNAZ.mjs +0 -26
  188. package/dist/lib/node-esm/settings-EOJWJNAZ.mjs.map +0 -7
  189. package/dist/lib/node-esm/state-5UHYHOJV.mjs +0 -27
  190. package/dist/lib/node-esm/state-5UHYHOJV.mjs.map +0 -7
  191. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  192. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  193. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -7
  194. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  195. package/dist/types/src/components/FeedbackForm.d.ts +0 -6
  196. package/dist/types/src/components/FeedbackForm.d.ts.map +0 -1
  197. package/dist/types/src/components/HelpContainer.d.ts +0 -3
  198. package/dist/types/src/components/HelpContainer.d.ts.map +0 -1
  199. package/dist/types/src/components/ObservabilitySettings.d.ts +0 -10
  200. package/dist/types/src/components/ObservabilitySettings.d.ts.map +0 -1
  201. package/dist/types/src/events.d.ts +0 -5
  202. package/dist/types/src/events.d.ts.map +0 -1
  203. package/dist/types/src/types/schema.d.ts +0 -313
  204. package/dist/types/src/types/schema.d.ts.map +0 -1
  205. package/src/capabilities/capabilities.ts +0 -23
  206. package/src/capabilities/intent-resolver.ts +0 -69
  207. package/src/components/FeedbackForm.tsx +0 -82
  208. package/src/components/HelpContainer.tsx +0 -41
  209. package/src/components/ObservabilitySettings.tsx +0 -48
  210. package/src/events.ts +0 -14
  211. package/src/types/schema.ts +0 -216
@@ -1,69 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capabilities, IntentAction, type PluginContext, contributes, createResolver } from '@dxos/app-framework';
6
- import { log } from '@dxos/log';
7
- import { getTelemetryIdentity, storeObservabilityDisabled } from '@dxos/observability';
8
-
9
- import { type ObservabilitySettingsProps } from '../components';
10
- import { meta } from '../meta';
11
- import { ObservabilityAction } from '../types';
12
-
13
- import { ClientCapability, ObservabilityCapabilities } from './capabilities';
14
-
15
- export default ({ context, namespace }: { context: PluginContext; namespace: string }) =>
16
- contributes(Capabilities.IntentResolver, [
17
- createResolver({
18
- intent: IntentAction.Track,
19
- resolve: (intent) => {
20
- log.info('intent', { intent });
21
- },
22
- }),
23
- createResolver({
24
- intent: ObservabilityAction.Toggle,
25
- resolve: async ({ state }) => {
26
- const client = context.getCapability(ClientCapability);
27
- const observability = context.getCapability(ObservabilityCapabilities.Observability);
28
- const settings = context
29
- .getCapability(Capabilities.SettingsStore)
30
- .getStore<ObservabilitySettingsProps>(meta.id)!.value;
31
- settings.enabled = state ?? !settings.enabled;
32
- observability.track({
33
- ...getTelemetryIdentity(client),
34
- action: 'observability.toggle',
35
- properties: {
36
- enabled: settings.enabled,
37
- },
38
- });
39
- observability.setMode(settings.enabled ? 'basic' : 'disabled');
40
- await storeObservabilityDisabled(namespace, !settings.enabled);
41
- return { data: settings.enabled };
42
- },
43
- }),
44
- createResolver({
45
- intent: ObservabilityAction.SendEvent,
46
- resolve: (data) => {
47
- const client = context.getCapability(ClientCapability);
48
- const properties = 'properties' in data ? data.properties : {};
49
-
50
- // NOTE: This is to ensure that events fired before observability is ready are still sent.
51
- // TODO(wittjosiah): If the intent dispatcher supports concurrent actions in the future,
52
- // then this could be awaited still rather than voiding.
53
- void context.waitForCapability(ObservabilityCapabilities.Observability).then((observability) => {
54
- observability.track({
55
- ...getTelemetryIdentity(client),
56
- action: data.name,
57
- properties,
58
- });
59
- });
60
- },
61
- }),
62
- createResolver({
63
- intent: ObservabilityAction.CaptureUserFeedback,
64
- resolve: async (data) => {
65
- const observability = context.getCapability(ObservabilityCapabilities.Observability);
66
- observability.captureUserFeedback(data.message);
67
- },
68
- }),
69
- ]);
@@ -1,82 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { useCallback, useRef, useState } from 'react';
6
-
7
- import { getSnapshot } from '@dxos/echo-schema';
8
- import { IconButton, Input, useTranslation } from '@dxos/react-ui';
9
- import { FormProvider, useFormContext, useInputProps } from '@dxos/react-ui-form';
10
-
11
- import { meta } from '../meta';
12
- import { UserFeedback } from '../types';
13
-
14
- const defaultValues: UserFeedback = { message: '' };
15
-
16
- const FormContent = () => {
17
- const { t } = useTranslation(meta.id);
18
- const { handleSave, canSave } = useFormContext<UserFeedback>();
19
-
20
- const messageProps = useInputProps(['message']);
21
-
22
- return (
23
- <div role='form' className='p-3 flex flex-col gap-2'>
24
- <div role='none' className='space-b-1'>
25
- <Input.Root validationValence={messageProps.getStatus().status}>
26
- <Input.Label>{t('feedback text area label')}</Input.Label>
27
- <Input.TextArea
28
- classNames={'text-sm'}
29
- rows={5}
30
- cols={30}
31
- placeholder={t('feedback text area placeholder')}
32
- value={messageProps.getValue() ?? ''}
33
- onChange={(e) => messageProps.onValueChange('string', e.target.value)}
34
- // TODO(wittjosiah): This aggressively shows validation errors.
35
- onBlur={messageProps.onBlur}
36
- />
37
- <Input.DescriptionAndValidation>
38
- <Input.Validation>{messageProps.getStatus().error}</Input.Validation>
39
- </Input.DescriptionAndValidation>
40
- </Input.Root>
41
- </div>
42
-
43
- <div role='none' className='space-b-2'>
44
- <IconButton
45
- icon='ph--paper-plane-tilt--regular'
46
- label={t('send feedback label')}
47
- variant='primary'
48
- type='submit'
49
- classNames='is-full'
50
- disabled={!canSave}
51
- onClick={handleSave}
52
- />
53
- </div>
54
- </div>
55
- );
56
- };
57
-
58
- // TODO(wittjosiah): Use `Form`?
59
- export const FeedbackForm = ({ onSave }: { onSave: (values: UserFeedback) => void }) => {
60
- const formRef = useRef<HTMLDivElement>(null);
61
- const [_, update] = useState({});
62
- const forceRender = useCallback(() => update({}), [update]);
63
-
64
- const handleSave = useCallback(
65
- (values: UserFeedback) => {
66
- onSave(values);
67
- // TODO(wittjosiah): Force re-render to clear the form.
68
- forceRender();
69
- },
70
- [forceRender, onSave],
71
- );
72
-
73
- const initialValues = getSnapshot(defaultValues);
74
-
75
- return (
76
- <FormProvider formRef={formRef} schema={UserFeedback} initialValues={initialValues} onSave={handleSave}>
77
- <div ref={formRef}>
78
- <FormContent />
79
- </div>
80
- </FormProvider>
81
- );
82
- };
@@ -1,41 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { pipe } from 'effect';
6
- import React, { useCallback } from 'react';
7
-
8
- import { LayoutAction, chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
-
10
- import { meta } from '../meta';
11
- import { ObservabilityAction, type UserFeedback } from '../types';
12
-
13
- import { FeedbackForm } from './FeedbackForm';
14
-
15
- export const HelpContainer = () => {
16
- const { dispatchPromise: dispatch } = useIntentDispatcher();
17
-
18
- const handleSave = useCallback(
19
- (values: UserFeedback) =>
20
- dispatch(
21
- pipe(
22
- createIntent(ObservabilityAction.CaptureUserFeedback, values),
23
- chain(LayoutAction.UpdateComplementary, { part: 'complementary', options: { state: 'collapsed' } }),
24
- chain(LayoutAction.AddToast, {
25
- part: 'toast',
26
- subject: {
27
- id: `${meta.id}/feedback-success`,
28
- icon: 'ph--paper-plane-tilt--regular',
29
- duration: 3000,
30
- title: ['feedback toast label', { ns: meta.id }],
31
- description: ['feedback toast description', { ns: meta.id }],
32
- closeLabel: ['close label', { ns: 'os' }],
33
- },
34
- }),
35
- ),
36
- ),
37
- [dispatch],
38
- );
39
-
40
- return <FeedbackForm onSave={handleSave} />;
41
- };
@@ -1,48 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { Schema } from 'effect';
6
- import React from 'react';
7
-
8
- import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
- import { Input, Message, useTranslation } from '@dxos/react-ui';
10
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';
11
-
12
- import { meta } from '../meta';
13
- import { ObservabilityAction } from '../types';
14
-
15
- export const ObservabilitySettingsSchema = Schema.mutable(
16
- Schema.Struct({
17
- enabled: Schema.Boolean,
18
- // TODO(wittjosiah): Separate settings for each observability feature.
19
- // metrics?: boolean;
20
- // telemetry?: boolean;
21
- // errors?: boolean;
22
- }),
23
- );
24
-
25
- export type ObservabilitySettingsProps = Schema.Schema.Type<typeof ObservabilitySettingsSchema>;
26
-
27
- export const ObservabilitySettings = ({ settings }: { settings: ObservabilitySettingsProps }) => {
28
- const { t } = useTranslation(meta.id);
29
- const { dispatchPromise: dispatch } = useIntentDispatcher();
30
-
31
- return (
32
- <ControlPage>
33
- <ControlSection title={t('settings title', { ns: meta.id })}>
34
- <Message.Root valence='info' classNames='container-max-width mbe-cardSpacingBlock'>
35
- <Message.Content>{t('observability description')}</Message.Content>
36
- </Message.Root>
37
- <ControlGroup>
38
- <ControlItemInput title={t('observability enabled label')}>
39
- <Input.Switch
40
- checked={settings.enabled}
41
- onCheckedChange={(checked) => dispatch(createIntent(ObservabilityAction.Toggle, { state: !!checked }))}
42
- />
43
- </ControlItemInput>
44
- </ControlGroup>
45
- </ControlSection>
46
- </ControlPage>
47
- );
48
- };
package/src/events.ts DELETED
@@ -1,14 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Events, defineEvent } from '@dxos/app-framework';
6
-
7
- import { meta } from './meta';
8
-
9
- export namespace ObservabilityEvents {
10
- export const StateReady = Events.createStateEvent(meta.id);
11
- }
12
-
13
- // NOTE: This is cloned from the client plugin to avoid circular dependencies.
14
- export const ClientReadyEvent = defineEvent('dxos.org/plugin/client/event/client-ready');
@@ -1,216 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { Schema } from 'effect';
6
-
7
- import { Type } from '@dxos/echo';
8
-
9
- import { meta } from '../meta';
10
-
11
- const nonEmpty = <S extends Schema.Schema.Any>(field: string) =>
12
- Schema.nonEmptyString<S>({ message: () => `Missing field: ${field}` });
13
-
14
- const maxLength = <S extends Schema.Schema.Any>(field: string, length: number) =>
15
- Schema.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });
16
-
17
- export const UserFeedback = Schema.Struct({
18
- message: Schema.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),
19
- });
20
-
21
- export type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;
22
-
23
- export namespace ObservabilityAction {
24
- export class Toggle extends Schema.TaggedClass<Toggle>()(`${meta.id}/action/toggle`, {
25
- input: Schema.Struct({
26
- state: Schema.optional(Schema.Boolean),
27
- }),
28
- output: Schema.Boolean,
29
- }) {}
30
-
31
- export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(
32
- `${meta.id}/action/capture-feedback`,
33
- {
34
- input: UserFeedback,
35
- output: Schema.Void,
36
- },
37
- ) {}
38
-
39
- /** Base intent for sending events. */
40
- export class BaseSendEvent extends Schema.TaggedClass<BaseSendEvent>()(`${meta.id}/action/send-event`, {
41
- input: Schema.Struct({
42
- name: Schema.String,
43
- properties: Schema.optional(Schema.Object),
44
- }),
45
- output: Schema.Void,
46
- }) {}
47
-
48
- /** Intent with strict types for first-party events. */
49
- export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${meta.id}/action/send-event`, {
50
- // NOTE: Sort alphabetically by name.
51
- input: Schema.Union(
52
- Schema.Struct({
53
- name: Schema.Literal('identity.create'),
54
- }),
55
- Schema.Struct({
56
- name: Schema.Literal('identity.join'),
57
- }),
58
- Schema.Struct({
59
- name: Schema.Literal('identity.recover'),
60
- }),
61
- Schema.Struct({
62
- name: Schema.Literal('identity.share'),
63
- }),
64
- Schema.Struct({
65
- name: Schema.Literal('navigation.activate'),
66
- properties: Schema.Struct({
67
- subjectId: Schema.String,
68
- typename: Schema.optional(Schema.String),
69
- }),
70
- }),
71
- Schema.Struct({
72
- name: Schema.Literal('page.load'),
73
- properties: Schema.Struct({
74
- loadDuration: Schema.Number,
75
- }),
76
- }),
77
- Schema.Struct({
78
- name: Schema.Literal('plugins.toggle'),
79
- properties: Schema.Struct({
80
- plugin: Schema.String,
81
- enabled: Schema.Boolean,
82
- }),
83
- }),
84
- Schema.Struct({
85
- name: Schema.Literal('space.create'),
86
- properties: Schema.Struct({
87
- spaceId: Type.SpaceId,
88
- }),
89
- }),
90
- Schema.Struct({
91
- name: Schema.Literal('space.join'),
92
- properties: Schema.Struct({
93
- spaceId: Type.SpaceId,
94
- }),
95
- }),
96
- Schema.Struct({
97
- name: Schema.Literal('space.limit'),
98
- properties: Schema.Struct({
99
- spaceId: Type.SpaceId,
100
- }),
101
- }),
102
- Schema.Struct({
103
- name: Schema.Literal('space.lock'),
104
- properties: Schema.Struct({
105
- spaceId: Type.SpaceId,
106
- }),
107
- }),
108
- Schema.Struct({
109
- name: Schema.Literal('space.migrate'),
110
- properties: Schema.Struct({
111
- spaceId: Type.SpaceId,
112
- targetVersion: Schema.optional(Schema.String),
113
- version: Schema.optional(Schema.String),
114
- }),
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
- }),
131
- Schema.Struct({
132
- name: Schema.Literal('space.object.add'),
133
- properties: Schema.Struct({
134
- spaceId: Type.SpaceId,
135
- objectId: Schema.String,
136
- typename: Schema.optional(Schema.String),
137
- }),
138
- }),
139
- Schema.Struct({
140
- name: Schema.Literal('space.share'),
141
- properties: Schema.Struct({
142
- spaceId: Type.SpaceId,
143
- }),
144
- }),
145
- Schema.Struct({
146
- name: Schema.Literal('space.unlock'),
147
- properties: Schema.Struct({
148
- spaceId: Type.SpaceId,
149
- }),
150
- }),
151
- Schema.Struct({
152
- name: Schema.Literal('threads.create'),
153
- properties: Schema.Struct({
154
- spaceId: Type.SpaceId,
155
- threadId: Schema.String,
156
- }),
157
- }),
158
- Schema.Struct({
159
- name: Schema.Literal('threads.delete'),
160
- properties: Schema.Struct({
161
- spaceId: Type.SpaceId,
162
- threadId: Schema.String,
163
- }),
164
- }),
165
- Schema.Struct({
166
- name: Schema.Literal('threads.message.add'),
167
- properties: Schema.Struct({
168
- spaceId: Type.SpaceId,
169
- threadId: Schema.String,
170
- threadLength: Schema.Number,
171
- messageId: Schema.String,
172
- messageLength: Schema.Number,
173
- }),
174
- }),
175
- Schema.Struct({
176
- name: Schema.Literal('threads.message.delete'),
177
- properties: Schema.Struct({
178
- spaceId: Type.SpaceId,
179
- threadId: Schema.String,
180
- messageId: Schema.String,
181
- }),
182
- }),
183
- Schema.Struct({
184
- name: Schema.Literal('threads.message.undo-delete'),
185
- properties: Schema.Struct({
186
- spaceId: Type.SpaceId,
187
- threadId: Schema.String,
188
- messageId: Schema.String,
189
- }),
190
- }),
191
- Schema.Struct({
192
- name: Schema.Literal('threads.message.update'),
193
- properties: Schema.Struct({
194
- spaceId: Type.SpaceId,
195
- messageId: Schema.String,
196
- messageLength: Schema.Number,
197
- }),
198
- }),
199
- Schema.Struct({
200
- name: Schema.Literal('threads.toggle-resolved'),
201
- properties: Schema.Struct({
202
- spaceId: Type.SpaceId,
203
- threadId: Schema.String,
204
- }),
205
- }),
206
- Schema.Struct({
207
- name: Schema.Literal('threads.undo-delete'),
208
- properties: Schema.Struct({
209
- spaceId: Type.SpaceId,
210
- threadId: Schema.String,
211
- }),
212
- }),
213
- ),
214
- output: Schema.Void,
215
- }) {}
216
- }