opentray 0.28.0 → 0.29.0

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/README.md CHANGED
@@ -31,6 +31,10 @@ Official `TrayExtension` implementations declare a platform-neutral `artifact` d
31
31
 
32
32
  Low-level custom extensions use an exact-file artifact. `OPENTRAY_EXT_PATH` and source-tree paths are diagnostic inputs; a normal package-manager install must be sufficient for official extensions.
33
33
 
34
+ ### Embedded platform-binary artifacts
35
+
36
+ A facade may instead ship its platform libraries inside its own tarball with a `kind: "embedded"` artifact: one `platforms/<target>/` library per target plus the root-contained staging manifest `platforms/manifest.json`. The declared catalog is complete over the frozen staging matrix `NATIVE_EXTENSION_EMBEDDED_TARGET_MATRIX` (`darwin-arm64`, `darwin-x64`, `win32-arm64`, `win32-x64`); an incomplete catalog is not representable, and a manifest missing any matrix cell is rejected as `manifest-invalid` before broker dispatch. Resolution validates path containment (traversal, absolute paths, and symlink escapes), cross-checks the manifest's facade version, contract fingerprint, per-target SHA-256, and build identity, hashes the selected library's real bytes, and feeds `sha256`/`buildIdentity` into the `load-ext` expected identity (the broker re-hashes before `dlopen`). Rejections use the typed `NativeExtensionEmbeddedArtifactError` with the structured reasons `target-unsupported`, `path-outside-facade`, `manifest-invalid`, and `library-unreadable`. Facade packages embedding platform binaries are also subject to the workspace pack-size gate (`pnpm run check:pack-size`).
37
+
34
38
  ## Tray-First API
35
39
 
36
40
  For the first app, call `createTray()` directly. The quickstart stays in one file and does not ask the user to wire a worker or a host loop first:
@@ -125,6 +129,30 @@ completed graceful close), the SDK reaches a terminal connection-dead state:
125
129
  - `destroy()` treats the sentinel as the requested end state, so a Quit issued
126
130
  after broker death still settles.
127
131
 
132
+ ### Extension commands and deferred operations
133
+
134
+ `tray.requestExtension(ext, data)` (and the `TrayExtensionContext.request`
135
+ facade hook) settles with one discriminated `ExtensionRequestResult`:
136
+
137
+ - `{ kind: "immediate", events }` — the command completed inside dispatch and
138
+ `events` carries the response envelopes (an empty array for plain acks).
139
+ - `{ kind: "terminal", operationId, value }` — the command was accepted as a
140
+ deferred operation and settled through exactly one terminal frame; `value`
141
+ is the deferred result payload (the projection of the frozen
142
+ `ext-operation-terminal` result branch).
143
+
144
+ A deferred operation that fails rejects with the typed `ExtensionOperationError`
145
+ (`code`, optional structured `details`, `cause`) instead of a result; if the
146
+ transport dies while the operation is pending, it rejects with the generic code
147
+ `extension_transport_closed` exported as `EXTENSION_TRANSPORT_CLOSED_CODE`.
148
+ Extension facades map that shared code onto their public error surface. A
149
+ synchronous broker rejection (including deferred commands that fail before
150
+ acceptance) rejects with `BrokerServerError`, which carries the same
151
+ `{ code, message, details }` contract. Match on `code`; parsing human messages
152
+ is not a contract. During the local handshake, a Ready frame announcing a
153
+ different protocol version rejects with `BrokerProtocolVersionError` before
154
+ the session is accepted.
155
+
128
156
  Endpoint identity is app identity: when `createTray` receives an `appId`, the
129
157
  caller label (and therefore the per-caller broker endpoint) is that appId
