ugly-app 0.1.619 → 0.1.621

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 (79) hide show
  1. package/dist/cli/version.d.ts +1 -1
  2. package/dist/cli/version.js +1 -1
  3. package/dist/native/contract-meta.d.ts +7 -0
  4. package/dist/native/contract-meta.d.ts.map +1 -0
  5. package/dist/native/contract-meta.js +105 -0
  6. package/dist/native/contract-meta.js.map +1 -0
  7. package/dist/native/contract.d.ts +254 -24
  8. package/dist/native/contract.d.ts.map +1 -1
  9. package/dist/native/contract.js +4 -15
  10. package/dist/native/contract.js.map +1 -1
  11. package/dist/native/facades/net.d.ts +26 -0
  12. package/dist/native/facades/net.d.ts.map +1 -0
  13. package/dist/native/facades/net.js +22 -0
  14. package/dist/native/facades/net.js.map +1 -0
  15. package/dist/native/facades/process.d.ts +20 -0
  16. package/dist/native/facades/process.d.ts.map +1 -0
  17. package/dist/native/facades/process.js +15 -0
  18. package/dist/native/facades/process.js.map +1 -0
  19. package/dist/native/facades/studio.d.ts +47 -0
  20. package/dist/native/facades/studio.d.ts.map +1 -0
  21. package/dist/native/facades/studio.js +38 -0
  22. package/dist/native/facades/studio.js.map +1 -0
  23. package/dist/native/index.d.ts +10 -3
  24. package/dist/native/index.d.ts.map +1 -1
  25. package/dist/native/index.js +4 -2
  26. package/dist/native/index.js.map +1 -1
  27. package/dist/native/install.d.ts.map +1 -1
  28. package/dist/native/install.js +10 -8
  29. package/dist/native/install.js.map +1 -1
  30. package/dist/native/permissions.d.ts +12 -0
  31. package/dist/native/permissions.d.ts.map +1 -0
  32. package/dist/native/permissions.js +47 -0
  33. package/dist/native/permissions.js.map +1 -0
  34. package/dist/native/protocol.d.ts +5 -1
  35. package/dist/native/protocol.d.ts.map +1 -1
  36. package/dist/native/protocol.js +8 -0
  37. package/dist/native/protocol.js.map +1 -1
  38. package/dist/native/web-adapter.d.ts +5 -0
  39. package/dist/native/web-adapter.d.ts.map +1 -0
  40. package/dist/native/web-adapter.js +111 -0
  41. package/dist/native/web-adapter.js.map +1 -0
  42. package/dist/native/wrapper.d.ts +80 -6
  43. package/dist/native/wrapper.d.ts.map +1 -1
  44. package/dist/native/wrapper.js +149 -12
  45. package/dist/native/wrapper.js.map +1 -1
  46. package/dist/search/server/WebRetriever.d.ts +7 -0
  47. package/dist/search/server/WebRetriever.d.ts.map +1 -1
  48. package/dist/search/server/WebRetriever.js +2 -2
  49. package/dist/search/server/WebRetriever.js.map +1 -1
  50. package/dist/server/ai/providers/UglyBotWebSearchProvider.d.ts.map +1 -1
  51. package/dist/server/ai/providers/UglyBotWebSearchProvider.js +11 -8
  52. package/dist/server/ai/providers/UglyBotWebSearchProvider.js.map +1 -1
  53. package/dist/server/ai/types.d.ts +7 -0
  54. package/dist/server/ai/types.d.ts.map +1 -1
  55. package/dist/server/ai/types.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/cli/version.ts +1 -1
  58. package/src/native/contract-meta.test.ts +23 -0
  59. package/src/native/contract-meta.ts +114 -0
  60. package/src/native/contract.test.ts +13 -7
  61. package/src/native/contract.ts +130 -32
  62. package/src/native/facades/facades.test.ts +35 -0
  63. package/src/native/facades/net.ts +50 -0
  64. package/src/native/facades/process.ts +37 -0
  65. package/src/native/facades/studio.ts +73 -0
  66. package/src/native/index.ts +24 -3
  67. package/src/native/install.test.ts +8 -0
  68. package/src/native/install.ts +12 -8
  69. package/src/native/permissions.test.ts +42 -0
  70. package/src/native/permissions.ts +53 -0
  71. package/src/native/protocol.test.ts +15 -0
  72. package/src/native/protocol.ts +10 -1
  73. package/src/native/web-adapter.test.ts +27 -0
  74. package/src/native/web-adapter.ts +118 -0
  75. package/src/native/wrapper.test.ts +22 -0
  76. package/src/native/wrapper.ts +163 -13
  77. package/src/search/server/WebRetriever.ts +9 -4
  78. package/src/server/ai/providers/UglyBotWebSearchProvider.ts +13 -2
  79. package/src/server/ai/types.ts +7 -0
