@dxos/plugin-observability 0.8.4-main.3a94e84 → 0.8.4-main.3c1ae3b

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 (117) hide show
  1. package/dist/lib/browser/{app-graph-builder-DCOBBL5B.mjs → app-graph-builder-3I6HZ5AR.mjs} +12 -11
  2. package/dist/lib/browser/app-graph-builder-3I6HZ5AR.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-UUOBAWT2.mjs → chunk-EC7HTFA5.mjs} +5 -5
  4. package/dist/lib/browser/chunk-EC7HTFA5.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-RLY6UZDS.mjs +123 -0
  6. package/dist/lib/browser/chunk-RLY6UZDS.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-AL5RST75.mjs → chunk-RRMLEY35.mjs} +56 -29
  8. package/dist/lib/browser/chunk-RRMLEY35.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-W7QWKVS3.mjs +16 -0
  10. package/dist/lib/browser/chunk-W7QWKVS3.mjs.map +7 -0
  11. package/dist/lib/browser/{client-ready-TAII5PYS.mjs → client-ready-XT27JB7J.mjs} +15 -15
  12. package/dist/lib/browser/client-ready-XT27JB7J.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +21 -49
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/{intent-resolver-5SA443WX.mjs → intent-resolver-QRKGLMMT.mjs} +10 -10
  16. package/dist/lib/browser/intent-resolver-QRKGLMMT.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-GQC3M7XY.mjs → react-surface-F5GY7AAC.mjs} +11 -11
  19. package/dist/lib/browser/react-surface-F5GY7AAC.mjs.map +7 -0
  20. package/dist/lib/browser/{settings-BG3S45SS.mjs → settings-SAFMS6TG.mjs} +6 -6
  21. package/dist/lib/browser/{settings-BG3S45SS.mjs.map → settings-SAFMS6TG.mjs.map} +1 -1
  22. package/dist/lib/browser/{state-VIOQS2IL.mjs → state-FJD6K3ZZ.mjs} +7 -7
  23. package/dist/lib/browser/state-FJD6K3ZZ.mjs.map +7 -0
  24. package/dist/lib/browser/types/index.mjs +2 -2
  25. package/dist/lib/node-esm/{app-graph-builder-6JT2RPVM.mjs → app-graph-builder-KH2GA6G7.mjs} +12 -11
  26. package/dist/lib/node-esm/app-graph-builder-KH2GA6G7.mjs.map +7 -0
  27. package/dist/lib/node-esm/chunk-AVJTLRX5.mjs +18 -0
  28. package/dist/lib/node-esm/chunk-AVJTLRX5.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-JTKEM7PT.mjs → chunk-HACSZKXD.mjs} +5 -5
  30. package/dist/lib/node-esm/chunk-HACSZKXD.mjs.map +7 -0
  31. package/dist/lib/node-esm/chunk-JJBWCCSZ.mjs +124 -0
  32. package/dist/lib/node-esm/chunk-JJBWCCSZ.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-5W5V4TVX.mjs → chunk-T5OWY73X.mjs} +56 -29
  34. package/dist/lib/node-esm/chunk-T5OWY73X.mjs.map +7 -0
  35. package/dist/lib/node-esm/{client-ready-KER2HNME.mjs → client-ready-AXZXR5EX.mjs} +15 -15
  36. package/dist/lib/node-esm/client-ready-AXZXR5EX.mjs.map +7 -0
  37. package/dist/lib/node-esm/index.mjs +21 -49
  38. package/dist/lib/node-esm/index.mjs.map +4 -4
  39. package/dist/lib/node-esm/{intent-resolver-YYBRI4TZ.mjs → intent-resolver-WXZEG7SP.mjs} +10 -10
  40. package/dist/lib/node-esm/intent-resolver-WXZEG7SP.mjs.map +7 -0
  41. package/dist/lib/node-esm/meta.json +1 -1
  42. package/dist/lib/node-esm/{react-surface-ZYMR7TMY.mjs → react-surface-DNASLRFA.mjs} +11 -11
  43. package/dist/lib/node-esm/react-surface-DNASLRFA.mjs.map +7 -0
  44. package/dist/lib/node-esm/{settings-HSLQO3OC.mjs → settings-22NXJMTF.mjs} +6 -6
  45. package/dist/lib/node-esm/{settings-HSLQO3OC.mjs.map → settings-22NXJMTF.mjs.map} +1 -1
  46. package/dist/lib/node-esm/{state-J2WS6L64.mjs → state-XNBMNLB7.mjs} +7 -7
  47. package/dist/lib/node-esm/state-XNBMNLB7.mjs.map +7 -0
  48. package/dist/lib/node-esm/types/index.mjs +2 -2
  49. package/dist/types/src/ObservabilityPlugin.d.ts +3 -2
  50. package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  52. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  53. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/client-ready.d.ts +1 -1
  55. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/index.d.ts +6 -6
  57. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  59. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  61. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/settings.d.ts +1 -1
  63. package/dist/types/src/capabilities/state.d.ts +1 -1
  64. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  65. package/dist/types/src/components/FeedbackForm.d.ts +3 -3
  66. package/dist/types/src/components/FeedbackForm.d.ts.map +1 -1
  67. package/dist/types/src/components/FeedbackForm.stories.d.ts +34 -0
  68. package/dist/types/src/components/FeedbackForm.stories.d.ts.map +1 -0
  69. package/dist/types/src/components/HelpContainer.d.ts.map +1 -1
  70. package/dist/types/src/components/ObservabilitySettings.d.ts +1 -1
  71. package/dist/types/src/components/ObservabilitySettings.d.ts.map +1 -1
  72. package/dist/types/src/events.d.ts.map +1 -1
  73. package/dist/types/src/meta.d.ts +0 -1
  74. package/dist/types/src/meta.d.ts.map +1 -1
  75. package/dist/types/src/translations.d.ts +3 -2
  76. package/dist/types/src/translations.d.ts.map +1 -1
  77. package/dist/types/src/types/schema.d.ts +112 -112
  78. package/dist/types/src/types/schema.d.ts.map +1 -1
  79. package/dist/types/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +33 -32
  81. package/src/ObservabilityPlugin.ts +52 -49
  82. package/src/capabilities/app-graph-builder.ts +12 -10
  83. package/src/capabilities/capabilities.ts +4 -3
  84. package/src/capabilities/client-ready.ts +14 -13
  85. package/src/capabilities/intent-resolver.ts +5 -4
  86. package/src/capabilities/react-surface.tsx +5 -5
  87. package/src/capabilities/state.ts +3 -2
  88. package/src/components/FeedbackForm.stories.tsx +33 -0
  89. package/src/components/FeedbackForm.tsx +13 -69
  90. package/src/components/HelpContainer.tsx +10 -8
  91. package/src/components/ObservabilitySettings.tsx +21 -20
  92. package/src/events.ts +3 -3
  93. package/src/meta.ts +6 -3
  94. package/src/translations.ts +3 -2
  95. package/src/types/schema.ts +30 -26
  96. package/dist/lib/browser/app-graph-builder-DCOBBL5B.mjs.map +0 -7
  97. package/dist/lib/browser/chunk-57RVSKYP.mjs +0 -13
  98. package/dist/lib/browser/chunk-57RVSKYP.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-AL5RST75.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-UUOBAWT2.mjs.map +0 -7
  101. package/dist/lib/browser/chunk-YVKMVVGP.mjs +0 -175
  102. package/dist/lib/browser/chunk-YVKMVVGP.mjs.map +0 -7
  103. package/dist/lib/browser/client-ready-TAII5PYS.mjs.map +0 -7
  104. package/dist/lib/browser/intent-resolver-5SA443WX.mjs.map +0 -7
  105. package/dist/lib/browser/react-surface-GQC3M7XY.mjs.map +0 -7
  106. package/dist/lib/browser/state-VIOQS2IL.mjs.map +0 -7
  107. package/dist/lib/node-esm/app-graph-builder-6JT2RPVM.mjs.map +0 -7
  108. package/dist/lib/node-esm/chunk-5W5V4TVX.mjs.map +0 -7
  109. package/dist/lib/node-esm/chunk-7XR7KMAA.mjs +0 -15
  110. package/dist/lib/node-esm/chunk-7XR7KMAA.mjs.map +0 -7
  111. package/dist/lib/node-esm/chunk-JTKEM7PT.mjs.map +0 -7
  112. package/dist/lib/node-esm/chunk-TYZLSIA4.mjs +0 -176
  113. package/dist/lib/node-esm/chunk-TYZLSIA4.mjs.map +0 -7
  114. package/dist/lib/node-esm/client-ready-KER2HNME.mjs.map +0 -7
  115. package/dist/lib/node-esm/intent-resolver-YYBRI4TZ.mjs.map +0 -7
  116. package/dist/lib/node-esm/react-surface-ZYMR7TMY.mjs.map +0 -7
  117. package/dist/lib/node-esm/state-J2WS6L64.mjs.map +0 -7
