@dxos/plugin-native 0.8.4-main.ead640a → 0.8.4-main.effb148878

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 (108) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/NativePlugin.mjs +34 -0
  4. package/dist/lib/neutral/NativePlugin.mjs.map +7 -0
  5. package/dist/lib/neutral/NativeSettings-CLYG5TJH.mjs +113 -0
  6. package/dist/lib/neutral/NativeSettings-CLYG5TJH.mjs.map +7 -0
  7. package/dist/lib/neutral/capabilities/index.mjs +17 -0
  8. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  9. package/dist/lib/neutral/chunk-BJW75IOZ.mjs +32 -0
  10. package/dist/lib/neutral/chunk-BJW75IOZ.mjs.map +7 -0
  11. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  12. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  13. package/dist/lib/neutral/components/index.mjs +9 -0
  14. package/dist/lib/neutral/components/index.mjs.map +7 -0
  15. package/dist/lib/neutral/index.mjs +8 -0
  16. package/dist/lib/neutral/index.mjs.map +7 -0
  17. package/dist/lib/neutral/meta.json +1 -0
  18. package/dist/lib/neutral/meta.mjs +8 -0
  19. package/dist/lib/neutral/meta.mjs.map +7 -0
  20. package/dist/lib/neutral/ollama-BHWFTROM.mjs +62 -0
  21. package/dist/lib/neutral/ollama-BHWFTROM.mjs.map +7 -0
  22. package/dist/lib/neutral/plugin.mjs +12 -0
  23. package/dist/lib/neutral/plugin.mjs.map +7 -0
  24. package/dist/lib/neutral/react-surface-W46XEBPK.mjs +27 -0
  25. package/dist/lib/neutral/react-surface-W46XEBPK.mjs.map +7 -0
  26. package/dist/lib/neutral/settings-HF6TQNU4.mjs +28 -0
  27. package/dist/lib/neutral/settings-HF6TQNU4.mjs.map +7 -0
  28. package/dist/lib/neutral/spotlight-listener-K7S6LGL3.mjs +48 -0
  29. package/dist/lib/neutral/spotlight-listener-K7S6LGL3.mjs.map +7 -0
  30. package/dist/lib/neutral/translations.mjs +35 -0
  31. package/dist/lib/neutral/translations.mjs.map +7 -0
  32. package/dist/lib/neutral/types/index.mjs +31 -0
  33. package/dist/lib/neutral/types/index.mjs.map +7 -0
  34. package/dist/lib/neutral/updater-JEBXWSSK.mjs +244 -0
  35. package/dist/lib/neutral/updater-JEBXWSSK.mjs.map +7 -0
  36. package/dist/types/src/NativePlugin.d.ts +3 -1
  37. package/dist/types/src/NativePlugin.d.ts.map +1 -1
  38. package/dist/types/src/capabilities/index.d.ts +6 -3
  39. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/ollama.d.ts +5 -2
  41. package/dist/types/src/capabilities/ollama.d.ts.map +1 -1
  42. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  43. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/settings.d.ts +7 -0
  45. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/spotlight-listener.d.ts +8 -0
  47. package/dist/types/src/capabilities/spotlight-listener.d.ts.map +1 -0
  48. package/dist/types/src/capabilities/updater.d.ts +4 -2
  49. package/dist/types/src/capabilities/updater.d.ts.map +1 -1
  50. package/dist/types/src/components/NativeSettings/NativeSettings.d.ts +6 -0
  51. package/dist/types/src/components/NativeSettings/NativeSettings.d.ts.map +1 -0
  52. package/dist/types/src/components/NativeSettings/index.d.ts +2 -0
  53. package/dist/types/src/components/NativeSettings/index.d.ts.map +1 -0
  54. package/dist/types/src/components/index.d.ts +3 -0
  55. package/dist/types/src/components/index.d.ts.map +1 -0
  56. package/dist/types/src/constants.d.ts +2 -0
  57. package/dist/types/src/constants.d.ts.map +1 -0
  58. package/dist/types/src/index.d.ts +0 -1
  59. package/dist/types/src/index.d.ts.map +1 -1
  60. package/dist/types/src/meta.d.ts +2 -2
  61. package/dist/types/src/meta.d.ts.map +1 -1
  62. package/dist/types/src/plugin.d.ts +3 -0
  63. package/dist/types/src/plugin.d.ts.map +1 -0
  64. package/dist/types/src/translations.d.ts +20 -6
  65. package/dist/types/src/translations.d.ts.map +1 -1
  66. package/dist/types/src/types/NativeCapabilities.d.ts +5 -0
  67. package/dist/types/src/types/NativeCapabilities.d.ts.map +1 -0
  68. package/dist/types/src/types/Settings.d.ts +5 -0
  69. package/dist/types/src/types/Settings.d.ts.map +1 -0
  70. package/dist/types/src/types/Update.d.ts +30 -0
  71. package/dist/types/src/types/Update.d.ts.map +1 -0
  72. package/dist/types/src/types/index.d.ts +4 -0
  73. package/dist/types/src/types/index.d.ts.map +1 -0
  74. package/dist/types/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +77 -24
  76. package/src/NativePlugin.tsx +22 -20
  77. package/src/capabilities/index.ts +6 -4
  78. package/src/capabilities/ollama.ts +26 -20
  79. package/src/capabilities/react-surface.tsx +29 -0
  80. package/src/capabilities/settings.ts +31 -0
  81. package/src/capabilities/spotlight-listener.ts +58 -0
  82. package/src/capabilities/updater.ts +159 -50
  83. package/src/components/NativeSettings/NativeSettings.tsx +132 -0
  84. package/src/components/NativeSettings/index.ts +5 -0
  85. package/src/components/index.ts +7 -0
  86. package/src/constants.ts +7 -0
  87. package/src/index.ts +0 -1
  88. package/src/meta.ts +25 -4
  89. package/src/plugin.ts +9 -0
  90. package/src/translations.ts +20 -5
  91. package/src/types/NativeCapabilities.ts +16 -0
  92. package/src/types/Settings.ts +11 -0
  93. package/src/types/Update.ts +24 -0
  94. package/src/types/index.ts +7 -0
  95. package/dist/lib/browser/chunk-HFW3KCZU.mjs +0 -10
  96. package/dist/lib/browser/chunk-HFW3KCZU.mjs.map +0 -7
  97. package/dist/lib/browser/index.mjs +0 -56
  98. package/dist/lib/browser/index.mjs.map +0 -7
  99. package/dist/lib/browser/meta.json +0 -1
  100. package/dist/lib/browser/ollama-FWIW4XTL.mjs +0 -90
  101. package/dist/lib/browser/ollama-FWIW4XTL.mjs.map +0 -7
  102. package/dist/lib/browser/updater-3XUIXC4F.mjs +0 -138
  103. package/dist/lib/browser/updater-3XUIXC4F.mjs.map +0 -7
  104. package/dist/lib/browser/window-6G542FZL.mjs +0 -34
  105. package/dist/lib/browser/window-6G542FZL.mjs.map +0 -7
  106. package/dist/types/src/capabilities/window.d.ts +0 -4
  107. package/dist/types/src/capabilities/window.d.ts.map +0 -1
  108. package/src/capabilities/window.ts +0 -49
