asyar-sdk 1.10.2 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +70 -4
  2. package/dist/ExtensionBridge.d.ts +48 -0
  3. package/dist/ExtensionBridge.d.ts.map +1 -1
  4. package/dist/ExtensionBridge.js +141 -3
  5. package/dist/ExtensionBridge.js.map +1 -1
  6. package/dist/ExtensionBridge.test.js +65 -0
  7. package/dist/ExtensionBridge.test.js.map +1 -1
  8. package/dist/ExtensionContext.d.ts +77 -1
  9. package/dist/ExtensionContext.d.ts.map +1 -1
  10. package/dist/ExtensionContext.js +114 -0
  11. package/dist/ExtensionContext.js.map +1 -1
  12. package/dist/ExtensionContext.test.d.ts +2 -0
  13. package/dist/ExtensionContext.test.d.ts.map +1 -0
  14. package/dist/ExtensionContext.test.js +101 -0
  15. package/dist/ExtensionContext.test.js.map +1 -0
  16. package/dist/cli/commands/build.d.ts.map +1 -1
  17. package/dist/cli/commands/build.js +17 -7
  18. package/dist/cli/commands/build.js.map +1 -1
  19. package/dist/cli/lib/manifest.d.ts +22 -1
  20. package/dist/cli/lib/manifest.d.ts.map +1 -1
  21. package/dist/cli/lib/manifest.js +129 -1
  22. package/dist/cli/lib/manifest.js.map +1 -1
  23. package/dist/icons/iconData.d.ts.map +1 -1
  24. package/dist/icons/iconData.js +28 -0
  25. package/dist/icons/iconData.js.map +1 -1
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +5 -3
  29. package/dist/index.js.map +1 -1
  30. package/dist/search/textUtils.d.ts +2 -1
  31. package/dist/search/textUtils.d.ts.map +1 -1
  32. package/dist/search/textUtils.js +143 -7
  33. package/dist/search/textUtils.js.map +1 -1
  34. package/dist/search/textUtils.test.js +47 -0
  35. package/dist/search/textUtils.test.js.map +1 -1
  36. package/dist/services/AIServiceProxy.d.ts +6 -0
  37. package/dist/services/AIServiceProxy.d.ts.map +1 -0
  38. package/dist/services/AIServiceProxy.js +99 -0
  39. package/dist/services/AIServiceProxy.js.map +1 -0
  40. package/dist/services/AIServiceProxy.test.d.ts +2 -0
  41. package/dist/services/AIServiceProxy.test.d.ts.map +1 -0
  42. package/dist/services/AIServiceProxy.test.js +192 -0
  43. package/dist/services/AIServiceProxy.test.js.map +1 -0
  44. package/dist/services/ActionServiceProxy.d.ts +1 -0
  45. package/dist/services/ActionServiceProxy.d.ts.map +1 -1
  46. package/dist/services/ActionServiceProxy.js +3 -0
  47. package/dist/services/ActionServiceProxy.js.map +1 -1
  48. package/dist/services/ApplicationService.d.ts +39 -0
  49. package/dist/services/ApplicationService.d.ts.map +1 -0
  50. package/dist/services/ApplicationService.js +32 -0
  51. package/dist/services/ApplicationService.js.map +1 -0
  52. package/dist/services/ApplicationService.test.d.ts +2 -0
  53. package/dist/services/ApplicationService.test.d.ts.map +1 -0
  54. package/dist/services/ApplicationService.test.js +75 -0
  55. package/dist/services/ApplicationService.test.js.map +1 -0
  56. package/dist/services/BaseServiceProxy.d.ts.map +1 -1
  57. package/dist/services/BaseServiceProxy.js +3 -1
  58. package/dist/services/BaseServiceProxy.js.map +1 -1
  59. package/dist/services/CacheServiceProxy.d.ts +27 -0
  60. package/dist/services/CacheServiceProxy.d.ts.map +1 -0
  61. package/dist/services/CacheServiceProxy.js +67 -0
  62. package/dist/services/CacheServiceProxy.js.map +1 -0
  63. package/dist/services/CacheServiceProxy.test.d.ts +2 -0
  64. package/dist/services/CacheServiceProxy.test.d.ts.map +1 -0
  65. package/dist/services/CacheServiceProxy.test.js +61 -0
  66. package/dist/services/CacheServiceProxy.test.js.map +1 -0
  67. package/dist/services/ClipboardHistoryServiceProxy.d.ts +1 -0
  68. package/dist/services/ClipboardHistoryServiceProxy.d.ts.map +1 -1
  69. package/dist/services/ClipboardHistoryServiceProxy.js +3 -0
  70. package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
  71. package/dist/services/CommandServiceProxy.d.ts +3 -0
  72. package/dist/services/CommandServiceProxy.d.ts.map +1 -1
  73. package/dist/services/CommandServiceProxy.js +8 -0
  74. package/dist/services/CommandServiceProxy.js.map +1 -1
  75. package/dist/services/CommandServiceProxy.test.d.ts +2 -0
  76. package/dist/services/CommandServiceProxy.test.d.ts.map +1 -0
  77. package/dist/services/CommandServiceProxy.test.js +69 -0
  78. package/dist/services/CommandServiceProxy.test.js.map +1 -0
  79. package/dist/services/ExtensionManagerProxy.d.ts +1 -1
  80. package/dist/services/ExtensionManagerProxy.d.ts.map +1 -1
  81. package/dist/services/ExtensionManagerProxy.js +2 -2
  82. package/dist/services/ExtensionManagerProxy.js.map +1 -1
  83. package/dist/services/FeedbackServiceProxy.d.ts +25 -0
  84. package/dist/services/FeedbackServiceProxy.d.ts.map +1 -0
  85. package/dist/services/FeedbackServiceProxy.js +41 -0
  86. package/dist/services/FeedbackServiceProxy.js.map +1 -0
  87. package/dist/services/FileManagerServiceProxy.d.ts +7 -0
  88. package/dist/services/FileManagerServiceProxy.d.ts.map +1 -0
  89. package/dist/services/FileManagerServiceProxy.js +27 -0
  90. package/dist/services/FileManagerServiceProxy.js.map +1 -0
  91. package/dist/services/FileManagerServiceProxy.test.d.ts +2 -0
  92. package/dist/services/FileManagerServiceProxy.test.d.ts.map +1 -0
  93. package/dist/services/FileManagerServiceProxy.test.js +56 -0
  94. package/dist/services/FileManagerServiceProxy.test.js.map +1 -0
  95. package/dist/services/IAIService.d.ts +66 -0
  96. package/dist/services/IAIService.d.ts.map +1 -0
  97. package/dist/services/IAIService.js +3 -0
  98. package/dist/services/IAIService.js.map +1 -0
  99. package/dist/services/ICacheService.d.ts +45 -0
  100. package/dist/services/ICacheService.d.ts.map +1 -0
  101. package/dist/services/ICacheService.js +3 -0
  102. package/dist/services/ICacheService.js.map +1 -0
  103. package/dist/services/IClipboardHistoryService.d.ts +6 -0
  104. package/dist/services/IClipboardHistoryService.d.ts.map +1 -1
  105. package/dist/services/ICommandService.d.ts +3 -0
  106. package/dist/services/ICommandService.d.ts.map +1 -1
  107. package/dist/services/IExtensionManager.d.ts +7 -4
  108. package/dist/services/IExtensionManager.d.ts.map +1 -1
  109. package/dist/services/IFeedbackService.d.ts +84 -0
  110. package/dist/services/IFeedbackService.d.ts.map +1 -0
  111. package/dist/services/IFeedbackService.js +3 -0
  112. package/dist/services/IFeedbackService.js.map +1 -0
  113. package/dist/services/IFileManagerService.d.ts +33 -0
  114. package/dist/services/IFileManagerService.d.ts.map +1 -0
  115. package/dist/services/IFileManagerService.js +3 -0
  116. package/dist/services/IFileManagerService.js.map +1 -0
  117. package/dist/services/IInteropService.d.ts +16 -0
  118. package/dist/services/IInteropService.d.ts.map +1 -0
  119. package/dist/services/IInteropService.js +12 -0
  120. package/dist/services/IInteropService.js.map +1 -0
  121. package/dist/services/IOAuthService.d.ts +68 -0
  122. package/dist/services/IOAuthService.d.ts.map +1 -0
  123. package/dist/services/IOAuthService.js +3 -0
  124. package/dist/services/IOAuthService.js.map +1 -0
  125. package/dist/services/ISelectionService.d.ts +23 -0
  126. package/dist/services/ISelectionService.d.ts.map +1 -0
  127. package/dist/services/ISelectionService.js +3 -0
  128. package/dist/services/ISelectionService.js.map +1 -0
  129. package/dist/services/IShellService.d.ts +39 -0
  130. package/dist/services/IShellService.d.ts.map +1 -0
  131. package/dist/services/IShellService.js +3 -0
  132. package/dist/services/IShellService.js.map +1 -0
  133. package/dist/services/IStorageService.d.ts +22 -0
  134. package/dist/services/IStorageService.d.ts.map +1 -0
  135. package/dist/services/IStorageService.js +3 -0
  136. package/dist/services/IStorageService.js.map +1 -0
  137. package/dist/services/InteropServiceProxy.d.ts +6 -0
  138. package/dist/services/InteropServiceProxy.d.ts.map +1 -0
  139. package/dist/services/InteropServiceProxy.js +26 -0
  140. package/dist/services/InteropServiceProxy.js.map +1 -0
  141. package/dist/services/InteropServiceProxy.test.d.ts +2 -0
  142. package/dist/services/InteropServiceProxy.test.d.ts.map +1 -0
  143. package/dist/services/InteropServiceProxy.test.js +59 -0
  144. package/dist/services/InteropServiceProxy.test.js.map +1 -0
  145. package/dist/services/OAuthServiceProxy.d.ts +18 -0
  146. package/dist/services/OAuthServiceProxy.d.ts.map +1 -0
  147. package/dist/services/OAuthServiceProxy.js +70 -0
  148. package/dist/services/OAuthServiceProxy.js.map +1 -0
  149. package/dist/services/OAuthServiceProxy.test.d.ts +2 -0
  150. package/dist/services/OAuthServiceProxy.test.d.ts.map +1 -0
  151. package/dist/services/OAuthServiceProxy.test.js +165 -0
  152. package/dist/services/OAuthServiceProxy.test.js.map +1 -0
  153. package/dist/services/SelectionServiceProxy.d.ts +10 -0
  154. package/dist/services/SelectionServiceProxy.d.ts.map +1 -0
  155. package/dist/services/SelectionServiceProxy.js +17 -0
  156. package/dist/services/SelectionServiceProxy.js.map +1 -0
  157. package/dist/services/ShellServiceProxy.d.ts +6 -0
  158. package/dist/services/ShellServiceProxy.d.ts.map +1 -0
  159. package/dist/services/ShellServiceProxy.js +78 -0
  160. package/dist/services/ShellServiceProxy.js.map +1 -0
  161. package/dist/services/StorageServiceProxy.d.ts +16 -0
  162. package/dist/services/StorageServiceProxy.d.ts.map +1 -0
  163. package/dist/services/StorageServiceProxy.js +48 -0
  164. package/dist/services/StorageServiceProxy.js.map +1 -0
  165. package/dist/services/WindowManagementService.d.ts +48 -0
  166. package/dist/services/WindowManagementService.d.ts.map +1 -0
  167. package/dist/services/WindowManagementService.js +37 -0
  168. package/dist/services/WindowManagementService.js.map +1 -0
  169. package/dist/services/WindowManagementService.test.d.ts +2 -0
  170. package/dist/services/WindowManagementService.test.d.ts.map +1 -0
  171. package/dist/services/WindowManagementService.test.js +51 -0
  172. package/dist/services/WindowManagementService.test.js.map +1 -0
  173. package/dist/services/index.d.ts +23 -0
  174. package/dist/services/index.d.ts.map +1 -1
  175. package/dist/services/index.js +27 -1
  176. package/dist/services/index.js.map +1 -1
  177. package/dist/types/ActionType.d.ts +2 -0
  178. package/dist/types/ActionType.d.ts.map +1 -1
  179. package/dist/types/ActionType.js.map +1 -1
  180. package/dist/types/ClipboardType.d.ts +13 -0
  181. package/dist/types/ClipboardType.d.ts.map +1 -1
  182. package/dist/types/ExtensionType.d.ts +72 -0
  183. package/dist/types/ExtensionType.d.ts.map +1 -1
  184. package/package.json +1 -1
