@dxos/plugin-observability 0.7.5-main.9d26e3a → 0.7.5-main.9d2a38b

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 (113) hide show
  1. package/dist/lib/browser/{chunk-UBDF6N5K.mjs → chunk-BAU7OKYM.mjs} +2 -2
  2. package/dist/lib/browser/{chunk-X6XUBXZQ.mjs → chunk-BWEAT3RG.mjs} +3 -3
  3. package/dist/lib/{node-esm/chunk-7GGPSKXN.mjs.map → browser/chunk-BWEAT3RG.mjs.map} +3 -3
  4. package/dist/lib/browser/chunk-H2SQZM4P.mjs +18 -0
  5. package/dist/lib/browser/chunk-H2SQZM4P.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-K2Y64RO7.mjs +37 -0
  7. package/dist/lib/browser/chunk-K2Y64RO7.mjs.map +7 -0
  8. package/dist/lib/browser/client-ready-3J4QVJE6.mjs +104 -0
  9. package/dist/lib/browser/client-ready-3J4QVJE6.mjs.map +7 -0
  10. package/dist/lib/browser/index.mjs +73 -206
  11. package/dist/lib/browser/index.mjs.map +4 -4
  12. package/dist/lib/browser/intents-resolver-P36HTRAG.mjs +55 -0
  13. package/dist/lib/browser/intents-resolver-P36HTRAG.mjs.map +7 -0
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/react-surface-MPOMS7ZD.mjs +26 -0
  16. package/dist/lib/browser/react-surface-MPOMS7ZD.mjs.map +7 -0
  17. package/dist/lib/browser/settings-T23OKKWF.mjs +25 -0
  18. package/dist/lib/browser/settings-T23OKKWF.mjs.map +7 -0
  19. package/dist/lib/browser/state-FQ6WMLXG.mjs +26 -0
  20. package/dist/lib/browser/state-FQ6WMLXG.mjs.map +7 -0
  21. package/dist/lib/browser/types.mjs +2 -2
  22. package/dist/lib/node/chunk-44EFFE6E.cjs +38 -0
  23. package/dist/lib/node/chunk-44EFFE6E.cjs.map +7 -0
  24. package/dist/lib/node/{chunk-HZSRCP4I.cjs → chunk-GSKCHQV5.cjs} +6 -6
  25. package/dist/lib/node/{chunk-SIUGGDNL.cjs → chunk-HLDDHG6J.cjs} +7 -7
  26. package/dist/lib/node/chunk-HLDDHG6J.cjs.map +7 -0
  27. package/dist/lib/node/chunk-UYLJVCUK.cjs +65 -0
  28. package/dist/lib/node/chunk-UYLJVCUK.cjs.map +7 -0
  29. package/dist/lib/node/client-ready-UQHLLUQI.cjs +115 -0
  30. package/dist/lib/node/client-ready-UQHLLUQI.cjs.map +7 -0
  31. package/dist/lib/node/index.cjs +69 -199
  32. package/dist/lib/node/index.cjs.map +4 -4
  33. package/dist/lib/node/intents-resolver-E7LSFPS6.cjs +66 -0
  34. package/dist/lib/node/intents-resolver-E7LSFPS6.cjs.map +7 -0
  35. package/dist/lib/node/meta.json +1 -1
  36. package/dist/lib/node/react-surface-F77LLZIF.cjs +50 -0
  37. package/dist/lib/node/react-surface-F77LLZIF.cjs.map +7 -0
  38. package/dist/lib/node/settings-BUWSSDPF.cjs +39 -0
  39. package/dist/lib/node/settings-BUWSSDPF.cjs.map +7 -0
  40. package/dist/lib/node/state-NL2ZZN3S.cjs +40 -0
  41. package/dist/lib/node/state-NL2ZZN3S.cjs.map +7 -0
  42. package/dist/lib/node/types.cjs +4 -4
  43. package/dist/lib/node/types.cjs.map +1 -1
  44. package/dist/lib/node-esm/{chunk-52FTHXHB.mjs → chunk-DF2CPSQB.mjs} +2 -2
  45. package/dist/lib/node-esm/chunk-PZRWMBEG.mjs +38 -0
  46. package/dist/lib/node-esm/chunk-PZRWMBEG.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-SCQR7W6A.mjs +19 -0
  48. package/dist/lib/node-esm/chunk-SCQR7W6A.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-7GGPSKXN.mjs → chunk-YK5MJX7W.mjs} +3 -3
  50. package/dist/lib/{browser/chunk-X6XUBXZQ.mjs.map → node-esm/chunk-YK5MJX7W.mjs.map} +3 -3
  51. package/dist/lib/node-esm/client-ready-LPGIUDS2.mjs +105 -0
  52. package/dist/lib/node-esm/client-ready-LPGIUDS2.mjs.map +7 -0
  53. package/dist/lib/node-esm/index.mjs +73 -206
  54. package/dist/lib/node-esm/index.mjs.map +4 -4
  55. package/dist/lib/node-esm/intents-resolver-QDAK6TMP.mjs +56 -0
  56. package/dist/lib/node-esm/intents-resolver-QDAK6TMP.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/react-surface-MMGCSPXQ.mjs +27 -0
  59. package/dist/lib/node-esm/react-surface-MMGCSPXQ.mjs.map +7 -0
  60. package/dist/lib/node-esm/settings-WWUULM4T.mjs +26 -0
  61. package/dist/lib/node-esm/settings-WWUULM4T.mjs.map +7 -0
  62. package/dist/lib/node-esm/state-AM2ICAXU.mjs +27 -0
  63. package/dist/lib/node-esm/state-AM2ICAXU.mjs.map +7 -0
  64. package/dist/lib/node-esm/types.mjs +2 -2
  65. package/dist/types/src/ObservabilityPlugin.d.ts +1 -11
  66. package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/capabilities.d.ts +12 -0
  68. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  69. package/dist/types/src/capabilities/client-ready.d.ts +10 -0
  70. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/index.d.ts +16 -0
  72. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  73. package/dist/types/src/capabilities/intents-resolver.d.ts +7 -0
  74. package/dist/types/src/capabilities/intents-resolver.d.ts.map +1 -0
  75. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  76. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/settings.d.ts +4 -0
  78. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/state.d.ts +6 -0
  80. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  81. package/dist/types/src/components/ObservabilitySettings.d.ts +5 -3
  82. package/dist/types/src/components/ObservabilitySettings.d.ts.map +1 -1
  83. package/dist/types/src/events.d.ts +5 -0
  84. package/dist/types/src/events.d.ts.map +1 -0
  85. package/dist/types/src/index.d.ts +3 -2
  86. package/dist/types/src/index.d.ts.map +1 -1
  87. package/dist/types/src/meta.d.ts +1 -2
  88. package/dist/types/src/meta.d.ts.map +1 -1
  89. package/dist/types/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +19 -27
  91. package/src/ObservabilityPlugin.ts +60 -0
  92. package/src/capabilities/capabilities.ts +22 -0
  93. package/src/capabilities/client-ready.ts +99 -0
  94. package/src/capabilities/index.ts +13 -0
  95. package/src/capabilities/intents-resolver.ts +53 -0
  96. package/src/capabilities/react-surface.tsx +26 -0
  97. package/src/capabilities/settings.ts +19 -0
  98. package/src/capabilities/state.ts +21 -0
  99. package/src/components/ObservabilitySettings.tsx +12 -7
  100. package/src/events.ts +14 -0
  101. package/src/index.ts +3 -4
  102. package/src/meta.ts +1 -1
  103. package/dist/lib/browser/meta.mjs +0 -9
  104. package/dist/lib/browser/meta.mjs.map +0 -7
  105. package/dist/lib/node/chunk-SIUGGDNL.cjs.map +0 -7
  106. package/dist/lib/node/meta.cjs +0 -30
  107. package/dist/lib/node/meta.cjs.map +0 -7
  108. package/dist/lib/node-esm/meta.mjs +0 -10
  109. package/dist/lib/node-esm/meta.mjs.map +0 -7
  110. package/src/ObservabilityPlugin.tsx +0 -215
  111. /package/dist/lib/browser/{chunk-UBDF6N5K.mjs.map → chunk-BAU7OKYM.mjs.map} +0 -0
  112. /package/dist/lib/node/{chunk-HZSRCP4I.cjs.map → chunk-GSKCHQV5.cjs.map} +0 -0
  113. /package/dist/lib/node-esm/{chunk-52FTHXHB.mjs.map → chunk-DF2CPSQB.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { type ObservabilitySettingsProps, ObservabilitySettingsSchema } from '../components';\nimport { OBSERVABILITY_PLUGIN } from '../meta';\n\nexport default () => {\n const settings = create<ObservabilitySettingsProps>({ enabled: true });\n\n return contributes(Capabilities.Settings, {\n schema: ObservabilitySettingsSchema,\n prefix: OBSERVABILITY_PLUGIN,\n value: settings,\n });\n};\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,cAAc;AAKvB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,OAAmC;IAAEC,SAAS;EAAK,CAAA;AAEpE,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC;IACRC,QAAQC;IACRC,OAAOV;EACT,CAAA;AACF;",
6
+ "names": ["Capabilities", "contributes", "create", "settings", "create", "enabled", "contributes", "Capabilities", "Settings", "schema", "ObservabilitySettingsSchema", "prefix", "OBSERVABILITY_PLUGIN", "value"]
7
+ }
@@ -0,0 +1,27 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ObservabilityCapabilities
4
+ } from "./chunk-SCQR7W6A.mjs";
5
+ import {
6
+ OBSERVABILITY_PLUGIN
7
+ } from "./chunk-YK5MJX7W.mjs";
8
+
9
+ // packages/plugins/plugin-observability/src/capabilities/state.ts
10
+ import { contributes } from "@dxos/app-framework";
11
+ import { LocalStorageStore } from "@dxos/local-storage";
12
+ import { getObservabilityGroup } from "@dxos/observability";
13
+ var state_default = async ({ namespace }) => {
14
+ const state = new LocalStorageStore(OBSERVABILITY_PLUGIN);
15
+ state.prop({
16
+ key: "notified",
17
+ type: LocalStorageStore.bool({
18
+ allowUndefined: true
19
+ })
20
+ });
21
+ state.values.group = await getObservabilityGroup(namespace);
22
+ return contributes(ObservabilityCapabilities.State, state.values, () => state.close());
23
+ };
24
+ export {
25
+ state_default as default
26
+ };
27
+ //# sourceMappingURL=state-AM2ICAXU.mjs.map
@@ -0,0 +1,7 @@
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
+ }
@@ -2,8 +2,8 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  ObservabilityAction,
4
4
  UserFeedback
