asyar-sdk 1.15.6 → 1.15.8

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.
@@ -1,15 +1,21 @@
1
- import type { NotificationActionEvent, NotificationActionType, NotificationChannel, NotificationOptions } from "../types/NotificationType";
1
+ import type { NotificationOptions } from "../types/NotificationType";
2
2
  /**
3
- * Interface for Notification Service
3
+ * Desktop notification service.
4
+ *
5
+ * Per-notification `actions` carry a `commandId`/`args` pair — when the
6
+ * user clicks an action button the host dispatches the extension's
7
+ * declared command directly, with no additional listener wiring needed
8
+ * on the extension side.
4
9
  */
5
10
  export interface INotificationService {
6
11
  checkPermission(): Promise<boolean>;
7
12
  requestPermission(): Promise<boolean>;
8
- notify(options: NotificationOptions): Promise<void>;
9
- registerActionTypes(actionTypes: NotificationActionType[]): Promise<void>;
10
- listenForActions(callback: (event: NotificationActionEvent) => void): Promise<void>;
11
- createChannel(channel: NotificationChannel): Promise<void>;
12
- getChannels(): Promise<NotificationChannel[]>;
13
- removeChannel(channelId: string): Promise<void>;
13
+ /**
14
+ * Shows a desktop notification. Resolves with the notification id, which
15
+ * callers can pass to `dismiss()` if the notification is no longer relevant.
16
+ */
17
+ send(options: NotificationOptions): Promise<string>;
18
+ /** Dismiss a previously-shown notification and drop any pending actions. */
19
+ dismiss(notificationId: string): Promise<void>;
14
20
  }
15
21
  //# sourceMappingURL=INotificationService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"INotificationService.d.ts","sourceRoot":"","sources":["../../src/services/INotificationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,mBAAmB,CAAC,WAAW,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,WAAW,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"INotificationService.d.ts","sourceRoot":"","sources":["../../src/services/INotificationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,4EAA4E;IAC5E,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD"}
@@ -7,6 +7,11 @@ export interface ShellChunk {
7
7
  data: string;
8
8
  }