package/README.md CHANGED
@@ -275,9 +275,73 @@ Valid values: `"macos"`, `"windows"`, `"linux"`. You can list any combination.
275
275
 
276
276
  Distributed under the AGPLv3 License. See LICENSE.md for more information.
277
277
 
278
- ## Registering Actions
278
+ ## Actions — The ⌘K Panel
279
279
 
280
- Extensions can register actions that appear in the ⌘K panel. Actions support optional grouping via the `category` field and icons via `icon`.
280
+ There are two ways to contribute actions to Asyar's ⌘K panel:
281
+
282
+ ### 1. Manifest-declared actions (root search)
283
+
284
+ Declare actions directly in `manifest.json`. These appear in the ⌘K drawer while the user has your command highlighted in the **main search results** — before opening any view.
285
+
286
+ **`manifest.json`:**
287
+ ```json
288
+ {
289
+ "id": "com.example.github",
290
+ "actions": [
291
+ {
292
+ "id": "open-settings",
293
+ "title": "Extension Settings",
294
+ "icon": "icon:settings",
295
+ "shortcut": "⌘,",
296
+ "category": "System"
297
+ }
298
+ ],
299
+ "commands": [
300
+ {
301
+ "id": "search-repos",
302
+ "name": "Search Repositories",
303
+ "resultType": "view",
304
+ "actions": [
305
+ {
306
+ "id": "clone-repo",
307
+ "title": "Clone Repository",
308
+ "icon": "icon:download",
309
+ "shortcut": "⌘⇧C",
310
+ "category": "Primary"
311
+ }
312
+ ]
313
+ }
314
+ ]
315
+ }
316
+ ```
317
+
318
+ Register handlers in your extension's `initialize()` or `activate()`:
319
+
320
+ ```typescript
321
+ class GitHubExtension implements Extension {
322
+ async initialize(context: ExtensionContext): Promise<void> {
323
+ // Extension-level: visible when any GitHub command is selected
324
+ context.actions.registerActionHandler('open-settings', async () => {
325
+ // your handler
326
+ });
327
+
328
+ // Command-level: visible only when "search-repos" is selected
329
+ context.actions.registerActionHandler('clone-repo', async () => {
330
+ // your handler
331
+ });
332
+ }
333
+ }
334
+ ```
335
+
336
+ The `actionId` you pass to `registerActionHandler` is the short local ID from `manifest.json`, not the full internal ID (`act_{extensionId}_{actionId}`).
337
+
338
+ **Visibility rules:**
339
+ - Root-level `actions[]` — visible when **any** command from your extension is highlighted
340
+ - Command-level `actions[]` — visible only when **that specific command** is highlighted
341
+
342
+ ### 2. Programmatic actions (inside extension views)
343
+
344
+ Register actions in code from your extension view components. These appear while your extension panel is open.
281
345
 