130
158
  normalized to a filesystem-safe slug, stable across every launch method of the
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { AppEvent, AppEvent as AppEvent$1, AppIcon, AppIcon as AppIcon$1, AppIconAsset, AppIconSource, AppIconVariant, AppIconVariantOf, AppId, AppIdentity, AppOptions, AppRef, BrokerEndpointIdentity, BrokerEndpointIdentityOptions, ClientFrame, ClientFrame as ClientFrame$1, ClientRequestFrame, ClientRequestFrame as ClientRequestFrame$1, DarwinIcon, DarwinIconText, ExpectedExtensionIdentity, ExtensionEnvelope, ExtensionEnvelope as ExtensionEnvelope$1, Icon, Icon as Icon$1, Icon as TrayIcon, IconCandidates, IconImage, IconText, LinuxIcon, Menu, Menu as Menu$1, MenuItem, MenuItemId, MenuItemId as MenuItemId$1, MouseButton, PROTOCOL_VERSION, Rect, RequestId, ServerFrame, ServerFrame as ServerFrame$1, SimpleIcon, Tooltip, Tooltip as Tooltip$1, Tooltip as TrayTooltip, TrayBoundsKind, TrayBoundsResult, TrayBoundsResult as TrayBoundsResult$1, TrayEvent, TrayEvent as TrayEvent$1, TrayId, TrayId as TrayId$1, TrayOptions, TrayOptions as TrayOptions$1, Win32Icon, createBrokerEndpointIdentity, formatBrokerEndpointName, formatBrokerStateRoot, formatUnixSocketPath, formatWindowsPipeName, isSupportedProtocolVersion } from "@opentray/spec";
1
+ import { AppEvent, AppEvent as AppEvent$1, AppIcon, AppIcon as AppIcon$1, AppIconAsset, AppIconSource, AppIconVariant, AppIconVariantOf, AppId, AppIdentity, AppOptions, AppRef, BrokerEndpointIdentity, BrokerEndpointIdentityOptions, ClientFrame, ClientFrame as ClientFrame$1, ClientRequestFrame, ClientRequestFrame as ClientRequestFrame$1, CommandScope, DarwinIcon, DarwinIconText, EXTENSION_EVENT_RECORD_MAX_BYTES, ExpectedExtensionIdentity, ExpectedExtensionIdentity as ExpectedExtensionIdentity$1, ExtOperationPayload, ExtensionArtifactTarget, ExtensionEnvelope, ExtensionEnvelope as ExtensionEnvelope$1, Icon, Icon as Icon$1, Icon as TrayIcon, IconCandidates, IconImage, IconText, LinuxIcon, Menu, Menu as Menu$1, MenuItem, MenuItemId, MenuItemId as MenuItemId$1, MouseButton, PROTOCOL_VERSION, Rect, RequestId, ServerFrame, ServerFrame as ServerFrame$1, SimpleIcon, Tooltip, Tooltip as Tooltip$1, Tooltip as TrayTooltip, TrayBoundsKind, TrayBoundsResult, TrayBoundsResult as TrayBoundsResult$1, TrayEvent, TrayEvent as TrayEvent$1, TrayId, TrayId as TrayId$1, TrayOptions, TrayOptions as TrayOptions$1, TypedExtensionError, Win32Icon, createBrokerEndpointIdentity, formatBrokerEndpointName, formatBrokerStateRoot, formatUnixSocketPath, formatWindowsPipeName, isSupportedProtocolVersion } from "@opentray/spec";
2
2
  import { OpenTrayAppBundleOptions, OpenTrayAppBundleOptions as OpenTrayAppBundleOptions$1, OpenTrayAppLaunchOptions, OpenTrayAppLaunchOptions as OpenTrayAppLaunchOptions$1 } from "@opentray/packaging";
3
3
 
4
4
  //#region src/native-extension-artifact.d.ts
@@ -16,6 +16,34 @@ interface NativeExtensionPackageArtifact extends NativeExtensionIdentitySource {
16
16
  kind: "package";
17
17
  targets: Partial<Record<NativeExtensionTarget, NativeExtensionPackageTarget>>;
18
18
  }
