@dxos/plugin-native 0.9.1-staging.ee54ba693a → 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.
- package/dist/lib/NativePlugin.mjs +30 -0
- package/dist/lib/NativePlugin.mjs.map +1 -0
- package/dist/lib/capabilities.mjs +11 -0
- package/dist/lib/capabilities.mjs.map +1 -0
- package/dist/lib/chunk-NativeSettings.mjs +102 -0
- package/dist/lib/chunk-NativeSettings.mjs.map +1 -0
- package/dist/lib/{neutral/chunk-WU6IZ56J.mjs → chunk-meta.mjs} +15 -24
- package/dist/lib/chunk-meta.mjs.map +1 -0
- package/dist/lib/chunk-ollama.mjs +307 -0
- package/dist/lib/chunk-ollama.mjs.map +1 -0
- package/dist/lib/chunk-react-surface.mjs +16 -0
- package/dist/lib/chunk-react-surface.mjs.map +1 -0
- package/dist/lib/chunk-settings.mjs +23 -0
- package/dist/lib/chunk-settings.mjs.map +1 -0
- package/dist/lib/chunk-spotlight-listener.mjs +61 -0
- package/dist/lib/chunk-spotlight-listener.mjs.map +1 -0
- package/dist/lib/chunk-updater.mjs +212 -0
- package/dist/lib/chunk-updater.mjs.map +1 -0
- package/dist/lib/containers.mjs +7 -0
- package/dist/lib/containers.mjs.map +1 -0
- package/dist/lib/index.mjs +2 -0
- package/dist/lib/meta.mjs +2 -0
- package/dist/lib/plugin.mjs +8 -0
- package/dist/lib/plugin.mjs.map +1 -0
- package/dist/lib/translations.mjs +26 -0
- package/dist/lib/translations.mjs.map +1 -0
- package/dist/lib/types.mjs +33 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/types/src/capabilities/ollama.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/spotlight-listener.d.ts +1 -1
- package/dist/types/src/capabilities/updater.d.ts +1 -1
- package/dist/types/src/containers/NativeSettings/NativeSettings.d.ts +4 -4
- package/dist/types/src/containers/NativeSettings/NativeSettings.d.ts.map +1 -1
- package/dist/types/src/types/NativeCapabilities.d.ts +1 -1
- package/dist/types/src/types/NativeCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/Update.d.ts +1 -1
- package/dist/types/src/types/Update.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +26 -25
- package/src/capabilities/ollama.ts +1 -1
- package/src/capabilities/{react-surface.tsx → react-surface.ts} +2 -7
- package/src/capabilities/updater.ts +1 -1
- package/src/containers/NativeSettings/NativeSettings.tsx +9 -6
- package/src/types/NativeCapabilities.ts +1 -1
- package/src/types/Update.ts +1 -1
- package/dist/lib/neutral/NativePlugin.mjs +0 -46
- package/dist/lib/neutral/NativePlugin.mjs.map +0 -7
- package/dist/lib/neutral/NativeSettings-33K63AVG.mjs +0 -120
- package/dist/lib/neutral/NativeSettings-33K63AVG.mjs.map +0 -7
- package/dist/lib/neutral/capabilities/index.mjs +0 -17
- package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-WU6IZ56J.mjs.map +0 -7
- package/dist/lib/neutral/containers/index.mjs +0 -9
- package/dist/lib/neutral/containers/index.mjs.map +0 -7
- package/dist/lib/neutral/index.mjs +0 -8
- package/dist/lib/neutral/index.mjs.map +0 -7
- package/dist/lib/neutral/meta.json +0 -1
- package/dist/lib/neutral/meta.mjs +0 -8
- package/dist/lib/neutral/meta.mjs.map +0 -7
- package/dist/lib/neutral/ollama-HZEXAT2P.mjs +0 -312
- package/dist/lib/neutral/ollama-HZEXAT2P.mjs.map +0 -7
- package/dist/lib/neutral/plugin.mjs +0 -12
- package/dist/lib/neutral/plugin.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-YST5DQA3.mjs +0 -27
- package/dist/lib/neutral/react-surface-YST5DQA3.mjs.map +0 -7
- package/dist/lib/neutral/settings-S5MFUI42.mjs +0 -28
- package/dist/lib/neutral/settings-S5MFUI42.mjs.map +0 -7
- package/dist/lib/neutral/spotlight-listener-K7S6LGL3.mjs +0 -48
- package/dist/lib/neutral/spotlight-listener-K7S6LGL3.mjs.map +0 -7
- package/dist/lib/neutral/translations.mjs +0 -34
- package/dist/lib/neutral/translations.mjs.map +0 -7
- package/dist/lib/neutral/types/index.mjs +0 -31
- package/dist/lib/neutral/types/index.mjs.map +0 -7
- package/dist/lib/neutral/updater-5ETKR4S3.mjs +0 -244
- 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 @@
|
|
|
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,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,
|
|
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.
|
|
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,
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
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
|
|
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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../../../src/types/Update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,
|
|
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"}
|