282
346
  ```typescript
283
347
  import { ActionContext, ActionCategory } from 'asyar-sdk';
@@ -287,15 +351,17 @@ actionService.registerAction({
287
351
  title: 'Do Something',
288
352
  description: 'A helpful description shown in the panel',
289
353
  icon: '✨',
290
- category: ActionCategory.PRIMARY, // Optional — groups related actions
354
+ category: ActionCategory.PRIMARY,
291
355
  extensionId: context.extensionId,
292
- context: ActionContext.GLOBAL,
356
+ context: ActionContext.EXTENSION_VIEW,
293
357
  execute: async () => {
294
358
  // your action logic
295
359
  }
296
360
  })
297
361
  ```
298
362
 
363
+ Always unregister in `onDestroy` to prevent stale actions persisting across views.
364
+
299
365
  ### Standard categories (`ActionCategory`)
300
366
 
301
367
  | Constant | Display name | Use for |
@@ -1,3 +1,4 @@
1
+ import { ExtensionContext } from "./ExtensionContext";
1
2
  import type { Extension, ExtensionManifest } from "./types/ExtensionType";
2
3
  import type { ExtensionAction } from "./types/ActionType";
3
4
  import type { CommandHandler } from "./types/CommandType";
@@ -8,6 +9,8 @@ export declare class ExtensionBridge {
8
9
  private componentRegistry;
9
10
  private actionRegistry;
10
11
  private commandRegistry;
12
+ private preferences;
13
+ private activeContexts;
11
14
  private broker;
12
15
  private logger;
13
16
  private constructor();
@@ -17,6 +20,51 @@ export declare class ExtensionBridge {
17
20
  registerAction(extensionId: string, action: ExtensionAction): void;
18
21
  unregisterAction(actionId: string): void;
19
22
  getActions(): ExtensionAction[];
23
+ /**
24
+ * Register a handler for a manifest-declared action.
25
+ * Stores the handler locally in the actionRegistry so the
26
+ * asyar:action:execute message from the host can find it.
27
+ * No IPC message sent — the host already knows about the action from the manifest.
28
+ */
29
+ registerActionHandler(extensionId: string, actionId: string, handler: () => Promise<void> | void): void;
30
+ /**
31
+ * Tells the bridge which extension this iframe represents so its internal
32
+ * `LogServiceProxy` can stamp `extensionId` on every IPC log call.
33
+ *
34
+ * Without this, every `this.logger.debug(...)` from the bridge fires a
35
+ * `log:debug` postMessage with no extensionId, and the host's
36
+ * `ExtensionIpcRouter` rejects it as "untrusted frame, no extensionId" —
37
+ * producing per-tick error spam in the dev console for any extension that
38
+ * re-registers actions on a timer (e.g. pomodoro's countdown).
39
+ */
40
+ setExtensionId(extensionId: string): void;
41
+ /**
42
+ * Register a live `ExtensionContext` with the bridge as the active
43
+ * context for an extension id. This is what lets the
44
+ * `asyar:event:preferences:set-all` listener find the context and
45
+ * call `setPreferences` on it.
46
+ *
47
+ * Tier 2 iframes that bootstrap by creating their own
48
+ * `ExtensionContext` (instead of going through the bridge's
49
+ * `initializeExtensions()` path) must call this so they show up in
50
+ * `activeContexts`. Otherwise the preferences bundle arrives at the
51
+ * bridge but never reaches the live context — it only lands in the
52
+ * `this.preferences` map which is consulted by `initializeExtensions`.
53
+ *
54
+ * Called from `ExtensionContext.setExtensionId`, so Tier 2 iframes get
55
+ * this for free as long as they call `setExtensionId(id)` during boot.
56
+ */
57
+ registerActiveContext(extensionId: string, context: ExtensionContext): void;
58
+ /**
59
+ * Store a preference bundle (extension-level + command-level) for an
60
+ * extension. Called by the host-side ExtensionLoader before the extension
61
+ * is initialized, so that `initializeExtensions` can hand it to the new
62
+ * ExtensionContext as a frozen snapshot.
63
+ */
64
+ setPreferences(extensionId: string, bundle: {
65
+ extension: Record<string, unknown>;
66
+ commands: Record<string, Record<string, unknown>>;
67
+ }): void;
20
68
  registerManifest(manifest: ExtensionManifest): void;
21
69
  registerExtensionImplementation(id: string, extension: Extension): void;
22
70
  initializeExtensions(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionBridge.d.ts","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,wBAAwB,CAAqC;IACrE,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,eAAe,CAGT;IACd,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO;WAUO,WAAW,IAAI,eAAe;IAO5C,OAAO,CAAC,iBAAiB;IA0FzB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI;IAS/D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAWlE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,UAAU,IAAI,eAAe,EAAE;IAK/B,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAMnD,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAWjE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3C,YAAY,IAAI,iBAAiB,EAAE;IAKnC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAKtD,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAK7D,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,GAClB,IAAI;IAMP,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB,OAAO,CAAC,GAAG,CAAC;IASf,WAAW,IAAI,MAAM,EAAE;IAKvB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;CAKvD"}
1
+ {"version":3,"file":"ExtensionBridge.d.ts","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,wBAAwB,CAAqC;IACrE,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,eAAe,CAGT;IACd,OAAO,CAAC,WAAW,CAGL;IACd,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO;WAUO,WAAW,IAAI,eAAe;IAO5C,OAAO,CAAC,iBAAiB;IA+IzB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI;IAS/D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IAWlE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,UAAU,IAAI,eAAe,EAAE;IAI/B;;;;;OAKG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAWvG;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAkB3E;;;;;OAKG;IACH,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,GAChG,IAAI;IAKP,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAMnD,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAWjE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3C,YAAY,IAAI,iBAAiB,EAAE;IAKnC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAKtD,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAK7D,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,GAClB,IAAI;IAMP,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzB,OAAO,CAAC,GAAG,CAAC;IASf,WAAW,IAAI,MAAM,EAAE;IAKvB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;CAKvD"}
@@ -21,6 +21,8 @@ class ExtensionBridge {
21
21
  this.componentRegistry = {};
22
22
  this.actionRegistry = new Map();
23
23
  this.commandRegistry = new Map();
24
+ this.preferences = new Map();
25
+ this.activeContexts = new Map();
24
26
  this.logger = new LogServiceProxy_1.LogServiceProxy();
25
27
  this.broker = MessageBroker_1.MessageBroker.getInstance();
26
28
  this.setupIPCListeners();
@@ -52,6 +54,39 @@ class ExtensionBridge {
52
54
  });
53
55
  }
54
56
  }));
