@dxos/plugin-observability 0.11.1 → 0.12.0-next-bbabc02363f18d7643ea4160e3a7a7809870fd0d

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 (115) hide show
  1. package/dist/lib/ObservabilityCapabilities.mjs +31 -0
  2. package/dist/lib/ObservabilityCapabilities.mjs.map +1 -0
  3. package/dist/lib/ObservabilityEvents.mjs +15 -0
  4. package/dist/lib/ObservabilityEvents.mjs.map +1 -0
  5. package/dist/lib/ObservabilityOperation.mjs +41 -0
  6. package/dist/lib/ObservabilityOperation.mjs.map +1 -0
  7. package/dist/lib/ObservabilityOptions.mjs +7 -0
  8. package/dist/lib/ObservabilityOptions.mjs.map +1 -0
  9. package/dist/lib/ObservabilityPlugin.mjs +10 -39
  10. package/dist/lib/ObservabilityPlugin.mjs.map +1 -1
  11. package/dist/lib/ObservabilityPlugin.node.mjs +7 -7
  12. package/dist/lib/ObservabilityPlugin.node.mjs.map +1 -1
  13. package/dist/lib/ObservabilityPlugin.workerd.mjs +7 -7
  14. package/dist/lib/ObservabilityPlugin.workerd.mjs.map +1 -1
  15. package/dist/lib/Settings.mjs +12 -0
  16. package/dist/lib/Settings.mjs.map +1 -0
  17. package/dist/lib/capabilities.mjs +48 -8
  18. package/dist/lib/capabilities.mjs.map +1 -1
  19. package/dist/lib/chunk-ObservabilitySettings.mjs +5 -4
  20. package/dist/lib/chunk-ObservabilitySettings.mjs.map +1 -1
  21. package/dist/lib/chunk-client-ready.mjs +22 -25
  22. package/dist/lib/chunk-client-ready.mjs.map +1 -1
  23. package/dist/lib/chunk-meta.mjs +1 -1
  24. package/dist/lib/chunk-meta.mjs.map +1 -1
  25. package/dist/lib/chunk-operation-handler.mjs +3 -2
  26. package/dist/lib/chunk-operation-handler.mjs.map +1 -1
  27. package/dist/lib/chunk-privacy-notice.mjs +9 -7
  28. package/dist/lib/chunk-privacy-notice.mjs.map +1 -1
  29. package/dist/lib/chunk-react-surface.mjs +3 -2
  30. package/dist/lib/chunk-react-surface.mjs.map +1 -1
  31. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  32. package/dist/lib/chunk-send-event.mjs +4 -3
  33. package/dist/lib/chunk-send-event.mjs.map +1 -1
  34. package/dist/lib/chunk-settings.mjs +7 -6
  35. package/dist/lib/chunk-settings.mjs.map +1 -1
  36. package/dist/lib/chunk-state.mjs +6 -5
  37. package/dist/lib/chunk-state.mjs.map +1 -1
  38. package/dist/lib/chunk-toggle.mjs +6 -4
  39. package/dist/lib/chunk-toggle.mjs.map +1 -1
  40. package/dist/lib/index.mjs +6 -2
  41. package/dist/lib/operations.mjs +4 -2
  42. package/dist/lib/operations.mjs.map +1 -1
  43. package/dist/lib/plugin.mjs +2 -3
  44. package/dist/lib/plugin.mjs.map +1 -1
  45. package/dist/types/src/ObservabilityPlugin.d.ts +3 -12
  46. package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
  47. package/dist/types/src/ObservabilityPlugin.node.d.ts +1 -1
  48. package/dist/types/src/ObservabilityPlugin.node.d.ts.map +1 -1
  49. package/dist/types/src/ObservabilityPlugin.workerd.d.ts +1 -1
  50. package/dist/types/src/ObservabilityPlugin.workerd.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/client-ready.d.ts +2 -7
  52. package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
  53. package/dist/types/src/capabilities/index.d.ts +10 -11
  54. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/operation-handler.d.ts +2 -3
  56. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/privacy-notice.d.ts +2 -2
  58. package/dist/types/src/capabilities/privacy-notice.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  60. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/settings.d.ts +2 -2
  62. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/state.d.ts +2 -2
  64. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  65. package/dist/types/src/containers/ObservabilitySettings/ObservabilitySettings.d.ts.map +1 -1
  66. package/dist/types/src/containers/ObservabilitySettings/ObservabilitySettings.stories.d.ts +2 -2
  67. package/dist/types/src/containers/ObservabilitySettings/ObservabilitySettings.stories.d.ts.map +1 -1
  68. package/dist/types/src/index.d.ts +5 -1
  69. package/dist/types/src/index.d.ts.map +1 -1
  70. package/dist/types/src/operations/index.d.ts +1 -1
  71. package/dist/types/src/operations/index.d.ts.map +1 -1
  72. package/dist/types/src/operations/send-event.d.ts +2 -2
  73. package/dist/types/src/operations/send-event.d.ts.map +1 -1
  74. package/dist/types/src/operations/toggle.d.ts +2 -2
  75. package/dist/types/src/operations/toggle.d.ts.map +1 -1
  76. package/dist/types/src/plugin.d.ts +2 -3
  77. package/dist/types/src/plugin.d.ts.map +1 -1
  78. package/dist/types/src/types/ObservabilityCapabilities.d.ts +10 -8
  79. package/dist/types/src/types/ObservabilityCapabilities.d.ts.map +1 -1
  80. package/dist/types/src/types/ObservabilityEvents.d.ts +8 -3
  81. package/dist/types/src/types/ObservabilityEvents.d.ts.map +1 -1
  82. package/dist/types/src/types/ObservabilityOperation.d.ts +2 -2
  83. package/dist/types/src/types/ObservabilityOperation.d.ts.map +1 -1
  84. package/dist/types/src/types/ObservabilityOptions.d.ts +11 -0
  85. package/dist/types/src/types/ObservabilityOptions.d.ts.map +1 -0
  86. package/dist/types/tsconfig.tsbuildinfo +1 -1
  87. package/package.json +62 -23
  88. package/src/ObservabilityPlugin.node.ts +15 -16
  89. package/src/ObservabilityPlugin.ts +23 -61
  90. package/src/ObservabilityPlugin.workerd.ts +15 -16
  91. package/src/capabilities/client-ready.ts +14 -14
  92. package/src/capabilities/index.ts +77 -11
  93. package/src/capabilities/operation-handler.ts +4 -4
  94. package/src/capabilities/privacy-notice.ts +10 -7
  95. package/src/capabilities/react-surface.ts +3 -2
  96. package/src/capabilities/settings.ts +7 -5
  97. package/src/capabilities/state.ts +6 -4
  98. package/src/containers/ObservabilitySettings/ObservabilitySettings.stories.tsx +1 -1
  99. package/src/containers/ObservabilitySettings/ObservabilitySettings.tsx +6 -2
  100. package/src/index.ts +5 -1
  101. package/src/meta.ts +1 -1
  102. package/src/operations/index.ts +8 -5
  103. package/src/operations/send-event.ts +4 -3
  104. package/src/operations/toggle.ts +7 -4
  105. package/src/plugin.ts +1 -3
  106. package/src/types/ObservabilityCapabilities.ts +13 -7
  107. package/src/types/ObservabilityEvents.ts +9 -9
  108. package/src/types/ObservabilityOperation.ts +2 -2
  109. package/src/types/ObservabilityOptions.ts +15 -0
  110. package/dist/lib/chunk-types.mjs +0 -89
  111. package/dist/lib/chunk-types.mjs.map +0 -1
  112. package/dist/lib/types.mjs +0 -2
  113. package/dist/types/src/types/index.d.ts +0 -5
  114. package/dist/types/src/types/index.d.ts.map +0 -1
  115. package/src/types/index.ts +0 -8
