@dxos/plugin-native 0.10.0 → 0.11.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.
Files changed (80) hide show
  1. package/dist/lib/NativePlugin.mjs +30 -0
  2. package/dist/lib/NativePlugin.mjs.map +1 -0
  3. package/dist/lib/capabilities.mjs +11 -0
  4. package/dist/lib/capabilities.mjs.map +1 -0
  5. package/dist/lib/chunk-NativeSettings.mjs +102 -0
  6. package/dist/lib/chunk-NativeSettings.mjs.map +1 -0
  7. package/dist/lib/{neutral/chunk-WU6IZ56J.mjs → chunk-meta.mjs} +15 -24
  8. package/dist/lib/chunk-meta.mjs.map +1 -0
  9. package/dist/lib/chunk-ollama.mjs +307 -0
  10. package/dist/lib/chunk-ollama.mjs.map +1 -0
  11. package/dist/lib/chunk-react-surface.mjs +16 -0
  12. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  13. package/dist/lib/chunk-settings.mjs +23 -0
  14. package/dist/lib/chunk-settings.mjs.map +1 -0
  15. package/dist/lib/chunk-spotlight-listener.mjs +61 -0
  16. package/dist/lib/chunk-spotlight-listener.mjs.map +1 -0
  17. package/dist/lib/chunk-updater.mjs +212 -0
  18. package/dist/lib/chunk-updater.mjs.map +1 -0
  19. package/dist/lib/containers.mjs +7 -0
  20. package/dist/lib/containers.mjs.map +1 -0
  21. package/dist/lib/index.mjs +2 -0
  22. package/dist/lib/meta.mjs +2 -0
  23. package/dist/lib/plugin.mjs +8 -0
  24. package/dist/lib/plugin.mjs.map +1 -0
  25. package/dist/lib/translations.mjs +26 -0
  26. package/dist/lib/translations.mjs.map +1 -0
  27. package/dist/lib/types.mjs +33 -0
  28. package/dist/lib/types.mjs.map +1 -0
  29. package/dist/types/src/capabilities/ollama.d.ts +1 -1
  30. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  31. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  32. package/dist/types/src/capabilities/settings.d.ts +1 -1
  33. package/dist/types/src/capabilities/spotlight-listener.d.ts +1 -1
  34. package/dist/types/src/capabilities/updater.d.ts +1 -1
  35. package/dist/types/src/containers/NativeSettings/NativeSettings.d.ts +4 -4
  36. package/dist/types/src/containers/NativeSettings/NativeSettings.d.ts.map +1 -1
  37. package/dist/types/src/types/NativeCapabilities.d.ts +1 -1
  38. package/dist/types/src/types/NativeCapabilities.d.ts.map +1 -1
  39. package/dist/types/src/types/Update.d.ts +1 -1
  40. package/dist/types/src/types/Update.d.ts.map +1 -1
  41. package/dist/types/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +26 -25
  43. package/src/capabilities/ollama.ts +1 -1
  44. package/src/capabilities/{react-surface.tsx → react-surface.ts} +2 -7
  45. package/src/capabilities/updater.ts +1 -1
  46. package/src/containers/NativeSettings/NativeSettings.tsx +9 -6
  47. package/src/types/NativeCapabilities.ts +1 -1
  48. package/src/types/Update.ts +1 -1
  49. package/dist/lib/neutral/NativePlugin.mjs +0 -46
  50. package/dist/lib/neutral/NativePlugin.mjs.map +0 -7
  51. package/dist/lib/neutral/NativeSettings-33K63AVG.mjs +0 -120
  52. package/dist/lib/neutral/NativeSettings-33K63AVG.mjs.map +0 -7
  53. package/dist/lib/neutral/capabilities/index.mjs +0 -17
  54. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  55. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  56. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  57. package/dist/lib/neutral/chunk-WU6IZ56J.mjs.map +0 -7
  58. package/dist/lib/neutral/containers/index.mjs +0 -9
  59. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  60. package/dist/lib/neutral/index.mjs +0 -8
  61. package/dist/lib/neutral/index.mjs.map +0 -7
  62. package/dist/lib/neutral/meta.json +0 -1
  63. package/dist/lib/neutral/meta.mjs +0 -8
  64. package/dist/lib/neutral/meta.mjs.map +0 -7
  65. package/dist/lib/neutral/ollama-HZEXAT2P.mjs +0 -312
  66. package/dist/lib/neutral/ollama-HZEXAT2P.mjs.map +0 -7
  67. package/dist/lib/neutral/plugin.mjs +0 -12
  68. package/dist/lib/neutral/plugin.mjs.map +0 -7
  69. package/dist/lib/neutral/react-surface-YST5DQA3.mjs +0 -27
  70. package/dist/lib/neutral/react-surface-YST5DQA3.mjs.map +0 -7
  71. package/dist/lib/neutral/settings-S5MFUI42.mjs +0 -28
  72. package/dist/lib/neutral/settings-S5MFUI42.mjs.map +0 -7
  73. package/dist/lib/neutral/spotlight-listener-K7S6LGL3.mjs +0 -48
  74. package/dist/lib/neutral/spotlight-listener-K7S6LGL3.mjs.map +0 -7
  75. package/dist/lib/neutral/translations.mjs +0 -34
  76. package/dist/lib/neutral/translations.mjs.map +0 -7
  77. package/dist/lib/neutral/types/index.mjs +0 -31
  78. package/dist/lib/neutral/types/index.mjs.map +0 -7
  79. package/dist/lib/neutral/updater-5ETKR4S3.mjs +0 -244
  80. package/dist/lib/neutral/updater-5ETKR4S3.mjs.map +0 -7