57
+ // The broker routes anything under `asyar:event:*` straight to registered
58
+ // listeners with the payload unwrapped (see MessageBroker.handleMessage).
59
+ // That's why the message type uses the `:event:` namespace here instead
60
+ // of a plain `asyar:preferences:set-all` — a non-event message would be
61
+ // filtered out and the listener would silently never fire.
62
+ this.broker.on('asyar:event:preferences:set-all', (payload) => {
63
+ var _a, _b;
64
+ const bundle = {
65
+ extension: (_a = payload === null || payload === void 0 ? void 0 : payload.extension) !== null && _a !== void 0 ? _a : {},
66
+ commands: (_b = payload === null || payload === void 0 ? void 0 : payload.commands) !== null && _b !== void 0 ? _b : {},
67
+ };
68
+ // Iterate `activeContexts`, not `extensionManifests`. Tier 2 iframes
69
+ // bootstrap via `new ExtensionContext()` directly — they never call
70
+ // `bridge.registerManifest`, so `extensionManifests` is empty. But
71
+ // `activeContexts` is populated by the self-register path in
72
+ // `ExtensionContext.setExtensionId`, so that's where the live
73
+ // contexts live in both Tier 1 and Tier 2.
74
+ //
75
+ // Also store the bundle in `this.preferences` so any context that
76
+ // registers AFTER this message arrives can pick it up via the
77
+ // stash-and-drain path in `registerActiveContext`.
78
+ for (const [id, context] of this.activeContexts) {
79
+ this.preferences.set(id, bundle);
80
+ context.setPreferences(bundle);
81
+ }
82
+ // Race guard: if the reply arrived before any context registered
83
+ // (the iframe posts `asyar:extension:loaded` asynchronously), stash
84
+ // under a sentinel key. The next `registerActiveContext` call will
85
+ // drain it into the real extension id.
86
+ if (this.activeContexts.size === 0) {
87
+ this.preferences.set('__pending__', bundle);
88
+ }
89
+ });
55
90
  // Listen for search requests from the host