package/src/events.ts CHANGED
@@ -2,12 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineEvent, Events } from '@dxos/app-framework';
5
+ import { Events, defineEvent } from '@dxos/app-framework';
6
6
 
7
- import { OBSERVABILITY_PLUGIN } from './meta';
7
+ import { meta } from './meta';
8
8
 
9
9
  export namespace ObservabilityEvents {
10
- export const StateReady = Events.createStateEvent(OBSERVABILITY_PLUGIN);
10
+ export const StateReady = Events.createStateEvent(meta.id);
11
11
  }
12
12
 
13
13
  // NOTE: This is cloned from the client plugin to avoid circular dependencies.
package/src/meta.ts CHANGED
@@ -3,11 +3,14 @@
3
3
  //
4
4
 
5
5
  import { type PluginMeta } from '@dxos/app-framework';
6
-
7
- export const OBSERVABILITY_PLUGIN = 'dxos.org/plugin/observability';
6
+ import { trim } from '@dxos/util';
8
7
 
9
8
  export const meta: PluginMeta = {
10
- id: OBSERVABILITY_PLUGIN,
9
+ id: 'dxos.org/plugin/observability',
11
10
  name: 'Telemetry',
11
+ description: trim`
12
+ Application observability and telemetry collection for monitoring performance and usage patterns.
13
+ Track metrics, logs, and traces for system health and analytics.
14
+ `,
12
15
  icon: 'ph--eye--regular',
13
16
  };