@@ -0,0 +1,23 @@
1
+ import { Capability } from "@dxos/app-framework";
2
+ import { AppCapabilities } from "@dxos/app-toolkit";
3
+ import { meta } from "#meta";
4
+ import * as Effect from "effect/Effect";
5
+ import { createKvsStore } from "@dxos/effect";
6
+ import { NativeCapabilities, Settings } from "#types";
7
+ //#region src/capabilities/settings.ts
8
+ var settings_default = Capability.makeModule(() => Effect.sync(() => {
9
+ const settingsAtom = createKvsStore({
10
+ key: meta.profile.key,
11
+ schema: Settings.Settings,
12
+ defaultValue: () => ({})
13
+ });
14
+ return [Capability.contributes(NativeCapabilities.Settings, settingsAtom), Capability.contributes(AppCapabilities.Settings, {
15
+ prefix: meta.profile.key,
16
+ schema: Settings.Settings,
17
+ atom: settingsAtom
18
+ })];
19
+ }));
20
+ //#endregion
21
+ export { settings_default as default };
22
+
23
+ //# sourceMappingURL=chunk-settings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-settings.mjs","names":[],"sources":["../../src/capabilities/settings.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { createKvsStore } from '@dxos/effect';\n\nimport { meta } from '#meta';\nimport { NativeCapabilities, Settings } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.sync(() => {\n const settingsAtom = createKvsStore({\n key: meta.profile.key,\n schema: Settings.Settings,\n defaultValue: () => ({}),\n });\n\n return [\n Capability.contributes(NativeCapabilities.Settings, settingsAtom),\n Capability.contributes(AppCapabilities.Settings, {\n prefix: meta.profile.key,\n schema: Settings.Settings,\n atom: settingsAtom,\n }),\n ];\n }),\n);\n"],"mappings":";;;;;;;AAaA,IAAA,mBAAe,WAAW,iBACxB,OAAO,WAAW;CAChB,MAAM,eAAe,eAAe;EAClC,KAAK,KAAK,QAAQ;EAClB,QAAQ,SAAS;EACjB,qBAAqB,CAAC;CACxB,CAAC;CAED,OAAO,CACL,WAAW,YAAY,mBAAmB,UAAU,YAAY,GAChE,WAAW,YAAY,gBAAgB,UAAU;EAC/C,QAAQ,KAAK,QAAQ;EACrB,QAAQ,SAAS;EACjB,MAAM;CACR,CAAC,CACH;AACF,CAAC,CACH"}
@@ -0,0 +1,61 @@
1
+ import { Capabilities, Capability } from "@dxos/app-framework";
2
+ import { LayoutOperation } from "@dxos/app-toolkit";
3
+ import * as Effect from "effect/Effect";
4
+ import { log } from "@dxos/log";
5
+ //#region src/capabilities/spotlight-listener.ts
6
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-native/src/capabilities/spotlight-listener.ts";
7
+ /**
8
+ * Listens for spotlight:invoke events from the popover window and dispatches the corresponding operation.
9
+ */
10
+ var spotlight_listener_default = Capability.makeModule(Effect.fnUntraced(function* () {
11
+ const { invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);
12
+ const unlisten = yield* Effect.promise(async () => {
13
+ const { listen } = await import("@tauri-apps/api/event");
14
+ const { getCurrentWindow } = await import("@tauri-apps/api/window");
15
+ return listen("spotlight:invoke", async (event) => {
16
+ const { operation, payload } = event.payload;
17
+ log.info("Received spotlight invoke event", {
18
+ operation,
19
+ payload
20
+ }, {
21
+ "~LogMeta": "~LogMeta",
22
+ F: __dxlog_file,
23
+ L: 30,
24
+ S: this
25
+ });
26
+ try {
27
+ switch (operation) {
28
+ case "open":
29
+ await invokePromise(LayoutOperation.Open, payload);
30
+ break;
31
+ case "switch-workspace":
32
+ await invokePromise(LayoutOperation.SwitchWorkspace, payload);
33
+ break;
34
+ default: log.warn("Unknown spotlight operation", { operation }, {
35
+ "~LogMeta": "~LogMeta",
36
+ F: __dxlog_file,
37
+ L: 40,
38
+ S: this
39
+ });
40
+ }
41
+ const mainWindow = getCurrentWindow();
42
+ await mainWindow.show();
43
+ await mainWindow.setFocus();
44
+ } catch (err) {
45
+ log.catch(err, void 0, {
46
+ "~LogMeta": "~LogMeta",
47
+ F: __dxlog_file,
48
+ L: 47,
49
+ S: this
50
+ });
51
+ }
52
+ });
53
+ });
54
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
55
+ unlisten();
56
+ }));
57
+ }));
58
+ //#endregion
59
+ export { spotlight_listener_default as default };
60
+
61
+ //# sourceMappingURL=chunk-spotlight-listener.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-spotlight-listener.mjs","names":[],"sources":["../../src/capabilities/spotlight-listener.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { log } from '@dxos/log';\n\n// TODO(wittjosiah): Formalize with a stricter schema if we evolve this protocol.\ntype SpotlightInvokePayload = {\n operation: string;\n payload?: Record<string, any>;\n};\n\n/**\n * Listens for spotlight:invoke events from the popover window and dispatches the corresponding operation.\n */\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const { invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);\n\n const unlisten = yield* Effect.promise(async () => {\n const { listen } = await import('@tauri-apps/api/event');\n const { getCurrentWindow } = await import('@tauri-apps/api/window');\n\n return listen<SpotlightInvokePayload>('spotlight:invoke', async (event) => {\n const { operation, payload } = event.payload;\n log.info('Received spotlight invoke event', { operation, payload });\n try {\n switch (operation) {\n case 'open':\n await invokePromise(LayoutOperation.Open, payload as any);\n break;\n case 'switch-workspace':\n await invokePromise(LayoutOperation.SwitchWorkspace, payload as any);\n break;\n default:\n log.warn('Unknown spotlight operation', { operation });\n }\n\n const mainWindow = getCurrentWindow();\n await mainWindow.show();\n await mainWindow.setFocus();\n } catch (err) {\n log.catch(err);\n }\n });\n });\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n unlisten();\n }),\n );\n }),\n);\n"],"mappings":";;;;;;;;;AAmBA,IAAA,6BAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,MAAM,EAAE,kBAAkB,OAAO,WAAW,IAAI,aAAa,gBAAgB;CAE7E,MAAM,WAAW,OAAO,OAAO,QAAQ,YAAY;EACjD,MAAM,EAAE,WAAW,MAAM,OAAO;EAChC,MAAM,EAAE,qBAAqB,MAAM,OAAO;EAE1C,OAAO,OAA+B,oBAAoB,OAAO,UAAU;GACzE,MAAM,EAAE,WAAW,YAAY,MAAM;GACrC,IAAI,KAAK,mCAAmC;IAAE;IAAW;GAAQ,GAAA;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA;GAAA,CAAC;GAClE,IAAI;IACF,QAAQ,WAAR;KACE,KAAK;MACH,MAAM,cAAc,gBAAgB,MAAM,OAAc;MACxD;KACF,KAAK;MACH,MAAM,cAAc,gBAAgB,iBAAiB,OAAc;MACnE;KACF,SACE,IAAI,KAAK,+BAA+B,EAAE,UAAU,GAAA;MAAA,YAAA;MAAA,GAAA;MAAA,GAAA;MAAA,GAAA;KAAA,CAAC;IACzD;IAEA,MAAM,aAAa,iBAAiB;IACpC,MAAM,WAAW,KAAK;IACtB,MAAM,WAAW,SAAS;GAC5B,SAAS,KAAK;IACZ,IAAI,MAAM,KAAE,KAAA,GAAA;KAAA,YAAA;KAAA,GAAA;KAAA,GAAA;KAAA,GAAA;IAAA,CAAC;GACf;EACF,CAAC;CACH,CAAC;CAED,OAAO,WAAW,YAAY,aAAa,MAAM,YAC/C,OAAO,WAAW;EAChB,SAAS;CACX,CAAC,CACH;AACF,CAAC,CACH"}
@@ -0,0 +1,212 @@
1
+ import { Capabilities, Capability } from "@dxos/app-framework";
2
+ import { LayoutOperation } from "@dxos/app-toolkit";
3
+ import { meta } from "#meta";
4
+ import { Atom } from "@effect-atom/atom";
5
+ import * as Duration from "effect/Duration";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Fiber from "effect/Fiber";
8
+ import * as Schedule from "effect/Schedule";
9
+ import { log } from "@dxos/log";
10
+ import { NativeCapabilities } from "#types";
11
+ import { type } from "@tauri-apps/plugin-os";
12
+ import { relaunch } from "@tauri-apps/plugin-process";
13
+ import * as Updater from "@tauri-apps/plugin-updater";
14
+ import * as Match from "effect/Match";
15
+ //#region src/constants.ts
16
+ var TAURI_LOCALHOST_PORT = "26777";
17
+ //#endregion
18
+ //#region src/capabilities/updater.ts
19
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-native/src/capabilities/updater.ts";
20
+ var SUPPORTS_OTA = [
21
+ "linux",
22
+ "macos",
23
+ "windows"
24
+ ];
25
+ /** Safe wrapper around Updater.check(). Distinguishes "no update" (ok with null update) from a thrown error. */
26
+ var safeCheck = async () => {
27
+ try {
28
+ return {
29
+ ok: true,
30
+ update: await Updater.check()
31
+ };
32
+ } catch (error) {
33
+ log.error("failed to check for updates", { error }, {
34
+ "~LogMeta": "~LogMeta",
35
+ F: __dxlog_file,
36
+ L: 31,
37
+ S: void 0
38
+ });
39
+ return {
40
+ ok: false,
41
+ error: formatError(error)
42
+ };
43
+ }
44
+ };
45
+ /** Safe wrapper around update.downloadAndInstall(). */
46
+ var safeDownloadAndInstall = async (update, onEvent) => {
47
+ try {
48
+ await update.downloadAndInstall(onEvent);
49
+ return { ok: true };
50
+ } catch (error) {
51
+ log.error("failed to download and install update", { error }, {
52
+ "~LogMeta": "~LogMeta",
53
+ F: __dxlog_file,
54
+ L: 45,
55
+ S: void 0
56
+ });
57
+ return {
58
+ ok: false,
59
+ error: formatError(error)
60
+ };
61
+ }
62
+ };
63
+ /** Extract a user-readable error string from whatever the Tauri updater threw. */
64
+ var formatError = (error) => {
65
+ if (typeof error === "string") return error;
66
+ if (error instanceof Error) return error.message;
67
+ return String(error);
68
+ };
69
+ var updater_default = Capability.makeModule(Effect.fnUntraced(function* () {
70
+ const platform = type();
71
+ const isDevServer = window.location.port !== TAURI_LOCALHOST_PORT;
72
+ const enabled = SUPPORTS_OTA.includes(platform) && !isDevServer;
73
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
74
+ const { invoke } = yield* Capability.get(Capabilities.OperationInvoker);
75
+ const statusAtom = Atom.make(enabled ? { kind: "idle" } : { kind: "unsupported" }).pipe(Atom.keepAlive);
76
+ let pendingUpdate = null;
77
+ const doCheck = async () => {
78
+ registry.set(statusAtom, { kind: "checking" });
79
+ log.info("checking for updates", void 0, {
80
+ "~LogMeta": "~LogMeta",
81
+ F: __dxlog_file,
82
+ L: 81,
83
+ S: this
84
+ });
85
+ const result = await safeCheck();
86
+ if (!result.ok) {
87
+ pendingUpdate = null;
88
+ registry.set(statusAtom, {
89
+ kind: "failed",
90
+ error: result.error
91
+ });
92
+ return null;
93
+ }
94
+ const update = result.update;
95
+ if (!update?.available) {
96
+ pendingUpdate = null;
97
+ registry.set(statusAtom, {
98
+ kind: "up-to-date",
99
+ checkedAt: Date.now()
100
+ });
101
+ return null;
102
+ }
103
+ log.info("update available", { version: update.version }, {
104
+ "~LogMeta": "~LogMeta",
105
+ F: __dxlog_file,
106
+ L: 94,
107
+ S: this
108
+ });
109
+ pendingUpdate = update;
110
+ registry.set(statusAtom, {
111
+ kind: "available",
112
+ version: update.version
113
+ });
114
+ return update;
115
+ };
116
+ const doInstall = async () => {
117
+ const update = pendingUpdate;
118
+ if (!update) return false;
119
+ let downloaded = 0;
120
+ let contentLength = 0;
121
+ registry.set(statusAtom, {
122
+ kind: "downloading",
123
+ downloaded: 0,
124
+ contentLength: 0
125
+ });
126
+ const result = await safeDownloadAndInstall(update, Match.type().pipe(Match.when({ event: "Started" }, (event) => {
127
+ contentLength = event.data.contentLength ?? 0;
128
+ registry.set(statusAtom, {
129
+ kind: "downloading",
130
+ downloaded,
131
+ contentLength
132
+ });
133
+ }), Match.when({ event: "Progress" }, (event) => {
134
+ downloaded += event.data.chunkLength;
135
+ registry.set(statusAtom, {
136
+ kind: "downloading",
137
+ downloaded,
138
+ contentLength
139
+ });
140
+ }), Match.when({ event: "Finished" }, () => {
141
+ log.info("download completed", void 0, {
142
+ "~LogMeta": "~LogMeta",
143
+ F: __dxlog_file,
144
+ L: 119,
145
+ S: this
146
+ });
147
+ }), Match.exhaustive));
148
+ if (result.ok) {
149
+ registry.set(statusAtom, { kind: "ready" });
150
+ return true;
151
+ }
152
+ registry.set(statusAtom, {
153
+ kind: "failed",
154
+ error: result.error
155
+ });
156
+ return false;
157
+ };
158
+ const manager = {
159
+ status: statusAtom,
160
+ check: async () => {
161
+ if (!enabled) return;
162
+ await doCheck();
163
+ },
164
+ install: async () => {
165
+ if (!enabled) return;
166
+ await doInstall();
167
+ },
168
+ relaunch: async () => {
169
+ await relaunch();
170
+ }
171
+ };
172
+ const managerContribution = Capability.contributes(NativeCapabilities.UpdateManager, manager);
173
+ if (!enabled) {
174
+ log.info("updater disabled", {
175
+ platform,
176
+ port: window.location.port
177
+ }, {
178
+ "~LogMeta": "~LogMeta",
179
+ F: __dxlog_file,
180
+ L: 154,
181
+ S: this
182
+ });
183
+ return [managerContribution];
184
+ }
185
+ const backgroundAction = Effect.gen(function* () {
186
+ if (!(yield* Effect.promise(() => doCheck()))) return true;
187
+ if (!(yield* Effect.promise(() => doInstall()))) return true;
188
+ yield* invoke(LayoutOperation.AddToast, {
189
+ id: `${meta.profile.key}.update-ready`,
190
+ title: ["update-ready.label", { ns: meta.profile.key }],
191
+ description: ["update-ready.description", { ns: meta.profile.key }],
192
+ duration: Infinity,
193
+ actionLabel: ["update.label", { ns: meta.profile.key }],
194
+ actionAlt: ["update.alt", { ns: meta.profile.key }],
195
+ onAction: () => relaunch()
196
+ });
197
+ return false;
198
+ });
199
+ const schedule = Schedule.fixed(Duration.hours(1)).pipe(Schedule.whileInput((keepChecking) => keepChecking));
200
+ const fiber = yield* backgroundAction.pipe(Effect.repeat(schedule), Effect.forkDaemon);
201
+ log.info("updater module initialized, update check scheduled", void 0, {
202
+ "~LogMeta": "~LogMeta",
203
+ F: __dxlog_file,
204
+ L: 185,
205
+ S: this
206
+ });
207
+ return [managerContribution, Capability.contributes(Capabilities.Null, null, () => Fiber.interrupt(fiber))];
208
+ }));
209
+ //#endregion
210
+ export { updater_default as default };
211
+
212
+ //# sourceMappingURL=chunk-updater.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-updater.mjs","names":[],"sources":["../../src/constants.ts","../../src/capabilities/updater.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n/// Stable port for the Tauri localhost asset server in production builds.\n/// Must match LOCALHOST_PORT in src-tauri/src/lib.rs.\nexport const TAURI_LOCALHOST_PORT = '26777';\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { type } from '@tauri-apps/plugin-os';\nimport { relaunch } from '@tauri-apps/plugin-process';\nimport * as Updater from '@tauri-apps/plugin-updater';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Match from 'effect/Match';\nimport * as Schedule from 'effect/Schedule';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { log } from '@dxos/log';\n\nimport { meta } from '#meta';\nimport { NativeCapabilities, type Update } from '#types';\n\nimport { TAURI_LOCALHOST_PORT } from '../constants';\n\nconst SUPPORTS_OTA = ['linux', 'macos', 'windows'];\n\n/** Safe wrapper around Updater.check(). Distinguishes \"no update\" (ok with null update) from a thrown error. */\nconst safeCheck = async (): Promise<{ ok: true; update: Updater.Update | null } | { ok: false; error: string }> => {\n try {\n return { ok: true, update: await Updater.check() };\n } catch (error) {\n log.error('failed to check for updates', { error });\n return { ok: false, error: formatError(error) };\n }\n};\n\n/** Safe wrapper around update.downloadAndInstall(). */\nconst safeDownloadAndInstall = async (\n update: Updater.Update,\n onEvent: (event: Updater.DownloadEvent) => void,\n): Promise<{ ok: true } | { ok: false; error: string }> => {\n try {\n await update.downloadAndInstall(onEvent);\n return { ok: true };\n } catch (error) {\n log.error('failed to download and install update', { error });\n return { ok: false, error: formatError(error) };\n }\n};\n\n/** Extract a user-readable error string from whatever the Tauri updater threw. */\nconst formatError = (error: unknown): string => {\n if (typeof error === 'string') {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const platform = type();\n const isDevServer = window.location.port !== TAURI_LOCALHOST_PORT;\n const enabled = SUPPORTS_OTA.includes(platform) && !isDevServer;\n\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const { invoke } = yield* Capability.get(Capabilities.OperationInvoker);\n\n const statusAtom = Atom.make<Update.Status>(enabled ? { kind: 'idle' } : { kind: 'unsupported' }).pipe(\n Atom.keepAlive,\n );\n\n // Updater.Update is a class with instance methods (downloadAndInstall) and can't live in an\n // atom value; cache it here between check and install.\n let pendingUpdate: Updater.Update | null = null;\n\n // Core: check for an update and update the status atom. Returns the update if available.\n const doCheck = async (): Promise<Updater.Update | null> => {\n registry.set(statusAtom, { kind: 'checking' });\n log.info('checking for updates');\n const result = await safeCheck();\n if (!result.ok) {\n pendingUpdate = null;\n registry.set(statusAtom, { kind: 'failed', error: result.error });\n return null;\n }\n const update = result.update;\n if (!update?.available) {\n pendingUpdate = null;\n registry.set(statusAtom, { kind: 'up-to-date', checkedAt: Date.now() });\n return null;\n }\n log.info('update available', { version: update.version });\n pendingUpdate = update;\n registry.set(statusAtom, { kind: 'available', version: update.version });\n return update;\n };\n\n // Core: download + install the cached pending update, streaming progress to the status atom.\n const doInstall = async (): Promise<boolean> => {\n const update = pendingUpdate;\n if (!update) {\n return false;\n }\n let downloaded = 0;\n let contentLength = 0;\n registry.set(statusAtom, { kind: 'downloading', downloaded: 0, contentLength: 0 });\n const onEvent = Match.type<Updater.DownloadEvent>().pipe(\n Match.when({ event: 'Started' }, (event) => {\n contentLength = event.data.contentLength ?? 0;\n registry.set(statusAtom, { kind: 'downloading', downloaded, contentLength });\n }),\n Match.when({ event: 'Progress' }, (event) => {\n downloaded += event.data.chunkLength;\n registry.set(statusAtom, { kind: 'downloading', downloaded, contentLength });\n }),\n Match.when({ event: 'Finished' }, () => {\n log.info('download completed');\n }),\n Match.exhaustive,\n );\n const result = await safeDownloadAndInstall(update, onEvent);\n if (result.ok) {\n registry.set(statusAtom, { kind: 'ready' });\n return true;\n }\n registry.set(statusAtom, { kind: 'failed', error: result.error });\n return false;\n };\n\n const manager: Update.Manager = {\n status: statusAtom,\n check: async () => {\n if (!enabled) {\n return;\n }\n await doCheck();\n },\n install: async () => {\n if (!enabled) {\n return;\n }\n await doInstall();\n },\n relaunch: async () => {\n await relaunch();\n },\n };\n\n const managerContribution = Capability.contributes(NativeCapabilities.UpdateManager, manager);\n\n if (!enabled) {\n log.info('updater disabled', { platform, port: window.location.port });\n return [managerContribution];\n }\n\n // Background flow: periodic check + auto-install + toast when ready.\n // The toast is the entry point for users who weren't watching the settings panel.\n const backgroundAction = Effect.gen(function* () {\n const update = yield* Effect.promise(() => doCheck());\n if (!update) {\n return true;\n }\n const ok = yield* Effect.promise(() => doInstall());\n if (!ok) {\n return true;\n }\n yield* invoke(LayoutOperation.AddToast, {\n id: `${meta.profile.key}.update-ready`,\n title: ['update-ready.label', { ns: meta.profile.key }],\n description: ['update-ready.description', { ns: meta.profile.key }],\n duration: Infinity,\n actionLabel: ['update.label', { ns: meta.profile.key }],\n actionAlt: ['update.alt', { ns: meta.profile.key }],\n onAction: () => relaunch(),\n });\n return false;\n });\n\n const schedule = Schedule.fixed(Duration.hours(1)).pipe(\n Schedule.whileInput((keepChecking: boolean) => keepChecking),\n );\n const fiber = yield* backgroundAction.pipe(Effect.repeat(schedule), Effect.forkDaemon);\n log.info('updater module initialized, update check scheduled');\n\n return [\n managerContribution,\n // Return the interruption effect directly; Fiber.interrupt is async and would throw\n // AsyncFiberException if wrapped in Effect.runSync.\n Capability.contributes(Capabilities.Null, null, () => Fiber.interrupt(fiber)),\n ];\n }),\n);\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { lazy } from "react";
2
+ //#region src/containers/index.ts
3
+ var NativeSettings = lazy(() => import("./chunk-NativeSettings.mjs"));
4
+ //#endregion
5
+ export { NativeSettings };
6
+
7
+ //# sourceMappingURL=containers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const NativeSettings: ComponentType<any> = lazy(() => import('./NativeSettings'));\n"],"mappings":";;AAMA,IAAa,iBAAqC,WAAW,OAAO,6BAAmB"}
@@ -0,0 +1,2 @@
1
+ import { t as meta } from "./chunk-meta.mjs";
2
+ export { meta };
@@ -0,0 +1,2 @@
1
+ import { t as meta } from "./chunk-meta.mjs";
2
+ export { meta };
@@ -0,0 +1,8 @@
1
+ import { t as meta } from "./chunk-meta.mjs";
2
+ import { Plugin } from "@dxos/app-framework";
3
+ //#region src/plugin.ts
4
+ var NativePlugin = Plugin.lazy(meta, () => import("#plugin"));
5
+ //#endregion
6
+ export { NativePlugin };
7
+
8
+ //# sourceMappingURL=plugin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.mjs","names":[],"sources":["../../src/plugin.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport const NativePlugin = Plugin.lazy(meta, () => import('#plugin'));\n"],"mappings":";;;AAQA,IAAa,eAAe,OAAO,KAAK,YAAY,OAAO,UAAU"}
@@ -0,0 +1,26 @@
1
+ import { meta } from "#meta";
2
+ //#region src/translations.ts
3
+ var translations = [{ "en-US": { [meta.profile.key]: {
4
+ "update-ready.label": "Ready to update",
5
+ "update-ready.description": "A new version of Composer is available.",
6
+ "update.label": "Update",
7
+ "update.alt": "Relaunch the app to update",
8
+ "settings.updates.label": "Updates",
9
+ "settings.updates.check.label": "Check for updates",
10
+ "settings.updates.checking.label": "Checking…",
11
+ "settings.updates.update-now.label": "Update now",
12
+ "settings.updates.downloading.label": "Downloading…",
13
+ "settings.updates.relaunch.label": "Restart to install",
14
+ "settings.updates.idle.message": "Check now for a newer version of Composer.",
15
+ "settings.updates.checking.message": "Checking for updates…",
16
+ "settings.updates.up-to-date.message": "You are running the latest version of Composer. Checked {{checkedAt}}.",
17
+ "settings.updates.available.message": "Version {{version}} is available.",
18
+ "settings.updates.downloading.message": "Downloading… {{percent}}%",
19
+ "settings.updates.ready.message": "Update ready. Restart Composer to apply.",
20
+ "settings.updates.failed.message": "Update failed: {{error}}",
21
+ "settings.updates.unsupported.message": "Updates are not available on this platform."
22
+ } } }];
23
+ //#endregion
24
+ export { translations };
25
+
26
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.profile.key]: {\n 'update-ready.label': 'Ready to update',\n 'update-ready.description': 'A new version of Composer is available.',\n 'update.label': 'Update',\n 'update.alt': 'Relaunch the app to update',\n 'settings.updates.label': 'Updates',\n 'settings.updates.check.label': 'Check for updates',\n 'settings.updates.checking.label': 'Checking…',\n 'settings.updates.update-now.label': 'Update now',\n 'settings.updates.downloading.label': 'Downloading…',\n 'settings.updates.relaunch.label': 'Restart to install',\n 'settings.updates.idle.message': 'Check now for a newer version of Composer.',\n 'settings.updates.checking.message': 'Checking for updates…',\n 'settings.updates.up-to-date.message': 'You are running the latest version of Composer. Checked {{checkedAt}}.',\n 'settings.updates.available.message': 'Version {{version}} is available.',\n 'settings.updates.downloading.message': 'Downloading… {{percent}}%',\n 'settings.updates.ready.message': 'Update ready. Restart Composer to apply.',\n 'settings.updates.failed.message': 'Update failed: {{error}}',\n 'settings.updates.unsupported.message': 'Updates are not available on this platform.',\n },\n },\n },\n] as const satisfies Resource[];\n"],"mappings":";;AAQA,IAAa,eAAe,CAC1B,EACE,SAAS,GACN,KAAK,QAAQ,MAAM;CAClB,sBAAsB;CACtB,4BAA4B;CAC5B,gBAAgB;CAChB,cAAc;CACd,0BAA0B;CAC1B,gCAAgC;CAChC,mCAAmC;CACnC,qCAAqC;CACrC,sCAAsC;CACtC,mCAAmC;CACnC,iCAAiC;CACjC,qCAAqC;CACrC,uCAAuC;CACvC,sCAAsC;CACtC,wCAAwC;CACxC,kCAAkC;CAClC,mCAAmC;CACnC,wCAAwC;AAC1C,EACF,EACF,CACF"}
@@ -0,0 +1,33 @@
1
+ import { Capability } from "@dxos/app-framework";
2
+ import { meta } from "#meta";
3
+ import * as Schema from "effect/Schema";
4
+ //#region \0rolldown/runtime.js
5
+ var __defProp = Object.defineProperty;
6
+ var __exportAll = (all, no_symbols) => {
7
+ let target = {};
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ return target;
14
+ };
15
+ //#endregion
16
+ //#region src/types/NativeCapabilities.ts
17
+ var NativeCapabilities_exports = /* @__PURE__ */ __exportAll({
18
+ Settings: () => Settings$1,
19
+ UpdateManager: () => UpdateManager
20
+ });
21
+ var Settings$1 = Capability.make(`${meta.profile.key}.capability.settings`);
22
+ var UpdateManager = Capability.make(`${meta.profile.key}.capability.update-manager`);
23
+ //#endregion
24
+ //#region src/types/Settings.ts
25
+ var Settings_exports = /* @__PURE__ */ __exportAll({ Settings: () => Settings });
26
+ var Settings = Schema.mutable(Schema.Struct({}));
27
+ //#endregion
28
+ //#region src/types/Update.ts
29
+ var Update_exports = /* @__PURE__ */ __exportAll({});
30
+ //#endregion
31
+ export { NativeCapabilities_exports as NativeCapabilities, Settings_exports as Settings, Update_exports as Update };
32
+
33
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../src/types/NativeCapabilities.ts","../../src/types/Settings.ts","../../src/types/Update.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type { Atom } from '@effect-atom/atom';\n\nimport { Capability } from '@dxos/app-framework';\n\nimport { meta } from '#meta';\n\n// Inline imports to avoid `Settings` / `Update` namespace aliases colliding with the\n// capability constants exported below.\nexport const Settings = Capability.make<Atom.Writable<import('./Settings').Settings>>(\n `${meta.profile.key}.capability.settings`,\n);\nexport const UpdateManager = Capability.make<import('./Update').Manager>(\n `${meta.profile.key}.capability.update-manager`,\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nexport const Settings = Schema.mutable(Schema.Struct({}));\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom';\n\n// @import-as-namespace\n\nexport type Status =\n | { kind: 'unsupported' }\n | { kind: 'idle' }\n | { kind: 'checking' }\n | { kind: 'up-to-date'; checkedAt: number }\n | { kind: 'available'; version: string }\n | { kind: 'downloading'; downloaded: number; contentLength: number }\n | { kind: 'ready' }\n | { kind: 'failed'; error: string };\n\nexport type Manager = {\n status: Atom.Writable<Status>;\n check: () => Promise<void>;\n install: () => Promise<void>;\n relaunch: () => Promise<void>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAcA,IAAa,aAAW,WAAW,KACjC,GAAG,KAAK,QAAQ,IAAI,qBACtB;AACA,IAAa,gBAAgB,WAAW,KACtC,GAAG,KAAK,QAAQ,IAAI,2BACtB;;;;ACXA,IAAa,WAAW,OAAO,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC"}
@@ -3,6 +3,6 @@ import { Capability } from '@dxos/app-framework';
3
3
  import { AppCapabilities } from '@dxos/app-toolkit';