56
91
  if (typeof window !== 'undefined') {
57
92
  window.addEventListener('message', (event) => __awaiter(this, void 0, void 0, function* () {
@@ -72,6 +107,18 @@ class ExtensionBridge {
72
107
  }
73
108
  return;
74
109
  }
110
+ // Handle scheduled/direct command execution from host
111
+ if (data.type === 'asyar:command:execute') {
112
+ const { commandId, args } = data.payload;
113
+ // Each Tier 2 iframe has exactly one extension
114
+ for (const extension of this.extensionImplementations.values()) {
115
+ if (typeof extension.executeCommand === 'function') {
116
+ Promise.resolve(extension.executeCommand(commandId, args))
117
+ .catch((err) => this.logger.error(err));
118
+ }
119
+ }
120
+ return;
121
+ }
75
122
  // Handle search requests (existing logic)
76
123
  if (data.type !== 'asyar:search:request')
77
124
  return;
@@ -139,6 +186,78 @@ class ExtensionBridge {
139
186
  getActions() {
140
187
  return Array.from(this.actionRegistry.values());
141
188
  }
189
+ /**
190
+ * Register a handler for a manifest-declared action.
191
+ * Stores the handler locally in the actionRegistry so the
192
+ * asyar:action:execute message from the host can find it.
193
+ * No IPC message sent — the host already knows about the action from the manifest.
194
+ */
195
+ registerActionHandler(extensionId, actionId, handler) {
196
+ const fullActionId = `act_${extensionId}_${actionId}`;
197
+ this.actionRegistry.set(fullActionId, {
198
+ id: fullActionId,
199
+ title: actionId,
200
+ extensionId,
201
+ execute: handler,
202
+ });
203
+ this.logger.debug(`Registered action handler: ${fullActionId}`);
204
+ }
205
+ /**
206
+ * Tells the bridge which extension this iframe represents so its internal
207
+ * `LogServiceProxy` can stamp `extensionId` on every IPC log call.
208
+ *
209
+ * Without this, every `this.logger.debug(...)` from the bridge fires a
210
+ * `log:debug` postMessage with no extensionId, and the host's
211
+ * `ExtensionIpcRouter` rejects it as "untrusted frame, no extensionId" —
212
+ * producing per-tick error spam in the dev console for any extension that
213
+ * re-registers actions on a timer (e.g. pomodoro's countdown).
214
+ */
215
+ setExtensionId(extensionId) {
216
+ if (typeof this.logger.setExtensionId === 'function') {
217
+ this.logger.setExtensionId(extensionId);
218
+ }
219
+ }
220
+ /**
221
+ * Register a live `ExtensionContext` with the bridge as the active
222
+ * context for an extension id. This is what lets the
223
+ * `asyar:event:preferences:set-all` listener find the context and
224
+ * call `setPreferences` on it.
225
+ *
226
+ * Tier 2 iframes that bootstrap by creating their own
227
+ * `ExtensionContext` (instead of going through the bridge's
228
+ * `initializeExtensions()` path) must call this so they show up in
229
+ * `activeContexts`. Otherwise the preferences bundle arrives at the
230
+ * bridge but never reaches the live context — it only lands in the
231
+ * `this.preferences` map which is consulted by `initializeExtensions`.
232
+ *
233
+ * Called from `ExtensionContext.setExtensionId`, so Tier 2 iframes get
234
+ * this for free as long as they call `setExtensionId(id)` during boot.
235
+ */
236
+ registerActiveContext(extensionId, context) {
237
+ var _a;
238
+ this.activeContexts.set(extensionId, context);
239
+ // If we've already received a preferences bundle for this extension
240
+ // (e.g. boot reply arrived before the context was registered, or a
241
+ // live update landed earlier), deliver it now so the late-joining
242
+ // context sees the latest snapshot immediately. The `__pending__`
243
+ // sentinel key is used when the message arrives before any context
244
+ // is registered — we move it to the real id and clear the sentinel.
245
+ const existing = (_a = this.preferences.get(extensionId)) !== null && _a !== void 0 ? _a : this.preferences.get('__pending__');
246
+ if (existing) {
247
+ context.setPreferences(existing);
248
+ this.preferences.set(extensionId, existing);
249
+ this.preferences.delete('__pending__');
250
+ }
251
+ }
252
+ /**
253
+ * Store a preference bundle (extension-level + command-level) for an
254
+ * extension. Called by the host-side ExtensionLoader before the extension
255
+ * is initialized, so that `initializeExtensions` can hand it to the new
256
+ * ExtensionContext as a frozen snapshot.
257
+ */
258
+ setPreferences(extensionId, bundle) {
259
+ this.preferences.set(extensionId, bundle);
260
+ }
142
261
  // Register an extension manifest
143
262
  registerManifest(manifest) {
144
263
  this.extensionManifests.set(manifest.id, manifest);
@@ -164,8 +283,17 @@ class ExtensionBridge {
164
283
  }
165
284
  this.logger.debug(`Initializing extension: ${manifest.id} (${manifest.name})`);
166
285
  const context = new ExtensionContext_1.ExtensionContext();
286
+ // `setExtensionId` self-registers the context with the bridge and
287
+ // drains any stashed preferences bundle (either under `manifest.id`
288
+ // or the `__pending__` sentinel). No need to set `activeContexts`
289
+ // or call `setPreferences` directly here — it already happened.
167
290
  context.setExtensionId(manifest.id);
168
- yield extension.initialize(context);
291
+ try {
292
+ yield extension.initialize(context);
293
+ }
294
+ catch (error) {
295
+ this.logger.error(`Failed to initialize extension ${manifest.id}: ${error}`);
296
+ }
169
297
  }
170
298
  });
171
299
  }
@@ -177,7 +305,12 @@ class ExtensionBridge {
177
305
  if (!manifest)
178
306
  continue;
179
307
  this.logger.debug(`Activating extension: ${manifest.id}`);
180
- yield extension.activate();
308
+ try {
309
+ yield extension.activate();
310
+ }
311
+ catch (error) {
312
+ this.logger.error(`Failed to activate extension ${manifest.id}: ${error}`);
313
+ }
181
314
  }
182
315
  });