5
- } from "./chunk-52FTHXHB.mjs";
6
- import "./chunk-7GGPSKXN.mjs";
5
+ } from "./chunk-DF2CPSQB.mjs";
6
+ import "./chunk-YK5MJX7W.mjs";
7
7
  export {
8
8
  ObservabilityAction,
9
9
  UserFeedback
@@ -1,16 +1,6 @@
1
- import { type Plugin, type PluginDefinition, type IntentResolverProvides, type SettingsProvides, type SurfaceProvides, type TranslationsProvides } from '@dxos/app-framework';
2
1
  import { type Observability } from '@dxos/observability';
3
- import { type ObservabilitySettingsProps } from './components';
4
- export type ObservabilityPluginState = {
5
- group?: string;
6
- notified?: boolean;
7
- };
8
- export type ObservabilityPluginProvides = IntentResolverProvides & SurfaceProvides & SettingsProvides<ObservabilitySettingsProps> & TranslationsProvides & {
9
- observability: ObservabilityPluginState;
10
- };
11
- export declare const parseObservabilityPlugin: (plugin?: Plugin) => Plugin<ObservabilityPluginProvides> | undefined;
12
2
  export declare const ObservabilityPlugin: (options: {
13
3
  namespace: string;
14
4
  observability: () => Promise<Observability>;
15
- }) => PluginDefinition<ObservabilityPluginProvides>;
5
+ }) => import("@dxos/app-framework").Plugin;
16
6
  //# sourceMappingURL=ObservabilityPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservabilityPlugin.d.ts","sourceRoot":"","sources":["../../../src/ObservabilityPlugin.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAS1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAKtF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,sBAAsB,GAC9D,eAAe,GACf,gBAAgB,CAAC,0BAA0B,CAAC,GAC5C,oBAAoB,GAAG;IACrB,aAAa,EAAE,wBAAwB,CAAC;CACzC,CAAC;AAEJ,eAAO,MAAM,wBAAwB,YAAa,MAAM,oDAC+C,CAAC;AAExG,eAAO,MAAM,mBAAmB,YAAa;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7C,KAAG,gBAAgB,CAAC,2BAA2B,CA2J/C,CAAC"}