@@ -0,0 +1,47 @@
1
+ import type { NativePlatform } from '../protocol.js';
2
+ import type { Platform } from '../contract-meta.js';
3
+ import type { UpdateStatus } from '../contract.js';
4
+ export interface StudioFacade {
5
+ window: {
6
+ minimize(): Promise<void>;
7
+ maximizeToggle(): Promise<boolean>;
8
+ close(): Promise<void>;
9
+ isMaximized(): Promise<boolean>;
10
+ };
11
+ fullscreen: {
12
+ toggle(): Promise<boolean>;
13
+ is(): Promise<boolean>;
14
+ };
15
+ zoom: {
16
+ get(): Promise<number>;
17
+ set(level: number): Promise<void>;
18
+ };
19
+ update: {
20
+ check(): Promise<UpdateStatus>;
21
+ download(): Promise<UpdateStatus>;
22
+ install(): Promise<void>;
23
+ getStatus(): Promise<UpdateStatus>;
24
+ };
25
+ dialog: {
26
+ openDirectory(): Promise<string | null>;
27
+ };
28
+ revealInFolder(path: string): Promise<void>;
29
+ app: {
30
+ version(): Promise<string>;
31
+ platform(): NativePlatform;
32
+ };
33
+ openProjectInNewWindow(path: string): Promise<void>;
34
+ }
35
+ type StudioBridge = Partial<{
36
+ window: StudioFacade['window'];
37
+ fullscreen: StudioFacade['fullscreen'];
38
+ zoom: StudioFacade['zoom'];
39
+ update: StudioFacade['update'];
40
+ dialog: StudioFacade['dialog'];
41
+ revealInFolder: (p: string) => Promise<void>;
42
+ getAppVersion: () => Promise<string>;
43
+ openProjectInNewWindow: (p: string) => Promise<void>;
44
+ }>;
45
+ export declare function createStudioFacade(getBridge: () => StudioBridge | undefined, platform: Platform): StudioFacade;
46
+ export {};
47
+ //# sourceMappingURL=studio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../../src/native/facades/studio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC;IACF,UAAU,EAAE;QAAE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IACnE,IAAI,EAAE;QAAE,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACpE,MAAM,EAAE;QACN,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QAClC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;KACpC,CAAC;IACF,MAAM,EAAE;QAAE,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;KAAE,CAAC;IACpD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,GAAG,EAAE;QAAE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,QAAQ,IAAI,cAAc,CAAA;KAAE,CAAC;IAChE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,KAAK,YAAY,GAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,sBAAsB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,CAAC,CAAC;AAEH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,YAAY,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAmC9G"}
@@ -0,0 +1,38 @@
1
+ import { NativeUnavailableError } from '../protocol.js';
2
+ export function createStudioFacade(getBridge, platform) {
3
+ const b = () => getBridge();
4
+ const noop = async () => { };
5
+ const unavailable = (ch) => {
6
+ throw new NativeUnavailableError(ch);
7
+ };
8
+ return {
9
+ window: {
10
+ minimize: async () => (b()?.window ? b().window.minimize() : noop()),
11
+ maximizeToggle: async () => (b()?.window ? b().window.maximizeToggle() : false),
12
+ close: async () => (b()?.window ? b().window.close() : noop()),
13
+ isMaximized: async () => (b()?.window ? b().window.isMaximized() : false),
14
+ },
15
+ fullscreen: {
16
+ toggle: async () => (b()?.fullscreen ? b().fullscreen.toggle() : false),
17
+ is: async () => (b()?.fullscreen ? b().fullscreen.is() : false),
18
+ },
19
+ zoom: {
20
+ get: async () => (b()?.zoom ? b().zoom.get() : 0),
21
+ set: async (l) => (b()?.zoom ? b().zoom.set(l) : noop()),
22
+ },
23
+ update: {
24
+ check: async () => (b()?.update ? b().update.check() : unavailable('studio.update.check')),
25
+ download: async () => (b()?.update ? b().update.download() : unavailable('studio.update.download')),
26
+ install: async () => (b()?.update ? b().update.install() : unavailable('studio.update.install')),
27
+ getStatus: async () => (b()?.update ? b().update.getStatus() : unavailable('studio.update.getStatus')),
28
+ },
29
+ dialog: { openDirectory: async () => (b()?.dialog ? b().dialog.openDirectory() : null) },
30
+ revealInFolder: async (p) => (b()?.revealInFolder ? b().revealInFolder(p) : unavailable('studio.revealInFolder')),
31
+ app: {
32
+ version: async () => (b()?.getAppVersion ? b().getAppVersion() : ''),
33
+ platform: () => platform,
34
+ },
35
+ openProjectInNewWindow: async (p) => (b()?.openProjectInNewWindow ? b().openProjectInNewWindow(p) : noop()),
36
+ };
37
+ }
38
+ //# sourceMappingURL=studio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../../src/native/facades/studio.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
- export type { NativeContract, Channel, NativeEvent, PayloadOf, ResultOf, DataOf, WorkoutLAState, CardioLAState, } from './contract.js';
1
+ export type { NativeContract, Channel, NativeEvent, PayloadOf, ResultOf, DataOf, Namespace, WorkoutLAState, CardioLAState, HostDirent, HostStat, UpdateStatus, GrantState, SpawnOpts, SafeAreaInsets, } from './contract.js';
2
+ export { namespaceOf } from './contract.js';
3
+ export type { Platform, Fallback } from './contract-meta.js';
4
+ export { CHANNEL_FALLBACK, NAMESPACES, fallbackFor } from './contract-meta.js';
2
5
  export type { NativePlatform, UglyNative } from './protocol.js';