183
316
  }
@@ -189,7 +322,12 @@ class ExtensionBridge {
189
322
  if (!manifest)
190
323
  continue;
191
324
  this.logger.debug(`Deactivating extension: ${manifest.id}`);
192
- yield extension.deactivate();
325
+ try {
326
+ yield extension.deactivate();
327
+ }
328
+ catch (error) {
329
+ this.logger.error(`Failed to deactivate extension ${manifest.id}: ${error}`);
330
+ }
193
331
  }
194
332
  });
195
333
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionBridge.js","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExtensionBridge.js","sourceRoot":"","sources":["../src/ExtensionBridge.ts"],"names":[],"mappings":"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"}
@@ -226,4 +226,69 @@ vitest_1.vi.mock('./services/LogServiceProxy', () => ({
226
226
  });
227
227
  }));
228
228
  });
229
+ (0, vitest_1.describe)('ExtensionBridge registerActionHandler', () => {
230
+ let messageHandler;
231
+ (0, vitest_1.beforeEach)(() => {
232
+ vitest_1.vi.resetModules();
233
+ vitest_1.vi.spyOn(window, 'addEventListener').mockImplementation((type, handler) => {
234
+ if (type === 'message') {
235
+ messageHandler = handler;
236
+ }
237
+ });
238
+ Object.defineProperty(window, 'parent', {
239
+ value: { postMessage: vitest_1.vi.fn() },
240
+ writable: true,
241
+ configurable: true,
242
+ });
243
+ });
244
+ (0, vitest_1.afterEach)(() => {
245
+ vitest_1.vi.restoreAllMocks();
246
+ messageHandler = undefined;
247
+ });
248
+ (0, vitest_1.it)('stores handler in actionRegistry with full action ID', () => __awaiter(void 0, void 0, void 0, function* () {
249
+ const { ExtensionBridge } = yield Promise.resolve().then(() => __importStar(require('./ExtensionBridge')));
250
+ const bridge = ExtensionBridge.getInstance();
251
+ const handler = vitest_1.vi.fn();
252
+ bridge.registerActionHandler('com.example.github', 'open-browser', handler);
253
+ const actions = bridge.getActions();
254
+ const found = actions.find(a => a.id === 'act_com.example.github_open-browser');
255
+ (0, vitest_1.expect)(found).toBeDefined();
256
+ (0, vitest_1.expect)(found.extensionId).toBe('com.example.github');
257
+ }));
258
+ (0, vitest_1.it)('handler is invoked when asyar:action:execute message arrives', () => __awaiter(void 0, void 0, void 0, function* () {
259
+ const { ExtensionBridge } = yield Promise.resolve().then(() => __importStar(require('./ExtensionBridge')));
260
+ const bridge = ExtensionBridge.getInstance();
261
+ const handler = vitest_1.vi.fn();
262
+ bridge.registerActionHandler('com.example.github', 'open-browser', handler);
263
+ (0, vitest_1.expect)(messageHandler).toBeDefined();
264
+ const event = new MessageEvent('message', {
265
+ data: {
266
+ type: 'asyar:action:execute',
267
+ payload: { actionId: 'act_com.example.github_open-browser' },
268
+ },
269
+ source: window.parent,
270
+ });
271
+ messageHandler(event);
272
+ yield vitest_1.vi.waitFor(() => {
273
+ (0, vitest_1.expect)(handler).toHaveBeenCalledOnce();
274
+ });
275
+ }));
276
+ (0, vitest_1.it)('does not invoke handler for non-matching action ID', () => __awaiter(void 0, void 0, void 0, function* () {
277
+ const { ExtensionBridge } = yield Promise.resolve().then(() => __importStar(require('./ExtensionBridge')));
278
+ const bridge = ExtensionBridge.getInstance();
279
+ const handler = vitest_1.vi.fn();
280
+ bridge.registerActionHandler('com.example.github', 'open-browser', handler);
281
+ const event = new MessageEvent('message', {
282
+ data: {
283
+ type: 'asyar:action:execute',
284
+ payload: { actionId: 'act_com.example.github_wrong-action' },
285
+ },
286
+ source: window.parent,
287
+ });
288
+ messageHandler(event);
289
+ // Give it a tick to process
290
+ yield new Promise(r => setTimeout(r, 10));
291
+ (0, vitest_1.expect)(handler).not.toHaveBeenCalled();
292
+ }));
293
+ });
229
294
  //# sourceMappingURL=ExtensionBridge.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionBridge.test.js","sourceRoot":"","sources":["../src/ExtensionBridge.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAyE;AAEzE,oFAAoF;AACpF,8BAA8B;AAE9B,yBAAyB;AACzB,WAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,OAAO;QACL,aAAa,EAAE;YACb,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClB,EAAE,EAAE,CAAC,IAAY,EAAE,OAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;gBACpE,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE;aACd,CAAC;SACH;QACD,6BAA6B;QAC7B,UAAU,EAAE,QAAQ;KACrB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,yCAAyC;AACzC,WAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,eAAe,EAAE;QAAA;YACf,UAAK,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;YAChB,SAAI,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;YACf,SAAI,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;YACf,UAAK,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAClB,CAAC;KAAA;CACF,CAAC,CAAC,CAAC;AAEJ,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,cAAwC,CAAC;IAC7C,IAAI,cAA2D,CAAC;IAEhE,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,mDAAmD;QACnD,WAAE,CAAC,YAAY,EAAE,CAAC;QAElB,cAAc,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAEzB,mEAAmE;QACnE,WAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACxE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,cAAc,GAAG,OAAwC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;YACtC,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;YACtC,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,WAAE,CAAC,eAAe,EAAE,CAAC;QACrB,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yEAAyE,EAAE,GAAS,EAAE;QACvF,6CAA6C;QAC7C,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAE7C,yDAAyD;QACzD,MAAM,CAAC,gBAAgB,CAAC;YACtB,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,MAAM,CAAC,+BAA+B,CAAC,UAAU,EAAE;YACjD,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;YACnB,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;YACnB,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;YACjB,cAAc,EAAE,WAAE,CAAC,EAAE,EAAE;YACvB,MAAM,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAChC;oBACE,KAAK,EAAE,aAAa;oBACpB,QAAQ,EAAE,YAAY;oBACtB,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,mBAAmB;oBAC7B,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;iBACjB;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAErC,6CAA6C;QAC7C,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE;YACxC,IAAI,EAAE;gBACJ,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aAC3B;YACD,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,cAAe,CAAC,KAAK,CAAC,CAAC;QAEvB,oCAAoC;QACpC,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,oBAAoB,CACzC,eAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,uBAAuB;gBAC7B,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,eAAM,CAAC,eAAe,CAAC;oBAC7B,eAAM,CAAC,gBAAgB,CAAC;wBACtB,KAAK,EAAE,aAAa;wBACpB,QAAQ,EAAE,YAAY;wBACtB,KAAK,EAAE,GAAG;qBACX,CAAC;iBACH,CAAC;aACH,CAAC,EACF,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iEAAiE,EAAE,GAAS,EAAE;QAC/E,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAE7C,2CAA2C;QAC3C,MAAM,CAAC,gBAAgB,CAAC;YACtB,EAAE,EAAE,eAAe;YACnB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,MAAM,CAAC,+BAA+B,CAAC,eAAe,EAAE;YACtD,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;YACnB,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;YACnB,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;YACjB,cAAc,EAAE,WAAE,CAAC,EAAE,EAAE;SACxB,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE;YACxC,IAAI,EAAE;gBACJ,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aAC3B;YACD,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,cAAe,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,oBAAoB,CACzC,eAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,uBAAuB;gBAC7B,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,EAAE;aACX,CAAC,EACF,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gFAAgF,EAAE,GAAS,EAAE;QAC9F,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,gBAAgB,CAAC;YACtB,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,MAAM,CAAC,+BAA+B,CAAC,WAAW,EAAE;YAClD,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;YACnB,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;YACnB,QAAQ,EAAE,WAAE,CAAC,EAAE,EAAE;YACjB,cAAc,EAAE,WAAE,CAAC,EAAE,EAAE;YACvB,MAAM,EAAE,WAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAChC;oBACE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;oBAC/C,QAAQ,EAAE,gBAAgB;iBAC3B;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE;YACxC,IAAI,EAAE;gBACJ,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;aAC1B;YACD,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,cAAe,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,wDAAwD;YACxD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ExtensionBridge.test.js","sourceRoot":"","sources":["../src/ExtensionBridge.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,66 @@