9
9
  export interface ShellHandle {
10
+ /**
11
+ * Id of the underlying spawn. Stable across `attach()` calls — persist
12
+ * this in extension storage to reattach after an iframe reload.
13
+ */
14
+ readonly spawnId: string;
10
15
  /**
11
16
  * Fired when a line of output is received from stdout or stderr.
12
17
  */
@@ -28,6 +33,19 @@ export interface ShellHandle {
28
33
  */
29
34
  abort(): void;
30
35
  }
36
+ /**
37
+ * Snapshot of a spawn tracked by the launcher registry, returned from
38
+ * `list()` and `attach()`. Used to re-identify a surviving child process
39
+ * across iframe reloads.
40
+ */
41
+ export interface ShellDescriptor {
42
+ spawnId: string;
43
+ program: string;
44
+ args: string[];
45
+ pid: number;
46
+ /** Unix millis. */
47
+ startedAt: number;
48
+ }
31
49
  export interface IShellService {
32
50
  /**
33
51
  * Spawns an arbitrary OS process and streams its output.
@@ -35,5 +53,19 @@ export interface IShellService {
35
53
  * User will be prompted to trust the binary on first use.
36
54
  */
37
55
  spawn(params: SpawnParams): ShellHandle;
56
+ /**
57
+ * Returns the descriptors of every live spawn tracked for the calling
58
+ * extension — cross-extension ids are never surfaced. Use on extension
59
+ * boot to discover child processes that survived an iframe reload.
60
+ */
61
+ list(): Promise<ShellDescriptor[]>;
62
+ /**
63
+ * Re-subscribes to an existing spawn's event stream, returning a fresh
64
+ * handle. If the process already exited within the registry's retention
65
+ * window the returned handle fires `onDone` immediately with the stored
66
+ * exit code; cross-extension / unknown ids surface via `onError` with
67
+ * `{ code: 'ATTACH_FAILED' }`.
68
+ */
69
+ attach(spawnId: string): ShellHandle;
38
70
  }
39
71
  //# sourceMappingURL=IShellService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IShellService.d.ts","sourceRoot":"","sources":["../../src/services/IShellService.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE9C;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAEtE;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;CAC3C"}
1
+ {"version":3,"file":"IShellService.d.ts","sourceRoot":"","sources":["../../src/services/IShellService.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE9C;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAEtE;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAExC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEnC;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;CACxC"}
@@ -1,14 +1,10 @@
1
1
  import type { INotificationService } from "./INotificationService";
2
- import type { NotificationActionEvent, NotificationActionType, NotificationChannel, NotificationOptions } from "../types/NotificationType";
2
+ import type { NotificationOptions } from "../types/NotificationType";
3
3
  import { BaseServiceProxy } from "./BaseServiceProxy";
4
4
  export declare class NotificationServiceProxy extends BaseServiceProxy implements INotificationService {
5
5
  checkPermission(): Promise<boolean>;
6
6
  requestPermission(): Promise<boolean>;
7
- notify(options: NotificationOptions): Promise<void>;
8
- registerActionTypes(actionTypes: NotificationActionType[]): Promise<void>;
9
- listenForActions(callback: (event: NotificationActionEvent) => void): Promise<void>;
10
- createChannel(channel: NotificationChannel): Promise<void>;
11
- getChannels(): Promise<NotificationChannel[]>;
12
- removeChannel(channelId: string): Promise<void>;
7
+ send(options: NotificationOptions): Promise<string>;
8
+ dismiss(notificationId: string): Promise<void>;
13
9
  }
14
10
  //# sourceMappingURL=NotificationServiceProxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationServiceProxy.d.ts","sourceRoot":"","sources":["../../src/services/NotificationServiceProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC3I,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,wBAAyB,SAAQ,gBAAiB,YAAW,oBAAoB;IAC5F,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,mBAAmB,CAAC,WAAW,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnF,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,WAAW,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI7C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD"}
1
+ {"version":3,"file":"NotificationServiceProxy.d.ts","sourceRoot":"","sources":["../../src/services/NotificationServiceProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,wBAAyB,SAAQ,gBAAiB,YAAW,oBAAoB;IAC5F,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C"}
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.NotificationServiceProxy = void 0;
4
13
  const BaseServiceProxy_1 = require("./BaseServiceProxy");
@@ -9,27 +18,35 @@ class NotificationServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
9
18
  requestPermission() {
10
19
  return this.broker.invoke('notifications:requestPermission');
11
20
  }
12
- notify(options) {
13
- return this.broker.invoke('notifications:notify', { options });
14
- }
15
- registerActionTypes(actionTypes) {
16
- return this.broker.invoke('notifications:registerActionTypes', { actionTypes });
17
- }
18
- listenForActions(callback) {
19
- this.broker.on('asyar:event:notification:action', (raw) => {
20
- callback(raw);
21
+ send(options) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ if (options.actions) {
24
+ for (const a of options.actions)
25
+ validateAction(a);
26
+ }
27
+ return this.broker.invoke('notifications:send', { options });
21
28
  });
22
- return Promise.resolve();
23
- }
24
- createChannel(channel) {
25
- return this.broker.invoke('notifications:createChannel', { channel });
26
29
  }
27
- getChannels() {
28
- return this.broker.invoke('notifications:getChannels');
29
- }
30
- removeChannel(channelId) {
31
- return this.broker.invoke('notifications:removeChannel', { channelId });
30
+ dismiss(notificationId) {
31
+ return this.broker.invoke('notifications:dismiss', { notificationId });
32
32
  }
33
33
  }
34
34
  exports.NotificationServiceProxy = NotificationServiceProxy;
35
+ function validateAction(a) {
36
+ if (!a.id)
37
+ throw new Error(`NotificationAction requires a non-empty id`);
38
+ if (!a.title)
39
+ throw new Error(`NotificationAction "${a.id}" requires a non-empty title`);
40
+ if (!a.commandId) {
41
+ throw new Error(`NotificationAction "${a.id}" requires a non-empty commandId`);
42
+ }
43
+ if (a.args !== undefined) {
44
+ try {
45
+ JSON.stringify(a.args);
46
+ }
47
+ catch (_a) {
48
+ throw new Error(`NotificationAction "${a.id}" args are not JSON-serialisable`);
49
+ }
50
+ }
51
+ }
35
52
  //# sourceMappingURL=NotificationServiceProxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationServiceProxy.js","sourceRoot":"","sources":["../../src/services/NotificationServiceProxy.ts"],"names":[],"mappings":";;;AAEA,yDAAsD;AAEtD,MAAa,wBAAyB,SAAQ,mCAAgB;IAC5D,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,+BAA+B,CAAC,CAAC;IACtE,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,iCAAiC,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,OAA4B;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,mBAAmB,CAAC,WAAqC;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,mCAAmC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,gBAAgB,CAAC,QAAkD;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAAC,GAAY,EAAE,EAAE;YACjE,QAAQ,CAAC,GAA8B,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,OAA4B;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,6BAA6B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAwB,2BAA2B,CAAC,CAAC;IAChF,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,6BAA6B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;CACF;AAnCD,4DAmCC"}
1
+ {"version":3,"file":"NotificationServiceProxy.js","sourceRoot":"","sources":["../../src/services/NotificationServiceProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,yDAAsD;AAEtD,MAAa,wBAAyB,SAAQ,mCAAgB;IAC5D,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,+BAA+B,CAAC,CAAC;IACtE,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAU,iCAAiC,CAAC,CAAC;IACxE,CAAC;IAEK,IAAI,CAAC,OAA4B;;YACrC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO;oBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAS,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;KAAA;IAED,OAAO,CAAC,cAAsB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,uBAAuB,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC;CACF;AAnBD,4DAmBC;AAED,SAAS,cAAc,CAAC,CAAqB;IAC3C,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACzF,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,uBAAuB,CAAC,CAAC,EAAE,kCAAkC,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -17,8 +17,8 @@ vitest_1.vi.mock('../ipc/MessageBroker', () => ({
17
17
  getInstance: vitest_1.vi.fn(() => ({ invoke: vitest_1.vi.fn(), on: vitest_1.vi.fn(), off: vitest_1.vi.fn() })),
18
18
  },
19
19
  }));
20
- function makeProxy() {
21
- const mockInvoke = vitest_1.vi.fn().mockResolvedValue(undefined);
20
+ function makeProxy(resolved = undefined) {
21
+ const mockInvoke = vitest_1.vi.fn().mockResolvedValue(resolved);
22
22
  vitest_1.vi.mocked(MessageBroker_1.MessageBroker.getInstance).mockReturnValue({
23
23
  invoke: mockInvoke, on: vitest_1.vi.fn(), off: vitest_1.vi.fn(),
24
24
  });
@@ -28,40 +28,76 @@ function makeProxy() {
28
28
  }
29
29
  (0, vitest_1.describe)('NotificationServiceProxy', () => {
30
30
  (0, vitest_1.beforeEach)(() => vitest_1.vi.clearAllMocks());
31
- (0, vitest_1.it)('notify → "notifications:notify"', () => __awaiter(void 0, void 0, void 0, function* () {
32
- const { proxy, mockInvoke } = makeProxy();
33
- yield proxy.notify({ title: 't', body: 'b' });
34
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:notify');
35
- }));
36
- (0, vitest_1.it)('checkPermission → "notifications:checkPermission"', () => __awaiter(void 0, void 0, void 0, function* () {
37
- const { proxy, mockInvoke } = makeProxy();
38
- yield proxy.checkPermission();
39
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:checkPermission');
40
- }));
41
- (0, vitest_1.it)('requestPermission → "notifications:requestPermission"', () => __awaiter(void 0, void 0, void 0, function* () {
42
- const { proxy, mockInvoke } = makeProxy();
43
- yield proxy.requestPermission();
44
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:requestPermission');
45
- }));
46
- (0, vitest_1.it)('registerActionTypes → "notifications:registerActionTypes"', () => __awaiter(void 0, void 0, void 0, function* () {
47
- const { proxy, mockInvoke } = makeProxy();
48
- yield proxy.registerActionTypes([]);
49
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:registerActionTypes');
50
- }));
51
- (0, vitest_1.it)('createChannel → "notifications:createChannel"', () => __awaiter(void 0, void 0, void 0, function* () {
52
- const { proxy, mockInvoke } = makeProxy();
53
- yield proxy.createChannel({ id: 'c', name: 'c', importance: 'default' });
54
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:createChannel');
55
- }));
56
- (0, vitest_1.it)('getChannels → "notifications:getChannels"', () => __awaiter(void 0, void 0, void 0, function* () {
57
- const { proxy, mockInvoke } = makeProxy();
58
- yield proxy.getChannels();
59
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:getChannels');
60
- }));
61
- (0, vitest_1.it)('removeChannel "notifications:removeChannel"', () => __awaiter(void 0, void 0, void 0, function* () {
62
- const { proxy, mockInvoke } = makeProxy();
63
- yield proxy.removeChannel('c');
64
- (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:removeChannel');
65
- }));
31
+ (0, vitest_1.describe)('send', () => {
32
+ (0, vitest_1.it)('sends notifications:send with the full options payload and returns the id', () => __awaiter(void 0, void 0, void 0, function* () {
33
+ const { proxy, mockInvoke } = makeProxy('notif-123');
34
+ const id = yield proxy.send({ title: 'T', body: 'B' });
35
+ (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:send');
36
+ (0, vitest_1.expect)(mockInvoke.mock.calls[0][1]).toEqual({ options: { title: 'T', body: 'B' } });
37
+ (0, vitest_1.expect)(id).toBe('notif-123');
38
+ }));
39
+ (0, vitest_1.it)('forwards actions array on the options payload', () => __awaiter(void 0, void 0, void 0, function* () {
40
+ const { proxy, mockInvoke } = makeProxy('notif-xyz');
41
+ yield proxy.send({
42
+ title: 'Coffee ending',
43
+ actions: [
44
+ { id: 'extend', title: 'Extend 30m', commandId: 'coffee.extend', args: { minutes: 30 } },
45
+ { id: 'stop', title: 'Stop now', commandId: 'coffee.stop' },
46
+ ],
47
+ });
48
+ const payload = mockInvoke.mock.calls[0][1];
49
+ (0, vitest_1.expect)(payload.options.actions).toHaveLength(2);
50
+ (0, vitest_1.expect)(payload.options.actions[0]).toEqual({
51
+ id: 'extend', title: 'Extend 30m', commandId: 'coffee.extend', args: { minutes: 30 },
52
+ });
53
+ (0, vitest_1.expect)(payload.options.actions[1]).toEqual({
54
+ id: 'stop', title: 'Stop now', commandId: 'coffee.stop',
55
+ });
56
+ }));
57
+ (0, vitest_1.it)('rejects actions without a commandId before reaching IPC', () => __awaiter(void 0, void 0, void 0, function* () {
58
+ const { proxy, mockInvoke } = makeProxy();
59
+ yield (0, vitest_1.expect)(proxy.send({
60
+ title: 'x',
61
+ actions: [{ id: 'a', title: 'A', commandId: '' }],
62
+ })).rejects.toThrow(/commandId/i);
63
+ (0, vitest_1.expect)(mockInvoke).not.toHaveBeenCalled();
64
+ }));
65
+ (0, vitest_1.it)('rejects actions with missing id or title', () => __awaiter(void 0, void 0, void 0, function* () {
66
+ const { proxy, mockInvoke } = makeProxy();
67
+ yield (0, vitest_1.expect)(proxy.send({ title: 'x', actions: [{ id: '', title: 'A', commandId: 'cmd.a' }] })).rejects.toThrow(/id/i);
68
+ yield (0, vitest_1.expect)(proxy.send({ title: 'x', actions: [{ id: 'a', title: '', commandId: 'cmd.a' }] })).rejects.toThrow(/title/i);
69
+ (0, vitest_1.expect)(mockInvoke).not.toHaveBeenCalled();
70
+ }));
71
+ (0, vitest_1.it)('rejects actions whose args are not JSON-serialisable', () => __awaiter(void 0, void 0, void 0, function* () {
72
+ const { proxy, mockInvoke } = makeProxy();
73
+ const cyclic = {};
74
+ cyclic.self = cyclic;
75
+ yield (0, vitest_1.expect)(proxy.send({
76
+ title: 'x',
77
+ actions: [{ id: 'a', title: 'A', commandId: 'cmd.a', args: cyclic }],
78
+ })).rejects.toThrow(/serial/i);
79
+ (0, vitest_1.expect)(mockInvoke).not.toHaveBeenCalled();
80
+ }));
81
+ });
82
+ (0, vitest_1.describe)('dismiss', () => {
83
+ (0, vitest_1.it)('sends notifications:dismiss with the notification id', () => __awaiter(void 0, void 0, void 0, function* () {
84
+ const { proxy, mockInvoke } = makeProxy();
85
+ yield proxy.dismiss('notif-abc');
86
+ (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:dismiss');
87
+ (0, vitest_1.expect)(mockInvoke.mock.calls[0][1]).toEqual({ notificationId: 'notif-abc' });
88
+ }));
89
+ });
90
+ (0, vitest_1.describe)('permissions', () => {
91
+ (0, vitest_1.it)('checkPermission maps to notifications:checkPermission', () => __awaiter(void 0, void 0, void 0, function* () {
92
+ const { proxy, mockInvoke } = makeProxy(true);
93
+ yield proxy.checkPermission();
94
+ (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:checkPermission');
95
+ }));
96
+ (0, vitest_1.it)('requestPermission maps to notifications:requestPermission', () => __awaiter(void 0, void 0, void 0, function* () {
97
+ const { proxy, mockInvoke } = makeProxy(true);
98
+ yield proxy.requestPermission();
99
+ (0, vitest_1.expect)(mockInvoke.mock.calls[0][0]).toBe('notifications:requestPermission');
100
+ }));
101
+ });
66
102
  });
67
103
  //# sourceMappingURL=NotificationServiceProxy.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/NotificationServiceProxy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotificationServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/NotificationServiceProxy.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  import { BaseServiceProxy } from './BaseServiceProxy';
2
- import { IShellService, ShellHandle, SpawnParams } from './IShellService';
2
+ import { IShellService, ShellDescriptor, ShellHandle, SpawnParams } from './IShellService';
3
3
  export declare class ShellServiceProxy extends BaseServiceProxy implements IShellService {
4
4
  spawn(params: SpawnParams): ShellHandle;
5
+ list(): Promise<ShellDescriptor[]>;
6
+ attach(spawnId: string): ShellHandle;
7
+ /**
8
+ * Shared listener plumbing used by both `spawn` and `attach`. Registers
9
+ * the message listener BEFORE the IPC call so that no phase event fired
10
+ * by the host side between invoke and the listener attach can be lost.
11
+ */
12
+ private buildHandle;
5
13
  }
6
14
  //# sourceMappingURL=ShellServiceProxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShellServiceProxy.d.ts","sourceRoot":"","sources":["../../src/services/ShellServiceProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAc,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEtF,qBAAa,iBAAkB,SAAQ,gBAAiB,YAAW,aAAa;IAC9E,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;CA+ExC"}
1
+ {"version":3,"file":"ShellServiceProxy.d.ts","sourceRoot":"","sources":["../../src/services/ShellServiceProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,aAAa,EAEb,eAAe,EACf,WAAW,EACX,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,qBAAa,iBAAkB,SAAQ,gBAAiB,YAAW,aAAa;IAC9E,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAWjC,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKxC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAMpC;;;;OAIG;IACH,OAAO,CAAC,WAAW;CA0EpB"}
@@ -1,10 +1,40 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.ShellServiceProxy = void 0;
4
13
  const BaseServiceProxy_1 = require("./BaseServiceProxy");
5
14
  class ShellServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
6
15
  spawn(params) {
7
16
  const spawnId = crypto.randomUUID();
17
+ return this.buildHandle(spawnId, 'SPAWN_FAILED', () => this.broker.invoke('shell:spawn', {
18
+ program: params.program,
19
+ args: params.args,
20
+ spawnId,
21
+ }));
22
+ }
23
+ list() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const result = yield this.broker.invoke('shell:list', {});
26
+ return result !== null && result !== void 0 ? result : [];
27
+ });
28
+ }
29
+ attach(spawnId) {
30
+ return this.buildHandle(spawnId, 'ATTACH_FAILED', () => this.broker.invoke('shell:attach', { spawnId }));
31
+ }
32
+ /**
33
+ * Shared listener plumbing used by both `spawn` and `attach`. Registers
34
+ * the message listener BEFORE the IPC call so that no phase event fired
35
+ * by the host side between invoke and the listener attach can be lost.
36
+ */
37
+ buildHandle(spawnId, invokeErrorCode, invokeCall) {
8
38
  let settled = false;
9
39
  let chunkCb = () => { };
10
40
  let doneCb = () => { };
@@ -20,8 +50,7 @@ class ShellServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
20
50
  if (err) {
21
51
  errorCb(err);
22
52
  }
23
- else if (exitCode !== undefined || !err) {
24
- // Only call doneCb if no error was passed (normal completion)
53
+ else {
25
54
  doneCb(exitCode);
26
55
  }
27
56
  };
@@ -45,20 +74,13 @@ class ShellServiceProxy extends BaseServiceProxy_1.BaseServiceProxy {
45
74
  break;
46
75
  }
47
76
  };
48
- // Register listener BEFORE invoking to avoid races
49
77
  window.addEventListener('message', onMessage);
50
- this.broker
51
- .invoke('shell:spawn', {
52
- program: params.program,
53
- args: params.args,
54
- spawnId,
55
- })
56
- .catch((err) => {
57
- // Handle rejection from the host side (e.g. permission denied)
78
+ invokeCall().catch((err) => {
58
79
  const errorStr = String(err.message || err);
59
- settle({ code: 'SPAWN_FAILED', message: errorStr });
80
+ settle({ code: invokeErrorCode, message: errorStr });
60
81
  });
61
82
  return {
83
+ spawnId,
62
84
  onChunk: (cb) => { chunkCb = cb; },
63
85
  onDone: (cb) => { doneCb = cb; },
64
86
  onError: (cb) => { errorCb = cb; },
@@ -1 +1 @@
1
- {"version":3,"file":"ShellServiceProxy.js","sourceRoot":"","sources":["../../src/services/ShellServiceProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShellServiceProxy.js","sourceRoot":"","sources":["../../src/services/ShellServiceProxy.ts"],"names":[],"mappings":"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"}
@@ -172,5 +172,111 @@ function fireStreamMessage(data) {
172
172
  (0, vitest_1.expect)(onError).not.toHaveBeenCalled();
173
173
  }));
174
174
  });
175
+ // ── list() ─────────────────────────────────────────────────────────────────
176
+ (0, vitest_1.describe)('list()', () => {
177
+ (0, vitest_1.it)('calls broker.invoke with "shell:list" and returns the descriptor array', () => __awaiter(void 0, void 0, void 0, function* () {
178
+ const { proxy, mockInvoke } = makeProxy();
179
+ const descriptors = [
180
+ { spawnId: 's1', program: '/bin/echo', args: ['a'], pid: 100, startedAt: 1 },
181
+ { spawnId: 's2', program: '/bin/git', args: ['status'], pid: 101, startedAt: 2 },
182
+ ];
183
+ mockInvoke.mockResolvedValue(descriptors);
184
+ const result = yield proxy.list();
185
+ // BaseServiceProxy patches invoke to forward the extension id and
186
+ // optional per-call timeout; assert positional prefix only.
187
+ const call = mockInvoke.mock.calls[0];
188
+ (0, vitest_1.expect)(call[0]).toBe('shell:list');
189
+ (0, vitest_1.expect)(call[1]).toEqual({});
190
+ (0, vitest_1.expect)(result).toEqual(descriptors);
191
+ }));
192
+ (0, vitest_1.it)('returns an empty array when the broker returns undefined', () => __awaiter(void 0, void 0, void 0, function* () {
193
+ const { proxy, mockInvoke } = makeProxy();
194
+ mockInvoke.mockResolvedValue(undefined);
195
+ const result = yield proxy.list();
196
+ (0, vitest_1.expect)(result).toEqual([]);
197
+ }));
198
+ (0, vitest_1.it)('propagates broker rejections to the caller', () => __awaiter(void 0, void 0, void 0, function* () {
199
+ const { proxy, mockInvoke } = makeProxy();
200
+ mockInvoke.mockRejectedValue(new Error('boom'));
201
+ yield (0, vitest_1.expect)(proxy.list()).rejects.toThrow('boom');
202
+ }));
203
+ });
204
+ // ── attach() ───────────────────────────────────────────────────────────────
205
+ (0, vitest_1.describe)('attach(spawnId)', () => {
206
+ (0, vitest_1.it)('calls broker.invoke with "shell:attach" and the given spawnId', () => __awaiter(void 0, void 0, void 0, function* () {
207
+ const { proxy, mockInvoke } = makeProxy();
208
+ mockInvoke.mockResolvedValue({ spawnId: 's1', program: 'p', args: [], pid: 1, startedAt: 0 });
209
+ proxy.attach('s1');
210
+ yield vitest_1.vi.waitFor(() => (0, vitest_1.expect)(mockInvoke).toHaveBeenCalled());
211
+ const call = mockInvoke.mock.calls[0];
212
+ (0, vitest_1.expect)(call[0]).toBe('shell:attach');
213
+ (0, vitest_1.expect)(call[1]).toEqual({ spawnId: 's1' });
214
+ }));
215
+ (0, vitest_1.it)('fires onChunk for stream messages matching the attached spawnId', () => __awaiter(void 0, void 0, void 0, function* () {
216
+ const { proxy, mockInvoke } = makeProxy();
217
+ mockInvoke.mockResolvedValue({});
218
+ const onChunk = vitest_1.vi.fn();
219
+ const handle = proxy.attach('attach-id-1');
220
+ handle.onChunk(onChunk);
221
+ fireStreamMessage({
222
+ type: 'asyar:stream',
223
+ streamId: 'attach-id-1',
224
+ phase: 'chunk',
225
+ data: { stream: 'stdout', data: 'tick' },
226
+ });
227
+ (0, vitest_1.expect)(onChunk).toHaveBeenCalledWith({ stream: 'stdout', data: 'tick' });
228
+ }));
229
+ (0, vitest_1.it)('fires onDone when a done phase arrives (Rust immediate-emit for finished entries)', () => __awaiter(void 0, void 0, void 0, function* () {
230
+ const { proxy, mockInvoke } = makeProxy();
231
+ mockInvoke.mockResolvedValue({});
232
+ const onDone = vitest_1.vi.fn();
233
+ const handle = proxy.attach('attach-id-done');
234
+ handle.onDone(onDone);
235
+ fireStreamMessage({
236
+ type: 'asyar:stream',
237
+ streamId: 'attach-id-done',
238
+ phase: 'done',
239
+ data: { exitCode: 0 },
240
+ });
241
+ (0, vitest_1.expect)(onDone).toHaveBeenCalledWith(0);
242
+ }));
243
+ (0, vitest_1.it)('fires onError with ATTACH_FAILED when broker.invoke rejects (unknown id)', () => __awaiter(void 0, void 0, void 0, function* () {
244
+ const { proxy, mockInvoke } = makeProxy();
245
+ mockInvoke.mockRejectedValue(new Error('spawnId "nope" is not tracked'));
246
+ const onError = vitest_1.vi.fn();
247
+ const handle = proxy.attach('nope');
248
+ handle.onError(onError);
249
+ yield vitest_1.vi.waitFor(() => onError.mock.calls.length > 0);
250
+ (0, vitest_1.expect)(onError).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ code: 'ATTACH_FAILED' }));
251
+ }));
252
+ (0, vitest_1.it)('ignores stream messages for other spawnIds', () => __awaiter(void 0, void 0, void 0, function* () {
253
+ const { proxy, mockInvoke } = makeProxy();
254
+ mockInvoke.mockResolvedValue({});
255
+ const onChunk = vitest_1.vi.fn();
256
+ const handle = proxy.attach('mine');
257
+ handle.onChunk(onChunk);
258
+ fireStreamMessage({
259
+ type: 'asyar:stream',
260
+ streamId: 'someone-elses',
261
+ phase: 'chunk',
262
+ data: { stream: 'stdout', data: 'nope' },
263
+ });
264
+ (0, vitest_1.expect)(onChunk).not.toHaveBeenCalled();
265
+ }));
266
+ (0, vitest_1.it)('abort posts an asyar:stream:abort with the attached spawnId', () => __awaiter(void 0, void 0, void 0, function* () {
267
+ const { proxy, mockInvoke } = makeProxy();
268
+ mockInvoke.mockResolvedValue({});
269
+ const spy = vitest_1.vi.spyOn(window.parent, 'postMessage');
270
+ const onError = vitest_1.vi.fn();
271
+ const handle = proxy.attach('abort-me');
272
+ handle.onError(onError);
273
+ handle.abort();
274
+ (0, vitest_1.expect)(spy).toHaveBeenCalledWith({ type: 'asyar:stream:abort', streamId: 'abort-me' }, '*');
275
+ (0, vitest_1.expect)(onError).toHaveBeenCalledWith({
276
+ code: 'ABORTED',
277
+ message: 'Process was aborted by the extension',
278
+ });
279
+ }));
280
+ });
175
281
  });