3
- export { NativeUnavailableError } from './protocol.js';
4
- export { native, nativePlatform, isNativeAvailable } from './wrapper.js';
6
+ export { NativeUnavailableError, PermissionDeniedError } from './protocol.js';
5
7
  export { installUglyNative } from './install.js';
8
+ export { native, permissions, nativePlatform, isNativeAvailable } from './wrapper.js';
9
+ export type { PermissionsFacade } from './permissions.js';
10
+ export type { UglyProcess } from './facades/process.js';
11
+ export type { UglySocket, UglyServer } from './facades/net.js';
12
+ export type { StudioFacade } from './facades/studio.js';
6
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,GACjG,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,OAAO,EACP,WAAW,EACX,SAAS,EACT,QAAQ,EACR,MAAM,EACN,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,SAAS,EACT,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/E,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,4 +1,6 @@
1
- export { NativeUnavailableError } from './protocol.js';
2
- export { native, nativePlatform, isNativeAvailable } from './wrapper.js';
1
+ export { namespaceOf } from './contract.js';
2
+ export { CHANNEL_FALLBACK, NAMESPACES, fallbackFor } from './contract-meta.js';
3
+ export { NativeUnavailableError, PermissionDeniedError } from './protocol.js';
3
4
  export { installUglyNative } from './install.js';