@@ -0,0 +1,27 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/react-surface.tsx
4
+ import * as Effect from "effect/Effect";
5
+ import React from "react";
6
+ import { Capabilities, Capability } from "@dxos/app-framework";
7
+ import { Surface, useSettingsState } from "@dxos/app-framework/ui";
8
+ import { AppSurface } from "@dxos/app-toolkit/ui";
9
+ import { NativeSettings } from "#components";
10
+ import { meta } from "#meta";
11
+ var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
12
+ Surface.create({
13
+ id: "plugin-settings",
14
+ filter: AppSurface.settings(AppSurface.Article, meta.id),
15
+ component: ({ data: { subject } }) => {
16
+ const { settings, updateSettings } = useSettingsState(subject.atom);
17
+ return /* @__PURE__ */ React.createElement(NativeSettings, {
18
+ settings,
19
+ onSettingsChange: updateSettings
20
+ });
21
+ }
22
+ })
23
+ ])));
24
+ export {
25
+ react_surface_default as default
26
+ };
27
+ //# sourceMappingURL=react-surface-W46XEBPK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useSettingsState } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\n\nimport { NativeSettings } from '#components';\nimport { meta } from '#meta';\nimport { type Settings } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: 'plugin-settings',\n filter: AppSurface.settings(AppSurface.Article, meta.id),\n component: ({ data: { subject } }) => {\n const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);\n return <NativeSettings settings={settings} onSettingsChange={updateSettings} />;\n },\n }),\n ]),\n ),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,SAASC,wBAAwB;AAC1C,SAASC,kBAAkB;AAE3B,SAASC,sBAAsB;AAC/B,SAASC,YAAY;AAGrB,IAAA,wBAAeL,WAAWM,WAAW,MAC5BC,eACLP,WAAWQ,YAAYT,aAAaU,cAAc;EAChDR,QAAQS,OAAO;IACbC,IAAI;IACJC,QAAQT,WAAWU,SAASV,WAAWW,SAAST,KAAKM,EAAE;IACvDI,WAAW,CAAC,EAAEC,MAAM,EAAEC,QAAO,EAAE,MAAE;AAC/B,YAAM,EAAEJ,UAAUK,eAAc,IAAKhB,iBAAoCe,QAAQE,IAAI;AACrF,aAAO,sBAAA,cAACf,gBAAAA;QAAeS;QAAoBO,kBAAkBF;;IAC/D;EACF,CAAA;CACD,CAAA,CAAA;",
6
+ "names": ["Effect", "React", "Capabilities", "Capability", "Surface", "useSettingsState", "AppSurface", "NativeSettings", "meta", "makeModule", "succeed", "contributes", "ReactSurface", "create", "id", "filter", "settings", "Article", "component", "data", "subject", "updateSettings", "atom", "onSettingsChange"]
7
+ }
@@ -0,0 +1,28 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/settings.ts
4
+ import * as Effect from "effect/Effect";
5
+ import { Capability } from "@dxos/app-framework";
6
+ import { AppCapabilities } from "@dxos/app-toolkit";
7
+ import { createKvsStore } from "@dxos/effect";
8
+ import { meta } from "#meta";
9
+ import { NativeCapabilities, Settings } from "#types";
10
+ var settings_default = Capability.makeModule(() => Effect.sync(() => {
11
+ const settingsAtom = createKvsStore({
12
+ key: meta.id,
13
+ schema: Settings.Settings,
14
+ defaultValue: () => ({})
15
+ });
16
+ return [
17
+ Capability.contributes(NativeCapabilities.Settings, settingsAtom),
18
+ Capability.contributes(AppCapabilities.Settings, {
19
+ prefix: meta.id,
20
+ schema: Settings.Settings,
21
+ atom: settingsAtom
22
+ })
23
+ ];
24
+ }));
25
+ export {
26
+ settings_default as default
27
+ };
28
+ //# sourceMappingURL=settings-HF6TQNU4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "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.id,\n schema: Settings.Settings,\n defaultValue: () => ({}),\n });\n\n return [\n Capability.contributes(NativeCapabilities.Settings, settingsAtom),\n Capability.contributes(AppCapabilities.Settings, {\n prefix: meta.id,\n schema: Settings.Settings,\n atom: settingsAtom,\n }),\n ];\n }),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,sBAAsB;AAE/B,SAASC,YAAY;AACrB,SAASC,oBAAoBC,gBAAgB;AAE7C,IAAA,mBAAeL,WAAWM,WAAW,MAC5BC,YAAK,MAAA;AACV,QAAMC,eAAeN,eAAe;IAClCO,KAAKN,KAAKO;IACVC,QAAQN,SAASA;IACjBO,cAAc,OAAO,CAAC;EACxB,CAAA;AAEA,SAAO;IACLZ,WAAWa,YAAYT,mBAAmBC,UAAUG,YAAAA;IACpDR,WAAWa,YAAYZ,gBAAgBI,UAAU;MAC/CS,QAAQX,KAAKO;MACbC,QAAQN,SAASA;MACjBU,MAAMP;IACR,CAAA;;AAEJ,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "createKvsStore", "meta", "NativeCapabilities", "Settings", "makeModule", "sync", "settingsAtom", "key", "id", "schema", "defaultValue", "contributes", "prefix", "atom"]
7
+ }
@@ -0,0 +1,48 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/spotlight-listener.ts
4
+ import * as Effect from "effect/Effect";
5
+ import { Capabilities, Capability } from "@dxos/app-framework";
6
+ import { LayoutOperation } from "@dxos/app-toolkit";
7
+ import { log } from "@dxos/log";
8
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-native/src/capabilities/spotlight-listener.ts";
9
+ var spotlight_listener_default = Capability.makeModule(Effect.fnUntraced(function* () {
10
+ const { invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);
11
+ const unlisten = yield* Effect.promise(async () => {
12
+ const { listen } = await import("@tauri-apps/api/event");
13
+ const { getCurrentWindow } = await import("@tauri-apps/api/window");
14
+ return listen("spotlight:invoke", async (event) => {
15
+ const { operation, payload } = event.payload;
16
+ log.info("Received spotlight invoke event", {
17
+ operation,
18
+ payload
19
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 17, S: this });
20
+ try {
21
+ switch (operation) {
22
+ case "open":
23
+ await invokePromise(LayoutOperation.Open, payload);
24
+ break;
25
+ case "switch-workspace":
26
+ await invokePromise(LayoutOperation.SwitchWorkspace, payload);
27
+ break;
28
+ default:
29
+ log.warn("Unknown spotlight operation", {
30
+ operation
31
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 30, S: this });
32
+ }
33
+ const mainWindow = getCurrentWindow();
34
+ await mainWindow.show();
35
+ await mainWindow.setFocus();
36
+ } catch (err) {
37
+ log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 38, S: this });
38
+ }
39
+ });
40
+ });
41
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
42
+ unlisten();
43
+ }));
44
+ }));
45
+ export {
46
+ spotlight_listener_default as default
47
+ };
48
+ //# sourceMappingURL=spotlight-listener-K7S6LGL3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/spotlight-listener.ts"],
4
+ "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"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,WAAW;AAQpB,IAAA,eAAA;AAOI,IAAMC,6BAAAA,WAAkBL,WAAe,kBAAA,aAAA;QACrC,EAAA,cAAgB,IAAG,OAAM,WAAO,IAAA,aAAA,gBAAA;QAChC,WAAQM,OAAkB,eAAS,YAAO;AAE1C,UAAA,EAAOC,OAA+B,IAAA,MAAA,OAAA,uBAA2BC;UAC/D,EAAA,iBAAmBC,IAAAA,MAAYD,OAAMC,wBAAO;WAC5CL,OAAS,oBAAA,OAAA,UAAmC;YAAEM,EAAAA,WAAAA,QAAAA,IAAAA,MAAAA;UAAWD,KAAAA,mCAAAA;QAAQ;QAC7D;uBACMC,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;;2BAEEC;eACN;AACF,kBAAK,cAAA,gBAAA,MAAA,OAAA;AACH;eACA;AACF,kBAAA,cAAA,gBAAA,iBAAA,OAAA;AACEP;;AAAoD,gBAAA,KAAA,+BAAA;cACxD;YAEMQ,GAAAA,EAAAA,YAAaN,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;QACnB;AACA,cAAMM,aAAWC,iBAAQ;AACzB,cAAOC,WAAK,KAAA;AACZV,cAAIW,WAAMD,SAAAA;MACZ,SAAA,KAAA;AACF,YAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;MACF;IAEA,CAAA;;SAGE,WAAA,YAAA,aAAA,MAAA,MAAA,MAAA,YAAA,MAAA;AAGJ,aAAA;;;",
6
+ "names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "log", "unlisten", "getCurrentWindow", "listen", "event", "payload", "operation", "invokePromise", "mainWindow", "setFocus", "err", "catch"]
7
+ }
@@ -0,0 +1,35 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/translations.ts
4
+ import { meta } from "#meta";
5
+ var translations = [
6
+ {
7
+ "en-US": {
8
+ [meta.id]: {
9
+ "update-ready.label": "Ready to update",
10
+ "update-ready.description": "A new version of Composer is available.",
11
+ "update.label": "Update",
12
+ "update.alt": "Relaunch the app to update",
13
+ "settings.title": "App",
14
+ "settings.updates.label": "Updates",
15
+ "settings.updates.check.label": "Check for updates",
16
+ "settings.updates.checking.label": "Checking\u2026",
17
+ "settings.updates.update-now.label": "Update now",
18
+ "settings.updates.downloading.label": "Downloading\u2026",
19
+ "settings.updates.relaunch.label": "Restart to install",
20
+ "settings.updates.idle.message": "Check now for a newer version of Composer.",
21
+ "settings.updates.checking.message": "Checking for updates\u2026",
22
+ "settings.updates.up-to-date.message": "You are running the latest version of Composer. Checked {{checkedAt}}.",
23
+ "settings.updates.available.message": "Version {{version}} is available.",
24
+ "settings.updates.downloading.message": "Downloading\u2026 {{percent}}%",
25
+ "settings.updates.ready.message": "Update ready. Restart Composer to apply.",
26
+ "settings.updates.failed.message": "Update failed: {{error}}",
27
+ "settings.updates.unsupported.message": "Updates are not available on this platform."
28
+ }
29
+ }
30
+ }
31
+ ];
32
+ export {
33
+ translations
34
+ };
35
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/translations.ts"],
4
+ "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.id]: {\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.title': 'App',\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"],
5
+ "mappings": ";;;AAMA,SAASA,YAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,KAAKE,EAAE,GAAG;QACT,sBAAsB;QACtB,4BAA4B;QAC5B,gBAAgB;QAChB,cAAc;QACd,kBAAkB;QAClB,0BAA0B;QAC1B,gCAAgC;QAChC,mCAAmC;QACnC,qCAAqC;QACrC,sCAAsC;QACtC,mCAAmC;QACnC,iCAAiC;QACjC,qCAAqC;QACrC,uCAAuC;QACvC,sCAAsC;QACtC,wCAAwC;QACxC,kCAAkC;QAClC,mCAAmC;QACnC,wCAAwC;MAC1C;IACF;EACF;;",
6
+ "names": ["meta", "translations", "id"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import {
2
+ __export
3
+ } from "../chunk-J5LGTIGS.mjs";
4
+
5
+ // src/types/NativeCapabilities.ts
6
+ var NativeCapabilities_exports = {};
7
+ __export(NativeCapabilities_exports, {
8
+ Settings: () => Settings,
9
+ UpdateManager: () => UpdateManager
10
+ });
11
+ import { Capability } from "@dxos/app-framework";
12
+ import { meta } from "#meta";
13
+ var Settings = Capability.make(`${meta.id}.capability.settings`);
14
+ var UpdateManager = Capability.make(`${meta.id}.capability.update-manager`);
15
+
16
+ // src/types/Settings.ts
17
+ var Settings_exports = {};
18
+ __export(Settings_exports, {
19
+ Settings: () => Settings2
20
+ });
21
+ import * as Schema from "effect/Schema";
22
+ var Settings2 = Schema.mutable(Schema.Struct({}));
23
+
24
+ // src/types/Update.ts
25
+ var Update_exports = {};
26
+ export {
27
+ NativeCapabilities_exports as NativeCapabilities,
28
+ Settings_exports as Settings,
29
+ Update_exports as Update
30
+ };
31
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/types/NativeCapabilities.ts", "../../../../src/types/Settings.ts", "../../../../src/types/Update.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type { Atom } from '@effect-atom/atom-react';\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>>(`${meta.id}.capability.settings`);\nexport const UpdateManager = Capability.make<import('./Update').Manager>(`${meta.id}.capability.update-manager`);\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-react';\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"],
5
+ "mappings": ";;;;;AAAA;;;;;AAQA,SAASA,kBAAkB;AAE3B,SAASC,YAAY;AAId,IAAMC,WAAWF,WAAWG,KAAmD,GAAGF,KAAKG,EAAE,sBAAsB;AAC/G,IAAMC,gBAAgBL,WAAWG,KAAiC,GAAGF,KAAKG,EAAE,4BAA4B;;;ACf/G;;kBAAAE;;AAMA,YAAYC,YAAY;AAEjB,IAAMD,YAAkBE,eAAeC,cAAO,CAAC,CAAA,CAAA;;;ACRtD;",
6
+ "names": ["Capability", "meta", "Settings", "make", "id", "UpdateManager", "Settings", "Schema", "mutable", "Struct"]
7
+ }
@@ -0,0 +1,244 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/updater.ts
4
+ import { Atom } from "@effect-atom/atom-react";
5
+ import { type } from "@tauri-apps/plugin-os";
6
+ import { relaunch } from "@tauri-apps/plugin-process";
7
+ import * as Updater from "@tauri-apps/plugin-updater";
8
+ import * as Duration from "effect/Duration";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Fiber from "effect/Fiber";
11
+ import * as Match from "effect/Match";
12
+ import * as Schedule from "effect/Schedule";
13
+ import { Capabilities, Capability } from "@dxos/app-framework";
14
+ import { LayoutOperation } from "@dxos/app-toolkit";
15
+ import { log } from "@dxos/log";
16
+ import { meta } from "#meta";
17
+ import { NativeCapabilities } from "#types";
18
+
19
+ // src/constants.ts
20
+ var TAURI_LOCALHOST_PORT = "26777";
21
+
22
+ // src/capabilities/updater.ts
23
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-native/src/capabilities/updater.ts";
24
+ var SUPPORTS_OTA = [
25
+ "linux",
26
+ "macos",
27
+ "windows"
28
+ ];
29
+ var safeCheck = async () => {
30
+ try {
31
+ return {
32
+ ok: true,
33
+ update: await Updater.check()
34
+ };
35
+ } catch (error) {
36
+ log.error("failed to check for updates", {
37
+ error
38
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 31, S: void 0 });
39
+ return {
40
+ ok: false,
41
+ error: formatError(error)
42
+ };
43
+ }
44
+ };
45
+ var safeDownloadAndInstall = async (update, onEvent) => {
46
+ try {
47
+ await update.downloadAndInstall(onEvent);
48
+ return {
49
+ ok: true
50
+ };
51
+ } catch (error) {
52
+ log.error("failed to download and install update", {
53
+ error
54
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 47, S: void 0 });
55
+ return {
56
+ ok: false,
57
+ error: formatError(error)
58
+ };
59
+ }
60
+ };
61
+ var formatError = (error) => {
62
+ if (typeof error === "string") {
63
+ return error;
64
+ }
65
+ if (error instanceof Error) {
66
+ return error.message;
67
+ }
68
+ return String(error);
69
+ };
70
+ var updater_default = Capability.makeModule(Effect.fnUntraced(function* () {
71
+ const platform = type();
72
+ const isDevServer = window.location.port !== TAURI_LOCALHOST_PORT;
73
+ const enabled = SUPPORTS_OTA.includes(platform) && !isDevServer;
74
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
75
+ const { invoke } = yield* Capability.get(Capabilities.OperationInvoker);
76
+ const statusAtom = Atom.make(enabled ? {
77
+ kind: "idle"
78
+ } : {
79
+ kind: "unsupported"
80
+ }).pipe(Atom.keepAlive);
81
+ let pendingUpdate = null;
82
+ const doCheck = async () => {
83
+ registry.set(statusAtom, {
84
+ kind: "checking"
85
+ });
86
+ log.info("checking for updates", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 84, S: this });
87
+ const result = await safeCheck();
88
+ if (!result.ok) {
89
+ pendingUpdate = null;
90
+ registry.set(statusAtom, {
91
+ kind: "failed",
92
+ error: result.error
93
+ });
94
+ return null;
95
+ }
96
+ const update = result.update;
97
+ if (!update?.available) {
98
+ pendingUpdate = null;
99
+ registry.set(statusAtom, {
100
+ kind: "up-to-date",
101
+ checkedAt: Date.now()
102
+ });
103
+ return null;
104
+ }
105
+ log.info("update available", {
106
+ version: update.version
107
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 103, S: this });
108
+ pendingUpdate = update;
109
+ registry.set(statusAtom, {
110
+ kind: "available",
111
+ version: update.version
112
+ });
113
+ return update;
114
+ };
115
+ const doInstall = async () => {
116
+ const update = pendingUpdate;
117
+ if (!update) {
118
+ return false;
119
+ }
120
+ let downloaded = 0;
121
+ let contentLength = 0;
122
+ registry.set(statusAtom, {
123
+ kind: "downloading",
124
+ downloaded: 0,
125
+ contentLength: 0
126
+ });
127
+ const onEvent = Match.type().pipe(Match.when({
128
+ event: "Started"
129
+ }, (event) => {
130
+ contentLength = event.data.contentLength ?? 0;
131
+ registry.set(statusAtom, {
132
+ kind: "downloading",
133
+ downloaded,
134
+ contentLength
135
+ });
136
+ }), Match.when({
137
+ event: "Progress"
138
+ }, (event) => {
139
+ downloaded += event.data.chunkLength;
140
+ registry.set(statusAtom, {
141
+ kind: "downloading",
142
+ downloaded,
143
+ contentLength
144
+ });
145
+ }), Match.when({
146
+ event: "Finished"
147
+ }, () => {
148
+ log.info("download completed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 147, S: this });
149
+ }), Match.exhaustive);
150
+ const result = await safeDownloadAndInstall(update, onEvent);
151
+ if (result.ok) {
152
+ registry.set(statusAtom, {
153
+ kind: "ready"
154
+ });
155
+ return true;
156
+ }
157
+ registry.set(statusAtom, {
158
+ kind: "failed",
159
+ error: result.error
160
+ });
161
+ return false;
162
+ };
163
+ const manager = {
164
+ status: statusAtom,
165
+ check: async () => {
166
+ if (!enabled) {
167
+ return;
168
+ }
169
+ await doCheck();
170
+ },
171
+ install: async () => {
172
+ if (!enabled) {
173
+ return;
174
+ }
175
+ await doInstall();
176
+ },
177
+ relaunch: async () => {
178
+ await relaunch();
179
+ }
180
+ };
181
+ const managerContribution = Capability.contributes(NativeCapabilities.UpdateManager, manager);
182
+ if (!enabled) {
183
+ log.info("updater disabled", {
184
+ platform,
185
+ port: window.location.port
186
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 182, S: this });
187
+ return [
188
+ managerContribution
189
+ ];
190
+ }
191
+ const backgroundAction = Effect.gen(function* () {
192
+ const update = yield* Effect.promise(() => doCheck());
193
+ if (!update) {
194
+ return true;
195
+ }
196
+ const ok = yield* Effect.promise(() => doInstall());
197
+ if (!ok) {
198
+ return true;
199
+ }
200
+ yield* invoke(LayoutOperation.AddToast, {
201
+ id: `${meta.id}.update-ready`,
202
+ title: [
203
+ "update-ready.label",
204
+ {
205
+ ns: meta.id
206
+ }
207
+ ],
208
+ description: [
209
+ "update-ready.description",
210
+ {
211
+ ns: meta.id
212
+ }
213
+ ],
214
+ duration: Infinity,
215
+ actionLabel: [
216
+ "update.label",
217
+ {
218
+ ns: meta.id
219
+ }
220
+ ],
221
+ actionAlt: [
222
+ "update.alt",
223
+ {
224
+ ns: meta.id
225
+ }
226
+ ],
227
+ onAction: () => relaunch()
228
+ });
229
+ return false;
230
+ });
231
+ const schedule = Schedule.fixed(Duration.hours(1)).pipe(Schedule.whileInput((keepChecking) => keepChecking));
232
+ const fiber = yield* backgroundAction.pipe(Effect.repeat(schedule), Effect.forkDaemon);
233
+ log.info("updater module initialized, update check scheduled", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 234, S: this });
234
+ return [
235
+ managerContribution,
236
+ // Return the interruption effect directly; Fiber.interrupt is async and would throw
237
+ // AsyncFiberException if wrapped in Effect.runSync.
238
+ Capability.contributes(Capabilities.Null, null, () => Fiber.interrupt(fiber))
239
+ ];
240
+ }));
241
+ export {
242
+ updater_default as default
243
+ };
244
+ //# sourceMappingURL=updater-JEBXWSSK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/updater.ts", "../../../src/constants.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\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.id}.update-ready`,\n title: ['update-ready.label', { ns: meta.id }],\n description: ['update-ready.description', { ns: meta.id }],\n duration: Infinity,\n actionLabel: ['update.label', { ns: meta.id }],\n actionAlt: ['update.alt', { ns: meta.id }],\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", "//\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"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "type", "relaunch", "Updater", "Duration", "Effect", "Fiber", "Match", "Schedule", "Capabilities", "Capability", "LayoutOperation", "log", "meta", "NativeCapabilities", "TAURI_LOCALHOST_PORT", "SUPPORTS_OTA", "update", "log", "error", "onEvent", "ok", "String", "Capability", "isDevServer", "window", "TAURI_LOCALHOST_PORT", "enabled", "registry", "get", "Capabilities", "statusAtom", "make", "kind", "pipe", "info", "result", "pendingUpdate", "set", "checkedAt", "version", "downloaded", "contentLength", "Match", "event", "safeDownloadAndInstall", "manager", "check", "install", "relaunch", "platform", "port", "managerContribution", "invoke", "title", "description", "duration", "actionLabel", "actionAlt", "onAction", "schedule"]
7
+ }
@@ -1,2 +1,4 @@
1
- export declare const NativePlugin: import("@dxos/app-framework").PluginFactory<void>;
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const NativePlugin: Plugin.PluginFactory<void>;
3
+ export default NativePlugin;
2
4
  //# sourceMappingURL=NativePlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativePlugin.d.ts","sourceRoot":"","sources":["../../../src/NativePlugin.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,mDAqBvB,CAAC"}