176
282
  //# sourceMappingURL=ShellServiceProxy.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShellServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/ShellServiceProxy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShellServiceProxy.test.js","sourceRoot":"","sources":["../../src/services/ShellServiceProxy.test.ts"],"names":[],"mappings":"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"}
@@ -1,65 +1,37 @@
1
- declare enum Importance {
2
- None = 0,
3
- Min = 1,
4
- Low = 2,
5
- Default = 3,
6
- High = 4
7
- }
8
- declare enum Visibility {
9
- Secret = -1,
10
- Private = 0,
11
- Public = 1
12
- }
13
- export type NotificationOptions = {
14
- title: string;
15
- body: string;
16
- icon?: string;
17
- channelId?: string;
18
- attachments?: Array<{
19
- id: string;
20
- url: string;
21
- }>;
22
- };
23
- export type NotificationChannel = {
24
- id: string;
25
- name: string;
26
- description: string;
27
- importance?: Importance;
28
- visibility?: Visibility;
29
- lights?: boolean;
30
- lightColor?: string;
31
- vibration?: boolean;
32
- sound?: string;
33
- };
34
- export type NotificationActionType = {
35
- id: string;
36
- actions: Array<{
37
- id: string;
38
- title: string;
39
- requiresAuthentication?: boolean;
40
- foreground?: boolean;
41
- destructive?: boolean;
42
- input?: boolean;
43
- inputButtonTitle?: string;
44
- inputPlaceholder?: string;
45
- }>;
46
- };
47
1
  /**
48
- * Event payload received by `listenForActions` callbacks.
49
- *
50
- * The underlying Tauri notification plugin passes its `Options` type,
51
- * but we define a minimal SDK-side interface covering the fields
52
- * extensions actually need, to avoid leaking a Tauri-internal type
53
- * through the public SDK surface.
2
+ * A button on an OS notification that, when clicked, fires the specified
3
+ * extension command with the provided args. The host looks the command up
4
+ * in the extension's manifest and invokes it through the same dispatch
5
+ * path a search-result click would use no user code on the extension
6
+ * side is needed to receive the event, the command handler just fires.
54
7
  */