4
4
  import { AssistantCapabilities } from '@dxos/plugin-assistant';
5
5
  export type OllamaCapabilities = Capability.Capability<typeof AppCapabilities.AiModelResolver> | Capability.Capability<typeof AssistantCapabilities.OllamaManager>;
6
- declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any], Error, Capability.Service>;
6
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any], Error, import("effect/Scope").Scope | Capability.Service>;
7
7
  export default _default;
8
8
  //# sourceMappingURL=ollama.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=react-surface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=settings.d.ts.map
@@ -3,6 +3,6 @@ import { Capability } from '@dxos/app-framework';
3
3
  /**
4
4
  * Listens for spotlight:invoke events from the popover window and dispatches the corresponding operation.
5
5
  */
6
- declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, Capability.Service>;
6
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, import("effect/Scope").Scope | Capability.Service>;
7
7
  export default _default;
8
8
  //# sourceMappingURL=spotlight-listener.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any] | [Capability.Any, Capability.Any], Error, Capability.Service>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any] | [Capability.Any, Capability.Any], Error, import("effect/Scope").Scope | Capability.Service>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=updater.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { type AppSurface } from '@dxos/app-toolkit/ui';
3
- import { type Settings } from '#types';
4
- export type NativeSettingsProps = AppSurface.SettingsProps<Settings.Settings>;
5
- export declare const NativeSettings: (_props: NativeSettingsProps) => React.JSX.Element;
2
+ export declare function NativeSettings(): React.JSX.Element;
3
+ export declare namespace NativeSettings {
4
+ var displayName: string;
5
+ }
6
6
  //# sourceMappingURL=NativeSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeSettings.d.ts","sourceRoot":"","sources":["../../../../../src/containers/NativeSettings/NativeSettings.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAGxD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,OAAO,EAAsB,KAAK,QAAQ,EAAe,MAAM,QAAQ,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAY9E,eAAO,MAAM,cAAc,WAAY,mBAAmB,sBAsCzD,CAAC"}
