@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.
- package/dist/lib/browser/app-graph-builder-3ROXVPV2.mjs +43 -0
- package/dist/lib/browser/app-graph-builder-3ROXVPV2.mjs.map +7 -0
- package/dist/lib/browser/chunk-A7FGEPI3.mjs +175 -0
- package/dist/lib/browser/chunk-A7FGEPI3.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ECWB7E2O.mjs → chunk-BJ2ZWVOH.mjs} +4 -4
- package/dist/lib/{node-esm/chunk-U3JYGK3O.mjs.map → browser/chunk-BJ2ZWVOH.mjs.map} +1 -1
- package/dist/lib/browser/chunk-P7VVCZOC.mjs +179 -0
- package/dist/lib/browser/chunk-P7VVCZOC.mjs.map +7 -0
- package/dist/lib/browser/{client-ready-LRY24QM5.mjs → client-ready-LP3YSSAH.mjs} +7 -7
- package/dist/lib/browser/client-ready-LP3YSSAH.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +14 -12
- package/dist/lib/browser/index.mjs.map +2 -2
- package/dist/lib/browser/{intent-resolver-ZKNJCLDV.mjs → intent-resolver-JESDDMKB.mjs} +8 -8
- package/dist/lib/browser/intent-resolver-JESDDMKB.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-S36FDV7I.mjs → react-surface-6RWNGDFA.mjs} +3 -3
- package/dist/lib/browser/{settings-JFZJTDH7.mjs → settings-5UNGZSKH.mjs} +5 -5
- package/dist/lib/browser/settings-5UNGZSKH.mjs.map +7 -0
- package/dist/lib/browser/{state-GHBXMIQI.mjs → state-LG4FXJD2.mjs} +2 -2
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{app-graph-builder-JPUTX4LQ.cjs → app-graph-builder-EXZP366Q.cjs} +28 -25
- package/dist/lib/node/app-graph-builder-EXZP366Q.cjs.map +7 -0
- package/dist/lib/node/chunk-6UA74KDI.cjs +200 -0
- package/dist/lib/node/chunk-6UA74KDI.cjs.map +7 -0
- package/dist/lib/node/{chunk-WJQ2MG7S.cjs → chunk-HAIMXBCH.cjs} +5 -5
- package/dist/lib/node/{chunk-WJQ2MG7S.cjs.map → chunk-HAIMXBCH.cjs.map} +1 -1
- package/dist/lib/node/chunk-UMH4JAVS.cjs +199 -0
- package/dist/lib/node/chunk-UMH4JAVS.cjs.map +7 -0
- package/dist/lib/node/{client-ready-KHGLQOQZ.cjs → client-ready-CTPKWHMP.cjs} +12 -12
- package/dist/lib/node/client-ready-CTPKWHMP.cjs.map +7 -0
- package/dist/lib/node/index.cjs +20 -18
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/{intent-resolver-5SANBSGX.cjs → intent-resolver-7G4GEUOA.cjs} +15 -15
- package/dist/lib/node/intent-resolver-7G4GEUOA.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-MWJS6OMP.cjs → react-surface-VZQ7EWYP.cjs} +8 -8
- package/dist/lib/node/{settings-ARLOGCYU.cjs → settings-PMUXB3WF.cjs} +8 -8
- package/dist/lib/node/settings-PMUXB3WF.cjs.map +7 -0
- package/dist/lib/node/{state-5GZLUTX7.cjs → state-NXRP3P5D.cjs} +6 -6
- package/dist/lib/node/types.cjs +3 -3
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/app-graph-builder-T7J46NSQ.mjs +44 -0
- package/dist/lib/node-esm/app-graph-builder-T7J46NSQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-OWGL3ALC.mjs +176 -0
- package/dist/lib/node-esm/chunk-OWGL3ALC.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-S2MXYKCI.mjs +180 -0
- package/dist/lib/node-esm/chunk-S2MXYKCI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-U3JYGK3O.mjs → chunk-X2U2ZHWX.mjs} +4 -4
- package/dist/lib/{browser/chunk-ECWB7E2O.mjs.map → node-esm/chunk-X2U2ZHWX.mjs.map} +1 -1
- package/dist/lib/node-esm/{client-ready-4BUMAISA.mjs → client-ready-FS62YRSD.mjs} +7 -7
- package/dist/lib/node-esm/client-ready-FS62YRSD.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +14 -12
- package/dist/lib/node-esm/index.mjs.map +2 -2
- package/dist/lib/node-esm/{intent-resolver-5EFEXLWX.mjs → intent-resolver-MREOBMHB.mjs} +8 -8
- package/dist/lib/node-esm/intent-resolver-MREOBMHB.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-VLQBOZTX.mjs → react-surface-ZHMNRVFJ.mjs} +3 -3
- package/dist/lib/node-esm/{settings-765HDSFY.mjs → settings-YF4AO2PI.mjs} +5 -5
- package/dist/lib/node-esm/settings-YF4AO2PI.mjs.map +7 -0
- package/dist/lib/node-esm/{state-R2UVEG7B.mjs → state-IZNXQ5RA.mjs} +2 -2
- package/dist/lib/node-esm/types.mjs +1 -1
- package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/client-ready.d.ts +2 -2
- package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +4 -180
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/FeedbackForm.d.ts.map +1 -1
- package/dist/types/src/components/HelpContainer.d.ts.map +1 -1
- package/dist/types/src/components/ObservabilitySettings.d.ts +4 -4
- package/dist/types/src/components/ObservabilitySettings.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +258 -145
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -22
- package/src/capabilities/app-graph-builder.ts +29 -17
- package/src/capabilities/client-ready.ts +6 -6
- package/src/capabilities/intent-resolver.ts +7 -7
- package/src/capabilities/settings.ts +2 -2
- package/src/components/HelpContainer.tsx +21 -4
- package/src/components/ObservabilitySettings.tsx +5 -5
- package/src/translations.ts +3 -1
- package/src/types.ts +128 -126
- package/dist/lib/browser/app-graph-builder-OCAR3KUZ.mjs +0 -40
- package/dist/lib/browser/app-graph-builder-OCAR3KUZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-6Q6ZJ3N4.mjs +0 -123
- package/dist/lib/browser/chunk-6Q6ZJ3N4.mjs.map +0 -7
- package/dist/lib/browser/chunk-RI4RE346.mjs +0 -178
- package/dist/lib/browser/chunk-RI4RE346.mjs.map +0 -7
- package/dist/lib/browser/client-ready-LRY24QM5.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-ZKNJCLDV.mjs.map +0 -7
- package/dist/lib/browser/settings-JFZJTDH7.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-JPUTX4LQ.cjs.map +0 -7
- package/dist/lib/node/chunk-FIL4BZE2.cjs +0 -148
- package/dist/lib/node/chunk-FIL4BZE2.cjs.map +0 -7
- package/dist/lib/node/chunk-V4ZLLL5M.cjs +0 -198
- package/dist/lib/node/chunk-V4ZLLL5M.cjs.map +0 -7
- package/dist/lib/node/client-ready-KHGLQOQZ.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-5SANBSGX.cjs.map +0 -7
- package/dist/lib/node/settings-ARLOGCYU.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-RKURIIFT.mjs +0 -41
- package/dist/lib/node-esm/app-graph-builder-RKURIIFT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-M3MGU3DN.mjs +0 -179
- package/dist/lib/node-esm/chunk-M3MGU3DN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MW737PHD.mjs +0 -124
- package/dist/lib/node-esm/chunk-MW737PHD.mjs.map +0 -7
- package/dist/lib/node-esm/client-ready-4BUMAISA.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-5EFEXLWX.mjs.map +0 -7
- package/dist/lib/node-esm/settings-765HDSFY.mjs.map +0 -7
- /package/dist/lib/browser/{react-surface-S36FDV7I.mjs.map → react-surface-6RWNGDFA.mjs.map} +0 -0
- /package/dist/lib/browser/{state-GHBXMIQI.mjs.map → state-LG4FXJD2.mjs.map} +0 -0
- /package/dist/lib/node/{react-surface-MWJS6OMP.cjs.map → react-surface-VZQ7EWYP.cjs.map} +0 -0
- /package/dist/lib/node/{state-5GZLUTX7.cjs.map → state-NXRP3P5D.cjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-VLQBOZTX.mjs.map → react-surface-ZHMNRVFJ.mjs.map} +0 -0
- /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
|
|
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:
|
|
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.
|
|
26
|
-
const observability = context.
|
|
25
|
+
const client = context.getCapability(ClientCapability);
|
|
26
|
+
const observability = context.getCapability(ObservabilityCapabilities.Observability);
|
|
27
27
|
const settings = context
|
|
28
|
-
.
|
|
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.
|
|
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.
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
16
|
-
|
|
17
|
-
enabled:
|
|
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 =
|
|
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);
|
package/src/translations.ts
CHANGED
|
@@ -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
|
|
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 {
|
|
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
|
|
10
|
-
|
|
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
|
|
13
|
-
|
|
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 =
|
|
16
|
-
message:
|
|
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 =
|
|
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
|
|
25
|
-
input:
|
|
26
|
-
state:
|
|
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:
|
|
30
|
+
output: Schema.Boolean,
|
|
29
31
|
}) {}
|
|
30
32
|
|
|
31
|
-
export class CaptureUserFeedback extends
|
|
33
|
+
export class CaptureUserFeedback extends Schema.TaggedClass<CaptureUserFeedback>()(
|
|
32
34
|
`${OBSERVABILITY_ACTION}/capture-feedback`,
|
|
33
35
|
{
|
|
34
36
|
input: UserFeedback,
|
|
35
|
-
output:
|
|
37
|
+
output: Schema.Void,
|
|
36
38
|
},
|
|
37
39
|
) {}
|
|
38
40
|
|
|
39
41
|
/** Base intent for sending events. */
|
|
40
|
-
export class BaseSendEvent extends
|
|
41
|
-
input:
|
|
42
|
-
name:
|
|
43
|
-
properties:
|
|
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:
|
|
47
|
+
output: Schema.Void,
|
|
46
48
|
}) {}
|
|
47
49
|
|
|
48
50
|
/** Intent with strict types for first-party events. */
|
|
49
|
-
export class SendEvent extends
|
|
51
|
+
export class SendEvent extends Schema.TaggedClass<SendEvent>()(`${OBSERVABILITY_ACTION}/send-event`, {
|
|
50
52
|
// NOTE: Sort alphabetically by name.
|
|
51
|
-
input:
|
|
52
|
-
|
|
53
|
-
name:
|
|
53
|
+
input: Schema.Union(
|
|
54
|
+
Schema.Struct({
|
|
55
|
+
name: Schema.Literal('identity.create'),
|
|
54
56
|
}),
|
|
55
|
-
|
|
56
|
-
name:
|
|
57
|
+
Schema.Struct({
|
|
58
|
+
name: Schema.Literal('identity.join'),
|
|
57
59
|
}),
|
|
58
|
-
|
|
59
|
-
name:
|
|
60
|
+
Schema.Struct({
|
|
61
|
+
name: Schema.Literal('identity.recover'),
|
|
60
62
|
}),
|
|
61
|
-
|
|
62
|
-
name:
|
|
63
|
+
Schema.Struct({
|
|
64
|
+
name: Schema.Literal('identity.share'),
|
|
63
65
|
}),
|
|
64
|
-
|
|
65
|
-
name:
|
|
66
|
-
properties:
|
|
67
|
-
subjectId:
|
|
68
|
-
typename:
|
|
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
|
-
|
|
72
|
-
name:
|
|
73
|
-
properties:
|
|
74
|
-
loadDuration:
|
|
73
|
+
Schema.Struct({
|
|
74
|
+
name: Schema.Literal('page.load'),
|
|
75
|
+
properties: Schema.Struct({
|
|
76
|
+
loadDuration: Schema.Number,
|
|
75
77
|
}),
|
|
76
78
|
}),
|
|
77
|
-
|
|
78
|
-
name:
|
|
79
|
-
properties:
|
|
80
|
-
plugin:
|
|
81
|
-
enabled:
|
|
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
|
-
|
|
85
|
-
name:
|
|
86
|
-
properties:
|
|
87
|
-
spaceId:
|
|
86
|
+
Schema.Struct({
|
|
87
|
+
name: Schema.Literal('space.create'),
|
|
88
|
+
properties: Schema.Struct({
|
|
89
|
+
spaceId: Type.SpaceId,
|
|
88
90
|
}),
|
|
89
91
|
}),
|
|
90
|
-
|
|
91
|
-
name:
|
|
92
|
-
properties:
|
|
93
|
-
spaceId:
|
|
92
|
+
Schema.Struct({
|
|
93
|
+
name: Schema.Literal('space.join'),
|
|
94
|
+
properties: Schema.Struct({
|
|
95
|
+
spaceId: Type.SpaceId,
|
|
94
96
|
}),
|
|
95
97
|
}),
|
|
96
|
-
|
|
97
|
-
name:
|
|
98
|
-
properties:
|
|
99
|
-
spaceId:
|
|
98
|
+
Schema.Struct({
|
|
99
|
+
name: Schema.Literal('space.limit'),
|
|
100
|
+
properties: Schema.Struct({
|
|
101
|
+
spaceId: Type.SpaceId,
|
|
100
102
|
}),
|
|
101
103
|
}),
|
|
102
|
-
|
|
103
|
-
name:
|
|
104
|
-
properties:
|
|
105
|
-
spaceId:
|
|
104
|
+
Schema.Struct({
|
|
105
|
+
name: Schema.Literal('space.lock'),
|
|
106
|
+
properties: Schema.Struct({
|
|
107
|
+
spaceId: Type.SpaceId,
|
|
106
108
|
}),
|
|
107
109
|
}),
|
|
108
|
-
|
|
109
|
-
name:
|
|
110
|
-
properties:
|
|
111
|
-
spaceId:
|
|
112
|
-
targetVersion:
|
|
113
|
-
version:
|
|
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
|
-
|
|
117
|
-
name:
|
|
118
|
-
properties:
|
|
119
|
-
spaceId:
|
|
120
|
-
objectId:
|
|
121
|
-
typename:
|
|
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
|
-
|
|
125
|
-
name:
|
|
126
|
-
properties:
|
|
127
|
-
spaceId:
|
|
126
|
+
Schema.Struct({
|
|
127
|
+
name: Schema.Literal('space.share'),
|
|
128
|
+
properties: Schema.Struct({
|
|
129
|
+
spaceId: Type.SpaceId,
|
|
128
130
|
}),
|
|
129
131
|
}),
|
|
130
|
-
|
|
131
|
-
name:
|
|
132
|
-
properties:
|
|
133
|
-
spaceId:
|
|
132
|
+
Schema.Struct({
|
|
133
|
+
name: Schema.Literal('space.unlock'),
|
|
134
|
+
properties: Schema.Struct({
|
|
135
|
+
spaceId: Type.SpaceId,
|
|
134
136
|
}),
|
|
135
137
|
}),
|
|
136
|
-
|
|
137
|
-
name:
|
|
138
|
-
properties:
|
|
139
|
-
spaceId:
|
|
140
|
-
threadId:
|
|
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
|
-
|
|
144
|
-
name:
|
|
145
|
-
properties:
|
|
146
|
-
spaceId:
|
|
147
|
-
threadId:
|
|
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
|
-
|
|
151
|
-
name:
|
|
152
|
-
properties:
|
|
153
|
-
spaceId:
|
|
154
|
-
threadId:
|
|
155
|
-
threadLength:
|
|
156
|
-
messageId:
|
|
157
|
-
messageLength:
|
|
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
|
-
|
|
161
|
-
name:
|
|
162
|
-
properties:
|
|
163
|
-
spaceId:
|
|
164
|
-
threadId:
|
|
165
|
-
messageId:
|
|
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
|
-
|
|
169
|
-
name:
|
|
170
|
-
properties:
|
|
171
|
-
spaceId:
|
|
172
|
-
threadId:
|
|
173
|
-
messageId:
|
|
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
|
-
|
|
177
|
-
name:
|
|
178
|
-
properties:
|
|
179
|
-
spaceId:
|
|
180
|
-
messageId:
|
|
181
|
-
messageLength:
|
|
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
|
-
|
|
185
|
-
name:
|
|
186
|
-
properties:
|
|
187
|
-
spaceId:
|
|
188
|
-
threadId:
|
|
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
|
-
|
|
192
|
-
name:
|
|
193
|
-
properties:
|
|
194
|
-
spaceId:
|
|
195
|
-
threadId:
|
|
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:
|
|
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
|