@@ -0,0 +1,31 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Schema from "effect/Schema";
3
+ import * as ActivationEvent from "@dxos/app-framework/ActivationEvent";
4
+ import * as Capability from "@dxos/app-framework/Capability";
5
+ import { meta } from "#meta";
6
+ //#region src/types/ObservabilityCapabilities.ts
7
+ var ObservabilityCapabilities_exports = /* @__PURE__ */ __exportAll({
8
+ ClientCapability: () => ClientCapability,
9
+ ClientInitialized: () => ClientInitialized,
10
+ LogDownloader: () => LogDownloader,
11
+ Namespace: () => Namespace,
12
+ Observability: () => Observability,
13
+ Settings: () => Settings,
14
+ State: () => State,
15
+ StateSchema: () => StateSchema
16
+ });
17
+ var Namespace = Capability.makeSingleton()(`${meta.profile.key}.capability.namespace`);
18
+ var Settings = Capability.makeSingleton()(`${meta.profile.key}.capability.settings`);
19
+ var StateSchema = Schema.mutable(Schema.Struct({
20
+ group: Schema.optional(Schema.String),
21
+ notified: Schema.optional(Schema.Boolean)
22
+ }));
23
+ var State = Capability.makeSingleton()(`${meta.profile.key}.capability.state`);
24
+ var Observability = Capability.makeSingleton()(`${meta.profile.key}.capability.observability`);
25
+ var LogDownloader = Capability.makeSingleton()(`${meta.profile.key}.capability.logDownloader`);
26
+ var ClientCapability = Capability.makeSingleton()("org.dxos.plugin.client.capability.client");
27
+ var ClientInitialized = ActivationEvent.make("org.dxos.plugin.client.event.initialized");
28
+ //#endregion
29
+ export { ClientCapability, ClientInitialized, LogDownloader, Namespace, Observability, Settings, State, StateSchema, ObservabilityCapabilities_exports as t };
30
+
31
+ //# sourceMappingURL=ObservabilityCapabilities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservabilityCapabilities.mjs","names":[],"sources":["../../src/types/ObservabilityCapabilities.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type Atom } from '@effect-atom/atom';\nimport * as Schema from 'effect/Schema';\n\nimport * as ActivationEvent from '@dxos/app-framework/ActivationEvent';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport { type Client } from '@dxos/client';\nimport { type Observability as ObservabilityNs } from '@dxos/observability';\n\nimport { meta } from '#meta';\n\nexport const Namespace = Capability.makeSingleton<string>()(`${meta.profile.key}.capability.namespace`);\n\nexport const Settings = Capability.makeSingleton<Atom.Writable<import('./Settings').Settings>>()(\n `${meta.profile.key}.capability.settings`,\n);\n\nexport const StateSchema = Schema.mutable(\n Schema.Struct({\n group: Schema.optional(Schema.String),\n notified: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type State = Schema.Schema.Type<typeof StateSchema>;\n\nexport const State = Capability.makeSingleton<Atom.Writable<State>>()(`${meta.profile.key}.capability.state`);\n\nexport const Observability = Capability.makeSingleton<ObservabilityNs.Observability>()(\n `${meta.profile.key}.capability.observability`,\n);\n\n/**\n * Optional capability — when contributed, the help/feedback UI exposes a \"Download logs\" action.\n * The callback is responsible for the entire download (read store, encode, save file).\n */\nexport type LogDownloader = () => void | Promise<void>;\nexport const LogDownloader = Capability.makeSingleton<LogDownloader>()(`${meta.profile.key}.capability.logDownloader`);\n\n// NOTE: This is cloned from the client plugin to avoid circular dependencies.\n// TODO(burdon): Figure out how to share defs.\nexport const ClientCapability = Capability.makeSingleton<Client>()('org.dxos.plugin.client.capability.client');\n\n// Cloned from the client plugin for the same reason: fired once its forked initialize()\n// completes; modules reading initialized-only client APIs (`services`, `halo`, `spaces`)\n// at activation ride this instead of the startup pass.\nexport const ClientInitialized = ActivationEvent.make('org.dxos.plugin.client.event.initialized');\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAa,YAAY,WAAW,cAAsB,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,sBAAsB;AAEtG,IAAa,WAAW,WAAW,cAA4D,CAAC,CAC9F,GAAG,KAAK,QAAQ,IAAI,qBACtB;AAEA,IAAa,cAAc,OAAO,QAChC,OAAO,OAAO;CACZ,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,UAAU,OAAO,SAAS,OAAO,OAAO;AAC1C,CAAC,CACH;AAIA,IAAa,QAAQ,WAAW,cAAoC,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,kBAAkB;AAE5G,IAAa,gBAAgB,WAAW,cAA6C,CAAC,CACpF,GAAG,KAAK,QAAQ,IAAI,0BACtB;AAOA,IAAa,gBAAgB,WAAW,cAA6B,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,0BAA0B;AAIrH,IAAa,mBAAmB,WAAW,cAAsB,CAAC,CAAC,0CAA0C;AAK7G,IAAa,oBAAoB,gBAAgB,KAAK,0CAA0C"}
@@ -0,0 +1,15 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as ActivationEvent from "@dxos/app-framework/ActivationEvent";
3
+ //#region src/types/ObservabilityEvents.ts
4
+ var ObservabilityEvents_exports = /* @__PURE__ */ __exportAll({ IdentityCreatedEvent: () => IdentityCreatedEvent });
5
+ /**
6
+ * Mirrors `ClientEvents.IdentityCreated` (`@dxos/plugin-client`) — a genuine runtime event, fired
7
+ * only when an identity is newly created in this session (not recovered/joined). Cloned by
8
+ * identifier to avoid a circular workspace dependency: plugin-client already depends on
9
+ * plugin-observability for `ObservabilityOperation`.
10
+ */
11
+ var IdentityCreatedEvent = ActivationEvent.make("org.dxos.plugin.client.event.identityCreated");
12
+ //#endregion
13
+ export { IdentityCreatedEvent, ObservabilityEvents_exports as t };
14
+
15
+ //# sourceMappingURL=ObservabilityEvents.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservabilityEvents.mjs","names":[],"sources":["../../src/types/ObservabilityEvents.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as ActivationEvent from '@dxos/app-framework/ActivationEvent';\n\n/**\n * Mirrors `ClientEvents.IdentityCreated` (`@dxos/plugin-client`) — a genuine runtime event, fired\n * only when an identity is newly created in this session (not recovered/joined). Cloned by\n * identifier to avoid a circular workspace dependency: plugin-client already depends on\n * plugin-observability for `ObservabilityOperation`.\n */\nexport const IdentityCreatedEvent = ActivationEvent.make('org.dxos.plugin.client.event.identityCreated');\n"],"mappings":";;;;;;;;;;AAcA,IAAa,uBAAuB,gBAAgB,KAAK,8CAA8C"}
@@ -0,0 +1,41 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Schema from "effect/Schema";
3
+ import * as Capability from "@dxos/app-framework/Capability";
4
+ import { meta } from "#meta";
5
+ import * as Operation from "@dxos/compute/Operation";
6
+ import { DXN } from "@dxos/keys";
7
+ //#region src/types/ObservabilityOperation.ts
8
+ var ObservabilityOperation_exports = /* @__PURE__ */ __exportAll({
9
+ SendEvent: () => SendEvent,
10
+ Toggle: () => Toggle
11
+ });
12
+ var makeKey = (name) => DXN.make(`${meta.profile.key}.operation.${name}`);
13
+ var Toggle = Operation.make({
14
+ meta: {
15
+ key: makeKey("toggle"),
16
+ name: "Toggle Observability",
17
+ description: "Toggle observability on or off.",
18
+ icon: "ph--eye--regular"
19
+ },
20
+ services: [Capability.Service],
21
+ input: Schema.Struct({ state: Schema.optional(Schema.Boolean) }),
22
+ output: Schema.Boolean
23
+ });
24
+ var SendEvent = Operation.make({
25
+ meta: {
26
+ key: makeKey("sendEvent"),
27
+ name: "Send Event",
28
+ description: "Send an observability event.",
29
+ icon: "ph--broadcast--regular"
30
+ },
31
+ services: [Capability.Service],
32
+ input: Schema.Struct({
33
+ name: Schema.String.annotations({ description: "The name of the event." }),
34
+ properties: Schema.optional(Schema.Any).annotations({ description: "Event properties." })
35
+ }),
36
+ output: Schema.Void
37
+ });
38
+ //#endregion
39
+ export { SendEvent, Toggle, ObservabilityOperation_exports as t };
40
+
41
+ //# sourceMappingURL=ObservabilityOperation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservabilityOperation.mjs","names":[],"sources":["../../src/types/ObservabilityOperation.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as Operation from '@dxos/compute/Operation';\nimport { DXN } from '@dxos/keys';\n\nimport { meta } from '#meta';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nexport const Toggle = Operation.make({\n meta: {\n key: makeKey('toggle'),\n name: 'Toggle Observability',\n description: 'Toggle observability on or off.',\n icon: 'ph--eye--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n state: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Boolean,\n});\n\nexport const SendEvent = Operation.make({\n meta: {\n key: makeKey('sendEvent'),\n name: 'Send Event',\n description: 'Send an observability event.',\n icon: 'ph--broadcast--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n name: Schema.String.annotations({ description: 'The name of the event.' }),\n properties: Schema.optional(Schema.Any).annotations({ description: 'Event properties.' }),\n }),\n output: Schema.Void,\n});\n"],"mappings":";;;;;;;;;;;AAcA,IAAM,WAAW,SAAiB,IAAI,KAAK,GAAG,KAAK,QAAQ,IAAI,aAAa,MAAM;AAElF,IAAa,SAAS,UAAU,KAAK;CACnC,MAAM;EACJ,KAAK,QAAQ,QAAQ;EACrB,MAAM;EACN,aAAa;EACb,MAAM;CACR;CACA,UAAU,CAAC,WAAW,OAAO;CAC7B,OAAO,OAAO,OAAO,EACnB,OAAO,OAAO,SAAS,OAAO,OAAO,EACvC,CAAC;CACD,QAAQ,OAAO;AACjB,CAAC;AAED,IAAa,YAAY,UAAU,KAAK;CACtC,MAAM;EACJ,KAAK,QAAQ,WAAW;EACxB,MAAM;EACN,aAAa;EACb,MAAM;CACR;CACA,UAAU,CAAC,WAAW,OAAO;CAC7B,OAAO,OAAO,OAAO;EACnB,MAAM,OAAO,OAAO,YAAY,EAAE,aAAa,yBAAyB,CAAC;EACzE,YAAY,OAAO,SAAS,OAAO,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,oBAAoB,CAAC;CAC1F,CAAC;CACD,QAAQ,OAAO;AACjB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ //#region src/types/ObservabilityOptions.ts
3
+ var ObservabilityOptions_exports = /* @__PURE__ */ __exportAll({});
4
+ //#endregion
5
+ export { ObservabilityOptions_exports as t };
6
+
7
+ //# sourceMappingURL=ObservabilityOptions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservabilityOptions.mjs","names":[],"sources":["../../src/types/ObservabilityOptions.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Observability } from '@dxos/observability';\n\nexport type ObservabilityPluginOptions = {\n namespace: string;\n observability: () => Promise<Observability.Observability>;\n /**\n * Optional callback invoked by the help/feedback UI to download captured logs.\n * When omitted the \"Download logs\" action is hidden.\n */\n downloadLogs?: () => void | Promise<void>;\n};\n"],"mappings":""}
@@ -1,47 +1,18 @@
1
- import { ActivationEvent, ActivationEvents, Capability, Plugin } from "@dxos/app-framework";
1
+ import { LogDownloader } from "./ObservabilityCapabilities.mjs";
2
+ import * as Capability from "@dxos/app-framework/Capability";
2
3
  import { meta } from "#meta";