1
+ {"version":3,"file":"NativePlugin.d.ts","sourceRoot":"","sources":["../../../src/NativePlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAoB,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,eAAO,MAAM,YAAY,4BAoBxB,CAAC;eAEa,YAAY"}
@@ -1,4 +1,7 @@
1
- export declare const Ollama: (props?: import("@dxos/app-framework").PluginContext | undefined) => Promise<() => Promise<import("@dxos/app-framework").Capability<any> | import("@dxos/app-framework").AnyCapability[]>>;
2
- export declare const Updater: (props?: import("@dxos/app-framework").PluginContext | undefined) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<null>> | import("@dxos/app-framework").AnyCapability[]>>;
3
- export declare const Window: (props?: import("@dxos/app-framework").PluginContext | undefined) => Promise<() => Promise<import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<null>> | import("@dxos/app-framework").AnyCapability[]>>;
1
+ import { Capability } from '@dxos/app-framework';
2
+ export declare const NativeSettings: Capability.LazyCapability<void, [Capability.Capability<Capability.InterfaceDef<import("@effect-atom/atom/Atom").Writable<import("../types/Settings").Settings, import("../types/Settings").Settings>>>, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-toolkit").AppCapabilities.Settings>>], Error>;
3
+ export declare const Ollama: Capability.LazyCapability<[], import("./ollama").OllamaCapabilities, Error>;
4
+ export declare const ReactSurface: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").ReactSurface>>, Error>;
5
+ export declare const SpotlightListener: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<null>>, Error>;
6
+ export declare const Updater: Capability.LazyCapability<void, [Capability.Capability<Capability.InterfaceDef<import("../types/Update").Manager>>] | [Capability.Capability<Capability.InterfaceDef<import("../types/Update").Manager>>, Capability.Capability<Capability.InterfaceDef<null>>], Error>;
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,4LAAiC,CAAC;AACrD,eAAO,MAAM,OAAO,yOAAkC,CAAC;AACvD,eAAO,MAAM,MAAM,yOAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,cAAc,uTAAgE,CAAC;AAC5F,eAAO,MAAM,MAAM,6EAAsD,CAAC;AAC1E,eAAO,MAAM,YAAY,iJAAmE,CAAC;AAC7F,eAAO,MAAM,iBAAiB,8FAA6E,CAAC;AAC5G,eAAO,MAAM,OAAO,yQAAwD,CAAC"}
@@ -1,4 +1,7 @@
1
- import { type Capability, type PluginContext } from '@dxos/app-framework';
2
- declare const _default: (_context: PluginContext) => Capability<any>;
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import { AppCapabilities } from '@dxos/app-toolkit';
4
+ export type OllamaCapabilities = Capability.Capability<typeof AppCapabilities.AiModelResolver>;
5
+ declare const _default: (props: []) => Effect.Effect<OllamaCapabilities, Error, Capability.Service>;
3
6
  export default _default;
4
7
  //# sourceMappingURL=ollama.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/ollama.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAe,MAAM,qBAAqB,CAAC;yBAMrF,UAAU,aAAa,KAAG,UAAU,CAAC,GAAG,CAAC;AAAzD,wBAeE"}
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/ollama.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capabilities, Capability } from '@dxos/app-framework';
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<Capabilities.ReactSurface>>, never, never>;
4
+ export default _default;
5
+ //# sourceMappingURL=react-surface.d.ts.map
@@ -0,0 +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,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import { AppCapabilities } from '@dxos/app-toolkit';
4
+ import { Settings } from '#types';
5
+ declare const _default: (props: void) => Effect.Effect<[Capability.Capability<Capability.InterfaceDef<import("@effect-atom/atom/Atom").Writable<Settings.Settings, Settings.Settings>>>, Capability.Capability<Capability.InterfaceDef<AppCapabilities.Settings>>], never, never>;
6
+ export default _default;
7
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAsB,QAAQ,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ /**
4
+ * Listens for spotlight:invoke events from the popover window and dispatches the corresponding operation.
5
+ */
6
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<null>>, Error, Capability.Service>;
7
+ export default _default;
8
+ //# sourceMappingURL=spotlight-listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spotlight-listener.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/spotlight-listener.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAU/D;;GAEG"}
@@ -1,4 +1,6 @@
1
- import { type PluginContext } from '@dxos/app-framework';
2
- declare const _default: (context: PluginContext) => import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<null>>;
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import { type Update } from '#types';
4
+ declare const _default: (props: void) => Effect.Effect<[Capability.Capability<Capability.InterfaceDef<Update.Manager>>] | [Capability.Capability<Capability.InterfaceDef<Update.Manager>>, Capability.Capability<Capability.InterfaceDef<null>>], Error, Capability.Service>;
3
5
  export default _default;
4
6
  //# sourceMappingURL=updater.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/updater.ts"],"names":[],"mappings":"AAcA,OAAO,EAA8B,KAAK,aAAa,EAA6B,MAAM,qBAAqB,CAAC;yBAOhG,SAAS,aAAa;AAAtC,wBA+DE"}
1
+ {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/updater.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAK/D,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,6 @@
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.SettingsArticleProps<Settings.Settings>;
5
+ export declare const NativeSettings: (_props: NativeSettingsProps) => React.JSX.Element;
6
+ //# sourceMappingURL=NativeSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeSettings.d.ts","sourceRoot":"","sources":["../../../../../src/components/NativeSettings/NativeSettings.tsx"],"names":[],"mappings":"AAOA,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,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAYrF,eAAO,MAAM,cAAc,WAAY,mBAAmB,sBAkCzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { NativeSettings as default } from './NativeSettings';
2
+ //# sourceMappingURL=index.d.ts.map