1
+ {"version":3,"file":"NativeSettings.d.ts","sourceRoot":"","sources":["../../../../../src/containers/NativeSettings/NativeSettings.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAmC,MAAM,OAAO,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Atom } from '@effect-atom/atom-react';
1
+ import type { Atom } from '@effect-atom/atom';
2
2
  import { Capability } from '@dxos/app-framework';
3
3
  export declare const Settings: Capability.InterfaceDef<Atom.Writable<import("./Settings").Settings, import("./Settings").Settings>>;
4
4
  export declare const UpdateManager: Capability.InterfaceDef<import("./Update").Manager>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/types/NativeCapabilities.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMjD,eAAO,MAAM,QAAQ,sGAEpB,CAAC;AACF,eAAO,MAAM,aAAa,qDAEzB,CAAC"}
1
+ {"version":3,"file":"NativeCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/types/NativeCapabilities.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMjD,eAAO,MAAM,QAAQ,sGAEpB,CAAC;AACF,eAAO,MAAM,aAAa,qDAEzB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type Atom } from '@effect-atom/atom-react';
1
+ import { type Atom } from '@effect-atom/atom';
2
2
  export type Status = {
3
3
  kind: 'unsupported';
4
4
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../../../src/types/Update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAIpD,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../../../src/types/Update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC"}