3
- import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
4
+ import * as Plugin from "@dxos/app-framework/Plugin";
4
5
  import * as Effect from "effect/Effect";
5
- import { ClientReady, ObservabilitySettings, ObservabilityState, OperationHandler, PrivacyNotice, ReactSurface } from "#capabilities";
6
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
7
+ import { ClientReady, Namespace, Observability, ObservabilitySettings, ObservabilityState, OperationHandler, PrivacyNotice, ReactSurface } from "#capabilities";
6
8
  import { translations } from "#translations";
7
- import { ObservabilityCapabilities, ObservabilityEvents } from "#types";
8
9
  //#region src/ObservabilityPlugin.ts
9
- var ObservabilityPlugin = Plugin.define(meta).pipe(AppPlugin.addSurfaceModule({ activate: ReactSurface }), AppPlugin.addTranslationsModule({ translations }), Plugin.addModule(({ observability }) => ({
10
- id: "observability",
11
- activatesOn: ActivationEvents.Startup,
12
- activate: () => Effect.gen(function* () {
13
- const obs = yield* Effect.tryPromise(() => observability());
14
- return Capability.contributes(ObservabilityCapabilities.Observability, obs);
15
- })
16
- })), Plugin.addModule({
17
- activatesOn: AppActivationEvents.SetupSettings,
18
- activate: ObservabilitySettings
19
- }), Plugin.addModule(({ namespace }) => ({
20
- id: Capability.getModuleTag(ObservabilityState),
21
- activatesOn: ActivationEvents.Startup,
22
- firesAfterActivation: [ObservabilityEvents.StateReady],
23
- activate: () => ObservabilityState({ namespace })
24
- })), Plugin.addModule(({ namespace }) => ({
25
- id: "namespace",
26
- activatesOn: ActivationEvents.Startup,
27
- activate: () => Effect.succeed(Capability.contributes(ObservabilityCapabilities.Namespace, namespace))
28
- })), Plugin.addModule(({ downloadLogs }) => ({
10
+ var ObservabilityPlugin = Plugin.define(meta).pipe(Plugin.addModule(ReactSurface), Plugin.addModule(AppCapability.translations(translations)), Plugin.addModule(Observability), Plugin.addModule(ObservabilitySettings), Plugin.addModule(ObservabilityState), Plugin.addModule(Namespace), Plugin.addModule(({ downloadLogs }) => ({
29
11
  id: "log-downloader",
30
- activatesOn: ActivationEvents.Startup,
31
- activate: () => Effect.succeed(downloadLogs !== void 0 ? Capability.contributes(ObservabilityCapabilities.LogDownloader, downloadLogs) : [])
32
- })), AppPlugin.addOperationHandlerModule({ activate: OperationHandler }), Plugin.addModule({
33
- activatesOn: ActivationEvent.make("org.dxos.plugin.client.event.identityCreated"),
34
- activate: PrivacyNotice
35
- }), Plugin.addModule(({ namespace, observability }) => ({
36
- id: Capability.getModuleTag(ClientReady),
37
- activatesOn: ActivationEvent.allOf(ActivationEvents.ProcessManagerReady, ObservabilityEvents.StateReady, ObservabilityEvents.ClientReadyEvent),
38
- activate: () => Effect.gen(function* () {
39
- return yield* ClientReady({
40
- namespace,
41
- observability: yield* Effect.tryPromise(() => observability())
42
- });
43
- })
44
- })), Plugin.make);
12
+ requires: [],
13
+ provides: downloadLogs !== void 0 ? [LogDownloader] : [],
14
+ activate: () => Effect.succeed(downloadLogs !== void 0 ? [Capability.contribute(LogDownloader, downloadLogs)] : [])
15
+ })), Plugin.addModule(OperationHandler), Plugin.addModule(PrivacyNotice), Plugin.addModule(ClientReady), Plugin.make);
45
16
  //#endregion
46
17
  export { ObservabilityPlugin, ObservabilityPlugin as default };
47
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"ObservabilityPlugin.mjs","names":[],"sources":["../../src/ObservabilityPlugin.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { ActivationEvent, ActivationEvents, Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { type Observability } from '@dxos/observability';\n\nimport {\n ClientReady,\n ObservabilitySettings,\n ObservabilityState,\n OperationHandler,\n PrivacyNotice,\n ReactSurface,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { ObservabilityCapabilities, ObservabilityEvents } from '#types';\n\nexport type ObservabilityPluginOptions = {\n namespace: string;\n observability: () => Promise<Observability.Observability>;\n /**\n * Optional callback invoked by the help/feedback UI to download captured logs.\n * When omitted the \"Download logs\" action is hidden.\n */\n downloadLogs?: () => void | Promise<void>;\n};\n\nexport const ObservabilityPlugin = Plugin.define<ObservabilityPluginOptions>(meta).pipe(\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule(({ observability }) => ({\n id: 'observability',\n activatesOn: ActivationEvents.Startup,\n activate: () =>\n Effect.gen(function* () {\n const obs = yield* Effect.tryPromise(() => observability());\n return Capability.contributes(ObservabilityCapabilities.Observability, obs);\n }),\n })),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n activate: ObservabilitySettings,\n }),\n Plugin.addModule(({ namespace }) => ({\n id: Capability.getModuleTag(ObservabilityState),\n activatesOn: ActivationEvents.Startup,\n firesAfterActivation: [ObservabilityEvents.StateReady],\n activate: () => ObservabilityState({ namespace }),\n })),\n Plugin.addModule(({ namespace }) => ({\n id: 'namespace',\n activatesOn: ActivationEvents.Startup,\n activate: () => Effect.succeed(Capability.contributes(ObservabilityCapabilities.Namespace, namespace)),\n })),\n Plugin.addModule(({ downloadLogs }) => ({\n id: 'log-downloader',\n activatesOn: ActivationEvents.Startup,\n activate: () =>\n Effect.succeed(\n downloadLogs !== undefined ? Capability.contributes(ObservabilityCapabilities.LogDownloader, downloadLogs) : [],\n ),\n })),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n Plugin.addModule({\n activatesOn: ActivationEvent.make('org.dxos.plugin.client.event.identityCreated'),\n activate: PrivacyNotice,\n }),\n Plugin.addModule(({ namespace, observability }) => ({\n id: Capability.getModuleTag(ClientReady),\n activatesOn: ActivationEvent.allOf(\n ActivationEvents.ProcessManagerReady,\n ObservabilityEvents.StateReady,\n ObservabilityEvents.ClientReadyEvent,\n ),\n activate: () =>\n Effect.gen(function* () {\n const obs = yield* Effect.tryPromise(() => observability());\n return yield* ClientReady({ namespace, observability: obs });\n }),\n })),\n Plugin.make,\n);\n\nexport default ObservabilityPlugin;\n"],"mappings":";;;;;;;;AAgCA,IAAa,sBAAsB,OAAO,OAAmC,IAAI,CAAC,CAAC,KACjF,UAAU,iBAAiB,EAAE,UAAU,aAAa,CAAC,GACrD,UAAU,sBAAsB,EAAE,aAAa,CAAC,GAChD,OAAO,WAAW,EAAE,qBAAqB;CACvC,IAAI;CACJ,aAAa,iBAAiB;CAC9B,gBACE,OAAO,IAAI,aAAa;EACtB,MAAM,MAAM,OAAO,OAAO,iBAAiB,cAAc,CAAC;EAC1D,OAAO,WAAW,YAAY,0BAA0B,eAAe,GAAG;CAC5E,CAAC;AACL,EAAE,GACF,OAAO,UAAU;CACf,aAAa,oBAAoB;CACjC,UAAU;AACZ,CAAC,GACD,OAAO,WAAW,EAAE,iBAAiB;CACnC,IAAI,WAAW,aAAa,kBAAkB;CAC9C,aAAa,iBAAiB;CAC9B,sBAAsB,CAAC,oBAAoB,UAAU;CACrD,gBAAgB,mBAAmB,EAAE,UAAU,CAAC;AAClD,EAAE,GACF,OAAO,WAAW,EAAE,iBAAiB;CACnC,IAAI;CACJ,aAAa,iBAAiB;CAC9B,gBAAgB,OAAO,QAAQ,WAAW,YAAY,0BAA0B,WAAW,SAAS,CAAC;AACvG,EAAE,GACF,OAAO,WAAW,EAAE,oBAAoB;CACtC,IAAI;CACJ,aAAa,iBAAiB;CAC9B,gBACE,OAAO,QACL,iBAAiB,KAAA,IAAY,WAAW,YAAY,0BAA0B,eAAe,YAAY,IAAI,CAAC,CAChH;AACJ,EAAE,GACF,UAAU,0BAA0B,EAAE,UAAU,iBAAiB,CAAC,GAClE,OAAO,UAAU;CACf,aAAa,gBAAgB,KAAK,8CAA8C;CAChF,UAAU;AACZ,CAAC,GACD,OAAO,WAAW,EAAE,WAAW,qBAAqB;CAClD,IAAI,WAAW,aAAa,WAAW;CACvC,aAAa,gBAAgB,MAC3B,iBAAiB,qBACjB,oBAAoB,YACpB,oBAAoB,gBACtB;CACA,gBACE,OAAO,IAAI,aAAa;EAEtB,OAAO,OAAO,YAAY;GAAE;GAAW,eAAe,OADnC,OAAO,iBAAiB,cAAc,CAAC;EACA,CAAC;CAC7D,CAAC;AACL,EAAE,GACF,OAAO,IACT"}
1
+ {"version":3,"file":"ObservabilityPlugin.mjs","names":[],"sources":["../../src/ObservabilityPlugin.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as Plugin from '@dxos/app-framework/Plugin';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\n\nimport {\n ClientReady,\n Namespace,\n Observability,\n ObservabilitySettings,\n ObservabilityState,\n OperationHandler,\n PrivacyNotice,\n ReactSurface,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\n\nimport * as ObservabilityCapabilities from './types/ObservabilityCapabilities';\nimport * as ObservabilityOptions from './types/ObservabilityOptions';\n\nexport const ObservabilityPlugin = Plugin.define<ObservabilityOptions.ObservabilityPluginOptions>(meta).pipe(\n Plugin.addModule(ReactSurface),\n Plugin.addModule(AppCapability.translations(translations)),\n Plugin.addModule(Observability),\n Plugin.addModule(ObservabilitySettings),\n Plugin.addModule(ObservabilityState),\n Plugin.addModule(Namespace),\n Plugin.addModule(({ downloadLogs }: ObservabilityOptions.ObservabilityPluginOptions) => ({\n id: 'log-downloader',\n requires: [],\n provides: downloadLogs !== undefined ? [ObservabilityCapabilities.LogDownloader] : [],\n activate: () =>\n Effect.succeed(\n downloadLogs !== undefined\n ? [Capability.contribute(ObservabilityCapabilities.LogDownloader, downloadLogs)]\n : [],\n ),\n })),\n Plugin.addModule(OperationHandler),\n Plugin.addModule(PrivacyNotice),\n Plugin.addModule(ClientReady),\n Plugin.make,\n);\n\nexport default ObservabilityPlugin;\n"],"mappings":";;;;;;;;;AA0BA,IAAa,sBAAsB,OAAO,OAAwD,IAAI,CAAC,CAAC,KACtG,OAAO,UAAU,YAAY,GAC7B,OAAO,UAAU,cAAc,aAAa,YAAY,CAAC,GACzD,OAAO,UAAU,aAAa,GAC9B,OAAO,UAAU,qBAAqB,GACtC,OAAO,UAAU,kBAAkB,GACnC,OAAO,UAAU,SAAS,GAC1B,OAAO,WAAW,EAAE,oBAAqE;CACvF,IAAI;CACJ,UAAU,CAAC;CACX,UAAU,iBAAiB,KAAA,IAAY,CAAC,aAAuC,IAAI,CAAC;CACpF,gBACE,OAAO,QACL,iBAAiB,KAAA,IACb,CAAC,WAAW,WAAW,eAAyC,YAAY,CAAC,IAC7E,CAAC,CACP;AACJ,EAAE,GACF,OAAO,UAAU,gBAAgB,GACjC,OAAO,UAAU,aAAa,GAC9B,OAAO,UAAU,WAAW,GAC5B,OAAO,IACT"}
@@ -1,13 +1,13 @@
1
- import { Capabilities, Capability, Plugin } from "@dxos/app-framework";
1
+ import { SendEvent } from "./ObservabilityOperation.mjs";
2
+ import * as Capability from "@dxos/app-framework/Capability";
2
3
  import { meta } from "#meta";
