@dxos/plugin-observability 0.8.2-staging.7ac8446 → 0.8.3-main.672df60

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 (122) hide show
  1. package/dist/lib/browser/app-graph-builder-3ROXVPV2.mjs +43 -0
  2. package/dist/lib/browser/app-graph-builder-3ROXVPV2.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-A7FGEPI3.mjs +175 -0
  4. package/dist/lib/browser/chunk-A7FGEPI3.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-ECWB7E2O.mjs → chunk-BJ2ZWVOH.mjs} +4 -4
  6. package/dist/lib/{node-esm/chunk-U3JYGK3O.mjs.map → browser/chunk-BJ2ZWVOH.mjs.map} +1 -1
  7. package/dist/lib/browser/chunk-P7VVCZOC.mjs +179 -0
  8. package/dist/lib/browser/chunk-P7VVCZOC.mjs.map +7 -0
  9. package/dist/lib/browser/{client-ready-LRY24QM5.mjs → client-ready-LP3YSSAH.mjs} +7 -7
  10. package/dist/lib/browser/client-ready-LP3YSSAH.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +14 -12
  12. package/dist/lib/browser/index.mjs.map +2 -2
  13. package/dist/lib/browser/{intent-resolver-ZKNJCLDV.mjs → intent-resolver-JESDDMKB.mjs} +8 -8
  14. package/dist/lib/browser/intent-resolver-JESDDMKB.mjs.map +7 -0
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/{react-surface-S36FDV7I.mjs → react-surface-6RWNGDFA.mjs} +3 -3
  17. package/dist/lib/browser/{settings-JFZJTDH7.mjs → settings-5UNGZSKH.mjs} +5 -5
  18. package/dist/lib/browser/settings-5UNGZSKH.mjs.map +7 -0
  19. package/dist/lib/browser/{state-GHBXMIQI.mjs → state-LG4FXJD2.mjs} +2 -2
  20. package/dist/lib/browser/types.mjs +1 -1
  21. package/dist/lib/node/{app-graph-builder-JPUTX4LQ.cjs → app-graph-builder-EXZP366Q.cjs} +28 -25
  22. package/dist/lib/node/app-graph-builder-EXZP366Q.cjs.map +7 -0
  23. package/dist/lib/node/chunk-6UA74KDI.cjs +200 -0
  24. package/dist/lib/node/chunk-6UA74KDI.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-WJQ2MG7S.cjs → chunk-HAIMXBCH.cjs} +5 -5
  26. package/dist/lib/node/{chunk-WJQ2MG7S.cjs.map → chunk-HAIMXBCH.cjs.map} +1 -1
  27. package/dist/lib/node/chunk-UMH4JAVS.cjs +199 -0
  28. package/dist/lib/node/chunk-UMH4JAVS.cjs.map +7 -0
  29. package/dist/lib/node/{client-ready-KHGLQOQZ.cjs → client-ready-CTPKWHMP.cjs} +12 -12
  30. package/dist/lib/node/client-ready-CTPKWHMP.cjs.map +7 -0
  31. package/dist/lib/node/index.cjs +20 -18
  32. package/dist/lib/node/index.cjs.map +2 -2
  33. package/dist/lib/node/{intent-resolver-5SANBSGX.cjs → intent-resolver-7G4GEUOA.cjs} +15 -15
  34. package/dist/lib/node/intent-resolver-7G4GEUOA.cjs.map +7 -0
  35. package/dist/lib/node/meta.json +1 -1
  36. package/dist/lib/node/{react-surface-MWJS6OMP.cjs → react-surface-VZQ7EWYP.cjs} +8 -8
  37. package/dist/lib/node/{settings-ARLOGCYU.cjs → settings-PMUXB3WF.cjs} +8 -8
  38. package/dist/lib/node/settings-PMUXB3WF.cjs.map +7 -0
  39. package/dist/lib/node/{state-5GZLUTX7.cjs → state-NXRP3P5D.cjs} +6 -6
  40. package/dist/lib/node/types.cjs +3 -3
  41. package/dist/lib/node/types.cjs.map +1 -1
  42. package/dist/lib/node-esm/app-graph-builder-T7J46NSQ.mjs +44 -0
  43. package/dist/lib/node-esm/app-graph-builder-T7J46NSQ.mjs.map +7 -0
  44. package/dist/lib/node-esm/chunk-OWGL3ALC.mjs +176 -0
  45. package/dist/lib/node-esm/chunk-OWGL3ALC.mjs.map +7 -0
  46. package/dist/lib/node-esm/chunk-S2MXYKCI.mjs +180 -0
  47. package/dist/lib/node-esm/chunk-S2MXYKCI.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-U3JYGK3O.mjs → chunk-X2U2ZHWX.mjs} +4 -4
  49. package/dist/lib/{browser/chunk-ECWB7E2O.mjs.map → node-esm/chunk-X2U2ZHWX.mjs.map} +1 -1
  50. package/dist/lib/node-esm/{client-ready-4BUMAISA.mjs → client-ready-FS62YRSD.mjs} +7 -7
  51. package/dist/lib/node-esm/client-ready-FS62YRSD.mjs.map +7 -0
  52. package/dist/lib/node-esm/index.mjs +14 -12
  53. package/dist/lib/node-esm/index.mjs.map +2 -2
  54. package/dist/lib/node-esm/{intent-resolver-5EFEXLWX.mjs → intent-resolver-MREOBMHB.mjs} +8 -8
  55. package/dist/lib/node-esm/intent-resolver-MREOBMHB.mjs.map +7 -0
  56. package/dist/lib/node-esm/meta.json +1 -1
  57. package/dist/lib/node-esm/{react-surface-VLQBOZTX.mjs → react-surface-ZHMNRVFJ.mjs} +3 -3
  58. package/dist/lib/node-esm/{settings-765HDSFY.mjs → settings-YF4AO2PI.mjs} +5 -5
  59. package/dist/lib/node-esm/settings-YF4AO2PI.mjs.map +7 -0
  60. package/dist/lib/node-esm/{state-R2UVEG7B.mjs → state-IZNXQ5RA.mjs} +2 -2
  61. package/dist/lib/node-esm/types.mjs +1 -1
  62. package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  64. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/client-ready.d.ts +2 -2
  66. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/index.d.ts +4 -180
  68. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  70. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/state.d.ts +1 -1
  72. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  73. package/dist/types/src/components/FeedbackForm.d.ts.map +1 -1
  74. package/dist/types/src/components/HelpContainer.d.ts.map +1 -1
  75. package/dist/types/src/components/ObservabilitySettings.d.ts +4 -4
  76. package/dist/types/src/components/ObservabilitySettings.d.ts.map +1 -1
  77. package/dist/types/src/translations.d.ts +2 -0
  78. package/dist/types/src/translations.d.ts.map +1 -1
  79. package/dist/types/src/types.d.ts +258 -145
  80. package/dist/types/src/types.d.ts.map +1 -1
  81. package/dist/types/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +31 -22
  83. package/src/capabilities/app-graph-builder.ts +29 -17
  84. package/src/capabilities/client-ready.ts +6 -6
  85. package/src/capabilities/intent-resolver.ts +7 -7
  86. package/src/capabilities/settings.ts +2 -2
  87. package/src/components/HelpContainer.tsx +21 -4
  88. package/src/components/ObservabilitySettings.tsx +5 -5
  89. package/src/translations.ts +3 -1
  90. package/src/types.ts +128 -126
  91. package/dist/lib/browser/app-graph-builder-OCAR3KUZ.mjs +0 -40
  92. package/dist/lib/browser/app-graph-builder-OCAR3KUZ.mjs.map +0 -7
  93. package/dist/lib/browser/chunk-6Q6ZJ3N4.mjs +0 -123
  94. package/dist/lib/browser/chunk-6Q6ZJ3N4.mjs.map +0 -7
  95. package/dist/lib/browser/chunk-RI4RE346.mjs +0 -178
  96. package/dist/lib/browser/chunk-RI4RE346.mjs.map +0 -7
  97. package/dist/lib/browser/client-ready-LRY24QM5.mjs.map +0 -7
  98. package/dist/lib/browser/intent-resolver-ZKNJCLDV.mjs.map +0 -7
  99. package/dist/lib/browser/settings-JFZJTDH7.mjs.map +0 -7
  100. package/dist/lib/node/app-graph-builder-JPUTX4LQ.cjs.map +0 -7
  101. package/dist/lib/node/chunk-FIL4BZE2.cjs +0 -148
  102. package/dist/lib/node/chunk-FIL4BZE2.cjs.map +0 -7
  103. package/dist/lib/node/chunk-V4ZLLL5M.cjs +0 -198
  104. package/dist/lib/node/chunk-V4ZLLL5M.cjs.map +0 -7
  105. package/dist/lib/node/client-ready-KHGLQOQZ.cjs.map +0 -7
  106. package/dist/lib/node/intent-resolver-5SANBSGX.cjs.map +0 -7
  107. package/dist/lib/node/settings-ARLOGCYU.cjs.map +0 -7
  108. package/dist/lib/node-esm/app-graph-builder-RKURIIFT.mjs +0 -41
  109. package/dist/lib/node-esm/app-graph-builder-RKURIIFT.mjs.map +0 -7
  110. package/dist/lib/node-esm/chunk-M3MGU3DN.mjs +0 -179
  111. package/dist/lib/node-esm/chunk-M3MGU3DN.mjs.map +0 -7
  112. package/dist/lib/node-esm/chunk-MW737PHD.mjs +0 -124
  113. package/dist/lib/node-esm/chunk-MW737PHD.mjs.map +0 -7
  114. package/dist/lib/node-esm/client-ready-4BUMAISA.mjs.map +0 -7
  115. package/dist/lib/node-esm/intent-resolver-5EFEXLWX.mjs.map +0 -7
  116. package/dist/lib/node-esm/settings-765HDSFY.mjs.map +0 -7
  117. /package/dist/lib/browser/{react-surface-S36FDV7I.mjs.map → react-surface-6RWNGDFA.mjs.map} +0 -0
  118. /package/dist/lib/browser/{state-GHBXMIQI.mjs.map → state-LG4FXJD2.mjs.map} +0 -0
  119. /package/dist/lib/node/{react-surface-MWJS6OMP.cjs.map → react-surface-VZQ7EWYP.cjs.map} +0 -0
  120. /package/dist/lib/node/{state-5GZLUTX7.cjs.map → state-NXRP3P5D.cjs.map} +0 -0
  121. /package/dist/lib/node-esm/{react-surface-VLQBOZTX.mjs.map → react-surface-ZHMNRVFJ.mjs.map} +0 -0
  122. /package/dist/lib/node-esm/{state-R2UVEG7B.mjs.map → state-IZNXQ5RA.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 PluginsContext } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, createResolver, IntentAction, type PluginContext } 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: PluginsContext; namespace: string }) =>