1
1
  import type { ExtensionSyncProvider } from "./types/SyncType";
2
2
  import type { ExtensionAction } from "./types/ActionType";
3
3
  import type { CommandHandler } from "./types/CommandType";
4
- import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, SettingsServiceProxy, StatusBarServiceProxy, EntitlementServiceProxy } from "./services";
4
+ import { LogServiceProxy, NotificationServiceProxy, ClipboardHistoryServiceProxy, ExtensionManagerProxy, CommandServiceProxy, ActionServiceProxy, NetworkServiceProxy, SettingsServiceProxy, StatusBarServiceProxy, EntitlementServiceProxy, StorageServiceProxy, FeedbackServiceProxy, SelectionServiceProxy, ShellServiceProxy, CacheServiceProxy, ApplicationServiceProxy } from "./services";
5
+ import { AIServiceProxy } from './services/AIServiceProxy';
6
+ import { OAuthServiceProxy } from './services/OAuthServiceProxy';
7
+ import { FileManagerServiceProxy } from './services/FileManagerServiceProxy';
8
+ import { InteropServiceProxy } from './services/InteropServiceProxy';
9
+ import { WindowManagementServiceProxy } from './services/WindowManagementService';
10
+ /**
11
+ * A frozen snapshot of an extension's effective preferences, taken at
12
+ * extension boot. Extension-level preferences are flat keys on this object;
13
+ * command-level preferences live under `commands[commandId]`.
14
+ *
15
+ * This snapshot is NOT live. When the user edits preferences in Settings,
16
+ * the launcher reloads the extension and a fresh context is created.
17
+ * Extensions should not cache `context.preferences` across reloads.
18
+ */
19
+ export interface PreferencesSnapshot {
20
+ [key: string]: unknown;
21
+ commands: {
22
+ [commandId: string]: {
23
+ [key: string]: unknown;
24
+ };
25
+ };
26
+ }
5
27
  export declare class ExtensionContext {
6
28
  private extensionId;
29
+ preferences: PreferencesSnapshot;
30
+ /**
31
+ * Listeners notified *after* `setPreferences` installs a new frozen
32
+ * snapshot. Callbacks take no arguments and must re-read fresh values
33
+ * from `context.preferences` — the snapshot is already in place when
34
+ * they fire. This is a read-only notification, not a live getter:
35
+ * extensions that cache preference values at boot subscribe here to
36
+ * recompute when the user edits their settings.
37
+ */
38
+ private preferenceChangeListeners;
39
+ /**
40
+ * Replace the preferences snapshot. Called once at extension boot by
41
+ * ExtensionBridge, and again when the user edits preferences in the
42
+ * launcher's Extensions settings tab. The snapshot is frozen at all
43
+ * nesting levels — extensions cannot mutate it.
44
+ *
45
+ * After the snapshot is installed, registered `onPreferencesChanged`
46
+ * listeners fire. They must re-read `context.preferences` to pick up
47
+ * the new values.
48
+ */
49
+ setPreferences(bundle: {
50
+ extension: Record<string, unknown>;
51
+ commands: Record<string, Record<string, unknown>>;
52
+ }): void;
53
+ /**
54
+ * Subscribe to preference change notifications. Returns an unsubscribe
55
+ * function. The callback fires *after* `context.preferences` has been
56
+ * replaced with a new frozen snapshot — re-read values inside the
57
+ * callback, do not capture them from the enclosing scope.
58
+ *
59
+ * Typical use: an extension that caches a preference value at
60
+ * `initialize()` time (e.g. to feed a timer engine's internal state)
61
+ * uses this to recompute when the user edits the setting.
62
+ */
63
+ onPreferencesChanged(callback: () => void): () => void;
7
64
  readonly proxies: {
8
65
  LogService: LogServiceProxy;
9
66
  NotificationService: NotificationServiceProxy;
@@ -15,6 +72,17 @@ export declare class ExtensionContext {
15
72
  SettingsService: SettingsServiceProxy;
16
73
  StatusBarService: StatusBarServiceProxy;
17
74
  EntitlementService: EntitlementServiceProxy;
75
+ StorageService: StorageServiceProxy;
76
+ FeedbackService: FeedbackServiceProxy;
77
+ SelectionService: SelectionServiceProxy;
78
+ AIService: AIServiceProxy;
79
+ OAuthService: OAuthServiceProxy;
80
+ ShellService: ShellServiceProxy;
81
+ FileManagerService: FileManagerServiceProxy;
82
+ InteropService: InteropServiceProxy;
83
+ CacheService: CacheServiceProxy;
84
+ ApplicationService: ApplicationServiceProxy;
85
+ WindowManagementService: WindowManagementServiceProxy;
18
86
  };
19
87
  constructor();
20
88
  private setupFocusTracking;
@@ -25,6 +93,14 @@ export declare class ExtensionContext {
25
93
  unregisterAction(actionId: string): void;
26
94
  registerCommand(commandId: string, handler: CommandHandler): void;
27
95
  unregisterCommand(commandId: string): void;
96
+ /**
97
+ * Build an `asyar://extensions/{extensionId}/{commandId}?args` deep link URL
98
+ * for a command owned by this extension. Pure string formatting — no IPC.
99
+ *
100
+ * Extensions can embed the returned URL in notifications, clipboard output,
101
+ * generated documents, or pass it to other apps.
102
+ */
103
+ createDeeplink(commandId: string, args?: Record<string, string>): string;
28
104
  registerSyncProvider(provider: ExtensionSyncProvider): void;
29
105
  }
30
106
  export declare function injectThemeVariables(vars: Record<string, string>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionContext.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAGpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;IAGjC,SAAgB,OAAO;;;;;;;;;;;MAWrB;;IAOF,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,mBAAmB;IAoB3B,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;IAQrC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWhC,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAa7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS1C,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAyF5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWvE;AAGD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQnD"}
1
+ {"version":3,"file":"ExtensionContext.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,QAAQ,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/D;AAGD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAc;IAC1B,WAAW,EAAE,mBAAmB,CAEb;IAE1B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB,CAAyB;IAE1D;;;;;;;;;OASG;IACI,cAAc,CAAC,MAAM,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACnD,GAAG,IAAI;IAoBR;;;;;;;;;OASG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAU7D,SAAgB,OAAO;;;;;;;;;;;;;;;;;;;;;;MAsBrB;;IAOF,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,mBAAmB;IAoB3B,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;IAQrC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAgChC,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAa7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASxC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS1C;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAYxE,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAyF5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWvE;AAGD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQnD"}