@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.
- package/dist/lib/ObservabilityCapabilities.mjs +31 -0
- package/dist/lib/ObservabilityCapabilities.mjs.map +1 -0
- package/dist/lib/ObservabilityEvents.mjs +15 -0
- package/dist/lib/ObservabilityEvents.mjs.map +1 -0
- package/dist/lib/ObservabilityOperation.mjs +41 -0
- package/dist/lib/ObservabilityOperation.mjs.map +1 -0
- package/dist/lib/ObservabilityOptions.mjs +7 -0
- package/dist/lib/ObservabilityOptions.mjs.map +1 -0
- package/dist/lib/ObservabilityPlugin.mjs +10 -39
- package/dist/lib/ObservabilityPlugin.mjs.map +1 -1
- package/dist/lib/ObservabilityPlugin.node.mjs +7 -7
- package/dist/lib/ObservabilityPlugin.node.mjs.map +1 -1
- package/dist/lib/ObservabilityPlugin.workerd.mjs +7 -7
- package/dist/lib/ObservabilityPlugin.workerd.mjs.map +1 -1
- package/dist/lib/Settings.mjs +12 -0
- package/dist/lib/Settings.mjs.map +1 -0
- package/dist/lib/capabilities.mjs +48 -8
- package/dist/lib/capabilities.mjs.map +1 -1
- package/dist/lib/chunk-ObservabilitySettings.mjs +5 -4
- package/dist/lib/chunk-ObservabilitySettings.mjs.map +1 -1
- package/dist/lib/chunk-client-ready.mjs +22 -25
- package/dist/lib/chunk-client-ready.mjs.map +1 -1
- package/dist/lib/chunk-meta.mjs +1 -1
- package/dist/lib/chunk-meta.mjs.map +1 -1
- package/dist/lib/chunk-operation-handler.mjs +3 -2
- package/dist/lib/chunk-operation-handler.mjs.map +1 -1
- package/dist/lib/chunk-privacy-notice.mjs +9 -7
- package/dist/lib/chunk-privacy-notice.mjs.map +1 -1
- package/dist/lib/chunk-react-surface.mjs +3 -2
- package/dist/lib/chunk-react-surface.mjs.map +1 -1
- package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
- package/dist/lib/chunk-send-event.mjs +4 -3
- package/dist/lib/chunk-send-event.mjs.map +1 -1
- package/dist/lib/chunk-settings.mjs +7 -6
- package/dist/lib/chunk-settings.mjs.map +1 -1
- package/dist/lib/chunk-state.mjs +6 -5
- package/dist/lib/chunk-state.mjs.map +1 -1
- package/dist/lib/chunk-toggle.mjs +6 -4
- package/dist/lib/chunk-toggle.mjs.map +1 -1
- package/dist/lib/index.mjs +6 -2
- package/dist/lib/operations.mjs +4 -2
- package/dist/lib/operations.mjs.map +1 -1
- package/dist/lib/plugin.mjs +2 -3
- package/dist/lib/plugin.mjs.map +1 -1
- package/dist/types/src/ObservabilityPlugin.d.ts +3 -12
- package/dist/types/src/ObservabilityPlugin.d.ts.map +1 -1
- package/dist/types/src/ObservabilityPlugin.node.d.ts +1 -1
- package/dist/types/src/ObservabilityPlugin.node.d.ts.map +1 -1
- package/dist/types/src/ObservabilityPlugin.workerd.d.ts +1 -1
- package/dist/types/src/ObservabilityPlugin.workerd.d.ts.map +1 -1
- package/dist/types/src/capabilities/client-ready.d.ts +2 -7
- package/dist/types/src/capabilities/client-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +10 -11
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +2 -3
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/privacy-notice.d.ts +2 -2
- package/dist/types/src/capabilities/privacy-notice.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +2 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +2 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/containers/ObservabilitySettings/ObservabilitySettings.d.ts.map +1 -1
- package/dist/types/src/containers/ObservabilitySettings/ObservabilitySettings.stories.d.ts +2 -2
- package/dist/types/src/containers/ObservabilitySettings/ObservabilitySettings.stories.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +1 -1
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/send-event.d.ts +2 -2
- package/dist/types/src/operations/send-event.d.ts.map +1 -1
- package/dist/types/src/operations/toggle.d.ts +2 -2
- package/dist/types/src/operations/toggle.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +2 -3
- package/dist/types/src/plugin.d.ts.map +1 -1
- package/dist/types/src/types/ObservabilityCapabilities.d.ts +10 -8
- package/dist/types/src/types/ObservabilityCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/ObservabilityEvents.d.ts +8 -3
- package/dist/types/src/types/ObservabilityEvents.d.ts.map +1 -1
- package/dist/types/src/types/ObservabilityOperation.d.ts +2 -2
- package/dist/types/src/types/ObservabilityOperation.d.ts.map +1 -1
- package/dist/types/src/types/ObservabilityOptions.d.ts +11 -0
- package/dist/types/src/types/ObservabilityOptions.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +62 -23
- package/src/ObservabilityPlugin.node.ts +15 -16
- package/src/ObservabilityPlugin.ts +23 -61
- package/src/ObservabilityPlugin.workerd.ts +15 -16
- package/src/capabilities/client-ready.ts +14 -14
- package/src/capabilities/index.ts +77 -11
- package/src/capabilities/operation-handler.ts +4 -4
- package/src/capabilities/privacy-notice.ts +10 -7
- package/src/capabilities/react-surface.ts +3 -2
- package/src/capabilities/settings.ts +7 -5
- package/src/capabilities/state.ts +6 -4
- package/src/containers/ObservabilitySettings/ObservabilitySettings.stories.tsx +1 -1
- package/src/containers/ObservabilitySettings/ObservabilitySettings.tsx +6 -2
- package/src/index.ts +5 -1
- package/src/meta.ts +1 -1
- package/src/operations/index.ts +8 -5
- package/src/operations/send-event.ts +4 -3
- package/src/operations/toggle.ts +7 -4
- package/src/plugin.ts +1 -3
- package/src/types/ObservabilityCapabilities.ts +13 -7
- package/src/types/ObservabilityEvents.ts +9 -9
- package/src/types/ObservabilityOperation.ts +2 -2
- package/src/types/ObservabilityOptions.ts +15 -0
- package/dist/lib/chunk-types.mjs +0 -89
- package/dist/lib/chunk-types.mjs.map +0 -1
- package/dist/lib/types.mjs +0 -2
- package/dist/types/src/types/index.d.ts +0 -5
- package/dist/types/src/types/index.d.ts.map +0 -1
- 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 {
|
|
1
|
+
import { LogDownloader } from "./ObservabilityCapabilities.mjs";
|
|
2
|
+
import * as Capability from "@dxos/app-framework/Capability";
|
|
2
3
|
import { meta } from "#meta";
|
|
3
|
-
import
|
|
4
|
+
import * as Plugin from "@dxos/app-framework/Plugin";
|
|
4
5
|
import * as Effect from "effect/Effect";
|
|
5
|
-
import
|
|
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(
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
|
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 {
|
|
1
|
+
import { SendEvent } from "./ObservabilityOperation.mjs";
|
|
2
|
+
import * as Capability from "@dxos/app-framework/Capability";
|
|
2
3
|
import { meta } from "#meta";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
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
|
|
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(
|
|
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
|
|
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 {
|
|
1
|
+
import { SendEvent } from "./ObservabilityOperation.mjs";
|
|
2
|
+
import * as Capability from "@dxos/app-framework/Capability";
|
|
2
3
|
import { meta } from "#meta";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
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
|
|
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(
|
|
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
|
|
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 {
|
|
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.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
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
|
|
19
|
+
schema: Settings,
|
|
19
20
|
values: settings,
|
|
20
21
|
variant: "settings",
|
|
21
|
-
onValuesChanged: (values) => void invokePromise(
|
|
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
|
|
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 {
|
|
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
|
|
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* (
|
|
9
|
-
const manager = yield*
|
|
10
|
-
const { invokePromise } = yield*
|
|
11
|
-
const client = yield*
|
|
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:
|
|
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:
|
|
26
|
+
L: 32,
|
|
24
27
|
S: this
|
|
25
28
|
});
|
|
26
|
-
yield* Effect.tryPromise(() => invokePromise(
|
|
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:
|
|
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:
|
|
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
|
+
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
88
|
+
L: 62,
|
|
86
89
|
S: this
|
|
87
90
|
});
|
|
88
|
-
|
|
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
|
|
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"}
|
package/dist/lib/chunk-meta.mjs
CHANGED
|
@@ -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
|
|
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
|
|
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.
|
|
7
|
+
return Capability.contribute(Capabilities.OperationHandler, ObservabilityOperationHandlerSet);
|
|
7
8
|
}));
|
|
8
9
|
//#endregion
|
|
9
10
|
export { operation_handler_default as default };
|