3
- import { AppPlugin } from "@dxos/app-toolkit";
4
- import { Operation, OperationHandlerSet } from "@dxos/compute";
4
+ import * as Operation from "@dxos/compute/Operation";
5
+ import * as Plugin from "@dxos/app-framework/Plugin";
5
6
  import * as Effect from "effect/Effect";
6
- import { ObservabilityOperation } from "#types";
7
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
8
+ import * as OperationHandlerSet from "@dxos/compute/OperationHandlerSet";
7
9
  //#region src/ObservabilityPlugin.node.ts
8
- var ObservabilityPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({ activate: Capability.lazy("OperationHandler", () => Promise.resolve({ default: Capability.makeModule(Effect.fnUntraced(function* () {
9
- return Capability.contributes(Capabilities.OperationHandler, OperationHandlerSet.make(Operation.withHandler(ObservabilityOperation.SendEvent, () => Effect.void)));
10
- })) })) }), Plugin.make);
10
+ var ObservabilityPlugin = Plugin.define(meta).pipe(Plugin.addModule(Capability.inlineModule("OperationHandler", { provides: [Capabilities.OperationHandler] }, () => Effect.succeed([Capability.contribute(Capabilities.OperationHandler, OperationHandlerSet.make(Operation.withHandler(SendEvent, () => Effect.void)))]))), Plugin.make);
11
11
  //#endregion
12
12
  export { ObservabilityPlugin, ObservabilityPlugin as default };
13
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"ObservabilityPlugin.node.mjs","names":[],"sources":["../../src/ObservabilityPlugin.node.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability, Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Operation, OperationHandlerSet } from '@dxos/compute';\n\nimport { meta } from '#meta';\nimport { ObservabilityOperation } from '#types';\n\n// TODO(wittjosiah): Hook up.\nexport const ObservabilityPlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({\n activate: Capability.lazy('OperationHandler', () =>\n Promise.resolve({\n default: Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(\n Effect.fnUntraced(function* () {\n return Capability.contributes(\n Capabilities.OperationHandler,\n OperationHandlerSet.make(Operation.withHandler(ObservabilityOperation.SendEvent, () => Effect.void)),\n );\n }),\n ),\n }),\n ),\n }),\n Plugin.make,\n);\n\nexport default ObservabilityPlugin;\n"],"mappings":";;;;;;;AAcA,IAAa,sBAAsB,OAAO,OAAO,IAAI,CAAC,CAAC,KACrD,UAAU,0BAA0B,EAClC,UAAU,WAAW,KAAK,0BACxB,QAAQ,QAAQ,EACd,SAAS,WAAW,WAClB,OAAO,WAAW,aAAa;CAC7B,OAAO,WAAW,YAChB,aAAa,kBACb,oBAAoB,KAAK,UAAU,YAAY,uBAAuB,iBAAiB,OAAO,IAAI,CAAC,CACrG;AACF,CAAC,CACH,EACF,CAAC,CACH,EACF,CAAC,GACD,OAAO,IACT"}
1
+ {"version":3,"file":"ObservabilityPlugin.node.mjs","names":[],"sources":["../../src/ObservabilityPlugin.node.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as Plugin from '@dxos/app-framework/Plugin';\nimport * as Operation from '@dxos/compute/Operation';\nimport * as OperationHandlerSet from '@dxos/compute/OperationHandlerSet';\n\nimport { meta } from '#meta';\n\nimport * as ObservabilityOperation from './types/ObservabilityOperation';\n\n// TODO(wittjosiah): Hook up.\nexport const ObservabilityPlugin = Plugin.define(meta).pipe(\n Plugin.addModule(\n Capability.inlineModule('OperationHandler', { provides: [Capabilities.OperationHandler] }, () =>\n Effect.succeed([\n Capability.contribute(\n Capabilities.OperationHandler,\n OperationHandlerSet.make(Operation.withHandler(ObservabilityOperation.SendEvent, () => Effect.void)),\n ),\n ]),\n ),\n ),\n Plugin.make,\n);\n\nexport default ObservabilityPlugin;\n"],"mappings":";;;;;;;;;AAiBA,IAAa,sBAAsB,OAAO,OAAO,IAAI,CAAC,CAAC,KACrD,OAAO,UACL,WAAW,aAAa,oBAAoB,EAAE,UAAU,CAAC,aAAa,gBAAgB,EAAE,SACtF,OAAO,QAAQ,CACb,WAAW,WACT,aAAa,kBACb,oBAAoB,KAAK,UAAU,YAAY,iBAAwC,OAAO,IAAI,CAAC,CACrG,CACF,CAAC,CACH,CACF,GACA,OAAO,IACT"}
@@ -1,13 +1,13 @@
1
- import { Capabilities, Capability, Plugin } from "@dxos/app-framework";
1
+ import { SendEvent } from "./ObservabilityOperation.mjs";
2
+ import * as Capability from "@dxos/app-framework/Capability";
2
3
  import { meta } from "#meta";
3
- import { AppPlugin } from "@dxos/app-toolkit";
4
- import { Operation, OperationHandlerSet } from "@dxos/compute";
4
+ import * as Operation from "@dxos/compute/Operation";
5
+ import * as Plugin from "@dxos/app-framework/Plugin";
5
6
  import * as Effect from "effect/Effect";
6
- import { ObservabilityOperation } from "#types";
7
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
8
+ import * as OperationHandlerSet from "@dxos/compute/OperationHandlerSet";
7
9
  //#region src/ObservabilityPlugin.workerd.ts
8
- var ObservabilityPlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({ activate: Capability.lazy("OperationHandler", () => Promise.resolve({ default: Capability.makeModule(Effect.fnUntraced(function* () {
9
- return Capability.contributes(Capabilities.OperationHandler, OperationHandlerSet.make(Operation.withHandler(ObservabilityOperation.SendEvent, () => Effect.void)));
10
- })) })) }), Plugin.make);
10
+ var ObservabilityPlugin = Plugin.define(meta).pipe(Plugin.addModule(Capability.inlineModule("OperationHandler", { provides: [Capabilities.OperationHandler] }, () => Effect.succeed([Capability.contribute(Capabilities.OperationHandler, OperationHandlerSet.make(Operation.withHandler(SendEvent, () => Effect.void)))]))), Plugin.make);
11
11
  //#endregion