1
+ {"version":3,"file":"ObservabilityPlugin.d.ts","sourceRoot":"","sources":["../../../src/ObservabilityPlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,eAAO,MAAM,mBAAmB,YAAa;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAA;CAAE,yCAwC3G,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Client } from '@dxos/client';
2
+ import { type Observability } from '@dxos/observability';
3
+ export declare namespace ObservabilityCapabilities {
4
+ type State = {
5
+ group?: string;
6
+ notified?: boolean;
7
+ };
8
+ const State: import("@dxos/app-framework").InterfaceDef<State>;
9
+ const Observability: import("@dxos/app-framework").InterfaceDef<Observability>;
10
+ }
11
+ export declare const ClientCapability: import("@dxos/app-framework").InterfaceDef<Client>;
12
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/capabilities.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,yBAAiB,yBAAyB,CAAC;IACzC,KAAY,KAAK,GAAG;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACK,MAAM,KAAK,mDAAsE,CAAC;IAElF,MAAM,aAAa,2DAAsF,CAAC;CAClH;AAGD,eAAO,MAAM,gBAAgB,oDAAuE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type PluginsContext } from '@dxos/app-framework';
2
+ import { type Observability } from '@dxos/observability';
3
+ type ClientReadyOptions = {
4
+ context: PluginsContext;
5
+ namespace: string;
6
+ observability: Observability;
7
+ };
8
+ declare const _default: ({ context, namespace, observability }: ClientReadyOptions) => Promise<import("@dxos/app-framework").Capability<Observability>>;
9
+ export default _default;
10
+ //# sourceMappingURL=client-ready.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-ready.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/client-ready.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMlF,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;gEAE2D,kBAAkB;AAA/E,wBA0EE"}
@@ -0,0 +1,16 @@
1
+ export declare const ClientReady: (props?: {
2
+ context: import("@dxos/app-framework").PluginsContext;
3
+ namespace: string;
4
+ observability: import("packages/sdk/observability/dist/types/src").Observability;
5
+ } | undefined) => Promise<import("@dxos/app-framework").Capability<import("packages/sdk/observability/dist/types/src").Observability>>;
6
+ export declare const IntentResolver: (props?: {
7
+ context: import("@dxos/app-framework").PluginsContext;
8
+ namespace: string;
9
+ } | undefined) => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").Capabilities.IntentResolver>>;
10
+ export declare const ReactSurface: (props?: unknown) => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").Capabilities.ReactSurface>>;
11
+ export declare const ObservabilitySettings: (props?: unknown) => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").Capabilities.Settings>>;
12
+ export declare const ObservabilityState: (props?: {
13
+ namespace: string;
14
+ } | undefined) => Promise<import("@dxos/app-framework").Capability<import("packages/core/echo/live-object/dist/types/src").ReactiveObject<import("./capabilities").ObservabilityCapabilities.State>>>;
15
+ export * from './capabilities';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;;;;sIAAuC,CAAC;AAChE,eAAO,MAAM,cAAc;;;8HAA2C,CAAC;AACvE,eAAO,MAAM,YAAY,iIAAwC,CAAC;AAClE,eAAO,MAAM,qBAAqB,6HAAmC,CAAC;AACtE,eAAO,MAAM,kBAAkB;;qMAAgC,CAAC;AAEhE,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Capabilities, type PluginsContext } from '@dxos/app-framework';
2
+ declare const _default: ({ context, namespace }: {
3
+ context: PluginsContext;
4
+ namespace: string;
5
+ }) => import("@dxos/app-framework").Capability<Capabilities.IntentResolver>;
6
+ export default _default;
7
+ //# sourceMappingURL=intents-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intents-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/intents-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAA+B,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;iDAQ7D;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAAtF,wBAwCK"}
@@ -0,0 +1,4 @@
1
+ import { Capabilities } from '@dxos/app-framework';
2
+ declare const _default: () => import("@dxos/app-framework").Capability<Capabilities.ReactSurface>;
3
+ export default _default;
4
+ //# sourceMappingURL=react-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAMA,OAAO,EAA8B,YAAY,EAAiB,MAAM,qBAAqB,CAAC;;AAK9F,wBAcI"}
@@ -0,0 +1,4 @@
1
+ import { Capabilities } from '@dxos/app-framework';
2
+ declare const _default: () => import("@dxos/app-framework").Capability<Capabilities.Settings>;
3
+ export default _default;
4
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/settings.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;;AAMhE,wBAQE"}
@@ -0,0 +1,6 @@
1
+ import { ObservabilityCapabilities } from './capabilities';
2
+ declare const _default: ({ namespace }: {
3
+ namespace: string;
4
+ }) => Promise<import("@dxos/app-framework").Capability<import("packages/core/echo/live-object/dist/types/src").ReactiveObject<ObservabilityCapabilities.State>>>;
5
+ export default _default;
6
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/state.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;wCAGtB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE;AAA1D,wBASE"}
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
- export type ObservabilitySettingsProps = {
3
- enabled?: boolean;
4
- };
2
+ import { S } from '@dxos/echo-schema';
3
+ export declare const ObservabilitySettingsSchema: S.mutable<S.Struct<{
4
+ enabled: typeof S.Boolean;
5
+ }>>;
6
+ export type ObservabilitySettingsProps = S.Schema.Type<typeof ObservabilitySettingsSchema>;
5
7
  export declare const ObservabilitySettings: ({ settings }: {
6
8
  settings: ObservabilitySettingsProps;
7
9
  }) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ObservabilitySettings.d.ts","sourceRoot":"","sources":["../../../../src/components/ObservabilitySettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CAKnB,CAAC;AAEF,eAAO,MAAM,qBAAqB,iBAAkB;IAAE,QAAQ,EAAE,0BAA0B,CAAA;CAAE,sBAqB3F,CAAC"}