5
+ export { native, permissions, nativePlatform, isNativeAvailable } from './wrapper.js';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/native/install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGlE,KAAK,OAAO,GAAG,gBAAgB,GAAG;IAChC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAClE,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACpC,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CA2DxD;AAED,wBAAgB,iBAAiB,IAAI,UAAU,CAM9C"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/native/install.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGlE,KAAK,OAAO,GAAG,gBAAgB,GAAG;IAChC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAClE,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACpC,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAgExD;AAED,wBAAgB,iBAAiB,IAAI,UAAU,CAM9C"}
@@ -1,6 +1,13 @@
1
- import { CHANNEL_WEB_FALLBACK } from './contract.js';
2
- import { NativeUnavailableError } from './protocol.js';
1
+ import { webInvoke } from './web-adapter.js';
3
2
  export function buildUglyNative(win) {
3
+ // Native→web event bus: dispatch a uniform CustomEvent the subscriber reads.
4
+ const emit = (event, data) => {
5
+ const detail = { event, data };
6
+ const ev = typeof CustomEvent === 'function'
7
+ ? new CustomEvent('uglyNative', { detail })
8
+ : { type: 'uglyNative', detail };
9
+ win.dispatchEvent(ev);
10
+ };
4
11
  // ── invoke transport (priority: desktop -> ios -> android -> web) ──
5
12
  let platform;
6
13
  let rawInvoke;
@@ -44,12 +51,7 @@ export function buildUglyNative(win) {
44
51
  }
45
52
  else {
46
53
  platform = 'web';
47
- rawInvoke = (channel) => {
48
- if (CHANNEL_WEB_FALLBACK[channel] === 'throw') {
49
- return Promise.reject(new NativeUnavailableError(channel));
50
- }
51
- return Promise.resolve(undefined);
52
- };
54
+ rawInvoke = (channel, payload) => webInvoke(channel, payload, emit);
53
55
  }
54
56
  // ── events: single 'uglyNative' CustomEvent carrying {event, data} ──
55
57
  function subscribe(event, cb) {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/native/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/native/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Namespace, GrantState } from './contract.js';
2
+ import type { Platform } from './contract-meta.js';
3
+ type Invoke = (channel: string, payload: unknown) => Promise<unknown>;
4
+ export interface PermissionsFacade {
5
+ request(grants: Partial<Record<Namespace, GrantState | boolean>>): Promise<Record<string, GrantState>>;
6
+ query(): Promise<Record<string, GrantState>>;
7
+ revoke(namespace: Namespace): Promise<void>;
8
+ ensure(namespace: Namespace): Promise<void>;
9
+ }
10
+ export declare function createPermissions(invoke: Invoke, platform: Platform): PermissionsFacade;
11
+ export {};
12
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/native/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAcnD,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACvG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,CA4BvF"}
@@ -0,0 +1,47 @@
1
+ import { PermissionDeniedError } from './protocol.js';
2
+ // Namespaces gated by explicit grants (daemon capabilities). OS-backed and app
3
+ // namespaces are not pre-gated here (the OS prompts at call time).
4
+ const GATED = new Set([
5
+ 'fs',
6
+ 'secrets',
7
+ 'serve',
8
+ 'workers',
9
+ 'net',
10
+ 'process',
11
+ ]);
12
+ export function createPermissions(invoke, platform) {
13
+ const cache = new Map();
14
+ const facade = {
15
+ async request(grants) {
16
+ const res = (await invoke('permissions.request', { grants }));
17
+ for (const [k, v] of Object.entries(res.granted))
18
+ cache.set(k, v);
19
+ return res.granted;
20
+ },
21
+ async query() {
22
+ const res = (await invoke('permissions.query', undefined));
23
+ for (const [k, v] of Object.entries(res.granted))
24
+ cache.set(k, v);
25
+ return res.granted;
26
+ },
27
+ async revoke(namespace) {
28
+ await invoke('permissions.revoke', { namespace });
29
+ cache.delete(namespace);
30
+ },
31
+ async ensure(namespace) {
32
+ if (!GATED.has(namespace))
33
+ return;
34
+ if (platform === 'web')
35
+ throw new PermissionDeniedError(namespace);
36
+ const cached = cache.get(namespace);
37
+ if (cached && cached !== 'denied' && cached !== 'prompt')
38
+ return;
39
+ const granted = await facade.query();
40
+ const state = granted[namespace];
41
+ if (!state || state === 'denied' || state === 'prompt')
42
+ throw new PermissionDeniedError(namespace);
43
+ },
44
+ };
45
+ return facade;
46
+ }
47
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/native/permissions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,+EAA+E;AAC/E,mEAAmE;AACnE,MAAM,KAAK,GAA2B,IAAI,GAAG,CAAY;IACvD,IAAI;IACJ,SAAS;IACT,OAAO;IACP,SAAS;IACT,KAAK;IACL,SAAS;CACV,CAAC,CAAC;AAWH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAkB;IAClE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,MAAM,MAAM,GAAsB;QAChC,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,CAAC,CAA4C,CAAC;YACzG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAc,EAAE,CAAC,CAAC,CAAC;YAC/E,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAA4C,CAAC;YACtG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAc,EAAE,CAAC,CAAC,CAAC;YAC/E,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,SAAS;YACpB,MAAM,MAAM,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAClD,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,SAAS;YACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO;YAClC,IAAI,QAAQ,KAAK,KAAK;gBAAE,MAAM,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;gBAAE,OAAO;YACjE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;gBAAE,MAAM,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACrG,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,12 @@
1
- import type { Channel, NativeEvent, PayloadOf, ResultOf, DataOf } from './contract.js';
1
+ import type { Channel, NativeEvent, PayloadOf, ResultOf, DataOf, Namespace } from './contract.js';
2
2
  export type NativePlatform = 'ios' | 'android' | 'desktop' | 'web';
3
3
  export declare class NativeUnavailableError extends Error {
4
4
  constructor(channel: string);
5
5
  }
6
+ export declare class PermissionDeniedError extends Error {
7
+ readonly namespace: Namespace;
8
+ constructor(namespace: Namespace);
9
+ }
6
10
  export interface UglyNative {
7
11
  readonly platform: NativePlatform;
8
12
  invoke<C extends Channel>(channel: C, payload: PayloadOf<C>): Promise<ResultOf<C>>;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/native/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;AAEnE,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACvF;AAQD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACvE;AACD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,MAAM,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE,CAAC;IAChE,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACpF"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/native/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;AAEnE,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAClB,SAAS,EAAE,SAAS;CAKjC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACvF;AAQD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACvE;AACD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,MAAM,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE,CAAC;IAChE,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACpF"}
@@ -4,4 +4,12 @@ export class NativeUnavailableError extends Error {
4
4
  this.name = 'NativeUnavailableError';
5
5
  }
6
6
  }