12
12
  export { ObservabilityPlugin, ObservabilityPlugin as default };
13
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"ObservabilityPlugin.workerd.mjs","names":[],"sources":["../../src/ObservabilityPlugin.workerd.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability, Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Operation, OperationHandlerSet } from '@dxos/compute';\n\nimport { meta } from '#meta';\nimport { ObservabilityOperation } from '#types';\n\nexport const ObservabilityPlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({\n activate: Capability.lazy('OperationHandler', () =>\n Promise.resolve({\n default: Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(\n Effect.fnUntraced(function* () {\n return Capability.contributes(\n Capabilities.OperationHandler,\n OperationHandlerSet.make(Operation.withHandler(ObservabilityOperation.SendEvent, () => Effect.void)),\n );\n }),\n ),\n }),\n ),\n }),\n Plugin.make,\n);\n\nexport default ObservabilityPlugin;\n"],"mappings":";;;;;;;AAaA,IAAa,sBAAsB,OAAO,OAAO,IAAI,CAAC,CAAC,KACrD,UAAU,0BAA0B,EAClC,UAAU,WAAW,KAAK,0BACxB,QAAQ,QAAQ,EACd,SAAS,WAAW,WAClB,OAAO,WAAW,aAAa;CAC7B,OAAO,WAAW,YAChB,aAAa,kBACb,oBAAoB,KAAK,UAAU,YAAY,uBAAuB,iBAAiB,OAAO,IAAI,CAAC,CACrG;AACF,CAAC,CACH,EACF,CAAC,CACH,EACF,CAAC,GACD,OAAO,IACT"}
1
+ {"version":3,"file":"ObservabilityPlugin.workerd.mjs","names":[],"sources":["../../src/ObservabilityPlugin.workerd.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as Plugin from '@dxos/app-framework/Plugin';\nimport * as Operation from '@dxos/compute/Operation';\nimport * as OperationHandlerSet from '@dxos/compute/OperationHandlerSet';\n\nimport { meta } from '#meta';\n\nimport * as ObservabilityOperation from './types/ObservabilityOperation';\n\nexport const ObservabilityPlugin = Plugin.define(meta).pipe(\n Plugin.addModule(\n Capability.inlineModule('OperationHandler', { provides: [Capabilities.OperationHandler] }, () =>\n Effect.succeed([\n Capability.contribute(\n Capabilities.OperationHandler,\n OperationHandlerSet.make(Operation.withHandler(ObservabilityOperation.SendEvent, () => Effect.void)),\n ),\n ]),\n ),\n ),\n Plugin.make,\n);\n\nexport default ObservabilityPlugin;\n"],"mappings":";;;;;;;;;AAgBA,IAAa,sBAAsB,OAAO,OAAO,IAAI,CAAC,CAAC,KACrD,OAAO,UACL,WAAW,aAAa,oBAAoB,EAAE,UAAU,CAAC,aAAa,gBAAgB,EAAE,SACtF,OAAO,QAAQ,CACb,WAAW,WACT,aAAa,kBACb,oBAAoB,KAAK,UAAU,YAAY,iBAAwC,OAAO,IAAI,CAAC,CACrG,CACF,CAAC,CACH,CACF,GACA,OAAO,IACT"}
@@ -0,0 +1,12 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Schema from "effect/Schema";
3
+ //#region src/types/Settings.ts
4
+ var Settings_exports = /* @__PURE__ */ __exportAll({ Settings: () => Settings });
5
+ var Settings = Schema.mutable(Schema.Struct({ enabled: Schema.Boolean.annotations({
6
+ title: "Enable telemetry",
7
+ description: "Send anonymous usage and performance data to help improve the product."
8
+ }) }));
9
+ //#endregion
10
+ export { Settings, Settings_exports as t };
11
+
12
+ //# sourceMappingURL=Settings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settings.mjs","names":[],"sources":["../../src/types/Settings.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nexport const Settings = Schema.mutable(\n Schema.Struct({\n enabled: Schema.Boolean.annotations({\n title: 'Enable telemetry',\n description: 'Send anonymous usage and performance data to help improve the product.',\n }),\n // TODO(wittjosiah): Separate settings for each observability feature.\n // metrics?: boolean;\n // telemetry?: boolean;\n // errors?: boolean;\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n"],"mappings":";;;;AAQA,IAAa,WAAW,OAAO,QAC7B,OAAO,OAAO,EACZ,SAAS,OAAO,QAAQ,YAAY;CAClC,OAAO;CACP,aAAa;AACf,CAAC,EAKH,CAAC,CACH"}
@@ -1,12 +1,52 @@
1
- import { Capability } from "@dxos/app-framework";
1
+ import { ClientCapability, ClientInitialized, Namespace as Namespace$1, Observability as Observability$1, Settings, State } from "./ObservabilityCapabilities.mjs";
2
+ import { IdentityCreatedEvent } from "./ObservabilityEvents.mjs";
3
+ import * as Capability from "@dxos/app-framework/Capability";
4
+ import * as Effect from "effect/Effect";
5
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
6
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
2
7
  //#region src/capabilities/index.ts
3
- var ClientReady = Capability.lazy("ClientReady", () => import("./chunk-client-ready.mjs"));
4
- var PrivacyNotice = Capability.lazy("PrivacyNotice", () => import("./chunk-privacy-notice.mjs"));
5
- var OperationHandler = Capability.lazy("OperationHandler", () => import("./chunk-operation-handler.mjs"));
6
- var ReactSurface = Capability.lazy("ReactSurface", () => import("./chunk-react-surface.mjs"));
7
- var ObservabilitySettings = Capability.lazy("ObservabilitySettings", () => import("./chunk-settings.mjs"));
8
- var ObservabilityState = Capability.lazy("ObservabilityState", () => import("./chunk-state.mjs"));
8
+ var ClientReady = Capability.lazyModule("ClientReady", {
9
+ requires: [
10
+ Capabilities.PluginManager,
11
+ Capabilities.OperationInvoker,
12
+ ClientCapability,
13
+ Observability$1,
14
+ State
15
+ ],
16
+ provides: [],
17
+ activatesOn: ClientInitialized
18
+ }, () => import("./chunk-client-ready.mjs"));
19
+ var PrivacyNotice = Capability.lazyModule("PrivacyNotice", {
20
+ requires: [
21
+ Capabilities.OperationInvoker,
22
+ Capabilities.AtomRegistry,
23
+ State,
24
+ ClientCapability
25
+ ],
26
+ provides: [],
27
+ activatesOn: IdentityCreatedEvent
28
+ }, () => import("./chunk-privacy-notice.mjs"));
29
+ var Namespace = Capability.inlineModule("namespace", {
30
+ provides: [Namespace$1],
31
+ props: (options) => options.namespace
32
+ }, (namespace) => Effect.succeed([Capability.contribute(Namespace$1, namespace)]));
33
+ var Observability = Capability.inlineModule("observability", {
34
+ provides: [Observability$1],
35
+ props: (options) => options.observability
36
+ }, (observability) => Effect.gen(function* () {
37
+ const obs = yield* Effect.tryPromise(() => observability());
38
+ yield* Effect.addFinalizer(() => obs.close());
39
+ return [Capability.contribute(Observability$1, obs)];
40
+ }));
41
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"));
42
+ var ReactSurface = AppCapability.surface(() => import("./chunk-react-surface.mjs"), { roles: ["org.dxos.role.article"] });
43
+ var ObservabilitySettings = AppCapability.settings(() => import("./chunk-settings.mjs"), { provides: [Settings] });
44
+ var ObservabilityState = Capability.lazyModule("ObservabilityState", {
45
+ requires: [Capabilities.AtomRegistry],
46
+ provides: [State],
47
+ props: ({ namespace }) => ({ namespace })
48
+ }, () => import("./chunk-state.mjs"));
9
49
  //#endregion
10
- export { ClientReady, ObservabilitySettings, ObservabilityState, OperationHandler, PrivacyNotice, ReactSurface };
50
+ export { ClientReady, Namespace, Observability, ObservabilitySettings, ObservabilityState, OperationHandler, PrivacyNotice, ReactSurface };
11
51
 
12
52
  //# sourceMappingURL=capabilities.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { OperationHandlerSet } from '@dxos/compute';\n\nimport type { ClientReadyOptions } from './client-ready';\n\nexport const ClientReady = Capability.lazy<ClientReadyOptions>('ClientReady', () => import('./client-ready'));\nexport const PrivacyNotice = Capability.lazy('PrivacyNotice', () => import('./privacy-notice'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const ObservabilitySettings = Capability.lazy('ObservabilitySettings', () => import('./settings'));\nexport const ObservabilityState = Capability.lazy('ObservabilityState', () => import('./state'));\n"],"mappings":";;AASA,IAAa,cAAc,WAAW,KAAyB,qBAAqB,OAAO,2BAAiB;AAC5G,IAAa,gBAAgB,WAAW,KAAK,uBAAuB,OAAO,6BAAmB;AAC9F,IAAa,mBAAmB,WAAW,KACzC,0BACM,OAAO,gCACf;AACA,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB;AAC3F,IAAa,wBAAwB,WAAW,KAAK,+BAA+B,OAAO,uBAAa;AACxG,IAAa,qBAAqB,WAAW,KAAK,4BAA4B,OAAO,oBAAU"}