1
+ {"version":3,"file":"ObservabilitySettings.d.ts","sourceRoot":"","sources":["../../../../src/components/ObservabilitySettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAOtC,eAAO,MAAM,2BAA2B;;GAQvC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE3F,eAAO,MAAM,qBAAqB,iBAAkB;IAAE,QAAQ,EAAE,0BAA0B,CAAA;CAAE,sBAqB3F,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare namespace ObservabilityEvents {
2
+ const StateReady: import("@dxos/app-framework").ActivationEvent;
3
+ }
4
+ export declare const ClientReadyEvent: import("@dxos/app-framework").ActivationEvent;
5
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/events.ts"],"names":[],"mappings":"AAQA,yBAAiB,mBAAmB,CAAC;IAC5B,MAAM,UAAU,+CAAgD,CAAC;CACzE;AAGD,eAAO,MAAM,gBAAgB,+CAA2D,CAAC"}
@@ -1,4 +1,5 @@
1
- import { ObservabilityPlugin } from './ObservabilityPlugin';
2
- export default ObservabilityPlugin;
1
+ export { ObservabilityCapabilities } from './capabilities';
2
+ export { ObservabilityEvents } from './events';
3
+ export * from './meta';
3
4
  export * from './ObservabilityPlugin';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAe,mBAAmB,CAAC;AAEnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  export declare const OBSERVABILITY_PLUGIN = "dxos.org/plugin/observability";
2
- declare const _default: {
2
+ export declare const meta: {
3
3
  id: string;
4
4
  name: string;
5
5
  };
6
- export default _default;
7
6
  //# sourceMappingURL=meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;;;;;AAEpE,wBAGuB"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AAEpE,eAAO,MAAM,IAAI;;;CAGK,CAAC"}
@@ -1 +1 @@
1
- {"version":"5.7.2"}
1
+ {"version":"5.7.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-observability",
3
- "version": "0.7.5-main.9d26e3a",
3
+ "version": "0.7.5-main.9d2a38b",
4
4
  "description": "DXOS app framework plugin for hooking up app observability",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -13,11 +13,6 @@
13
13
  "browser": "./dist/lib/browser/index.mjs",
14
14
  "node": "./dist/lib/node-esm/index.mjs"
15
15
  },
16
- "./meta": {
17
- "types": "./dist/types/src/meta.d.ts",
18
- "browser": "./dist/lib/browser/meta.mjs",
19
- "node": "./dist/lib/node-esm/meta.mjs"
20
- },
21
16
  "./types": {
22
17
  "types": "./dist/types/src/types.d.ts",
23
18
  "browser": "./dist/lib/browser/types.mjs",
@@ -27,9 +22,6 @@
27
22
  "types": "dist/types/src/index.d.ts",
28
23
  "typesVersions": {
29
24
  "*": {
30
- "meta": [
31
- "dist/types/src/meta.d.ts"
32
- ],
33
25
  "types": [
34
26
  "dist/types/src/types.d.ts"
35
27
  ]
@@ -42,34 +34,34 @@
42
34
  "dependencies": {
43
35
  "@preact/signals-core": "^1.6.0",
44
36
  "localforage": "^1.10.0",
45
- "@dxos/async": "0.7.5-main.9d26e3a",
46
- "@dxos/app-framework": "0.7.5-main.9d26e3a",
47
- "@dxos/context": "0.7.5-main.9d26e3a",
48
- "@dxos/invariant": "0.7.5-main.9d26e3a",
49
- "@dxos/live-object": "0.7.5-main.9d26e3a",
50
- "@dxos/echo-schema": "0.7.5-main.9d26e3a",
51
- "@dxos/local-storage": "0.7.5-main.9d26e3a",
52
- "@dxos/log": "0.7.5-main.9d26e3a",
53
- "@dxos/observability": "0.7.5-main.9d26e3a",
54
- "@dxos/protocols": "0.7.5-main.9d26e3a",
55
- "@dxos/react-client": "0.7.5-main.9d26e3a",
56
- "@dxos/react-ui-form": "0.7.5-main.9d26e3a",
57
- "@dxos/util": "0.7.5-main.9d26e3a"
37
+ "@dxos/app-framework": "0.7.5-main.9d2a38b",
38
+ "@dxos/context": "0.7.5-main.9d2a38b",
39
+ "@dxos/invariant": "0.7.5-main.9d2a38b",
40
+ "@dxos/echo-schema": "0.7.5-main.9d2a38b",
41
+ "@dxos/async": "0.7.5-main.9d2a38b",
42
+ "@dxos/live-object": "0.7.5-main.9d2a38b",
43
+ "@dxos/local-storage": "0.7.5-main.9d2a38b",
44
+ "@dxos/log": "0.7.5-main.9d2a38b",
45
+ "@dxos/observability": "0.7.5-main.9d2a38b",
46
+ "@dxos/util": "0.7.5-main.9d2a38b",
47
+ "@dxos/react-ui-form": "0.7.5-main.9d2a38b",
48
+ "@dxos/react-client": "0.7.5-main.9d2a38b",
49
+ "@dxos/protocols": "0.7.5-main.9d2a38b"
58
50
  },
59
51
  "devDependencies": {
60
52
  "@phosphor-icons/react": "^2.1.5",
61
53
  "@types/react": "~18.2.0",
62
54
  "react": "~18.2.0",
63
55
  "vite": "5.4.7",
64
- "@dxos/react-ui": "0.7.5-main.9d26e3a",
65
- "@dxos/react-ui-theme": "0.7.5-main.9d26e3a",
66
- "@dxos/storybook-utils": "0.7.5-main.9d26e3a"
56
+ "@dxos/react-ui": "0.7.5-main.9d2a38b",
57
+ "@dxos/react-ui-theme": "0.7.5-main.9d2a38b",
58
+ "@dxos/storybook-utils": "0.7.5-main.9d2a38b"
67
59
  },
68
60
  "peerDependencies": {
69
61
  "@phosphor-icons/react": "^2.1.5",
70
62
  "react": "~18.2.0",
71
- "@dxos/react-ui-theme": "0.7.5-main.9d26e3a",
72
- "@dxos/react-ui": "0.7.5-main.9d26e3a"
63
+ "@dxos/react-ui": "0.7.5-main.9d2a38b",
64
+ "@dxos/react-ui-theme": "0.7.5-main.9d2a38b"
73
65
  },
74
66
  "publishConfig": {
75
67
  "access": "public"
@@ -0,0 +1,60 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { allOf, Capabilities, contributes, defineModule, definePlugin, Events } from '@dxos/app-framework';
6
+ import { type Observability } from '@dxos/observability';
7
+
8
+ import {
9
+ ClientReady,
10
+ IntentResolver,
11
+ ObservabilityCapabilities,
12
+ ObservabilitySettings,
13
+ ObservabilityState,
14
+ ReactSurface,
15
+ } from './capabilities';
16
+ import { ObservabilityEvents, ClientReadyEvent } from './events';
17
+ import { meta } from './meta';
18
+ import translations from './translations';
19
+
20
+ export const ObservabilityPlugin = (options: { namespace: string; observability: () => Promise<Observability> }) =>
21
+ definePlugin(meta, [
22
+ defineModule({
23
+ id: `${meta.id}/module/observability`,
24
+ activatesOn: Events.Startup,
25
+ activate: async () => contributes(ObservabilityCapabilities.Observability, await options.observability()),
26
+ }),
27
+ defineModule({
28
+ id: `${meta.id}/module/settings`,
29
+ activatesOn: Events.SetupSettings,
30
+ activate: ObservabilitySettings,
31
+ }),
32
+ defineModule({
33
+ id: `${meta.id}/module/state`,
34
+ activatesOn: Events.Startup,
35
+ activate: () => ObservabilityState({ namespace: options.namespace }),
36
+ }),
37
+ defineModule({
38
+ id: `${meta.id}/module/translations`,
39
+ activatesOn: Events.SetupTranslations,
40
+ activate: () => contributes(Capabilities.Translations, translations),
41
+ }),
42
+ defineModule({
43
+ id: `${meta.id}/module/intent-resolver`,
44
+ activatesOn: Events.SetupIntents,
45
+ activate: (context) => IntentResolver({ context, namespace: options.namespace }),
46
+ }),
47
+ defineModule({
48
+ id: `${meta.id}/module/react-surface`,
49
+ activatesOn: Events.Startup,
50
+ activate: ReactSurface,
51
+ }),
52
+ defineModule({
53
+ id: `${meta.id}/module/client-ready`,
54
+ activatesOn: allOf(Events.DispatcherReady, ObservabilityEvents.StateReady, ClientReadyEvent),
55
+ activate: async (context) => {
56
+ const observability = await options.observability();
57
+ return ClientReady({ context, observability, namespace: options.namespace });
58
+ },
59
+ }),
60
+ ]);
@@ -0,0 +1,22 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { defineCapability } from '@dxos/app-framework';
6
+ import { type Client } from '@dxos/client';
7
+ import { type Observability } from '@dxos/observability';
8
+
9
+ import { OBSERVABILITY_PLUGIN } from '../meta';
10
+
11
+ export namespace ObservabilityCapabilities {
12
+ export type State = {
13
+ group?: string;
14
+ notified?: boolean;
15
+ };
16
+ export const State = defineCapability<State>(`${OBSERVABILITY_PLUGIN}/capability/state`);
17
+
18
+ export const Observability = defineCapability<Observability>(`${OBSERVABILITY_PLUGIN}/capability/observability`);
19
+ }
20
+
21
+ // NOTE: This is cloned from the client plugin to avoid circular dependencies.
22
+ export const ClientCapability = defineCapability<Client>('dxos.org/plugin/client/capability/client');
@@ -0,0 +1,99 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import {
6
+ Capabilities,
7
+ contributes,
8
+ createIntent,
9
+ LayoutAction,
10
+ SettingsAction,
11
+ type PluginsContext,
12
+ } from '@dxos/app-framework';
13
+ import { setupTelemetryListeners, type Observability } from '@dxos/observability';
14
+
15
+ import { ClientCapability, ObservabilityCapabilities } from './capabilities';
16
+ import { OBSERVABILITY_PLUGIN } from '../meta';
17
+ import { ObservabilityAction } from '../types';
18
+
19
+ type ClientReadyOptions = {
20
+ context: PluginsContext;
21
+ namespace: string;
22
+ observability: Observability;
23
+ };
24
+
25
+ export default async ({ context, namespace, observability }: ClientReadyOptions) => {
26
+ const manager = context.requestCapability(Capabilities.PluginManager);
27
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
28
+ const state = context.requestCapability(ObservabilityCapabilities.State);
29
+ const client = context.requestCapability(ClientCapability);
30
+
31
+ const sendPrivacyNotice = async () => {
32
+ const environment = client?.config?.values.runtime?.app?.env?.DX_ENVIRONMENT;
33
+ const notify =
34
+ environment && environment !== 'ci' && !environment.endsWith('.local') && !environment.endsWith('.lan');
35
+ if (!state.notified && notify) {
36
+ await dispatch(
37
+ createIntent(LayoutAction.SetLayout, {
38
+ element: 'toast',
39
+ subject: {
40
+ id: `${OBSERVABILITY_PLUGIN}/notice`,
41
+ // TODO(wittjosiah): Non-react translation utils.
42
+ title: ['observability toast label', { ns: OBSERVABILITY_PLUGIN }],
43
+ description: ['observability toast description', { ns: OBSERVABILITY_PLUGIN }],
44
+ duration: Infinity,
45
+ icon: 'ph--info--regular',
46
+ actionLabel: ['observability toast action label', { ns: OBSERVABILITY_PLUGIN }],
47
+ actionAlt: ['observability toast action alt', { ns: OBSERVABILITY_PLUGIN }],
48
+ closeLabel: ['observability toast close label', { ns: OBSERVABILITY_PLUGIN }],
49
+ onAction: () => dispatch(createIntent(SettingsAction.Open, { plugin: OBSERVABILITY_PLUGIN })),
50
+ },
51
+ }),
52
+ );
53
+
54
+ state.notified = true;
55
+ }
56
+ };
57
+
58
+ // Ensure errors are tagged with enabled plugins to help with reproductions.
59
+ manager.enabled.map((plugin) => observability?.setTag(`pluginEnabled-${plugin}`, 'true', 'errors'));
60
+
61
+ await dispatch(
62
+ createIntent(ObservabilityAction.SendEvent, {
63
+ name: 'page.load',
64
+ properties: {
65
+ href: window.location.href,
66
+ // TODO(wittjosiah): These apis are deprecated. Is there a better way to find this information?
67
+ loadDuration: window.performance.timing.loadEventEnd - window.performance.timing.loadEventStart,
68
+ },
69
+ }),
70
+ );
71
+
72
+ // Start client observability (i.e. not running as shared worker)
73
+ // TODO(nf): how to prevent multiple instances for single shared worker?
74
+ const cleanup = setupTelemetryListeners(namespace, client, observability);
75
+
76
+ await Promise.all([
77
+ observability.setIdentityTags(client.services.services),
78
+ observability.startRuntimeMetrics(client),
79
+ observability.startNetworkMetrics(client.services.services),
80
+ observability.startSpacesMetrics(client, namespace),
81
+ ]);
82
+
83
+ if (client.halo.identity.get()) {
84
+ await sendPrivacyNotice();
85
+ } else {
86
+ const subscription = client.halo.identity.subscribe(async (identity) => {
87
+ if (identity && observability) {
88
+ await sendPrivacyNotice();
89
+ await observability.setIdentityTags(client.services.services);
90
+ subscription.unsubscribe();
91
+ }
92
+ });
93
+ }
94
+
95
+ return contributes(ObservabilityCapabilities.Observability, observability, async () => {
96
+ cleanup();
97
+ await observability.close();
98
+ });
99
+ };
@@ -0,0 +1,13 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { lazy } from '@dxos/app-framework';
6
+
7
+ export const ClientReady = lazy(() => import('./client-ready'));
8
+ export const IntentResolver = lazy(() => import('./intents-resolver'));
9
+ export const ReactSurface = lazy(() => import('./react-surface'));
10
+ export const ObservabilitySettings = lazy(() => import('./settings'));
11
+ export const ObservabilityState = lazy(() => import('./state'));
12
+
13
+ export * from './capabilities';
@@ -0,0 +1,53 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capabilities, contributes, createResolver, type PluginsContext } from '@dxos/app-framework';
6
+ import { getTelemetryIdentifier, storeObservabilityDisabled } from '@dxos/observability';
7
+
8
+ import { ClientCapability, ObservabilityCapabilities } from './capabilities';
9
+ import { type ObservabilitySettingsProps } from '../components';
10
+ import { OBSERVABILITY_PLUGIN } from '../meta';
11
+ import { ObservabilityAction } from '../types';
12
+
13
+ export default ({ context, namespace }: { context: PluginsContext; namespace: string }) =>
14
+ contributes(Capabilities.IntentResolver, [
15
+ createResolver(ObservabilityAction.Toggle, async ({ state }) => {
16
+ const client = context.requestCapability(ClientCapability);
17
+ const observability = context.requestCapability(ObservabilityCapabilities.Observability);
18
+ const settings = context
19
+ .requestCapability(Capabilities.SettingsStore)
20
+ .getStore<ObservabilitySettingsProps>(OBSERVABILITY_PLUGIN)!.value;
21
+ settings.enabled = state ?? !settings.enabled;
22
+ observability.event({
23
+ identityId: getTelemetryIdentifier(client),
24
+ name: `${namespace}.observability.toggle`,
25
+ properties: {
26
+ enabled: settings.enabled,
27
+ },
28
+ });
29
+ observability.setMode(settings.enabled ? 'basic' : 'disabled');
30
+ await storeObservabilityDisabled(namespace, !settings.enabled);
31
+ return { data: settings.enabled };
32
+ }),
33
+ createResolver(ObservabilityAction.SendEvent, (data) => {
34
+ const client = context.requestCapability(ClientCapability);
35
+ // NOTE: This is to ensure that events fired before observability is ready are still sent.
36
+ // TODO(wittjosiah): If the intent dispatcher supports concurrent actions in the future,
37
+ // then this could awaited still rather than voiding.
38
+ void context.waitForCapability(ObservabilityCapabilities.Observability).then((observability) => {
39
+ const event = {
40
+ identityId: getTelemetryIdentifier(client),
41
+ name: `${namespace}.${data.name}`,
42
+ properties: {
43
+ ...data.properties,
44
+ },
45
+ };
46
+ observability.event(event);
47
+ });
48
+ }),
49
+ createResolver(ObservabilityAction.CaptureUserFeedback, async (data) => {
50
+ const observability = context.requestCapability(ObservabilityCapabilities.Observability);
51
+ observability.captureUserFeedback(data.email, data.name, data.message);
52
+ }),
53
+ ]);
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { contributes, useCapability, Capabilities, createSurface } from '@dxos/app-framework';
8
+
9
+ import { ObservabilitySettings, type ObservabilitySettingsProps } from '../components';
10
+ import { OBSERVABILITY_PLUGIN } from '../meta';
11
+
12
+ export default () =>
13
+ contributes(
14
+ Capabilities.ReactSurface,
15
+ createSurface({
16
+ id: OBSERVABILITY_PLUGIN,
17
+ role: 'settings',
18
+ filter: (data): data is any => data.subject === OBSERVABILITY_PLUGIN,
19
+ component: () => {
20
+ const settings = useCapability(Capabilities.SettingsStore).getStore<ObservabilitySettingsProps>(
21
+ OBSERVABILITY_PLUGIN,
22
+ )!.value;
23
+ return <ObservabilitySettings settings={settings} />;
24
+ },
25
+ }),
26
+ );
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capabilities, contributes } from '@dxos/app-framework';
6
+ import { create } from '@dxos/live-object';
7
+
8
+ import { type ObservabilitySettingsProps, ObservabilitySettingsSchema } from '../components';
9
+ import { OBSERVABILITY_PLUGIN } from '../meta';
10
+
11
+ export default () => {
12
+ const settings = create<ObservabilitySettingsProps>({ enabled: true });
13
+
14
+ return contributes(Capabilities.Settings, {
15
+ schema: ObservabilitySettingsSchema,
16
+ prefix: OBSERVABILITY_PLUGIN,
17
+ value: settings,
18
+ });
19
+ };