55
- export interface NotificationActionEvent {
56
- id?: number;
8
+ export interface NotificationAction {
9
+ /** Action-local identifier (unique within the notification). */
10
+ id: string;
11
+ /** Button label shown in the OS notification. */
12
+ title: string;
13
+ /**
14
+ * The extension's own command to fire when this action is clicked.
15
+ * Must match a command id declared in the extension's manifest.json —
16
+ * the host rejects actions whose commandId is unknown.
17
+ */
18
+ commandId: string;
19
+ /** Extra arguments passed to the command handler. Must be JSON-serialisable. */
20
+ args?: Record<string, unknown>;
21
+ }
22
+ export interface NotificationOptions {
57
23
  title: string;
58
24
  body?: string;
59
- actionTypeId?: string;
60
- channelId?: string;
61
- group?: string;
62
- extra?: Record<string, unknown>;
25
+ icon?: string;
26
+ /**
27
+ * Optional action buttons. Platform action-count limits apply:
28
+ * - **macOS**: 1 main button + optional close button (multi-action uses dropdown UI).
29
+ * - **Linux**: depends on the notification daemon (GNOME/KDE typically 2–4).
30
+ * - **Windows**: toast actions not yet wired through the Tauri plugin; notification sends without buttons.
31
+ *
32
+ * When a platform can't render actions, the notification is still sent —
33
+ * the action buttons are silently dropped and a warning is logged.
34
+ */
35
+ actions?: NotificationAction[];
63
36
  }
64
- export {};
65
37
  //# sourceMappingURL=NotificationType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationType.d.ts","sourceRoot":"","sources":["../../src/types/NotificationType.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,UAAU;IACrB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,GAAG,IAAI;IACP,OAAO,IAAI;IACX,IAAI,IAAI;CACT;AAED,OAAO,MAAM,UAAU;IACrB,MAAM,KAAK;IACX,OAAO,IAAI;IACX,MAAM,IAAI;CACX;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACJ,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC"}
1
+ {"version":3,"file":"NotificationType.d.ts","sourceRoot":"","sources":["../../src/types/NotificationType.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asyar-sdk",
3
- "version": "1.15.6",
3
+ "version": "1.15.8",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "asyar": "./dist/cli/index.js"