14
+ export default ({ context, namespace }: { context: PluginContext; namespace: string }) =>
15
15
  contributes(Capabilities.IntentResolver, [
16
16
  createResolver({
17
17
  intent: IntentAction.Track,
@@ -22,10 +22,10 @@ export default ({ context, namespace }: { context: PluginsContext; namespace: st
22
22
  createResolver({
23
23
  intent: ObservabilityAction.Toggle,
24
24
  resolve: async ({ state }) => {
25
- const client = context.requestCapability(ClientCapability);
26
- const observability = context.requestCapability(ObservabilityCapabilities.Observability);
25
+ const client = context.getCapability(ClientCapability);
26
+ const observability = context.getCapability(ObservabilityCapabilities.Observability);
27
27
  const settings = context
28
- .requestCapability(Capabilities.SettingsStore)
28
+ .getCapability(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: PluginsContext; namespace: st
43
43
  createResolver({
44
44
  intent: ObservabilityAction.SendEvent,
45
45
  resolve: (data) => {
46
- const client = context.requestCapability(ClientCapability);
46
+ const client = context.getCapability(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: PluginsContext; namespace: st
61
61
  createResolver({
62
62
  intent: ObservabilityAction.CaptureUserFeedback,
63
63
  resolve: async (data) => {
64
- const observability = context.requestCapability(ObservabilityCapabilities.Observability);
64
+ const observability = context.getCapability(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 { create } from '@dxos/live-object';
6
+ import { live } 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 = create<ObservabilitySettingsProps>({ enabled: true });
12
+ const settings = live<ObservabilitySettingsProps>({ enabled: true });
13
13
 
14
14
  return contributes(Capabilities.Settings, {
15
15
  schema: ObservabilitySettingsSchema,
@@ -2,20 +2,37 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { pipe } from 'effect';
5
6
  import React, { useCallback } from 'react';
6
7
 
7
- import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
8
9
 
9
10
  import { FeedbackForm } from './FeedbackForm';
11
+ import { OBSERVABILITY_PLUGIN } from '../meta';
10
12
  import { ObservabilityAction, type UserFeedback } from '../types';
11
13
 
12
14
  export const HelpContainer = () => {
13
15
  const { dispatchPromise: dispatch } = useIntentDispatcher();
14
16
 
15
17
  const handleSave = useCallback(
16
- (values: UserFeedback) => {
17
- void dispatch(createIntent(ObservabilityAction.CaptureUserFeedback, values));
18
- },
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
+ ),
19
36
  [dispatch],
20
37
  );
21
38
 
@@ -2,19 +2,19 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import React from 'react';
6
7
 
7
8
  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 = S.mutable(
16
- S.Struct({
17
- enabled: S.Boolean,
15
+ export const ObservabilitySettingsSchema = Schema.mutable(
16
+ Schema.Struct({
17
+ enabled: Schema.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 = S.mutable(
22
22
  }),
23
23
  );
24
24
 
25
- export type ObservabilitySettingsProps = S.Schema.Type<typeof ObservabilitySettingsSchema>;
25
+ export type ObservabilitySettingsProps = Schema.Schema.Type<typeof ObservabilitySettingsSchema>;
26
26
 
27
27
  export const ObservabilitySettings = ({ settings }: { settings: ObservabilitySettingsProps }) => {
28
28
  const { t } = useTranslation(OBSERVABILITY_PLUGIN);
@@ -22,8 +22,10 @@ export default [
22
22
 
23
23
  'help label': 'Feedback & Support',
24
24
  'feedback text area label': 'Feedback',
25
- 'feedback text area placeholder': 'Please describe your issue or suggestion.',
25
+ 'feedback text area placeholder': 'Please enter your feedback, technical issue, or feature request.',
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.',
27
29
  },
28
30
  },
29
31
  },
package/src/types.ts CHANGED
@@ -2,200 +2,202 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { S } from '@dxos/echo-schema';
5
+ import { Schema } from 'effect';
6
+
7
+ import { Type } from '@dxos/echo';
6
8
 
7
9
  import { OBSERVABILITY_PLUGIN } from './meta';
8
10
 
9
- const nonEmpty = <S extends S.Schema.Any>(field: string) =>
10
- S.nonEmptyString<S>({ message: () => `Missing field: ${field}` });
11
+ const nonEmpty = <S extends Schema.Schema.Any>(field: string) =>
12
+ Schema.nonEmptyString<S>({ message: () => `Missing field: ${field}` });
11
13
 
12
- const maxLength = <S extends S.Schema.Any>(field: string, length: number) =>
13
- S.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });
14
+ const maxLength = <S extends Schema.Schema.Any>(field: string, length: number) =>
15
+ Schema.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });
14
16
 
15
- export const UserFeedback = S.Struct({
16
- message: S.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),
17
+ export const UserFeedback = Schema.Struct({
18
+ message: Schema.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),
17
19
  });
18
20
 
19
- export type UserFeedback = S.Schema.Type<typeof UserFeedback>;
21
+ export type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;
20
22
 
21
23
  const OBSERVABILITY_ACTION = `${OBSERVABILITY_PLUGIN}/action`;
22
24
 
23
25
  export namespace ObservabilityAction {
24
- export class Toggle extends S.TaggedClass<Toggle>()(`${OBSERVABILITY_ACTION}/toggle`, {
25
- input: S.Struct({
26
- state: S.optional(S.Boolean),
26
+ export class Toggle extends Schema.TaggedClass<Toggle>()(`${OBSERVABILITY_ACTION}/toggle`, {
27
+ input: Schema.Struct({
28
+ state: Schema.optional(Schema.Boolean),
27
29
  }),
28
- output: S.Boolean,
30
+ output: Schema.Boolean,
29
31
  }) {}
30
32
 
31
- export class CaptureUserFeedback extends S.TaggedClass<CaptureUserFeedback>()(
33
+ export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(
32
34
  `${OBSERVABILITY_ACTION}/capture-feedback`,
33
35
  {
34
36
  input: UserFeedback,
35
- output: S.Void,
37
+ output: Schema.Void,
36
38
  },
37
39
  ) {}
38
40
 
39
41
  /** Base intent for sending events. */
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),
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),
44
46
  }),
45
- output: S.Void,
47
+ output: Schema.Void,
46
48
  }) {}
47
49
 
48
50
  /** Intent with strict types for first-party events. */
49
- export class SendEvent extends S.TaggedClass<SendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
51
+ export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
50
52
  // NOTE: Sort alphabetically by name.
51
- input: S.Union(
52
- S.Struct({
53
- name: S.Literal('identity.create'),
53
+ input: Schema.Union(
54
+ Schema.Struct({
55
+ name: Schema.Literal('identity.create'),
54
56
  }),
55
- S.Struct({
56
- name: S.Literal('identity.join'),
57
+ Schema.Struct({
58
+ name: Schema.Literal('identity.join'),
57
59
  }),
58
- S.Struct({
59
- name: S.Literal('identity.recover'),
60
+ Schema.Struct({
61
+ name: Schema.Literal('identity.recover'),
60
62
  }),
61
- S.Struct({
62
- name: S.Literal('identity.share'),
63
+ Schema.Struct({
64
+ name: Schema.Literal('identity.share'),
63
65
  }),
64
- S.Struct({
65
- name: S.Literal('navigation.activate'),
66
- properties: S.Struct({
67
- subjectId: S.String,
68
- typename: S.optional(S.String),
66
+ Schema.Struct({
67
+ name: Schema.Literal('navigation.activate'),
68
+ properties: Schema.Struct({
69
+ subjectId: Schema.String,
70
+ typename: Schema.optional(Schema.String),
69
71
  }),
70
72
  }),
71
- S.Struct({
72
- name: S.Literal('page.load'),
73
- properties: S.Struct({
74
- loadDuration: S.Number,
73
+ Schema.Struct({
74
+ name: Schema.Literal('page.load'),
75
+ properties: Schema.Struct({
76
+ loadDuration: Schema.Number,
75
77
  }),
76
78
  }),
77
- S.Struct({
78
- name: S.Literal('plugins.toggle'),
79
- properties: S.Struct({
80
- plugin: S.String,
81
- enabled: S.Boolean,
79
+ Schema.Struct({
80
+ name: Schema.Literal('plugins.toggle'),
81
+ properties: Schema.Struct({
82
+ plugin: Schema.String,
83
+ enabled: Schema.Boolean,
82
84
  }),
83
85
  }),
84
- S.Struct({
85
- name: S.Literal('space.create'),
86
- properties: S.Struct({
87
- spaceId: S.String,
86
+ Schema.Struct({
87
+ name: Schema.Literal('space.create'),
88
+ properties: Schema.Struct({
89
+ spaceId: Type.SpaceId,
88
90
  }),
89
91
  }),
90
- S.Struct({
91
- name: S.Literal('space.join'),
92
- properties: S.Struct({
93
- spaceId: S.String,
92
+ Schema.Struct({
93
+ name: Schema.Literal('space.join'),
94
+ properties: Schema.Struct({
95
+ spaceId: Type.SpaceId,
94
96
  }),
95
97
  }),
96
- S.Struct({
97
- name: S.Literal('space.limit'),
98
- properties: S.Struct({
99
- spaceId: S.String,
98
+ Schema.Struct({
99
+ name: Schema.Literal('space.limit'),
100
+ properties: Schema.Struct({
101
+ spaceId: Type.SpaceId,
100
102
  }),
101
103
  }),
102
- S.Struct({
103
- name: S.Literal('space.lock'),
104
- properties: S.Struct({
105
- spaceId: S.String,
104
+ Schema.Struct({
105
+ name: Schema.Literal('space.lock'),
106
+ properties: Schema.Struct({
107
+ spaceId: Type.SpaceId,
106
108
  }),
107
109
  }),
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),
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),
114
116
  }),
115
117
  }),
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),
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),
122
124
  }),
123
125
  }),
124
- S.Struct({
125
- name: S.Literal('space.share'),
126
- properties: S.Struct({
127
- spaceId: S.String,
126
+ Schema.Struct({
127
+ name: Schema.Literal('space.share'),
128
+ properties: Schema.Struct({
129
+ spaceId: Type.SpaceId,
128
130
  }),
129
131
  }),
130
- S.Struct({
131
- name: S.Literal('space.unlock'),
132
- properties: S.Struct({
133
- spaceId: S.String,
132
+ Schema.Struct({
133
+ name: Schema.Literal('space.unlock'),
134
+ properties: Schema.Struct({
135
+ spaceId: Type.SpaceId,
134
136
  }),
135
137
  }),
136
- S.Struct({
137
- name: S.Literal('threads.create'),
138
- properties: S.Struct({
139
- spaceId: S.String,
140
- threadId: S.String,
138
+ Schema.Struct({
139
+ name: Schema.Literal('threads.create'),
140
+ properties: Schema.Struct({
141
+ spaceId: Type.SpaceId,
142
+ threadId: Schema.String,
141
143
  }),
142
144
  }),
143
- S.Struct({
144
- name: S.Literal('threads.delete'),
145
- properties: S.Struct({
146
- spaceId: S.String,
147
- threadId: S.String,
145
+ Schema.Struct({
146
+ name: Schema.Literal('threads.delete'),
147
+ properties: Schema.Struct({
148
+ spaceId: Type.SpaceId,
149
+ threadId: Schema.String,
148
150
  }),
149
151
  }),
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,
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,
158
160
  }),
159
161
  }),
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,
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,
166
168
  }),
167
169
  }),
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,
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,
174
176
  }),
175
177
  }),
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,
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,
182
184
  }),
183
185
  }),
184
- S.Struct({
185
- name: S.Literal('threads.toggle-resolved'),
186
- properties: S.Struct({
187
- spaceId: S.String,
188
- threadId: S.String,
186
+ Schema.Struct({
187
+ name: Schema.Literal('threads.toggle-resolved'),
188
+ properties: Schema.Struct({
189
+ spaceId: Type.SpaceId,
190
+ threadId: Schema.String,
189
191
  }),
190
192
  }),
191
- S.Struct({
192
- name: S.Literal('threads.undo-delete'),
193
- properties: S.Struct({
194
- spaceId: S.String,
195
- threadId: S.String,
193
+ Schema.Struct({
194
+ name: Schema.Literal('threads.undo-delete'),
195
+ properties: Schema.Struct({
196
+ spaceId: Type.SpaceId,
197
+ threadId: Schema.String,
196
198
  }),
197
199
  }),
198
200
  ),
199
- output: S.Void,
201
+ output: Schema.Void,
200
202
  }) {}
201
203
  }
@@ -1,40 +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 { Capabilities, contributes } from "@dxos/app-framework";
7
- import { createExtension } from "@dxos/plugin-graph";
8
- var ATTENDABLE_PATH_SEPARATOR = "~";
9
- var DECK_COMPANION_TYPE = "dxos.org/plugin/deck/deck-companion";
10
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
11
- createExtension({
12
- id: `${OBSERVABILITY_PLUGIN}/help`,
13
- filter: (node) => node.id === "root",
14
- connector: ({ node }) => [
15
- {
16
- id: [
17
- node.id,
18
- "help"
19
- ].join(ATTENDABLE_PATH_SEPARATOR),
20
- type: DECK_COMPANION_TYPE,
21
- data: null,
22
- properties: {
23
- label: [
24
- "help label",
25
- {
26
- ns: OBSERVABILITY_PLUGIN
27
- }
28
- ],
29
- icon: "ph--question--regular",
30
- disposition: "hidden",
31
- position: "hoist"
32
- }
33
- }
34
- ]
35
- })
36
- ]);
37
- export {
38
- app_graph_builder_default as default
39
- };
40
- //# sourceMappingURL=app-graph-builder-OCAR3KUZ.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 { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { createExtension, type Node } 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: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${OBSERVABILITY_PLUGIN}/help`,\n filter: (node): node is Node<null> => node.id === 'root',\n connector: ({ node }) => [\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 ]);\n"],
5
- "mappings": ";;;;;AAIA,SAASA,cAAcC,mBAAwC;AAC/D,SAASC,uBAAkC;AAK3C,IAAMC,4BAA4B;AAClC,IAAMC,sBAAsB;AAE5B,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,oBAAAA;IACPC,QAAQ,CAACC,SAA6BA,KAAKH,OAAO;IAClDI,WAAW,CAAC,EAAED,KAAI,MAAO;MACvB;QACEH,IAAI;UAACG,KAAKH;UAAI;UAAQK,KAAKZ,yBAAAA;QAC3Ba,MAAMZ;QACNa,MAAM;QACNC,YAAY;UACVC,OAAO;YAAC;YAAc;cAAEC,IAAIT;YAAqB;;UACjDU,MAAM;UACNC,aAAa;UACbC,UAAU;QACZ;MACF;;EAEJ,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "createExtension", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "OBSERVABILITY_PLUGIN", "filter", "node", "connector", "join", "type", "data", "properties", "label", "ns", "icon", "disposition", "position"]
7
- }
@@ -1,123 +0,0 @@
1
- import {
2
- ObservabilityAction,
3
- UserFeedback
4
- } from "./chunk-RI4RE346.mjs";
5
- import {
6
- OBSERVABILITY_PLUGIN
7
- } from "./chunk-RKH5BBR4.mjs";
8
-
9
- // packages/plugins/plugin-observability/src/components/FeedbackForm.tsx
10
- import React, { useCallback, useRef, useState } from "react";
11
- import { getSnapshot } from "@dxos/echo-schema";
12
- import { IconButton, Input, useTranslation } from "@dxos/react-ui";
13
- import { FormProvider, useFormContext, useInputProps } from "@dxos/react-ui-form";
14
- var defaultValues = {
15
- message: ""
16
- };
17
- var FormContent = () => {
18
- const { t } = useTranslation(OBSERVABILITY_PLUGIN);
19
- const { handleSave, canSave } = useFormContext();
20
- const messageProps = useInputProps([
21
- "message"
22
- ]);
23
- return /* @__PURE__ */ React.createElement("div", {
24
- role: "form",
25
- className: "p-3 flex flex-col gap-2"
26
- }, /* @__PURE__ */ React.createElement("div", {
27
- role: "none",
28
- className: "space-b-1"
29
- }, /* @__PURE__ */ React.createElement(Input.Root, {
30
- validationValence: messageProps.getStatus().status
31
- }, /* @__PURE__ */ React.createElement(Input.Label, null, t("feedback text area label")), /* @__PURE__ */ React.createElement(Input.TextArea, {
32
- classNames: "text-sm",
33
- rows: 5,
34
- cols: 30,
35
- placeholder: t("feedback text area placeholder"),
36
- value: messageProps.getValue() ?? "",
37
- onChange: (e) => messageProps.onValueChange("string", e.target.value),
38
- // TODO(wittjosiah): This aggressively shows validation errors.
39
- onBlur: messageProps.onBlur
40
- }), /* @__PURE__ */ React.createElement(Input.DescriptionAndValidation, null, /* @__PURE__ */ React.createElement(Input.Validation, null, messageProps.getStatus().error)))), /* @__PURE__ */ React.createElement("div", {
41
- role: "none",
42
- className: "space-b-2"
43
- }, /* @__PURE__ */ React.createElement(IconButton, {
44
- icon: "ph--paper-plane-tilt--regular",
45
- label: t("send feedback label"),
46
- variant: "primary",
47
- type: "submit",
48
- classNames: "is-full",
49
- disabled: !canSave,
50
- onClick: handleSave
51
- })));
52
- };
53
- var FeedbackForm = ({ onSave }) => {
54
- const formRef = useRef(null);
55
- const [_, update] = useState({});
56
- const forceRender = useCallback(() => update({}), [
57
- update
58
- ]);
59
- const handleSave = useCallback((values) => {
60
- onSave(values);
61
- forceRender();
62
- }, [
63
- forceRender,
64
- onSave
65
- ]);
66
- const initialValues = getSnapshot(defaultValues);
67
- return /* @__PURE__ */ React.createElement(FormProvider, {
68
- formRef,
69
- schema: UserFeedback,
70
- initialValues,
71
- onSave: handleSave
72
- }, /* @__PURE__ */ React.createElement("div", {
73
- ref: formRef
74
- }, /* @__PURE__ */ React.createElement(FormContent, null)));
75
- };
76
-
77
- // packages/plugins/plugin-observability/src/components/HelpContainer.tsx
78
- import React2, { useCallback as useCallback2 } from "react";
79
- import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
80
- var HelpContainer = () => {
81
- const { dispatchPromise: dispatch } = useIntentDispatcher();
82
- const handleSave = useCallback2((values) => {
83
- void dispatch(createIntent(ObservabilityAction.CaptureUserFeedback, values));
84
- }, [
85
- dispatch
86
- ]);
87
- return /* @__PURE__ */ React2.createElement(FeedbackForm, {
88
- onSave: handleSave
89
- });
90
- };
91
-
92
- // packages/plugins/plugin-observability/src/components/ObservabilitySettings.tsx
93
- import React3 from "react";
94
- import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
95
- import { S } from "@dxos/echo-schema";
96
- import { Input as Input2, Message, useTranslation as useTranslation2 } from "@dxos/react-ui";
97
- import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
98
- var ObservabilitySettingsSchema = S.mutable(S.Struct({
99
- enabled: S.Boolean
100
- }));
101
- var ObservabilitySettings = ({ settings }) => {
102
- const { t } = useTranslation2(OBSERVABILITY_PLUGIN);
103
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
104
- return /* @__PURE__ */ React3.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React3.createElement(DeprecatedFormInput, {
105
- label: t("observability enabled label"),
106
- secondary: /* @__PURE__ */ React3.createElement(Message.Root, {
107
- valence: "info"
108
- }, /* @__PURE__ */ React3.createElement(Message.Body, null, t("observability description")))
109
- }, /* @__PURE__ */ React3.createElement(Input2.Switch, {
110
- checked: settings.enabled,
111
- onCheckedChange: (checked) => dispatch(createIntent2(ObservabilityAction.Toggle, {
112
- state: !!checked
113
- }))
114
- })));
115
- };
116
-
117
- export {
118
- FeedbackForm,
119
- HelpContainer,
120
- ObservabilitySettingsSchema,
121
- ObservabilitySettings
122
- };
123
- //# sourceMappingURL=chunk-6Q6ZJ3N4.mjs.map