1
+ {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\n\nimport * as ObservabilityCapabilities from '../types/ObservabilityCapabilities';\nimport * as ObservabilityEvents from '../types/ObservabilityEvents';\nimport * as ObservabilityOptions from '../types/ObservabilityOptions';\n\nexport const ClientReady = Capability.lazyModule(\n 'ClientReady',\n {\n requires: [\n Capabilities.PluginManager,\n Capabilities.OperationInvoker,\n ObservabilityCapabilities.ClientCapability,\n ObservabilityCapabilities.Observability,\n ObservabilityCapabilities.State,\n ],\n provides: [],\n // Reads `client.services` (initialized-only) to wire metrics providers, so it needs the\n // forked client initialization to have completed.\n activatesOn: ObservabilityCapabilities.ClientInitialized,\n },\n () => import('./client-ready'),\n);\nexport const PrivacyNotice = Capability.lazyModule(\n 'PrivacyNotice',\n {\n requires: [\n Capabilities.OperationInvoker,\n Capabilities.AtomRegistry,\n ObservabilityCapabilities.State,\n ObservabilityCapabilities.ClientCapability,\n ],\n provides: [],\n // Genuine runtime event: fired imperatively by `plugin-client`'s create-identity operation\n // (mirrored by identifier — see `ObservabilityEvents.IdentityCreatedEvent`).\n activatesOn: ObservabilityEvents.IdentityCreatedEvent,\n },\n () => import('./privacy-notice'),\n);\nexport const Namespace = Capability.inlineModule(\n 'namespace',\n {\n provides: [ObservabilityCapabilities.Namespace],\n props: (options: ObservabilityOptions.ObservabilityPluginOptions) => options.namespace,\n },\n (namespace) => Effect.succeed([Capability.contribute(ObservabilityCapabilities.Namespace, namespace)]),\n);\nexport const Observability = Capability.inlineModule(\n 'observability',\n {\n provides: [ObservabilityCapabilities.Observability],\n props: (options: ObservabilityOptions.ObservabilityPluginOptions) => options.observability,\n },\n (observability) =>\n Effect.gen(function* () {\n const obs = yield* Effect.tryPromise(() => observability());\n yield* Effect.addFinalizer(() => obs.close());\n return [Capability.contribute(ObservabilityCapabilities.Observability, obs)];\n }),\n);\nexport const OperationHandler = AppCapability.operationHandler(() => import('./operation-handler'));\nexport const ReactSurface = AppCapability.surface(() => import('./react-surface'), {\n roles: ['org.dxos.role.article'],\n});\nexport const ObservabilitySettings = AppCapability.settings(() => import('./settings'), {\n provides: [ObservabilityCapabilities.Settings],\n});\nexport const ObservabilityState = Capability.lazyModule(\n 'ObservabilityState',\n {\n requires: [Capabilities.AtomRegistry],\n provides: [ObservabilityCapabilities.State],\n props: ({ namespace }: ObservabilityOptions.ObservabilityPluginOptions) => ({ namespace }),\n },\n () => import('./state'),\n);\n"],"mappings":";;;;;;;AAcA,IAAa,cAAc,WAAW,WACpC,eACA;CACE,UAAU;EACR,aAAa;EACb,aAAa;EACb;EACA;EACA;CACF;CACA,UAAU,CAAC;CAGX,aAAa;AACf,SACM,OAAO,2BACf;AACA,IAAa,gBAAgB,WAAW,WACtC,iBACA;CACE,UAAU;EACR,aAAa;EACb,aAAa;EACb;EACA;CACF;CACA,UAAU,CAAC;CAGX,aAAa;AACf,SACM,OAAO,6BACf;AACA,IAAa,YAAY,WAAW,aAClC,aACA;CACE,UAAU,CAAC,WAAmC;CAC9C,QAAQ,YAA6D,QAAQ;AAC/E,IACC,cAAc,OAAO,QAAQ,CAAC,WAAW,WAAW,aAAqC,SAAS,CAAC,CAAC,CACvG;AACA,IAAa,gBAAgB,WAAW,aACtC,iBACA;CACE,UAAU,CAAC,eAAuC;CAClD,QAAQ,YAA6D,QAAQ;AAC/E,IACC,kBACC,OAAO,IAAI,aAAa;CACtB,MAAM,MAAM,OAAO,OAAO,iBAAiB,cAAc,CAAC;CAC1D,OAAO,OAAO,mBAAmB,IAAI,MAAM,CAAC;CAC5C,OAAO,CAAC,WAAW,WAAW,iBAAyC,GAAG,CAAC;AAC7E,CAAC,CACL;AACA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,gCAAsB;AAClG,IAAa,eAAe,cAAc,cAAc,OAAO,8BAAoB,EACjF,OAAO,CAAC,uBAAuB,EACjC,CAAC;AACD,IAAa,wBAAwB,cAAc,eAAe,OAAO,yBAAe,EACtF,UAAU,CAAC,QAAkC,EAC/C,CAAC;AACD,IAAa,qBAAqB,WAAW,WAC3C,sBACA;CACE,UAAU,CAAC,aAAa,YAAY;CACpC,UAAU,CAAC,KAA+B;CAC1C,QAAQ,EAAE,iBAAkE,EAAE,UAAU;AAC1F,SACM,OAAO,oBACf"}
@@ -1,5 +1,6 @@
1
+ import { Toggle } from "./ObservabilityOperation.mjs";
2
+ import { Settings } from "./Settings.mjs";
1
3
  import { meta } from "#meta";
2
- import { ObservabilityOperation, Settings } from "#types";
3
4
  import "react";
4
5
  import { useOperationInvoker, useSettingsState } from "@dxos/app-framework/ui";
5
6
  import { Message, useTranslation } from "@dxos/react-ui";
@@ -15,10 +16,10 @@ var ObservabilitySettings = ({ subject }) => {
15
16
  const { settings } = useSettingsState(subject.atom);
16
17
  const { invokePromise } = useOperationInvoker();
17
18
  return /* @__PURE__ */ jsx(Form.Root, {
18
- schema: Settings.Settings,
19
+ schema: Settings,
19
20
  values: settings,
20
21
  variant: "settings",
21
- onValuesChanged: (values) => void invokePromise(ObservabilityOperation.Toggle, { state: {
22
+ onValuesChanged: (values) => void invokePromise(Toggle, { state: {
22
23
  ...settings,
23
24
  ...values
24
25
  }.enabled }),
@@ -28,7 +29,7 @@ var ObservabilitySettings = ({ subject }) => {
28
29
  title: meta.profile.name ?? meta.profile.key,
29
30
  children: [/* @__PURE__ */ jsx(Message.Root, {
30
31
  valence: "info",
31
- children: /* @__PURE__ */ jsx(Message.Body, { children: t("observability.description") })
32
+ children: /* @__PURE__ */ jsx(Message.Content, { children: /* @__PURE__ */ jsx(Message.Body, { children: t("observability.description") }) })
32
33
  }), /* @__PURE__ */ jsx(Form.FieldSet, {})]
33
34
  }) })
34
35
  })
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-ObservabilitySettings.mjs","names":[],"sources":["../../src/containers/ObservabilitySettings/ObservabilitySettings.tsx"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useOperationInvoker, useSettingsState } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Message, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { ObservabilityOperation, Settings } from '#types';\n\nexport type ObservabilitySettingsProps = AppSurface.SettingsData;\n\n/**\n * Edits are routed through {@link ObservabilityOperation.Toggle} rather than written to the atom\n * directly, so enabling/disabling observability takes effect on the running services.\n */\nexport const ObservabilitySettings = ({ subject }: ObservabilitySettingsProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { settings } = useSettingsState<Settings.Settings>(subject.atom);\n const { invokePromise } = useOperationInvoker();\n\n return (\n <Form.Root\n schema={Settings.Settings}\n values={settings}\n variant='settings'\n onValuesChanged={(values) =>\n void invokePromise(ObservabilityOperation.Toggle, { state: { ...settings, ...values }.enabled })\n }\n >\n <Form.Viewport scroll>\n <Form.Content>\n <Form.Section title={meta.profile.name ?? meta.profile.key}>\n <Message.Root valence='info'>\n <Message.Body>{t('observability.description')}</Message.Body>\n </Message.Root>\n <Form.FieldSet />\n </Form.Section>\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n\nObservabilitySettings.displayName = 'ObservabilitySettings';\n"],"mappings":";;;;;;;;;;;;AAoBA,IAAa,yBAAyB,EAAE,cAA0C;CAChF,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,EAAE,aAAa,iBAAoC,QAAQ,IAAI;CACrE,MAAM,EAAE,kBAAkB,oBAAoB;CAE9C,OACE,oBAAC,KAAK,MAAN;EACE,QAAQ,SAAS;EACjB,QAAQ;EACR,SAAQ;EACR,kBAAkB,WAChB,KAAK,cAAc,uBAAuB,QAAQ,EAAE,OAAO;GAAE,GAAG;GAAU,GAAG;EAAO,EAAE,QAAQ,CAAC;YAGjG,oBAAC,KAAK,UAAN;GAAe,QAAA;aACb,oBAAC,KAAK,SAAN,EAAA,UACE,qBAAC,KAAK,SAAN;IAAc,OAAO,KAAK,QAAQ,QAAQ,KAAK,QAAQ;cAAvD,CACE,oBAAC,QAAQ,MAAT;KAAc,SAAQ;eACpB,oBAAC,QAAQ,MAAT,EAAA,UAAe,EAAE,2BAA2B,EAAgB,CAAA;IAChD,CAAA,GACd,oBAAC,KAAK,UAAN,CAAgB,CAAA,CACJ;MACF,CAAA;EACD,CAAA;CACN,CAAA;AAEf;AAEA,sBAAsB,cAAc"}
1
+ {"version":3,"file":"chunk-ObservabilitySettings.mjs","names":[],"sources":["../../src/containers/ObservabilitySettings/ObservabilitySettings.tsx"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useOperationInvoker, useSettingsState } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Message, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\n\nimport * as ObservabilityOperation from '../../types/ObservabilityOperation';\nimport * as Settings from '../../types/Settings';\n\nexport type ObservabilitySettingsProps = AppSurface.SettingsData;\n\n/**\n * Edits are routed through {@link ObservabilityOperation.Toggle} rather than written to the atom\n * directly, so enabling/disabling observability takes effect on the running services.\n */\nexport const ObservabilitySettings = ({ subject }: ObservabilitySettingsProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { settings } = useSettingsState<Settings.Settings>(subject.atom);\n const { invokePromise } = useOperationInvoker();\n\n return (\n <Form.Root\n schema={Settings.Settings}\n values={settings}\n variant='settings'\n onValuesChanged={(values) =>\n void invokePromise(ObservabilityOperation.Toggle, { state: { ...settings, ...values }.enabled })\n }\n >\n <Form.Viewport scroll>\n <Form.Content>\n <Form.Section title={meta.profile.name ?? meta.profile.key}>\n <Message.Root valence='info'>\n <Message.Content>\n <Message.Body>{t('observability.description')}</Message.Body>\n </Message.Content>\n </Message.Root>\n <Form.FieldSet />\n </Form.Section>\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n\nObservabilitySettings.displayName = 'ObservabilitySettings';\n"],"mappings":";;;;;;;;;;;;;AAsBA,IAAa,yBAAyB,EAAE,cAA0C;CAChF,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,EAAE,aAAa,iBAAoC,QAAQ,IAAI;CACrE,MAAM,EAAE,kBAAkB,oBAAoB;CAE9C,OACE,oBAAC,KAAK,MAAN;EACE,QAAQ;EACR,QAAQ;EACR,SAAQ;EACR,kBAAkB,WAChB,KAAK,cAAc,QAA+B,EAAE,OAAO;GAAE,GAAG;GAAU,GAAG;EAAO,EAAE,QAAQ,CAAC;YAGjG,oBAAC,KAAK,UAAN;GAAe,QAAA;aACb,oBAAC,KAAK,SAAN,EAAA,UACE,qBAAC,KAAK,SAAN;IAAc,OAAO,KAAK,QAAQ,QAAQ,KAAK,QAAQ;cAAvD,CACE,oBAAC,QAAQ,MAAT;KAAc,SAAQ;eACpB,oBAAC,QAAQ,SAAT,EAAA,UACE,oBAAC,QAAQ,MAAT,EAAA,UAAe,EAAE,2BAA2B,EAAgB,CAAA,EAC7C,CAAA;IACL,CAAA,GACd,oBAAC,KAAK,UAAN,CAAgB,CAAA,CACJ;MACF,CAAA;EACD,CAAA;CACN,CAAA;AAEf;AAEA,sBAAsB,cAAc"}
@@ -1,97 +1,94 @@
1
- import { Capabilities, Capability } from "@dxos/app-framework";
1
+ import { ClientCapability, Observability as Observability$1 } from "./ObservabilityCapabilities.mjs";
2
+ import { SendEvent } from "./ObservabilityOperation.mjs";
3
+ import * as Capability from "@dxos/app-framework/Capability";
2
4
  import * as Effect from "effect/Effect";
3
- import { ObservabilityCapabilities, ObservabilityOperation } from "#types";
5
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
4
6
  import { log } from "@dxos/log";
5
7
  import { ObservabilityProvider } from "@dxos/observability";
6
8
  //#region src/capabilities/client-ready.ts
7
9
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-observability/src/capabilities/client-ready.ts";
8
- var client_ready_default = Capability.makeModule(Effect.fnUntraced(function* ({ observability }) {
9
- const manager = yield* Capability.get(Capabilities.PluginManager);
10
- const { invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);
11
- const client = yield* Capability.get(ObservabilityCapabilities.ClientCapability);
10
+ var client_ready_default = Capability.makeModule(Effect.fnUntraced(function* () {
11
+ const manager = yield* Capabilities.PluginManager;
12
+ const { invokePromise } = yield* Capabilities.OperationInvoker;
13
+ const client = yield* ClientCapability;
14
+ const observability = yield* Observability$1;
12
15
  const enabledPlugins = manager.getEnabled();
13
16
  log("client-ready: tagging enabled plugins", { count: enabledPlugins.length }, {
14
17
  "~LogMeta": "~LogMeta",
15
18
  F: __dxlog_file,
16
- L: 26,
19
+ L: 27,
17
20
  S: this
18
21
  });
19
22
  for (const plugin of enabledPlugins) observability.setTags({ [`pluginEnabled-${plugin}`]: "true" }, "errors");
20
23
  log("client-ready: sending page.load event", void 0, {
21
24
  "~LogMeta": "~LogMeta",
22
25
  F: __dxlog_file,
23
- L: 31,
26
+ L: 32,
24
27
  S: this
25
28
  });
26
- yield* Effect.tryPromise(() => invokePromise(ObservabilityOperation.SendEvent, {
29
+ yield* Effect.tryPromise(() => invokePromise(SendEvent, {
27
30
  name: "page.load",
28
31
  properties: { loadDuration: window.performance.timing.loadEventEnd - window.performance.timing.loadEventStart }
29
32
  }));
30
33
  log("client-ready: page.load event sent", void 0, {
31
34
  "~LogMeta": "~LogMeta",
32
35
  F: __dxlog_file,
33
- L: 41,
36
+ L: 42,
34
37
  S: this
35
38
  });
36
39
  log("client-ready: adding identity data provider", void 0, {
37
40
  "~LogMeta": "~LogMeta",
38
41
  F: __dxlog_file,
39
- L: 47,
42
+ L: 48,
40
43
  S: this
41
44
  });
42
45
  yield* observability.addDataProvider(ObservabilityProvider.Client.identityProvider(client.services.services));
43
46
  log("client-ready: identity data provider added", void 0, {
44
47
  "~LogMeta": "~LogMeta",
45
48
  F: __dxlog_file,
46
- L: 49,
49
+ L: 50,
47
50
  S: this
48
51
  });
49
52
  log("client-ready: adding network metrics data provider", void 0, {
50
53
  "~LogMeta": "~LogMeta",
51
54
  F: __dxlog_file,
52
- L: 51,
55
+ L: 52,
53
56
  S: this
54
57
  });
55
58
  yield* observability.addDataProvider(ObservabilityProvider.Client.networkMetricsProvider(client.services.services));
56
59
  log("client-ready: network metrics data provider added", void 0, {
57
60
  "~LogMeta": "~LogMeta",
58
61
  F: __dxlog_file,
59
- L: 53,
62
+ L: 54,
60
63
  S: this
61
64
  });
62
65
  log("client-ready: adding runtime metrics data provider", void 0, {
63
66
  "~LogMeta": "~LogMeta",
64
67
  F: __dxlog_file,
65
- L: 55,
68
+ L: 56,
66
69
  S: this
67
70
  });
68
71
  yield* observability.addDataProvider(ObservabilityProvider.Client.runtimeMetricsProvider(client.services.services));
69
72
  log("client-ready: runtime metrics data provider added", void 0, {
70
73
  "~LogMeta": "~LogMeta",
71
74
  F: __dxlog_file,
72
- L: 57,
75
+ L: 58,
73
76
  S: this
74
77
  });
75
78
  log("client-ready: adding space metrics data provider", void 0, {
76
79
  "~LogMeta": "~LogMeta",
77
80
  F: __dxlog_file,
78
- L: 59,
81
+ L: 60,
79
82
  S: this
80
83
  });
81
84
  yield* observability.addDataProvider(ObservabilityProvider.Client.spacesMetricsProvider(client));
82
85
  log("client-ready: space metrics data provider added", void 0, {
83
86
  "~LogMeta": "~LogMeta",
84
87
  F: __dxlog_file,
85
- L: 61,
88
+ L: 62,
86
89
  S: this
87
90
  });
88
- log("client-ready: contributing observability capability", void 0, {
89
- "~LogMeta": "~LogMeta",
90
- F: __dxlog_file,
91
- L: 63,
92
- S: this
93
- });
94
- return Capability.contributes(ObservabilityCapabilities.Observability, observability, () => observability.close());
91
+ return [];
95
92
  }));
96
93
  //#endregion
97
94
  export { client_ready_default as default };
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-client-ready.mjs","names":[],"sources":["../../src/capabilities/client-ready.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { type Observability, ObservabilityProvider } from '@dxos/observability';\n\nimport { ObservabilityCapabilities, ObservabilityOperation } from '#types';\n\nexport type ClientReadyOptions = {\n namespace: string;\n observability: Observability.Observability;\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ observability }: ClientReadyOptions) {\n const manager = yield* Capability.get(Capabilities.PluginManager);\n const { invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);\n const client = yield* Capability.get(ObservabilityCapabilities.ClientCapability);\n\n // Ensure errors are tagged with enabled plugins to help with reproductions.\n const enabledPlugins = manager.getEnabled();\n log('client-ready: tagging enabled plugins', { count: enabledPlugins.length });\n for (const plugin of enabledPlugins) {\n observability.setTags({ [`pluginEnabled-${plugin}`]: 'true' }, 'errors');\n }\n\n log('client-ready: sending page.load event');\n yield* Effect.tryPromise(() =>\n invokePromise(ObservabilityOperation.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 log('client-ready: page.load event sent');\n\n // Each provider is logged individually because some provider setups perform\n // RPC calls (e.g. runtimeMetricsProvider awaits SystemService.getPlatform());\n // a hung worker pipe surfaces as a missing \"added\" log, so the last\n // \"adding ...\" line points to the stall.\n log('client-ready: adding identity data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.identityProvider(client.services.services));\n log('client-ready: identity data provider added');\n\n log('client-ready: adding network metrics data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.networkMetricsProvider(client.services.services));\n log('client-ready: network metrics data provider added');\n\n log('client-ready: adding runtime metrics data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.runtimeMetricsProvider(client.services.services));\n log('client-ready: runtime metrics data provider added');\n\n log('client-ready: adding space metrics data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.spacesMetricsProvider(client));\n log('client-ready: space metrics data provider added');\n\n log('client-ready: contributing observability capability');\n return Capability.contributes(ObservabilityCapabilities.Observability, observability, () => observability.close());\n }),\n);\n"],"mappings":";;;;;;;AAiBA,IAAA,uBAAe,WAAW,WACxB,OAAO,WAAW,WAAW,EAAE,iBAAqC;CAClE,MAAM,UAAU,OAAO,WAAW,IAAI,aAAa,aAAa;CAChE,MAAM,EAAE,kBAAkB,OAAO,WAAW,IAAI,aAAa,gBAAgB;CAC7E,MAAM,SAAS,OAAO,WAAW,IAAI,0BAA0B,gBAAgB;CAG/E,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,IAAI,yCAAyC,EAAE,OAAO,eAAe,OAAO,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAC7E,KAAK,MAAM,UAAU,gBACnB,cAAc,QAAQ,GAAG,iBAAiB,WAAW,OAAO,GAAG,QAAQ;CAGzE,IAAI,yCAAsC,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAC3C,OAAO,OAAO,iBACZ,cAAc,uBAAuB,WAAW;EAC9C,MAAM;EACN,YAAY,EAEV,cAAc,OAAO,YAAY,OAAO,eAAe,OAAO,YAAY,OAAO,eACnF;CACF,CAAC,CACH;CACA,IAAI,sCAAmC,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAMxC,IAAI,+CAA4C,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACjD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,iBAAiB,OAAO,SAAS,QAAQ,CAAC;CAC5G,IAAI,8CAA2C,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEhD,IAAI,sDAAmD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACxD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,uBAAuB,OAAO,SAAS,QAAQ,CAAC;CAClH,IAAI,qDAAkD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEvD,IAAI,sDAAmD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACxD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,uBAAuB,OAAO,SAAS,QAAQ,CAAC;CAClH,IAAI,qDAAkD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEvD,IAAI,oDAAiD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACtD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,sBAAsB,MAAM,CAAC;CAC/F,IAAI,mDAAgD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAErD,IAAI,uDAAoD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACzD,OAAO,WAAW,YAAY,0BAA0B,eAAe,qBAAqB,cAAc,MAAM,CAAC;AACnH,CAAC,CACH"}
1
+ {"version":3,"file":"chunk-client-ready.mjs","names":[],"sources":["../../src/capabilities/client-ready.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport * as Capabilities from '@dxos/app-framework/Capabilities';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport { log } from '@dxos/log';\nimport { ObservabilityProvider } from '@dxos/observability';\n\nimport * as ObservabilityCapabilities from '../types/ObservabilityCapabilities';\nimport * as ObservabilityOperation from '../types/ObservabilityOperation';\n\n// The `observability` instance is read from `ObservabilityCapabilities.Observability` (contributed\n// once, at Startup, by the `observability` module) rather than re-created here — a capability is a\n// singleton and two independent contributions would trigger `DuplicateProviderError`.\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const manager = yield* Capabilities.PluginManager;\n const { invokePromise } = yield* Capabilities.OperationInvoker;\n const client = yield* ObservabilityCapabilities.ClientCapability;\n const observability = yield* ObservabilityCapabilities.Observability;\n\n // Ensure errors are tagged with enabled plugins to help with reproductions.\n const enabledPlugins = manager.getEnabled();\n log('client-ready: tagging enabled plugins', { count: enabledPlugins.length });\n for (const plugin of enabledPlugins) {\n observability.setTags({ [`pluginEnabled-${plugin}`]: 'true' }, 'errors');\n }\n\n log('client-ready: sending page.load event');\n yield* Effect.tryPromise(() =>\n invokePromise(ObservabilityOperation.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 log('client-ready: page.load event sent');\n\n // Each provider is logged individually because some provider setups perform\n // RPC calls (e.g. runtimeMetricsProvider awaits SystemService.getPlatform());\n // a hung worker pipe surfaces as a missing \"added\" log, so the last\n // \"adding ...\" line points to the stall.\n log('client-ready: adding identity data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.identityProvider(client.services.services));\n log('client-ready: identity data provider added');\n\n log('client-ready: adding network metrics data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.networkMetricsProvider(client.services.services));\n log('client-ready: network metrics data provider added');\n\n log('client-ready: adding runtime metrics data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.runtimeMetricsProvider(client.services.services));\n log('client-ready: runtime metrics data provider added');\n\n log('client-ready: adding space metrics data provider');\n yield* observability.addDataProvider(ObservabilityProvider.Client.spacesMetricsProvider(client));\n log('client-ready: space metrics data provider added');\n\n return [];\n }),\n);\n"],"mappings":";;;;;;;;;AAiBA,IAAA,uBAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,MAAM,UAAU,OAAO,aAAa;CACpC,MAAM,EAAE,kBAAkB,OAAO,aAAa;CAC9C,MAAM,SAAS,OAAO;CACtB,MAAM,gBAAgB,OAAO;CAG7B,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,IAAI,yCAAyC,EAAE,OAAO,eAAe,OAAO,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAC7E,KAAK,MAAM,UAAU,gBACnB,cAAc,QAAQ,GAAG,iBAAiB,WAAW,OAAO,GAAG,QAAQ;CAGzE,IAAI,yCAAsC,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAC3C,OAAO,OAAO,iBACZ,cAAc,WAAkC;EAC9C,MAAM;EACN,YAAY,EAEV,cAAc,OAAO,YAAY,OAAO,eAAe,OAAO,YAAY,OAAO,eACnF;CACF,CAAC,CACH;CACA,IAAI,sCAAmC,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAMxC,IAAI,+CAA4C,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACjD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,iBAAiB,OAAO,SAAS,QAAQ,CAAC;CAC5G,IAAI,8CAA2C,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEhD,IAAI,sDAAmD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACxD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,uBAAuB,OAAO,SAAS,QAAQ,CAAC;CAClH,IAAI,qDAAkD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEvD,IAAI,sDAAmD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACxD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,uBAAuB,OAAO,SAAS,QAAQ,CAAC;CAClH,IAAI,qDAAkD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAEvD,IAAI,oDAAiD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CACtD,OAAO,cAAc,gBAAgB,sBAAsB,OAAO,sBAAsB,MAAM,CAAC;CAC/F,IAAI,mDAAgD,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA;CAAA,CAAC;CAErD,OAAO,CAAC;AACV,CAAC,CACH"}
@@ -1,4 +1,4 @@
1
- import { Plugin } from "@dxos/app-framework";
1
+ import * as Plugin from "@dxos/app-framework/Plugin";
2
2
  import { Config2 } from "@dxos/app-framework/config";
3
3
  import { trim } from "@dxos/util";
4
4
  //#region dx.config.ts
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.observability',\n name: 'Telemetry',\n author: 'DXOS',\n description: trim`\n Application observability and telemetry collection for monitoring performance and usage patterns.\n Track metrics, logs, and traces for system health and analytics.\n `,\n icon: { key: 'ph--eye--regular' },\n tags: ['system'],\n },\n});\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;CAIjB,MAAM,EAAE,KAAK,mBAAmB;CAChC,MAAM,CAAC,QAAQ;AACjB,EACF,CAAC;;;ACXD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}
1
+ {"version":3,"file":"chunk-meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.observability',\n name: 'Telemetry',\n author: 'DXOS',\n description: trim`\n Application observability and telemetry collection for monitoring performance and usage patterns.\n Track metrics, logs, and traces for system health and analytics.\n `,\n icon: { key: 'ph--eye--regular' },\n tags: ['system'],\n },\n});\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Plugin from '@dxos/app-framework/Plugin';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;CAIjB,MAAM,EAAE,KAAK,mBAAmB;CAChC,MAAM,CAAC,QAAQ;AACjB,EACF,CAAC;;;ACXD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}
@@ -1,9 +1,10 @@
1
- import { Capabilities, Capability } from "@dxos/app-framework";
1
+ import * as Capability from "@dxos/app-framework/Capability";
2
2
  import * as Effect from "effect/Effect";
3
+ import * as Capabilities from "@dxos/app-framework/Capabilities";
3
4
  import { ObservabilityOperationHandlerSet } from "#operations";
4
5
  //#region src/capabilities/operation-handler.ts
5
6
  var operation_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
6
- return Capability.contributes(Capabilities.OperationHandler, ObservabilityOperationHandlerSet);
7
+ return Capability.contribute(Capabilities.OperationHandler, ObservabilityOperationHandlerSet);
7
8
  }));
8
9
  //#endregion
9
10
  export { operation_handler_default as default };