19
+ /** One embedded per-target library, relative to the facade package root (add-ext-dialog section 6.1). */
20
+ interface NativeExtensionEmbeddedTarget {
21
+ libraryPath: string;
22
+ }
23
+ /**
24
+ * Frozen embedded staging matrix (add-ext-dialog section 6.4): a facade that
25
+ * embeds platform binaries stages exactly these four targets. The runtime
26
+ * resolver requires the staging manifest to be complete over this matrix
27
+ * (release staging enforces the same set before anything is packed); one
28
+ * missing cell is a manifest-invalid artifact, never a silently thinner
29
+ * catalog.
30
+ */
31
+ declare const NATIVE_EXTENSION_EMBEDDED_TARGET_MATRIX: readonly ["darwin-arm64", "darwin-x64", "win32-arm64", "win32-x64"];
32
+ /** One cell of the frozen embedded staging matrix. */
33
+ type NativeExtensionEmbeddedMatrixTarget = (typeof NATIVE_EXTENSION_EMBEDDED_TARGET_MATRIX)[number];
34
+ /**
35
+ * Facade package that ships its platform libraries inside its own tarball via
36
+ * `platforms/<target>/` plus the root-contained staging manifest
37
+ * `platforms/manifest.json` (add-ext-dialog section 6.4 identity chain). No
38
+ * optionalDependencies platform packages are involved. The declared catalog
39
+ * is complete over the frozen matrix: an incomplete embedded catalog is not
40
+ * representable, and the runtime manifest check carries the same
41
+ * completeness rule for untyped consumers.
42
+ */
43
+ interface NativeExtensionEmbeddedArtifact extends NativeExtensionIdentitySource {
44
+ kind: "embedded";
45
+ targets: Record<NativeExtensionEmbeddedMatrixTarget, NativeExtensionEmbeddedTarget>;
46
+ }
19
47
  interface NativeExtensionFileArtifactBase {
20
48
  kind: "file";
21
49
  path: string;
@@ -27,8 +55,8 @@ type NativeExtensionFileArtifact = NativeExtensionFileArtifactBase & ({
27
55
  expectedIdentity?: never;
28
56
  identitySource: NativeExtensionIdentitySource;
29
57
  });
30
- type NativeExtensionArtifact = NativeExtensionPackageArtifact | NativeExtensionFileArtifact;
31
- type NativeExtensionExpectedIdentity = ExpectedExtensionIdentity;
58
+ type NativeExtensionArtifact = NativeExtensionPackageArtifact | NativeExtensionFileArtifact | NativeExtensionEmbeddedArtifact;
59
+ type NativeExtensionExpectedIdentity = ExpectedExtensionIdentity$1;
32
60
  interface ResolvedNativeExtensionArtifact {
33
61
  path: string;
34
62
  packageName?: string;
@@ -46,8 +74,28 @@ declare class NativeExtensionArtifactResolutionError extends Error {
46
74
  facadePackageJsonUrl?: string;
47
75
  });
48
76
  }
77
+ /**
78
+ * Structured embedded-artifact rejection reasons (add-ext-dialog section 6.1): the
79
+ * four-class replacement of a single resolution-failed error. Consumers match
80
+ * on `reason`/`code`; the human message is not a contract.
81
+ */
82
+ type NativeExtensionEmbeddedErrorReason = "target-unsupported" | "path-outside-facade" | "manifest-invalid" | "library-unreadable";
83
+ /** Stable machine code per embedded rejection reason (same family style as the resolution error). */
84
+ declare const NATIVE_EXTENSION_EMBEDDED_ERROR_CODES: Record<NativeExtensionEmbeddedErrorReason, string>;
85
+ declare class NativeExtensionEmbeddedArtifactError extends Error {
86
+ readonly reason: NativeExtensionEmbeddedErrorReason;
87
+ readonly code: string;
88
+ readonly target: NativeExtensionTarget;
89
+ readonly facadePackageJsonUrl?: string;
90
+ constructor(reason: NativeExtensionEmbeddedErrorReason, message: string, options: ErrorOptions & {
91
+ target: NativeExtensionTarget;
92
+ facadePackageJsonUrl?: string;
93
+ });
94
+ }
49
95
  /** Resolve one exact native library from the dependency closure that owns the facade. */
50
96
  declare const resolveNativeExtensionArtifact: (artifact: NativeExtensionArtifact, platform?: NodeJS.Platform, arch?: string) => Promise<ResolvedNativeExtensionArtifact>;
97
+ /** Fixed location of the embedded staging manifest inside the facade package. */
98
+ declare const EMBEDDED_STAGING_MANIFEST_PATH = "platforms/manifest.json";
51
99
  //#endregion
52
100
  //#region src/client.d.ts