@@ -11,6 +11,7 @@ export const translations = [
11
11
  'en-US': {
12
12
  [meta.id]: {
13
13
  'plugin name': 'Telemetry',
14
+ 'settings title': 'Telemetry settings',
14
15
  'observability toast label': 'Privacy Notice',
15
16
  'observability toast description':
16
17
  'Composer collects usage and performance metrics to improve the product. No user data is collected.',
@@ -23,8 +24,8 @@ export const translations = [
23
24
  'When enabled, basic usage data will used to improve the product. This may include performance metrics, error logs, and usage data. No personally identifiable information, other than your public key, is included with this data and no private data ever leaves your devices.',
24
25
 
25
26
  'help label': 'Feedback & Support',
26
- 'feedback text area label': 'Feedback',
27
- 'feedback text area placeholder': 'Please enter your feedback, technical issue, or feature request.',
27
+ 'feedback textarea label': 'Feedback',
28
+ 'feedback textarea placeholder': 'Please enter your feedback, technical issue, or feature request.',
28
29
  'send feedback label': 'Send Feedback',
29
30
  'feedback toast label': 'Thank you for your feedback!',
30
31
  'feedback toast description': 'We will review your feedback and get back to you as soon as possible.',
@@ -2,20 +2,24 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
- import { Type } from '@dxos/echo';
7
+ import { Format, Key } from '@dxos/echo';
8
8
 
9
9
  import { meta } from '../meta';
10
+ import { translations } from '../translations';
10
11
 
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}` });
12
+ const t = translations[0]['en-US'][meta.id];
16
13
 
17
14
  export const UserFeedback = Schema.Struct({
18
- message: Schema.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),
15
+ message: Format.Text.pipe(
16
+ Schema.nonEmptyString(),
17
+ Schema.maxLength(4_096),
18
+ Schema.annotations({
19
+ title: t['feedback textarea label'],
20
+ description: t['feedback textarea placeholder'],
21
+ }),
22
+ ),
19
23
  });
20
24
 
21
25
  export type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;
@@ -84,31 +88,31 @@ export namespace ObservabilityAction {
84
88
  Schema.Struct({
85
89
  name: Schema.Literal('space.create'),
86
90
  properties: Schema.Struct({
87
- spaceId: Type.SpaceId,
91
+ spaceId: Key.SpaceId,
88
92
  }),
89
93
  }),
90
94
  Schema.Struct({
91
95
  name: Schema.Literal('space.join'),
92
96
  properties: Schema.Struct({
93
- spaceId: Type.SpaceId,
97
+ spaceId: Key.SpaceId,
94
98
  }),
95
99
  }),
96
100
  Schema.Struct({
97
101
  name: Schema.Literal('space.limit'),
98
102
  properties: Schema.Struct({
99
- spaceId: Type.SpaceId,
103
+ spaceId: Key.SpaceId,
100
104
  }),
101
105
  }),
102
106
  Schema.Struct({
103
107
  name: Schema.Literal('space.lock'),
104
108
  properties: Schema.Struct({
105
- spaceId: Type.SpaceId,
109
+ spaceId: Key.SpaceId,
106
110
  }),
107
111
  }),
108
112
  Schema.Struct({
109
113
  name: Schema.Literal('space.migrate'),
110
114
  properties: Schema.Struct({
111
- spaceId: Type.SpaceId,
115
+ spaceId: Key.SpaceId,
112
116
  targetVersion: Schema.optional(Schema.String),
113
117
  version: Schema.optional(Schema.String),
114
118
  }),
@@ -116,14 +120,14 @@ export namespace ObservabilityAction {
116
120
  Schema.Struct({
117
121
  name: Schema.Literal('space.schema.use'),
118
122
  properties: Schema.Struct({
119
- spaceId: Type.SpaceId,
123
+ spaceId: Key.SpaceId,
120
124
  typename: Schema.String,
121
125
  }),
122
126
  }),
123
127
  Schema.Struct({
124
128
  name: Schema.Literal('space.schema.add'),
125
129
  properties: Schema.Struct({
126
- spaceId: Type.SpaceId,
130
+ spaceId: Key.SpaceId,
127
131
  objectId: Schema.String,
128
132
  typename: Schema.String,
129
133
  }),
@@ -131,7 +135,7 @@ export namespace ObservabilityAction {
131
135
  Schema.Struct({
132
136
  name: Schema.Literal('space.object.add'),
133
137
  properties: Schema.Struct({
134
- spaceId: Type.SpaceId,
138
+ spaceId: Key.SpaceId,
135
139
  objectId: Schema.String,
136
140
  typename: Schema.optional(Schema.String),
137
141
  }),
@@ -139,33 +143,33 @@ export namespace ObservabilityAction {
139
143
  Schema.Struct({
140
144
  name: Schema.Literal('space.share'),
141
145
  properties: Schema.Struct({
142
- spaceId: Type.SpaceId,
146
+ spaceId: Key.SpaceId,
143
147
  }),
144
148
  }),
145
149
  Schema.Struct({
146
150
  name: Schema.Literal('space.unlock'),
147
151
  properties: Schema.Struct({
148
- spaceId: Type.SpaceId,
152
+ spaceId: Key.SpaceId,
149
153
  }),
150
154
  }),
151
155
  Schema.Struct({
152
156
  name: Schema.Literal('threads.create'),
153
157
  properties: Schema.Struct({
154
- spaceId: Type.SpaceId,
158
+ spaceId: Key.SpaceId,
155
159
  threadId: Schema.String,
156
160
  }),
157
161
  }),
158
162
  Schema.Struct({
159
163
  name: Schema.Literal('threads.delete'),
160
164
  properties: Schema.Struct({
161
- spaceId: Type.SpaceId,
165
+ spaceId: Key.SpaceId,
162
166
  threadId: Schema.String,
163
167
  }),
164
168
  }),
165
169
  Schema.Struct({
166
170
  name: Schema.Literal('threads.message.add'),
167
171
  properties: Schema.Struct({
168
- spaceId: Type.SpaceId,
172
+ spaceId: Key.SpaceId,
169
173
  threadId: Schema.String,
170
174
  threadLength: Schema.Number,
171
175
  messageId: Schema.String,
@@ -175,7 +179,7 @@ export namespace ObservabilityAction {
175
179
  Schema.Struct({
176
180
  name: Schema.Literal('threads.message.delete'),
177
181
  properties: Schema.Struct({
178
- spaceId: Type.SpaceId,
182
+ spaceId: Key.SpaceId,
179
183
  threadId: Schema.String,
180
184
  messageId: Schema.String,
181
185
  }),
@@ -183,7 +187,7 @@ export namespace ObservabilityAction {
183
187
  Schema.Struct({
184
188
  name: Schema.Literal('threads.message.undo-delete'),
185
189
  properties: Schema.Struct({
186
- spaceId: Type.SpaceId,
190
+ spaceId: Key.SpaceId,
187
191
  threadId: Schema.String,
188
192
  messageId: Schema.String,
189
193
  }),
@@ -191,7 +195,7 @@ export namespace ObservabilityAction {
191
195
  Schema.Struct({
192
196
  name: Schema.Literal('threads.message.update'),
193
197
  properties: Schema.Struct({
194
- spaceId: Type.SpaceId,
198
+ spaceId: Key.SpaceId,
195
199
  messageId: Schema.String,
196
200
  messageLength: Schema.Number,
197
201
  }),
@@ -199,14 +203,14 @@ export namespace ObservabilityAction {
199
203
  Schema.Struct({
200
204
  name: Schema.Literal('threads.toggle-resolved'),
201
205
  properties: Schema.Struct({
202
- spaceId: Type.SpaceId,
206
+ spaceId: Key.SpaceId,
203
207
  threadId: Schema.String,
204
208
  }),
205
209
  }),
206
210
  Schema.Struct({
207
211
  name: Schema.Literal('threads.undo-delete'),
208
212
  properties: Schema.Struct({
209
- spaceId: Type.SpaceId,
213
+ spaceId: Key.SpaceId,
210
214
  threadId: Schema.String,
211
215
  }),
212
216
  }),
@@ -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,13 +0,0 @@
1
- // src/meta.ts
2
- var OBSERVABILITY_PLUGIN = "dxos.org/plugin/observability";
3
- var meta = {
4
- id: OBSERVABILITY_PLUGIN,
5
- name: "Telemetry",
6
- icon: "ph--eye--regular"
7
- };
8
-
9
- export {
10
- OBSERVABILITY_PLUGIN,
11
- meta
12
- };
13
- //# sourceMappingURL=chunk-57RVSKYP.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const OBSERVABILITY_PLUGIN = 'dxos.org/plugin/observability';\n\nexport const meta: PluginMeta = {\n id: OBSERVABILITY_PLUGIN,\n name: 'Telemetry',\n icon: 'ph--eye--regular',\n};\n"],
5
- "mappings": ";AAMO,IAAMA,uBAAuB;AAE7B,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,MAAM;AACR;",
6
- "names": ["OBSERVABILITY_PLUGIN", "meta", "id", "name", "icon"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n\nimport { meta } from '../meta';\n\nconst nonEmpty = <S extends Schema.Schema.Any>(field: string) =>\n Schema.nonEmptyString<S>({ message: () => `Missing field: ${field}` });\n\nconst maxLength = <S extends Schema.Schema.Any>(field: string, length: number) =>\n Schema.maxLength<S>(length, { message: () => `Exceeds max length (${length}): ${field}` });\n\nexport const UserFeedback = Schema.Struct({\n message: Schema.String.pipe(nonEmpty('Feedback'), maxLength('Feedback', 32_768)),\n});\n\nexport type UserFeedback = Schema.Schema.Type<typeof UserFeedback>;\n\nexport namespace ObservabilityAction {\n export class Toggle extends Schema.TaggedClass<Toggle>()(`${meta.id}/action/toggle`, {\n input: Schema.Struct({\n state: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Boolean,\n }) {}\n\n export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(\n `${meta.id}/action/capture-feedback`,\n {\n input: UserFeedback,\n output: Schema.Void,\n },\n ) {}\n\n /** Base intent for sending events. */\n export class BaseSendEvent extends Schema.TaggedClass<BaseSendEvent>()(`${meta.id}/action/send-event`, {\n input: Schema.Struct({\n name: Schema.String,\n properties: Schema.optional(Schema.Object),\n }),\n output: Schema.Void,\n }) {}\n\n /** Intent with strict types for first-party events. */\n export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${meta.id}/action/send-event`, {\n // NOTE: Sort alphabetically by name.\n input: Schema.Union(\n Schema.Struct({\n name: Schema.Literal('identity.create'),\n }),\n Schema.Struct({\n name: Schema.Literal('identity.join'),\n }),\n Schema.Struct({\n name: Schema.Literal('identity.recover'),\n }),\n Schema.Struct({\n name: Schema.Literal('identity.share'),\n }),\n Schema.Struct({\n name: Schema.Literal('navigation.activate'),\n properties: Schema.Struct({\n subjectId: Schema.String,\n typename: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('page.load'),\n properties: Schema.Struct({\n loadDuration: Schema.Number,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('plugins.toggle'),\n properties: Schema.Struct({\n plugin: Schema.String,\n enabled: Schema.Boolean,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.create'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.join'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.limit'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.lock'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.migrate'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n targetVersion: Schema.optional(Schema.String),\n version: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.schema.use'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n typename: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.schema.add'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n objectId: Schema.String,\n typename: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.object.add'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n objectId: Schema.String,\n typename: Schema.optional(Schema.String),\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.share'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('space.unlock'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.create'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.add'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n threadLength: Schema.Number,\n messageId: Schema.String,\n messageLength: Schema.Number,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n messageId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.undo-delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n messageId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.message.update'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n messageId: Schema.String,\n messageLength: Schema.Number,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.toggle-resolved'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n Schema.Struct({\n name: Schema.Literal('threads.undo-delete'),\n properties: Schema.Struct({\n spaceId: Type.SpaceId,\n threadId: Schema.String,\n }),\n }),\n ),\n output: Schema.Void,\n }) {}\n}\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Type", "nonEmpty", "field", "Schema", "nonEmptyString", "message", "maxLength", "length", "UserFeedback", "Struct", "String", "pipe", "ObservabilityAction", "Toggle", "TaggedClass", "meta", "id", "input", "state", "optional", "Boolean", "output", "CaptureUserFeedback", "Void", "BaseSendEvent", "name", "properties", "Object", "SendEvent", "Union", "Literal", "subjectId", "typename", "loadDuration", "Number", "plugin", "enabled", "spaceId", "Type", "SpaceId", "targetVersion", "version", "objectId", "threadId", "threadLength", "messageId", "messageLength"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/capabilities.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type Client } from '@dxos/client';\nimport { type Observability } from '@dxos/observability';\n\nimport { OBSERVABILITY_PLUGIN } from '../meta';\n\nexport namespace ObservabilityCapabilities {\n export type State = {\n group?: string;\n notified?: boolean;\n };\n export const State = defineCapability<State>(`${OBSERVABILITY_PLUGIN}/capability/state`);\n\n export const Observability = defineCapability<Observability>(`${OBSERVABILITY_PLUGIN}/capability/observability`);\n}\n\n// NOTE: This is cloned from the client plugin to avoid circular dependencies.\nexport const ClientCapability = defineCapability<Client>('dxos.org/plugin/client/capability/client');\n"],
5
- "mappings": ";;;;;AAIA,SAASA,wBAAwB;UAMhBC,4BAAAA;6BAKFC,QAAQC,iBAAwB,GAAGC,oBAAAA,mBAAuC;6BAE1EC,gBAAgBF,iBAAgC,GAAGC,oBAAAA,2BAA+C;AACjH,GARiBH,8BAAAA,4BAAAA,CAAAA,EAAAA;AAWV,IAAMK,mBAAmBH,iBAAyB,0CAAA;;",
6
- "names": ["defineCapability", "ObservabilityCapabilities", "State", "defineCapability", "OBSERVABILITY_PLUGIN", "Observability", "ClientCapability"]
7
- }
@@ -1,175 +0,0 @@
1
- import {
2
- ObservabilityAction,
3
- UserFeedback
4
- } from "./chunk-AL5RST75.mjs";
5
- import {
6
- OBSERVABILITY_PLUGIN
7
- } from "./chunk-57RVSKYP.mjs";
8
-
9
- // src/components/FeedbackForm.tsx
10
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
11
- import React, { useCallback, useRef, useState } from "react";
12
- import { getSnapshot } from "@dxos/echo-schema";
13
- import { IconButton, Input, useTranslation } from "@dxos/react-ui";
14
- import { FormProvider, useFormContext, useInputProps } from "@dxos/react-ui-form";
15
- var defaultValues = {
16
- message: ""
17
- };
18
- var FormContent = () => {
19
- var _effect = _useSignals();
20
- try {
21
- const { t } = useTranslation(OBSERVABILITY_PLUGIN);
22
- const { handleSave, canSave } = useFormContext();
23
- const messageProps = useInputProps([
24
- "message"
25
- ]);
26
- return /* @__PURE__ */ React.createElement("div", {
27
- role: "form",
28
- className: "p-3 flex flex-col gap-2"
29
- }, /* @__PURE__ */ React.createElement("div", {
30
- role: "none",
31
- className: "space-b-1"
32
- }, /* @__PURE__ */ React.createElement(Input.Root, {
33
- validationValence: messageProps.getStatus().status
34
- }, /* @__PURE__ */ React.createElement(Input.Label, null, t("feedback text area label")), /* @__PURE__ */ React.createElement(Input.TextArea, {
35
- classNames: "text-sm",
36
- rows: 5,
37
- cols: 30,
38
- placeholder: t("feedback text area placeholder"),
39
- value: messageProps.getValue() ?? "",
40
- onChange: (e) => messageProps.onValueChange("string", e.target.value),
41
- // TODO(wittjosiah): This aggressively shows validation errors.
42
- onBlur: messageProps.onBlur
43
- }), /* @__PURE__ */ React.createElement(Input.DescriptionAndValidation, null, /* @__PURE__ */ React.createElement(Input.Validation, null, messageProps.getStatus().error)))), /* @__PURE__ */ React.createElement("div", {
44
- role: "none",
45
- className: "space-b-2"
46
- }, /* @__PURE__ */ React.createElement(IconButton, {
47
- icon: "ph--paper-plane-tilt--regular",
48
- label: t("send feedback label"),
49
- variant: "primary",
50
- type: "submit",
51
- classNames: "is-full",
52
- disabled: !canSave,
53
- onClick: handleSave
54
- })));
55
- } finally {
56
- _effect.f();
57
- }
58
- };
59
- var FeedbackForm = ({ onSave }) => {
60
- var _effect = _useSignals();
61
- try {
62
- const formRef = useRef(null);
63
- const [_, update] = useState({});
64
- const forceRender = useCallback(() => update({}), [
65
- update
66
- ]);
67
- const handleSave = useCallback((values) => {
68
- onSave(values);
69
- forceRender();
70
- }, [
71
- forceRender,
72
- onSave
73
- ]);
74
- const initialValues = getSnapshot(defaultValues);
75
- return /* @__PURE__ */ React.createElement(FormProvider, {
76
- formRef,
77
- schema: UserFeedback,
78
- initialValues,
79
- onSave: handleSave
80
- }, /* @__PURE__ */ React.createElement("div", {
81
- ref: formRef
82
- }, /* @__PURE__ */ React.createElement(FormContent, null)));
83
- } finally {
84
- _effect.f();
85
- }
86
- };
87
-
88
- // src/components/HelpContainer.tsx
89
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
90
- import { pipe } from "effect";
91
- import React2, { useCallback as useCallback2 } from "react";
92
- import { chain, createIntent, LayoutAction, useIntentDispatcher } from "@dxos/app-framework";
93
- var HelpContainer = () => {
94
- var _effect = _useSignals2();
95
- try {
96
- const { dispatchPromise: dispatch } = useIntentDispatcher();
97
- const handleSave = useCallback2((values) => dispatch(pipe(createIntent(ObservabilityAction.CaptureUserFeedback, values), chain(LayoutAction.UpdateComplementary, {
98
- part: "complementary",
99
- options: {
100
- state: "collapsed"
101
- }
102
- }), chain(LayoutAction.AddToast, {
103
- part: "toast",
104
- subject: {
105
- id: `${OBSERVABILITY_PLUGIN}/feedback-success`,
106
- icon: "ph--paper-plane-tilt--regular",
107
- duration: 3e3,
108
- title: [
109
- "feedback toast label",
110
- {
111
- ns: OBSERVABILITY_PLUGIN
112
- }
113
- ],
114
- description: [
115
- "feedback toast description",
116
- {
117
- ns: OBSERVABILITY_PLUGIN
118
- }
119
- ],
120
- closeLabel: [
121
- "close label",
122
- {
123
- ns: "os"
124
- }
125
- ]
126
- }
127
- }))), [
128
- dispatch
129
- ]);
130
- return /* @__PURE__ */ React2.createElement(FeedbackForm, {
131
- onSave: handleSave
132
- });
133
- } finally {
134
- _effect.f();
135
- }
136
- };
137
-
138
- // src/components/ObservabilitySettings.tsx
139
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
140
- import { Schema } from "effect";
141
- import React3 from "react";
142
- import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
143
- import { Input as Input2, Message, useTranslation as useTranslation2 } from "@dxos/react-ui";
144
- import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
145
- var ObservabilitySettingsSchema = Schema.mutable(Schema.Struct({
146
- enabled: Schema.Boolean
147
- }));
148
- var ObservabilitySettings = ({ settings }) => {
149
- var _effect = _useSignals3();
150
- try {
151
- const { t } = useTranslation2(OBSERVABILITY_PLUGIN);
152
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
153
- return /* @__PURE__ */ React3.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React3.createElement(DeprecatedFormInput, {
154
- label: t("observability enabled label"),
155
- secondary: /* @__PURE__ */ React3.createElement(Message.Root, {
156
- valence: "info"
157
- }, /* @__PURE__ */ React3.createElement(Message.Content, null, t("observability description")))
158
- }, /* @__PURE__ */ React3.createElement(Input2.Switch, {
159
- checked: settings.enabled,
160
- onCheckedChange: (checked) => dispatch(createIntent2(ObservabilityAction.Toggle, {
161
- state: !!checked
162
- }))
163
- })));
164
- } finally {
165
- _effect.f();
166
- }
167
- };
168
-
169
- export {
170
- FeedbackForm,
171
- HelpContainer,
172
- ObservabilitySettingsSchema,
173
- ObservabilitySettings
174
- };
175
- //# sourceMappingURL=chunk-YVKMVVGP.mjs.map
@@ -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.Content>{t('observability description')}</Message.Content>\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", "Content", "Input", "Switch", "checked", "onCheckedChange", "createIntent", "ObservabilityAction", "Toggle", "state"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/client-ready.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n SettingsAction,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { setupTelemetryListeners, type Observability } from '@dxos/observability';\n\nimport { ClientCapability, ObservabilityCapabilities } from './capabilities';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { ObservabilityAction } from '../types';\n\ntype ClientReadyOptions = {\n context: PluginContext;\n namespace: string;\n observability: Observability;\n};\n\nexport default async ({ context, namespace, observability }: ClientReadyOptions) => {\n const manager = context.getCapability(Capabilities.PluginManager);\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const state = context.getCapability(ObservabilityCapabilities.State);\n const client = context.getCapability(ClientCapability);\n\n const sendPrivacyNotice = async () => {\n const environment = client?.config?.values.runtime?.app?.env?.DX_ENVIRONMENT;\n const notify =\n environment && environment !== 'ci' && !environment.endsWith('.local') && !environment.endsWith('.lan');\n if (!state.notified && notify) {\n await dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${OBSERVABILITY_PLUGIN}/notice`,\n title: ['observability toast label', { ns: OBSERVABILITY_PLUGIN }],\n description: ['observability toast description', { ns: OBSERVABILITY_PLUGIN }],\n duration: Infinity,\n icon: 'ph--info--regular',\n actionLabel: ['observability toast action label', { ns: OBSERVABILITY_PLUGIN }],\n actionAlt: ['observability toast action alt', { ns: OBSERVABILITY_PLUGIN }],\n closeLabel: ['observability toast close label', { ns: OBSERVABILITY_PLUGIN }],\n onAction: () => dispatch(createIntent(SettingsAction.Open, { plugin: OBSERVABILITY_PLUGIN })),\n },\n }),\n );\n\n state.notified = true;\n }\n };\n\n // Ensure errors are tagged with enabled plugins to help with reproductions.\n manager.enabled.map((plugin) => observability?.setTag(`pluginEnabled-${plugin}`, 'true', 'errors'));\n\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'page.load',\n properties: {\n // TODO(wittjosiah): These apis are deprecated. Is there a better way to find this information?\n loadDuration: window.performance.timing.loadEventEnd - window.performance.timing.loadEventStart,\n },\n }),\n );\n\n // Start client observability (i.e. not running as shared worker)\n // TODO(nf): how to prevent multiple instances for single shared worker?\n const cleanup = setupTelemetryListeners(namespace, client, observability);\n\n await Promise.all([\n observability.setIdentityTags(client.services.services),\n observability.startRuntimeMetrics(client),\n observability.startNetworkMetrics(client.services.services),\n observability.startSpacesMetrics(client, namespace),\n ]);\n\n if (client.halo.identity.get()) {\n await sendPrivacyNotice();\n } else {\n const subscription = client.halo.identity.subscribe(async (identity) => {\n if (identity && observability) {\n await sendPrivacyNotice();\n await observability.setIdentityTags(client.services.services);\n subscription.unsubscribe();\n }\n });\n }\n\n return contributes(ObservabilityCapabilities.Observability, observability, async () => {\n cleanup();\n await observability.close();\n });\n};\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,SACEA,cACAC,aACAC,cACAC,cACAC,sBAEK;AACP,SAASC,+BAAmD;AAY5D,IAAA,uBAAe,OAAO,EAAEC,SAASC,WAAWC,cAAa,MAAsB;AAC7E,QAAMC,UAAUH,QAAQI,cAAcC,aAAaC,aAAa;AAChE,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKR,QAAQI,cAAcC,aAAaI,gBAAgB;AACzF,QAAMC,QAAQV,QAAQI,cAAcO,0BAA0BC,KAAK;AACnE,QAAMC,SAASb,QAAQI,cAAcU,gBAAAA;AAErC,QAAMC,oBAAoB,YAAA;AACxB,UAAMC,cAAcH,QAAQI,QAAQC,OAAOC,SAASC,KAAKC,KAAKC;AAC9D,UAAMC,SACJP,eAAeA,gBAAgB,QAAQ,CAACA,YAAYQ,SAAS,QAAA,KAAa,CAACR,YAAYQ,SAAS,MAAA;AAClG,QAAI,CAACd,MAAMe,YAAYF,QAAQ;AAC7B,YAAMf,SACJkB,aAAaC,aAAaC,UAAU;QAClCC,MAAM;QACNC,SAAS;UACPC,IAAI,GAAGC,oBAAAA;UACPC,OAAO;YAAC;YAA6B;cAAEC,IAAIF;YAAqB;;UAChEG,aAAa;YAAC;YAAmC;cAAED,IAAIF;YAAqB;;UAC5EI,UAAUC;UACVC,MAAM;UACNC,aAAa;YAAC;YAAoC;cAAEL,IAAIF;YAAqB;;UAC7EQ,WAAW;YAAC;YAAkC;cAAEN,IAAIF;YAAqB;;UACzES,YAAY;YAAC;YAAmC;cAAEP,IAAIF;YAAqB;;UAC3EU,UAAU,MAAMlC,SAASkB,aAAaiB,eAAeC,MAAM;YAAEC,QAAQb;UAAqB,CAAA,CAAA;QAC5F;MACF,CAAA,CAAA;AAGFtB,YAAMe,WAAW;IACnB;EACF;AAGAtB,UAAQ2C,QAAQC,IAAI,CAACF,WAAW3C,eAAe8C,OAAO,iBAAiBH,MAAAA,IAAU,QAAQ,QAAA,CAAA;AAEzF,QAAMrC,SACJkB,aAAauB,oBAAoBC,WAAW;IAC1CC,MAAM;IACNC,YAAY;;MAEVC,cAAcC,OAAOC,YAAYC,OAAOC,eAAeH,OAAOC,YAAYC,OAAOE;IACnF;EACF,CAAA,CAAA;AAKF,QAAMC,UAAUC,wBAAwB3D,WAAWY,QAAQX,aAAAA;AAE3D,QAAM2D,QAAQC,IAAI;IAChB5D,cAAc6D,gBAAgBlD,OAAOmD,SAASA,QAAQ;IACtD9D,cAAc+D,oBAAoBpD,MAAAA;IAClCX,cAAcgE,oBAAoBrD,OAAOmD,SAASA,QAAQ;IAC1D9D,cAAciE,mBAAmBtD,QAAQZ,SAAAA;GAC1C;AAED,MAAIY,OAAOuD,KAAKC,SAASC,IAAG,GAAI;AAC9B,UAAMvD,kBAAAA;EACR,OAAO;AACL,UAAMwD,eAAe1D,OAAOuD,KAAKC,SAASG,UAAU,OAAOH,aAAAA;AACzD,UAAIA,YAAYnE,eAAe;AAC7B,cAAMa,kBAAAA;AACN,cAAMb,cAAc6D,gBAAgBlD,OAAOmD,SAASA,QAAQ;AAC5DO,qBAAaE,YAAW;MAC1B;IACF,CAAA;EACF;AAEA,SAAOC,YAAY/D,0BAA0BgE,eAAezE,eAAe,YAAA;AACzEyD,YAAAA;AACA,UAAMzD,cAAc0E,MAAK;EAC3B,CAAA;AACF;",
6
- "names": ["Capabilities", "contributes", "createIntent", "LayoutAction", "SettingsAction", "setupTelemetryListeners", "context", "namespace", "observability", "manager", "getCapability", "Capabilities", "PluginManager", "dispatchPromise", "dispatch", "IntentDispatcher", "state", "ObservabilityCapabilities", "State", "client", "ClientCapability", "sendPrivacyNotice", "environment", "config", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "notify", "endsWith", "notified", "createIntent", "LayoutAction", "AddToast", "part", "subject", "id", "OBSERVABILITY_PLUGIN", "title", "ns", "description", "duration", "Infinity", "icon", "actionLabel", "actionAlt", "closeLabel", "onAction", "SettingsAction", "Open", "plugin", "enabled", "map", "setTag", "ObservabilityAction", "SendEvent", "name", "properties", "loadDuration", "window", "performance", "timing", "loadEventEnd", "loadEventStart", "cleanup", "setupTelemetryListeners", "Promise", "all", "setIdentityTags", "services", "startRuntimeMetrics", "startNetworkMetrics", "startSpacesMetrics", "halo", "identity", "get", "subscription", "subscribe", "unsubscribe", "contributes", "Observability", "close"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver, IntentAction, type PluginContext } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { getTelemetryIdentity, storeObservabilityDisabled } from '@dxos/observability';\n\nimport { ClientCapability, ObservabilityCapabilities } from './capabilities';\nimport { type ObservabilitySettingsProps } from '../components';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\nimport { ObservabilityAction } from '../types';\n\nexport default ({ context, namespace }: { context: PluginContext; namespace: string }) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: IntentAction.Track,\n resolve: (intent) => {\n log.info('intent', { intent });\n },\n }),\n createResolver({\n intent: ObservabilityAction.Toggle,\n resolve: async ({ state }) => {\n const client = context.getCapability(ClientCapability);\n const observability = context.getCapability(ObservabilityCapabilities.Observability);\n const settings = context\n .getCapability(Capabilities.SettingsStore)\n .getStore<ObservabilitySettingsProps>(OBSERVABILITY_PLUGIN)!.value;\n settings.enabled = state ?? !settings.enabled;\n observability.track({\n ...getTelemetryIdentity(client),\n action: 'observability.toggle',\n properties: {\n enabled: settings.enabled,\n },\n });\n observability.setMode(settings.enabled ? 'basic' : 'disabled');\n await storeObservabilityDisabled(namespace, !settings.enabled);\n return { data: settings.enabled };\n },\n }),\n createResolver({\n intent: ObservabilityAction.SendEvent,\n resolve: (data) => {\n const client = context.getCapability(ClientCapability);\n const properties = 'properties' in data ? data.properties : {};\n\n // NOTE: This is to ensure that events fired before observability is ready are still sent.\n // TODO(wittjosiah): If the intent dispatcher supports concurrent actions in the future,\n // then this could be awaited still rather than voiding.\n void context.waitForCapability(ObservabilityCapabilities.Observability).then((observability) => {\n observability.track({\n ...getTelemetryIdentity(client),\n action: data.name,\n properties,\n });\n });\n },\n }),\n createResolver({\n intent: ObservabilityAction.CaptureUserFeedback,\n resolve: async (data) => {\n const observability = context.getCapability(ObservabilityCapabilities.Observability);\n observability.captureUserFeedback(data.message);\n },\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,gBAAgBC,oBAAwC;AAC5F,SAASC,WAAW;AACpB,SAASC,sBAAsBC,kCAAkC;;AAOjE,IAAA,0BAAe,CAAC,EAAEC,SAASC,UAAS,MAClCC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,aAAaC;IACrBC,SAAS,CAACH,WAAAA;AACRI,UAAIC,KAAK,UAAU;QAAEL;MAAO,GAAA;;;;;;IAC9B;EACF,CAAA;EACAD,eAAe;IACbC,QAAQM,oBAAoBC;IAC5BJ,SAAS,OAAO,EAAEK,MAAK,MAAE;AACvB,YAAMC,SAASf,QAAQgB,cAAcC,gBAAAA;AACrC,YAAMC,gBAAgBlB,QAAQgB,cAAcG,0BAA0BC,aAAa;AACnF,YAAMC,WAAWrB,QACdgB,cAAcb,aAAamB,aAAa,EACxCC,SAAqCC,oBAAAA,EAAuBC;AAC/DJ,eAASK,UAAUZ,SAAS,CAACO,SAASK;AACtCR,oBAAcS,MAAM;QAClB,GAAGC,qBAAqBb,MAAAA;QACxBc,QAAQ;QACRC,YAAY;UACVJ,SAASL,SAASK;QACpB;MACF,CAAA;AACAR,oBAAca,QAAQV,SAASK,UAAU,UAAU,UAAA;AACnD,YAAMM,2BAA2B/B,WAAW,CAACoB,SAASK,OAAO;AAC7D,aAAO;QAAEO,MAAMZ,SAASK;MAAQ;IAClC;EACF,CAAA;EACArB,eAAe;IACbC,QAAQM,oBAAoBsB;IAC5BzB,SAAS,CAACwB,SAAAA;AACR,YAAMlB,SAASf,QAAQgB,cAAcC,gBAAAA;AACrC,YAAMa,aAAa,gBAAgBG,OAAOA,KAAKH,aAAa,CAAC;AAK7D,WAAK9B,QAAQmC,kBAAkBhB,0BAA0BC,aAAa,EAAEgB,KAAK,CAAClB,kBAAAA;AAC5EA,sBAAcS,MAAM;UAClB,GAAGC,qBAAqBb,MAAAA;UACxBc,QAAQI,KAAKI;UACbP;QACF,CAAA;MACF,CAAA;IACF;EACF,CAAA;EACAzB,eAAe;IACbC,QAAQM,oBAAoB0B;IAC5B7B,SAAS,OAAOwB,SAAAA;AACd,YAAMf,gBAAgBlB,QAAQgB,cAAcG,0BAA0BC,aAAa;AACnFF,oBAAcqB,oBAAoBN,KAAKO,OAAO;IAChD;EACF,CAAA;CACD;",
6
- "names": ["Capabilities", "contributes", "createResolver", "IntentAction", "log", "getTelemetryIdentity", "storeObservabilityDisabled", "context", "namespace", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "IntentAction", "Track", "resolve", "log", "info", "ObservabilityAction", "Toggle", "state", "client", "getCapability", "ClientCapability", "observability", "ObservabilityCapabilities", "Observability", "settings", "SettingsStore", "getStore", "OBSERVABILITY_PLUGIN", "value", "enabled", "track", "getTelemetryIdentity", "action", "properties", "setMode", "storeObservabilityDisabled", "data", "SendEvent", "waitForCapability", "then", "name", "CaptureUserFeedback", "captureUserFeedback", "message"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { contributes, Capabilities, createSurface } from '@dxos/app-framework';\nimport { SettingsStore } from '@dxos/local-storage';\n\nimport { HelpContainer, ObservabilitySettings, type ObservabilitySettingsProps } from '../components';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: OBSERVABILITY_PLUGIN,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<ObservabilitySettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === OBSERVABILITY_PLUGIN,\n component: ({ data: { subject } }) => <ObservabilitySettings settings={subject.value} />,\n }),\n createSurface({\n id: `${OBSERVABILITY_PLUGIN}/help`,\n role: 'deck-companion--help',\n component: () => <HelpContainer />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,aAAaC,cAAcC,qBAAqB;AACzD,SAASC,qBAAqB;AAK9B,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAIC;IACJC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKC,mBAAmBC,iBAAiBF,KAAKC,QAAQE,WAAWN;IACnEO,WAAW,CAAC,EAAEJ,MAAM,EAAEC,QAAO,EAAE,MAAO,sBAAA,cAACI,uBAAAA;MAAsBC,UAAUL,QAAQM;;EACjF,CAAA;EACAZ,cAAc;IACZC,IAAI,GAAGC,oBAAAA;IACPC,MAAM;IACNM,WAAW,MAAM,sBAAA,cAACI,eAAAA,IAAAA;EACpB,CAAA;CACD;",
6
- "names": ["React", "contributes", "Capabilities", "createSurface", "SettingsStore", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "OBSERVABILITY_PLUGIN", "role", "filter", "data", "subject", "SettingsStore", "prefix", "component", "ObservabilitySettings", "settings", "value", "HelpContainer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/state.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { getObservabilityGroup } from '@dxos/observability';\n\nimport { ObservabilityCapabilities } from './capabilities';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\n\nexport default async ({ namespace }: { namespace: string }) => {\n const state = new LocalStorageStore<ObservabilityCapabilities.State>(OBSERVABILITY_PLUGIN);\n\n state.prop({ key: 'notified', type: LocalStorageStore.bool({ allowUndefined: true }) });\n\n // NOTE: This is not stored in local storage such that it can be accessed by workers.\n state.values.group = await getObservabilityGroup(namespace);\n\n return contributes(ObservabilityCapabilities.State, state.values, () => state.close());\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,mBAAmB;AAC5B,SAASC,yBAAyB;AAClC,SAASC,6BAA6B;AAKtC,IAAA,gBAAe,OAAO,EAAEC,UAAS,MAAyB;AACxD,QAAMC,QAAQ,IAAIC,kBAAmDC,oBAAAA;AAErEF,QAAMG,KAAK;IAAEC,KAAK;IAAYC,MAAMJ,kBAAkBK,KAAK;MAAEC,gBAAgB;IAAK,CAAA;EAAG,CAAA;AAGrFP,QAAMQ,OAAOC,QAAQ,MAAMC,sBAAsBX,SAAAA;AAEjD,SAAOY,YAAYC,0BAA0BC,OAAOb,MAAMQ,QAAQ,MAAMR,MAAMc,MAAK,CAAA;AACrF;",
6
- "names": ["contributes", "LocalStorageStore", "getObservabilityGroup", "namespace", "state", "LocalStorageStore", "OBSERVABILITY_PLUGIN", "prop", "key", "type", "bool", "allowUndefined", "values", "group", "getObservabilityGroup", "contributes", "ObservabilityCapabilities", "State", "close"]
7
- }
@@ -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
- }