7
+ export class PermissionDeniedError extends Error {
8
+ namespace;
9
+ constructor(namespace) {
10
+ super(`uglyNative.${namespace}.* requires the "${namespace}" permission (not granted)`);
11
+ this.name = 'PermissionDeniedError';
12
+ this.namespace = namespace;
13
+ }
14
+ }
7
15
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/native/protocol.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,yBAAyB,OAAO,2BAA2B,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/native/protocol.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,yBAAyB,OAAO,2BAA2B,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,SAAS,CAAY;IAC9B,YAAY,SAAoB;QAC9B,KAAK,CAAC,cAAc,SAAS,oBAAoB,SAAS,4BAA4B,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import type { Channel, NativeEvent, DataOf } from './contract.js';
2
+ type Emit = <E extends NativeEvent>(event: E, data: DataOf<E>) => void;
3
+ export declare function webInvoke(channel: Channel, payload: unknown, emit: Emit): Promise<unknown>;
4
+ export {};
5
+ //# sourceMappingURL=web-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-adapter.d.ts","sourceRoot":"","sources":["../../src/native/web-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAkB,MAAM,eAAe,CAAC;AAIlF,KAAK,IAAI,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAkBvE,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CA+FhG"}
@@ -0,0 +1,111 @@
1
+ import { fallbackFor } from './contract-meta.js';
2
+ import { NativeUnavailableError } from './protocol.js';
3
+ // In-tab alarm timers (web fallback only; cleared on tab close).
4
+ const alarmTimers = new Map();
5
+ let gpsWatchId = null;
6
+ let webAudio = null;
7
+ function readSafeArea() {
8
+ const cs = getComputedStyle(document.documentElement);
9
+ const px = (v) => parseInt(v || '0', 10) || 0;
10
+ return {
11
+ top: px(cs.getPropertyValue('--sat')),
12
+ right: 0,
13
+ bottom: 0,
14
+ left: 0,
15
+ };
16
+ }
17
+ export async function webInvoke(channel, payload, emit) {
18
+ switch (channel) {
19
+ case 'clipboard.write':
20
+ await navigator.clipboard.writeText(payload.text);
21
+ return undefined;
22
+ case 'clipboard.read':
23
+ return { text: await navigator.clipboard.readText() };
24
+ case 'system.openExternal':
25
+ window.open(payload.url, '_blank', 'noopener');
26
+ return undefined;
27
+ case 'system.share':
28
+ if (navigator.share)
29
+ await navigator.share(payload);
30
+ return undefined;
31
+ case 'badge.set': {
32
+ const n = payload.count;
33
+ const navAny = navigator;
34
+ if (n > 0)
35
+ await navAny.setAppBadge?.(n);
36
+ else
37
+ await navAny.clearAppBadge?.();
38
+ return undefined;
39
+ }
40
+ case 'ui.getSafeArea':
41
+ return readSafeArea();
42
+ case 'gps.start': {
43
+ if (gpsWatchId != null)
44
+ navigator.geolocation.clearWatch(gpsWatchId);
45
+ gpsWatchId = navigator.geolocation.watchPosition((pos) => emit('gps.position', {
46
+ lat: pos.coords.latitude,
47
+ lng: pos.coords.longitude,
48
+ accuracy: pos.coords.accuracy,
49
+ timestamp: pos.timestamp,
50
+ altitude: pos.coords.altitude ?? undefined,
51
+ speed: pos.coords.speed ?? undefined,
52
+ course: pos.coords.heading ?? undefined,
53
+ }), () => { }, { enableHighAccuracy: true });
54
+ return undefined;
55
+ }
56
+ case 'gps.stop':
57
+ if (gpsWatchId != null) {
58
+ navigator.geolocation.clearWatch(gpsWatchId);
59
+ gpsWatchId = null;
60
+ }
61
+ return undefined;
62
+ case 'alarm.schedule': {
63
+ const p = payload;
64
+ const existing = alarmTimers.get(p.id);
65
+ if (existing)
66
+ clearTimeout(existing);
67
+ alarmTimers.set(p.id, setTimeout(() => {
68
+ alarmTimers.delete(p.id);
69
+ if ('Notification' in window && Notification.permission === 'granted') {
70
+ new Notification(p.title ?? 'Alarm', { body: p.body });
71
+ }
72
+ emit('alarm.fired', { id: p.id });
73
+ }, p.delaySeconds * 1000));
74
+ return undefined;
75
+ }
76
+ case 'alarm.cancel': {
77
+ const id = payload.id;
78
+ if (id) {
79
+ const t = alarmTimers.get(id);
80
+ if (t)
81
+ clearTimeout(t);
82
+ alarmTimers.delete(id);
83
+ }
84
+ else {
85
+ for (const t of alarmTimers.values())
86
+ clearTimeout(t);
87
+ alarmTimers.clear();
88
+ }
89
+ return undefined;
90
+ }
91
+ case 'alarm.playAudio': {
92
+ const p = payload;
93
+ webAudio = new Audio(`data:${p.mimeType ?? 'audio/wav'};base64,${p.base64}`);
94
+ await webAudio.play().catch(() => { });
95
+ return undefined;
96
+ }
97
+ case 'capture.screenshot': {
98
+ // Best-effort capture requires a user-gesture-driven display capture; declared
99
+ // web-capable but gated by a gesture, so treat as unavailable until wired by a caller.
100
+ throw new NativeUnavailableError(channel);
101
+ }
102
+ default: {
103
+ const fb = fallbackFor(channel, 'web');
104
+ if (fb === 'throw')
105
+ throw new NativeUnavailableError(channel);
106
+ // 'noop' / 'web'-but-unimplemented (liveActivity, tts, push, …) resolve silently.
107
+ return undefined;
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=web-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-adapter.js","sourceRoot":"","sources":["../../src/native/web-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,16 @@
1
1
  import type { DataOf, PayloadOf } from './contract.js';
2
2
  import type { NativePlatform } from './protocol.js';
3
+ export declare const permissions: import("./permissions.js").PermissionsFacade;
3
4
  export declare const native: {
5
+ permissions: import("./permissions.js").PermissionsFacade;
6
+ capture: {
7
+ screenshot: () => Promise<string>;
8
+ };
4
9
  gps: {
5
10
  start: (p: PayloadOf<"gps.start">) => Promise<void>;
6
11
  stop: () => Promise<void>;
7
12
  onPosition: (cb: (d: DataOf<"gps.position">) => void) => () => void;
8
13
  };
9
- alarm: {
10
- schedule: (p: PayloadOf<"alarm.schedule">) => Promise<void>;
11
- cancel: (p: PayloadOf<"alarm.cancel">) => Promise<void>;
12
- playAudio: (p: PayloadOf<"alarm.playAudio">) => Promise<void>;
13
- onFired: (cb: (d: DataOf<"alarm.fired">) => void) => () => void;
14
- };
15
14
  liveActivity: {
16
15
  startWorkout: (p: PayloadOf<"liveActivity.startWorkout">) => Promise<void>;
17
16
  updateWorkout: (p: PayloadOf<"liveActivity.updateWorkout">) => Promise<void>;
@@ -20,6 +19,81 @@ export declare const native: {
20
19
  updateCardio: (p: PayloadOf<"liveActivity.updateCardio">) => Promise<void>;
21
20
  endCardio: () => Promise<void>;
22
21
  };
22
+ alarm: {
23
+ schedule: (p: PayloadOf<"alarm.schedule">) => Promise<void>;
24
+ cancel: (p: PayloadOf<"alarm.cancel">) => Promise<void>;
25
+ playAudio: (p: PayloadOf<"alarm.playAudio">) => Promise<void>;
26
+ onFired: (cb: (d: DataOf<"alarm.fired">) => void) => () => void;
27
+ };
28
+ tts: {
29
+ start: (p: PayloadOf<"tts.start">) => Promise<void>;
30
+ pause: () => Promise<void>;
31
+ resume: () => Promise<void>;
32
+ stop: () => Promise<void>;
33
+ onState: (cb: (d: DataOf<"tts.state">) => void) => () => void;
34
+ };
35
+ push: {
36
+ register: () => Promise<{
37
+ token: string;
38
+ }>;
39
+ onToken: (cb: (d: DataOf<"push.token">) => void) => () => void;
40
+ onNotificationClick: (cb: (d: DataOf<"push.notificationClick">) => void) => () => void;
41
+ };
42
+ clipboard: {
43
+ write: (p: PayloadOf<"clipboard.write">) => Promise<void>;
44
+ read: () => Promise<{
45
+ text: string;
46
+ }>;
47
+ };
48
+ system: {
49
+ openExternal: (p: PayloadOf<"system.openExternal">) => Promise<void>;
50
+ share: (p: PayloadOf<"system.share">) => Promise<void>;
51
+ };
52
+ badge: {
53
+ set: (p: PayloadOf<"badge.set">) => Promise<void>;
54
+ };
55
+ ui: {
56
+ getSafeArea: () => Promise<import("./contract.js").SafeAreaInsets>;
57
+ onKeyboardHeight: (cb: (d: DataOf<"keyboard.height">) => void) => () => void;
58
+ onSafeAreaInsets: (cb: (d: DataOf<"safeArea.insets">) => void) => () => void;
59
+ };
60
+ fs: {
61
+ readFile: (path: string) => Promise<string>;
62
+ writeFile: (path: string, content: string) => Promise<void>;
63
+ mkdir: (path: string, recursive?: boolean) => Promise<void>;
64
+ rm: (path: string, opts?: {
65
+ recursive?: boolean;
66
+ force?: boolean;
67
+ }) => Promise<void>;
68
+ rename: (from: string, to: string) => Promise<void>;
69
+ readdir: (path: string) => Promise<import("./contract.js").HostDirent[]>;
70
+ stat: (path: string) => Promise<import("./contract.js").HostStat>;
71
+ exists: (path: string) => Promise<boolean>;
72
+ realpath: (path: string) => Promise<string>;
73
+ readFileBytes: (path: string) => Promise<Uint8Array>;
74
+ writeFileBytes: (path: string, bytes: Uint8Array) => Promise<void>;
75
+ };
76
+ process: import("./facades/process.js").ProcessFacade;
77
+ net: import("./facades/net.js").NetFacade;
78
+ studio: import("./facades/studio.js").StudioFacade;
79
+ secrets: {
80
+ get: (key: string) => Promise<string | null>;
81
+ set: (key: string, value: string) => Promise<void>;
82
+ delete: (key: string) => Promise<void>;
83
+ list: () => Promise<string[]>;
84
+ };
85
+ serve: {
86
+ start: (dir?: string) => Promise<{
87
+ port: number;
88
+ url: string;
89
+ }>;
90
+ stop: (port: number) => Promise<void>;
91
+ };
92
+ workers: {
93
+ register: (path: string, boot?: boolean) => Promise<string>;
94
+ unregister: (id: string) => Promise<void>;
95
+ list: () => Promise<string[]>;
96
+ };
23
97
  };
24
98
  export declare function nativePlatform(): NativePlatform;
25
99
  export declare function isNativeAvailable(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/native/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,eAAO,MAAM,MAAM;;mBAEJ,SAAS,CAAC,WAAW,CAAC;;yBAEhB,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI;;;sBAGtC,SAAS,CAAC,gBAAgB,CAAC;oBAC7B,SAAS,CAAC,cAAc,CAAC;uBACtB,SAAS,CAAC,iBAAiB,CAAC;sBAC7B,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI;;;0BAG9B,SAAS,CAAC,2BAA2B,CAAC;2BACrC,SAAS,CAAC,4BAA4B,CAAC;;yBAEzC,SAAS,CAAC,0BAA0B,CAAC;0BACpC,SAAS,CAAC,2BAA2B,CAAC;;;CAG3D,CAAC;AAEF,wBAAgB,cAAc,IAAI,cAAc,CAE/C;AACD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/native/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,MAAM,EAAE,SAAS,EAAY,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,eAAO,MAAM,WAAW,8CAAgF,CAAC;AAezG,eAAO,MAAM,MAAM;;;;;;mBAMJ,SAAS,CAAC,WAAW,CAAC;;yBAEhB,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI;;;0BAGlC,SAAS,CAAC,2BAA2B,CAAC;2BACrC,SAAS,CAAC,4BAA4B,CAAC;;yBAEzC,SAAS,CAAC,0BAA0B,CAAC;0BACpC,SAAS,CAAC,2BAA2B,CAAC;;;;sBAI1C,SAAS,CAAC,gBAAgB,CAAC;oBAC7B,SAAS,CAAC,cAAc,CAAC;uBACtB,SAAS,CAAC,iBAAiB,CAAC;sBAC7B,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI;;;mBAGrC,SAAS,CAAC,WAAW,CAAC;;;;sBAInB,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI;;;;;;sBAIhC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI;kCACrB,CAAC,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,IAAI;;;mBAI5D,SAAS,CAAC,iBAAiB,CAAC;;;;;;0BAIrB,SAAS,CAAC,qBAAqB,CAAC;mBACvC,SAAS,CAAC,cAAc,CAAC;;;iBAG3B,SAAS,CAAC,WAAW,CAAC;;;;+BAIR,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI;+BACtC,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI;;;yBAGtC,MAAM;0BAIL,MAAM,WAAW,MAAM;sBAI3B,MAAM;mBAIT,MAAM,SAAQ;YAAE,SAAS,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE;uBAIlD,MAAM,MAAM,MAAM;wBAIjB,MAAM;qBAIT,MAAM;uBAIJ,MAAM;yBAIJ,MAAM;8BAID,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC;+BAM3B,MAAM,SAAS,UAAU,KAAG,OAAO,CAAC,IAAI,CAAC;;;;;;mBAWrD,MAAM;mBAIN,MAAM,SAAS,MAAM;sBAIlB,MAAM;;;;sBAUN,MAAM;;;;qBAIP,MAAM;;;yBAMF,MAAM;yBAIN,MAAM;;;CAShC,CAAC;AAEF,wBAAgB,cAAc,IAAI,cAAc,CAE/C;AACD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}