53
101
  interface OpenTrayTransport {
@@ -63,6 +111,36 @@ interface OpenTrayConnection extends OpenTrayTransport, OpenTrayEventSource {}
63
111
  interface OpenTrayClient {
64
112
  createTray(options: TrayOptions$1): Promise<TrayHandle>;
65
113
  }
114
+ /**
115
+ * Public result contract of one extension request (add-ext-dialog section
116
+ * 5.1 / section 5.7 ruling #8): immediate commands settle with the response
117
+ * envelopes; deferred commands settle with exactly one terminal frame, whose
118
+ * `result` payload value is surfaced as `value` (an `error` terminal rejects
119
+ * with `ExtensionOperationError` before this type is produced).
120
+ */
121
+ type ExtensionRequestResult<TValue = unknown> = {
122
+ kind: "immediate";
123
+ events: ExtensionEnvelope$1[];
124
+ } | {
125
+ kind: "terminal";
126
+ operationId: string;
127
+ value: TValue;
128
+ };
129
+ /**
130
+ * Typed rejection for synchronous broker error frames: carries the wire
131
+ * `code`, the structured `details` payload when the error family freezes one,
132
+ * and the transport cause when relevant. Consumers match on `code`; the human
133
+ * `message` is not a contract. The deferred-operation rejection counterpart
134
+ * is `ExtensionOperationError` (same `{ code, message, details }` family).
135
+ */
136
+ declare class BrokerServerError extends Error {
137
+ readonly code: string;
138
+ readonly details?: unknown;
139
+ constructor(code: string, message: string, options?: {
140
+ details?: unknown;
141
+ cause?: unknown;
142
+ });
143
+ }
66
144
  interface OpenTrayEventfulClient extends OpenTrayClient {
67
145
  createTray(options: TrayOptions$1): Promise<EventfulTrayHandle>;
68
146
  }
@@ -75,7 +153,7 @@ interface TrayHandle {
75
153
  setIcon(icon: Icon$1): Promise<void>;
76
154
  loadExtension(options: ExtensionLoadOptions): Promise<void>;
77
155
  commandExtension(ext: string, data: unknown): Promise<void>;
78
- requestExtension(ext: string, data: unknown): Promise<ExtensionEnvelope$1[]>;
156
+ requestExtension<TValue = unknown>(ext: string, data: unknown): Promise<ExtensionRequestResult<TValue>>;
79
157
  extend<TCapability extends object, TOptions = undefined>(extension: TrayExtension<TCapability, TOptions>, options?: TOptions): TrayHandle & TCapability;
80
158
  destroy(): Promise<void>;
81
159
  }
@@ -139,7 +217,7 @@ interface TrayExtensionContext {
139
217
  readonly mountId: string;
140
218
  ensureLoaded(): Promise<void>;
141
219
  command(data: unknown): Promise<void>;
142
- request(data: unknown): Promise<ExtensionEnvelope$1[]>;
220
+ request<TValue = unknown>(data: unknown): Promise<ExtensionRequestResult<TValue>>;
143
221
  }
144
222
  interface TrayExtension<TCapability extends object, TOptions = undefined> {
145
223
  readonly name: string;
@@ -243,6 +321,42 @@ declare const createTray: (options: CreateTrayOptions, runtimeOptions?: OpenTray
243
321
  * state instead of a failure (P3.6 quit-path finding, 2026-09-12).
244
322
  */
245
323
  declare const BROKER_CONNECTION_CLOSED_MESSAGE = "broker connection closed";
324
+ /**
325
+ * Generic transport-close rejection code for every pending deferred operation
326
+ * (add-ext-dialog section 5.1 frozen): the core client carries no extension-specific
327
+ * branch. Extension facades map this shared code onto their public surface
328
+ * (e.g. ext-dialog's `dialog_transport_closed`) - that mapping is facade work,
329
+ * never core work.
330
+ */
331
+ declare const EXTENSION_TRANSPORT_CLOSED_CODE = "extension_transport_closed";
332
+ /**
333
+ * Typed rejection every deferred operation settles with: the `error` payload
334
+ * branch of an `ext-operation-terminal` frame, or the generic
335
+ * `extension_transport_closed` rejection when the transport dies while an
336
+ * operation is pending. Consumers match on `code`; the human `message` is not
337
+ * a contract. `details` carries the wire error's structured payload when the
338
+ * extension supplied one.
339
+ */
340
+ declare class ExtensionOperationError extends Error {
341
+ readonly code: string;
342
+ readonly details?: unknown;
343
+ constructor(code: string, message: string, options?: {
344
+ details?: unknown;
345
+ cause?: unknown;
346
+ });
347
+ }
348
+ /**
349
+ * Typed handshake rejection for a Ready frame whose protocol version does not
350
+ * equal the version this client sent in its Init frame: a structurally valid
351
+ * Ready frame alone must never accept the session (add-ext-dialog batch A
352
+ * review P1-9). The message names both sides; consumers may match
353
+ * `instanceof` or the two numeric fields.
354
+ */
355
+ declare class BrokerProtocolVersionError extends Error {
356
+ readonly clientProtocolVersion: number;
357
+ readonly brokerProtocolVersion: number;
358
+ constructor(clientProtocolVersion: number, brokerProtocolVersion: number);
359
+ }
246
360
  //#endregion
247
361
  //#region src/app-icon.d.ts
248
362
  declare const DEFAULT_APP_ICON_VARIANT: "default";
@@ -259,5 +373,5 @@ declare class AppIconVariantNotFoundError extends Error {
259
373
  /** Validate an explicit AppIcon, including native file signatures, before broker startup. */
260
374
  declare const validateAppIcon: (icon: unknown, platform?: NodeJS.Platform) => Promise<void>;
261
375
  //#endregion
262
- export { type AppEvent, type AppHandle, type AppIcon, type AppIconAsset, type AppIconSource, type AppIconVariant, AppIconVariantNotFoundError, type AppIconVariantOf, type AppId, type AppIdentity, type AppOptions, type AppRef, BROKER_CONNECTION_CLOSED_MESSAGE, type BrokerEndpointIdentity, type BrokerEndpointIdentityOptions, type ClientFrame, type ClientRequestFrame, type CreateClientOptions, type CreateTrayCheckItem, type CreateTrayHandle, type CreateTrayItem, type CreateTrayMenu, type CreateTrayMenu as TrayMenu, type CreateTrayMenuClickHandler, type CreateTrayMenuItem, type CreateTrayOptions, type CreateTrayRadioItem, type CreateTraySeparatorItem, type CreateTraySubmenuItem, DEFAULT_APP_ICON_VARIANT, type DarwinIcon, type DarwinIconText, type EventfulTrayHandle, type ExtensionEnvelope, type ExtensionLoadOptions, type Icon, type IconCandidates, type IconImage, type IconText, InvalidAppIconError, type LinuxIcon, type Menu, type MenuItem, type MenuItemId, type MouseButton, type NativeExtensionArch, type NativeExtensionArtifact, NativeExtensionArtifactResolutionError, type NativeExtensionExpectedIdentity, type NativeExtensionFileArtifact, type NativeExtensionIdentitySource, type NativeExtensionPackageArtifact, type NativeExtensionPackageTarget, type NativeExtensionTarget, type OpenTrayAppBundleOptions, type OpenTrayAppLaunchOptions, type OpenTrayClient, type OpenTrayConnection, type OpenTrayEventFrame, type OpenTrayEventSource, type OpenTrayRuntimeOptions, type OpenTrayTransport, PROTOCOL_VERSION, type Rect, type ResolvedNativeExtensionArtifact, type ServerFrame, type SimpleIcon, type Tooltip, type TrayBoundsKind, type TrayBoundsResult, type TrayEvent, type TrayEventByType, type TrayEventType, type TrayExtension, type TrayExtensionContext, type TrayExtensionMountSpec, type TrayHandle, type TrayIcon, type TrayId, type TrayOptions, type TrayTooltip, type Win32Icon, createBrokerEndpointIdentity, createClient, createInitFrame, createTray, createTrayHandle, formatBrokerEndpointName, formatBrokerStateRoot, formatUnixSocketPath, formatWindowsPipeName, isSupportedProtocolVersion, resolveNativeExtensionArtifact, validateAppIcon };
376
+ export { type AppEvent, type AppHandle, type AppIcon, type AppIconAsset, type AppIconSource, type AppIconVariant, AppIconVariantNotFoundError, type AppIconVariantOf, type AppId, type AppIdentity, type AppOptions, type AppRef, BROKER_CONNECTION_CLOSED_MESSAGE, type BrokerEndpointIdentity, type BrokerEndpointIdentityOptions, BrokerProtocolVersionError, BrokerServerError, type ClientFrame, type ClientRequestFrame, type CommandScope, type CreateClientOptions, type CreateTrayCheckItem, type CreateTrayHandle, type CreateTrayItem, type CreateTrayMenu, type CreateTrayMenu as TrayMenu, type CreateTrayMenuClickHandler, type CreateTrayMenuItem, type CreateTrayOptions, type CreateTrayRadioItem, type CreateTraySeparatorItem, type CreateTraySubmenuItem, DEFAULT_APP_ICON_VARIANT, type DarwinIcon, type DarwinIconText, EMBEDDED_STAGING_MANIFEST_PATH, EXTENSION_EVENT_RECORD_MAX_BYTES, EXTENSION_TRANSPORT_CLOSED_CODE, type EventfulTrayHandle, type ExpectedExtensionIdentity, type ExtOperationPayload, type ExtensionArtifactTarget, type ExtensionEnvelope, type ExtensionLoadOptions, ExtensionOperationError, type ExtensionRequestResult, type Icon, type IconCandidates, type IconImage, type IconText, InvalidAppIconError, type LinuxIcon, type Menu, type MenuItem, type MenuItemId, type MouseButton, NATIVE_EXTENSION_EMBEDDED_ERROR_CODES, NATIVE_EXTENSION_EMBEDDED_TARGET_MATRIX, type NativeExtensionArch, type NativeExtensionArtifact, NativeExtensionArtifactResolutionError, type NativeExtensionEmbeddedArtifact, NativeExtensionEmbeddedArtifactError, type NativeExtensionEmbeddedErrorReason, type NativeExtensionEmbeddedMatrixTarget, type NativeExtensionEmbeddedTarget, type NativeExtensionExpectedIdentity, type NativeExtensionFileArtifact, type NativeExtensionIdentitySource, type NativeExtensionPackageArtifact, type NativeExtensionPackageTarget, type NativeExtensionTarget, type OpenTrayAppBundleOptions, type OpenTrayAppLaunchOptions, type OpenTrayClient, type OpenTrayConnection, type OpenTrayEventFrame, type OpenTrayEventSource, type OpenTrayRuntimeOptions, type OpenTrayTransport, PROTOCOL_VERSION, type Rect, type ResolvedNativeExtensionArtifact, type ServerFrame, type SimpleIcon, type Tooltip, type TrayBoundsKind, type TrayBoundsResult, type TrayEvent, type TrayEventByType, type TrayEventType, type TrayExtension, type TrayExtensionContext, type TrayExtensionMountSpec, type TrayHandle, type TrayIcon, type TrayId, type TrayOptions, type TrayTooltip, type TypedExtensionError, type Win32Icon, createBrokerEndpointIdentity, createClient, createInitFrame, createTray, createTrayHandle, formatBrokerEndpointName, formatBrokerStateRoot, formatUnixSocketPath, formatWindowsPipeName, isSupportedProtocolVersion, resolveNativeExtensionArtifact, validateAppIcon };
263
377
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/native-extension-artifact.ts","../src/client.ts","../src/menu-input.ts","../src/sdk.ts","../src/local-broker.ts","../src/app-icon.ts"],"mappings":";;;;KAUY,mBAAA;AAAA,KACA,qBAAA,MAA2B,MAAA,CAAO,QAAA,IAAY,mBAAmB;AAAA,UAE5D,4BAAA;EACf,WAAA;EACA,WAAW;AAAA;AAAA,UAGI,6BAAA;EACf,cAAA;EACA,mBAAmB;AAAA;AAAA,UAGJ,8BAAA,SACP,6BAAA;EACR,IAAA;EACA,OAAA,EAAS,OAAA,CAAQ,MAAA,CAAO,qBAAA,EAAuB,4BAAA;AAAA;AAAA,UAGvC,+BAAA;EACR,IAAA;EACA,IAAI;AAAA;AAAA,KAGM,2BAAA,GAA8B,+BAAA;EAGlC,gBAAA,EAAkB,+BAAA;EAClB,cAAA;AAAA;EAGA,gBAAA;EACA,cAAA,EAAgB,6BAAA;AAAA;AAAA,KAIZ,uBAAA,GACR,8BAAA,GACA,2BAA2B;AAAA,KAEnB,+BAAA,GAAkC,yBAAyB;AAAA,UAEtD,+BAAA;EACf,IAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA,EAAkB,+BAAA;EAClB,MAAA,EAAQ,qBAAqB;AAAA;AAAA,cAGlB,sCAAA,SAA+C,KAAA;EAAA,SAO/C,MAAA,EAAQ,qBAAA;EAAA,SANV,IAAA;EAAA,SACA,WAAA;EAAA,SACA,oBAAA;cAGP,OAAA,UACS,MAAA,EAAQ,qBAAA,EACjB,OAAA,GAAS,YAAA;IACP,WAAA;IACA,oBAAA;EAAA;AAAA;;cAeO,8BAAA,GACX,QAAA,EAAU,uBAAA,EACV,QAAA,GAAU,MAAA,CAAO,QAAA,EACjB,IAAA,cACC,OAAA,CAAQ,+BAAA;;;UC5DM,iBAAA;EACf,OAAA,CAAQ,KAAA,EAAO,oBAAA,GAAqB,OAAA,CAAQ,aAAA;AAAA;AAAA,KAGlC,kBAAA,GAAqB,OAAO,CACtC,aAAA;EACE,IAAA;AAAA;AAAA,UAGa,mBAAA;EACf,OAAA,CAAQ,QAAA,GAAW,KAAA,EAAO,kBAAkB;AAAA;AAAA,UAG7B,kBAAA,SACP,iBAAA,EACN,mBAAmB;AAAA,UAEN,cAAA;EACf,UAAA,CAAW,OAAA,EAAS,aAAA,GAAc,OAAA,CAAQ,UAAA;AAAA;AAAA,UAG3B,sBAAA,SAA+B,cAAA;EAC9C,UAAA,CAAW,OAAA,EAAS,aAAA,GAAc,OAAA,CAAQ,kBAAA;AAAA;AAAA,UAG3B,UAAA;EACf,MAAA,EAAQ,QAAA;EACR,GAAA,EAAK,SAAA;EACL,SAAA,IAAa,OAAA,CAAQ,kBAAA;EACrB,OAAA,CAAQ,IAAA,EAAM,MAAA,GAAO,OAAA;EACrB,UAAA,CAAW,OAAA,EAAS,SAAA,GAAU,OAAA;EAC9B,OAAA,CAAQ,IAAA,EAAM,MAAA,GAAO,OAAA;EACrB,aAAA,CAAc,OAAA,EAAS,oBAAA,GAAuB,OAAA;EAC9C,gBAAA,CAAiB,GAAA,UAAa,IAAA,YAAgB,OAAA;EAC9C,gBAAA,CAAiB,GAAA,UAAa,IAAA,YAAgB,OAAA,CAAQ,mBAAA;EACtD,MAAA,mDACE,SAAA,EAAW,aAAA,CAAc,WAAA,EAAa,QAAA,GACtC,OAAA,GAAU,QAAA,GACT,UAAA,GAAa,WAAA;EAChB,OAAA,IAAW,OAAA;AAAA;AAAA,UAGI,SAAA;EAAA,SACN,KAAA;EACT,OAAA,IAAW,OAAA;EACX,OAAA,CAAQ,IAAA,WAAe,OAAA;EACvB,UAAA,IAAc,OAAA,CAAQ,SAAA;EACtB,iBAAA,IAAqB,OAAA;EACrB,UAAA,CAAW,aAAA,EAAe,SAAA,mBAA0B,OAAA;AAAA;AAAA,KAG1C,eAAA,GAAkB,OAAO,CAAC,WAAA;EAAa,IAAA;AAAA;AAAA,KACvC,aAAA,GAAgB,eAAe;AAAA,KAC/B,eAAA,gBAA+B,aAAA,IAAiB,OAAA,CAC1D,eAAA;EACE,IAAA,EAAM,MAAA;AAAA;AAAA,UAGO,kBAAA,SAA2B,UAAA;EAC1C,MAAA,mDACE,SAAA,EAAW,aAAA,CAAc,WAAA,EAAa,QAAA,GACtC,OAAA,GAAU,QAAA,GACT,kBAAA,GAAqB,WAAA;EACxB,eAAA,kBACE,GAAA,UACA,OAAA,GAAU,KAAA,EAAO,mBAAA,CAAkB,KAAA;EAErC,MAAA,gBAAsB,aAAA,EACpB,KAAA,EAAO,MAAA,EACP,OAAA,GAAU,KAAA,EAAO,eAAA,CAAgB,MAAA;EAEnC,WAAA,CACE,OAAA,GAAU,KAAA,EAAO,eAAA;EAEnB,WAAA,CACE,OAAA,GAAU,KAAA,EAAO,eAAA;EAEnB,iBAAA,CACE,OAAA,GAAU,KAAA,EAAO,eAAA;EAEnB,oBAAA,CACE,OAAA,GAAU,KAAA,EAAO,OAAA,CAAQ,UAAA;IAAY,IAAA;EAAA;EDpEjB;;;;;;;EC6EtB,gBAAA,EAAkB,OAAA,GAAU,KAAA,EAAO,KAAA;AAAA;AAAA,UAGpB,oBAAA;EACf,IAAA;EACA,QAAA,EAAU,uBAAuB;EACjC,OAAA;AAAA;AAAA,UAGe,sBAAA;EACf,IAAA;EACA,QAAA,GAAW,uBAAuB;EAClC,OAAA;AAAA;AAAA,UAGe,oBAAA;EAAA,SACN,KAAA;EAAA,SACA,MAAA,EAAQ,QAAA;EDpFF;;;;;;;EAAA,SC4FN,SAAA;EAAA,SACA,IAAA;EAAA,SACA,QAAA,EAAU,uBAAA;EAAA,SACV,OAAA;EACT,YAAA,IAAgB,OAAA;EAChB,OAAA,CAAQ,IAAA,YAAgB,OAAA;EACxB,OAAA,CAAQ,IAAA,YAAgB,OAAA,CAAQ,mBAAA;AAAA;AAAA,UAGjB,aAAA;EAAA,SAIN,IAAA;EAAA,SACA,QAAA,EAAU,uBAAA;EACnB,YAAA,EAAc,OAAA,EAAS,QAAA,eAAuB,sBAAA;EAC9C,MAAA,CACE,IAAA,EAAM,UAAA,EACN,OAAA,EAAS,oBAAA,EACT,OAAA,EAAS,QAAA,eACR,WAAA;AAAA;AAAA,cAGQ,eAAA,GAAmB,aAAA,aAAwB,aAItD;AAAA,UAEe,mBAAA;EACf,eAAA;EACA,UAAA;IACE,IAAA;IACA,OAAA,GAAU,SAAO;EAAA;AAAA;AAAA,iBAIL,YAAA,CACd,SAAA,EAAW,kBAAA,EACX,OAAA,GAAU,mBAAA,GACT,sBAAA;AAAA,iBACa,YAAA,CACd,SAAA,EAAW,iBAAA,EACX,OAAA,GAAU,mBAAA,GACT,cAAA;AAAA,iBAoDa,gBAAA,CACd,SAAA,EAAW,kBAAA,EACX,KAAA,UACA,MAAA,EAAQ,QAAA,EACR,aAAA,SAAsB,SAAA,GACrB,kBAAA;AAAA,iBACa,gBAAA,CACd,SAAA,EAAW,iBAAA,EACX,KAAA,UACA,MAAA,EAAQ,QAAA,EACR,aAAA,SAAsB,SAAA,GACrB,UAAA;;;KCvPS,0BAAA,IACV,KAAmC,EAA5B,eAAe;;KAIZ,cAAA;EACV,KAAA,EAAO,kBAAkB;AAAA;;KAIf,kBAAA,sBAEE,KAAA,UAAe,KAAA,WAAgB,kBAAA,MACzC,cAAA,GACA,mBAAA,GACA,mBAAA,GACA,uBAAA,GACA,qBAAA;AAAA,KAEQ,cAAA;EACV,IAAA;EACA,EAAA,GAAK,YAAA;EACL,KAAA;EACA,YAAA;EACA,OAAA;EACA,QAAA;EACA,WAAA,GAAc,0BAA0B;AAAA;AAAA,KAG9B,mBAAA;EACV,IAAA;EACA,EAAA,GAAK,YAAA;EACL,KAAA;EACA,OAAA;EACA,OAAA;EACA,WAAA,GAAc,0BAA0B;AAAA;AAAA,KAG9B,mBAAA;EACV,IAAA;EACA,EAAA,GAAK,YAAA;EACL,KAAA;EACA,OAAA;EACA,OAAA;EACA,KAAA;EACA,WAAA,GAAc,0BAA0B;AAAA;AAAA,KAG9B,uBAAA;EACV,IAAI;AAAA;AAAA,KAGM,qBAAA;EACV,IAAA;EACA,KAAA;EACA,OAAA;EACA,KAAA,WAAgB,kBAAkB;AAAA;;;UChCnB,sBAAA;EACf,QAAA;EACA,OAAA;EACA,cAAA;EACA,eAAA;EACA,aAAA;EACA,KAAA;EACA,OAAA;EACA,OAAA,GAAU,SAAA;EACV,SAAA,GAAY,0BAAA;EH1BgC;EG4B5C,SAAA,GAAY,0BAAA;EACZ,SAAA;AAAA;AH3BF;AAAA,UG+BiB,iBAAA;EACf,EAAA;EACA,OAAA,GAAU,SAAA;EACV,IAAA,GAAO,MAAA;EACP,IAAA,GAAO,cAAA;AAAA;;UAIQ,gBAAA,SACP,IAAA,CAAK,kBAAA;EACb,OAAA,CAAQ,IAAA,EAAM,cAAA,GAAiB,OAAA;EAC/B,MAAA,mDACE,SAAA,EAAW,aAAA,CAAc,WAAA,EAAa,QAAA,GACtC,OAAA,GAAU,QAAA,GACT,gBAAA,GAAmB,WAAA;EACtB,OAAA,IAAW,OAAA;AAAA;AAAA,cAGA,UAAA,GACX,OAAA,EAAS,iBAAA,EACT,cAAA,GAAgB,sBAAA,KACf,OAAA,CAAQ,gBAAA;;;;AHvDoB;AAC/B;;;;;cI2Ca,gCAAA;;;cCtCA,wBAAA;AAAA,cAGA,mBAAA,SAA4B,KAAK;EAAA,SACnC,IAAA;EAAA,SACA,MAAA;cAEG,MAAA,UAAgB,QAAA,GAAU,MAAA,CAAO,QAAA;AAAA;AAAA,cAOlC,2BAAA,SAAoC,KAAK;EAAA,SAC3C,IAAA;EAAA,SACA,OAAA;cAEG,OAAA,UAAiB,QAAA,GAAU,MAAA,CAAO,QAAA;AAAA;;cAQnC,eAAA,GACX,IAAA,WACA,QAAA,GAAU,MAAA,CAAO,QAAA,KAChB,OAAO"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/native-extension-artifact.ts","../src/client.ts","../src/menu-input.ts","../src/sdk.ts","../src/local-broker.ts","../src/app-icon.ts"],"mappings":"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"}