asyar-sdk 1.10.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/ExtensionBridge.d.ts +41 -0
  2. package/dist/ExtensionBridge.d.ts.map +1 -1
  3. package/dist/ExtensionBridge.js +125 -3
  4. package/dist/ExtensionBridge.js.map +1 -1
  5. package/dist/ExtensionContext.d.ts +65 -1
  6. package/dist/ExtensionContext.d.ts.map +1 -1
  7. package/dist/ExtensionContext.js +92 -0
  8. package/dist/ExtensionContext.js.map +1 -1
  9. package/dist/ExtensionContext.test.d.ts +2 -0
  10. package/dist/ExtensionContext.test.d.ts.map +1 -0
  11. package/dist/ExtensionContext.test.js +101 -0
  12. package/dist/ExtensionContext.test.js.map +1 -0
  13. package/dist/cli/commands/build.d.ts.map +1 -1
  14. package/dist/cli/commands/build.js +17 -7
  15. package/dist/cli/commands/build.js.map +1 -1
  16. package/dist/cli/lib/manifest.d.ts +22 -1
  17. package/dist/cli/lib/manifest.d.ts.map +1 -1
  18. package/dist/cli/lib/manifest.js +125 -1
  19. package/dist/cli/lib/manifest.js.map +1 -1
  20. package/dist/icons/iconData.d.ts.map +1 -1
  21. package/dist/icons/iconData.js +28 -0
  22. package/dist/icons/iconData.js.map +1 -1
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +5 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/services/AIServiceProxy.d.ts +6 -0
  28. package/dist/services/AIServiceProxy.d.ts.map +1 -0
  29. package/dist/services/AIServiceProxy.js +99 -0
  30. package/dist/services/AIServiceProxy.js.map +1 -0
  31. package/dist/services/AIServiceProxy.test.d.ts +2 -0
  32. package/dist/services/AIServiceProxy.test.d.ts.map +1 -0
  33. package/dist/services/AIServiceProxy.test.js +192 -0
  34. package/dist/services/AIServiceProxy.test.js.map +1 -0
  35. package/dist/services/BaseServiceProxy.d.ts.map +1 -1
  36. package/dist/services/BaseServiceProxy.js +3 -1
  37. package/dist/services/BaseServiceProxy.js.map +1 -1
  38. package/dist/services/ClipboardHistoryServiceProxy.d.ts +1 -0
  39. package/dist/services/ClipboardHistoryServiceProxy.d.ts.map +1 -1
  40. package/dist/services/ClipboardHistoryServiceProxy.js +3 -0
  41. package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
  42. package/dist/services/ExtensionManagerProxy.d.ts +1 -1
  43. package/dist/services/ExtensionManagerProxy.d.ts.map +1 -1
  44. package/dist/services/ExtensionManagerProxy.js +2 -2
  45. package/dist/services/ExtensionManagerProxy.js.map +1 -1
  46. package/dist/services/FeedbackServiceProxy.d.ts +25 -0
  47. package/dist/services/FeedbackServiceProxy.d.ts.map +1 -0
  48. package/dist/services/FeedbackServiceProxy.js +41 -0
  49. package/dist/services/FeedbackServiceProxy.js.map +1 -0
  50. package/dist/services/FileManagerServiceProxy.d.ts +7 -0
  51. package/dist/services/FileManagerServiceProxy.d.ts.map +1 -0
  52. package/dist/services/FileManagerServiceProxy.js +27 -0
  53. package/dist/services/FileManagerServiceProxy.js.map +1 -0
  54. package/dist/services/FileManagerServiceProxy.test.d.ts +2 -0
  55. package/dist/services/FileManagerServiceProxy.test.d.ts.map +1 -0
  56. package/dist/services/FileManagerServiceProxy.test.js +56 -0
  57. package/dist/services/FileManagerServiceProxy.test.js.map +1 -0
  58. package/dist/services/IAIService.d.ts +66 -0
  59. package/dist/services/IAIService.d.ts.map +1 -0
  60. package/dist/services/IAIService.js +3 -0
  61. package/dist/services/IAIService.js.map +1 -0
  62. package/dist/services/IClipboardHistoryService.d.ts +6 -0
  63. package/dist/services/IClipboardHistoryService.d.ts.map +1 -1
  64. package/dist/services/IExtensionManager.d.ts +7 -4
  65. package/dist/services/IExtensionManager.d.ts.map +1 -1
  66. package/dist/services/IFeedbackService.d.ts +84 -0
  67. package/dist/services/IFeedbackService.d.ts.map +1 -0
  68. package/dist/services/IFeedbackService.js +3 -0
  69. package/dist/services/IFeedbackService.js.map +1 -0
  70. package/dist/services/IFileManagerService.d.ts +33 -0
  71. package/dist/services/IFileManagerService.d.ts.map +1 -0
  72. package/dist/services/IFileManagerService.js +3 -0
  73. package/dist/services/IFileManagerService.js.map +1 -0
  74. package/dist/services/IInteropService.d.ts +16 -0
  75. package/dist/services/IInteropService.d.ts.map +1 -0
  76. package/dist/services/IInteropService.js +12 -0
  77. package/dist/services/IInteropService.js.map +1 -0
  78. package/dist/services/IOAuthService.d.ts +68 -0
  79. package/dist/services/IOAuthService.d.ts.map +1 -0
  80. package/dist/services/IOAuthService.js +3 -0
  81. package/dist/services/IOAuthService.js.map +1 -0
  82. package/dist/services/ISelectionService.d.ts +23 -0
  83. package/dist/services/ISelectionService.d.ts.map +1 -0
  84. package/dist/services/ISelectionService.js +3 -0
  85. package/dist/services/ISelectionService.js.map +1 -0
  86. package/dist/services/IShellService.d.ts +39 -0
  87. package/dist/services/IShellService.d.ts.map +1 -0
  88. package/dist/services/IShellService.js +3 -0
  89. package/dist/services/IShellService.js.map +1 -0
  90. package/dist/services/IStorageService.d.ts +22 -0
  91. package/dist/services/IStorageService.d.ts.map +1 -0
  92. package/dist/services/IStorageService.js +3 -0
  93. package/dist/services/IStorageService.js.map +1 -0
  94. package/dist/services/InteropServiceProxy.d.ts +6 -0
  95. package/dist/services/InteropServiceProxy.d.ts.map +1 -0
  96. package/dist/services/InteropServiceProxy.js +26 -0
  97. package/dist/services/InteropServiceProxy.js.map +1 -0
  98. package/dist/services/InteropServiceProxy.test.d.ts +2 -0
  99. package/dist/services/InteropServiceProxy.test.d.ts.map +1 -0
  100. package/dist/services/InteropServiceProxy.test.js +59 -0
  101. package/dist/services/InteropServiceProxy.test.js.map +1 -0
  102. package/dist/services/OAuthServiceProxy.d.ts +18 -0
  103. package/dist/services/OAuthServiceProxy.d.ts.map +1 -0
  104. package/dist/services/OAuthServiceProxy.js +70 -0
  105. package/dist/services/OAuthServiceProxy.js.map +1 -0
  106. package/dist/services/OAuthServiceProxy.test.d.ts +2 -0
  107. package/dist/services/OAuthServiceProxy.test.d.ts.map +1 -0
  108. package/dist/services/OAuthServiceProxy.test.js +165 -0
  109. package/dist/services/OAuthServiceProxy.test.js.map +1 -0
  110. package/dist/services/SelectionServiceProxy.d.ts +10 -0
  111. package/dist/services/SelectionServiceProxy.d.ts.map +1 -0
  112. package/dist/services/SelectionServiceProxy.js +17 -0
  113. package/dist/services/SelectionServiceProxy.js.map +1 -0
  114. package/dist/services/ShellServiceProxy.d.ts +6 -0
  115. package/dist/services/ShellServiceProxy.d.ts.map +1 -0
  116. package/dist/services/ShellServiceProxy.js +78 -0
  117. package/dist/services/ShellServiceProxy.js.map +1 -0
  118. package/dist/services/StorageServiceProxy.d.ts +16 -0
  119. package/dist/services/StorageServiceProxy.d.ts.map +1 -0
  120. package/dist/services/StorageServiceProxy.js +48 -0
  121. package/dist/services/StorageServiceProxy.js.map +1 -0
  122. package/dist/services/index.d.ts +17 -0
  123. package/dist/services/index.d.ts.map +1 -1
  124. package/dist/services/index.js +21 -1
  125. package/dist/services/index.js.map +1 -1
  126. package/dist/types/ExtensionType.d.ts +49 -0
  127. package/dist/types/ExtensionType.d.ts.map +1 -1
  128. package/package.json +1 -1
@@ -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,44 @@ export declare class ExtensionBridge {
17
20
  registerAction(extensionId: string, action: ExtensionAction): void;
18
21
  unregisterAction(actionId: string): void;
19
22
  getActions(): ExtensionAction[];
23
+ /**
24
+ * Tells the bridge which extension this iframe represents so its internal
25
+ * `LogServiceProxy` can stamp `extensionId` on every IPC log call.
26
+ *
27
+ * Without this, every `this.logger.debug(...)` from the bridge fires a
28
+ * `log:debug` postMessage with no extensionId, and the host's
29
+ * `ExtensionIpcRouter` rejects it as "untrusted frame, no extensionId" —
30
+ * producing per-tick error spam in the dev console for any extension that
31
+ * re-registers actions on a timer (e.g. pomodoro's countdown).
32
+ */
33
+ setExtensionId(extensionId: string): void;
34
+ /**
35
+ * Register a live `ExtensionContext` with the bridge as the active
36
+ * context for an extension id. This is what lets the
37
+ * `asyar:event:preferences:set-all` listener find the context and
38
+ * call `setPreferences` on it.
39
+ *
40
+ * Tier 2 iframes that bootstrap by creating their own
41
+ * `ExtensionContext` (instead of going through the bridge's
42
+ * `initializeExtensions()` path) must call this so they show up in
43
+ * `activeContexts`. Otherwise the preferences bundle arrives at the
44
+ * bridge but never reaches the live context — it only lands in the
45
+ * `this.preferences` map which is consulted by `initializeExtensions`.
46
+ *
47
+ * Called from `ExtensionContext.setExtensionId`, so Tier 2 iframes get
48
+ * this for free as long as they call `setExtensionId(id)` during boot.
49
+ */
50
+ registerActiveContext(extensionId: string, context: ExtensionContext): void;
51
+ /**
52
+ * Store a preference bundle (extension-level + command-level) for an
53
+ * extension. Called by the host-side ExtensionLoader before the extension
54
+ * is initialized, so that `initializeExtensions` can hand it to the new
55
+ * ExtensionContext as a frozen snapshot.
56
+ */
57
+ setPreferences(extensionId: string, bundle: {
58
+ extension: Record<string, unknown>;
59
+ commands: Record<string, Record<string, unknown>>;
60
+ }): void;
20
61
  registerManifest(manifest: ExtensionManifest): void;
21
62
  registerExtensionImplementation(id: string, extension: Extension): void;
22
63
  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;;;;;;;;;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,62 @@ class ExtensionBridge {
139
186
  getActions() {
140
187
  return Array.from(this.actionRegistry.values());
141
188
  }
189
+ /**
190
+ * Tells the bridge which extension this iframe represents so its internal
191
+ * `LogServiceProxy` can stamp `extensionId` on every IPC log call.
192
+ *
193
+ * Without this, every `this.logger.debug(...)` from the bridge fires a
194
+ * `log:debug` postMessage with no extensionId, and the host's
195
+ * `ExtensionIpcRouter` rejects it as "untrusted frame, no extensionId" —
196
+ * producing per-tick error spam in the dev console for any extension that
197
+ * re-registers actions on a timer (e.g. pomodoro's countdown).
198
+ */
199
+ setExtensionId(extensionId) {
200
+ if (typeof this.logger.setExtensionId === 'function') {
201
+ this.logger.setExtensionId(extensionId);
202
+ }
203
+ }
204
+ /**
205
+ * Register a live `ExtensionContext` with the bridge as the active
206
+ * context for an extension id. This is what lets the
207
+ * `asyar:event:preferences:set-all` listener find the context and
208
+ * call `setPreferences` on it.
209
+ *
210
+ * Tier 2 iframes that bootstrap by creating their own
211
+ * `ExtensionContext` (instead of going through the bridge's
212
+ * `initializeExtensions()` path) must call this so they show up in
213
+ * `activeContexts`. Otherwise the preferences bundle arrives at the
214
+ * bridge but never reaches the live context — it only lands in the
215
+ * `this.preferences` map which is consulted by `initializeExtensions`.
216
+ *
217
+ * Called from `ExtensionContext.setExtensionId`, so Tier 2 iframes get
218
+ * this for free as long as they call `setExtensionId(id)` during boot.
219
+ */
220
+ registerActiveContext(extensionId, context) {
221
+ var _a;
222
+ this.activeContexts.set(extensionId, context);
223
+ // If we've already received a preferences bundle for this extension
224
+ // (e.g. boot reply arrived before the context was registered, or a
225
+ // live update landed earlier), deliver it now so the late-joining
226
+ // context sees the latest snapshot immediately. The `__pending__`
227
+ // sentinel key is used when the message arrives before any context
228
+ // is registered — we move it to the real id and clear the sentinel.
229
+ const existing = (_a = this.preferences.get(extensionId)) !== null && _a !== void 0 ? _a : this.preferences.get('__pending__');
230
+ if (existing) {
231
+ context.setPreferences(existing);
232
+ this.preferences.set(extensionId, existing);
233
+ this.preferences.delete('__pending__');
234
+ }
235
+ }
236
+ /**
237
+ * Store a preference bundle (extension-level + command-level) for an
238
+ * extension. Called by the host-side ExtensionLoader before the extension
239
+ * is initialized, so that `initializeExtensions` can hand it to the new
240
+ * ExtensionContext as a frozen snapshot.
241
+ */
242
+ setPreferences(extensionId, bundle) {
243
+ this.preferences.set(extensionId, bundle);
244
+ }
142
245
  // Register an extension manifest
143
246
  registerManifest(manifest) {
144
247
  this.extensionManifests.set(manifest.id, manifest);
@@ -164,8 +267,17 @@ class ExtensionBridge {
164
267
  }
165
268
  this.logger.debug(`Initializing extension: ${manifest.id} (${manifest.name})`);
166
269
  const context = new ExtensionContext_1.ExtensionContext();
270
+ // `setExtensionId` self-registers the context with the bridge and
271
+ // drains any stashed preferences bundle (either under `manifest.id`
272
+ // or the `__pending__` sentinel). No need to set `activeContexts`
273
+ // or call `setPreferences` directly here — it already happened.
167
274
  context.setExtensionId(manifest.id);
168
- yield extension.initialize(context);
275
+ try {
276
+ yield extension.initialize(context);
277
+ }
278
+ catch (error) {
279
+ this.logger.error(`Failed to initialize extension ${manifest.id}: ${error}`);
280
+ }
169
281
  }
170
282
  });
171
283
  }
@@ -177,7 +289,12 @@ class ExtensionBridge {
177
289
  if (!manifest)
178
290
  continue;
179
291
  this.logger.debug(`Activating extension: ${manifest.id}`);
180
- yield extension.activate();
292
+ try {
293
+ yield extension.activate();
294
+ }
295
+ catch (error) {
296
+ this.logger.error(`Failed to activate extension ${manifest.id}: ${error}`);
297
+ }
181
298
  }
182
299
  });
183
300
  }
@@ -189,7 +306,12 @@ class ExtensionBridge {
189
306
  if (!manifest)
190
307
  continue;
191
308
  this.logger.debug(`Deactivating extension: ${manifest.id}`);
192
- yield extension.deactivate();
309
+ try {
310
+ yield extension.deactivate();
311
+ }
312
+ catch (error) {
313
+ this.logger.error(`Failed to deactivate extension ${manifest.id}: ${error}`);
314
+ }
193
315
  }
194
316
  });
195
317
  }
@@ -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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"}
@@ -1,9 +1,65 @@
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 } 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
+ /**
10
+ * A frozen snapshot of an extension's effective preferences, taken at
11
+ * extension boot. Extension-level preferences are flat keys on this object;
12
+ * command-level preferences live under `commands[commandId]`.
13
+ *
14
+ * This snapshot is NOT live. When the user edits preferences in Settings,
15
+ * the launcher reloads the extension and a fresh context is created.
16
+ * Extensions should not cache `context.preferences` across reloads.
17
+ */
18
+ export interface PreferencesSnapshot {
19
+ [key: string]: unknown;
20
+ commands: {
21
+ [commandId: string]: {
22
+ [key: string]: unknown;
23
+ };
24
+ };
25
+ }
5
26
  export declare class ExtensionContext {
6
27
  private extensionId;
28
+ preferences: PreferencesSnapshot;
29
+ /**
30
+ * Listeners notified *after* `setPreferences` installs a new frozen
31
+ * snapshot. Callbacks take no arguments and must re-read fresh values
32
+ * from `context.preferences` — the snapshot is already in place when
33
+ * they fire. This is a read-only notification, not a live getter:
34
+ * extensions that cache preference values at boot subscribe here to
35
+ * recompute when the user edits their settings.
36
+ */
37
+ private preferenceChangeListeners;
38
+ /**
39
+ * Replace the preferences snapshot. Called once at extension boot by
40
+ * ExtensionBridge, and again when the user edits preferences in the
41
+ * launcher's Extensions settings tab. The snapshot is frozen at all
42
+ * nesting levels — extensions cannot mutate it.
43
+ *
44
+ * After the snapshot is installed, registered `onPreferencesChanged`
45
+ * listeners fire. They must re-read `context.preferences` to pick up
46
+ * the new values.
47
+ */
48
+ setPreferences(bundle: {
49
+ extension: Record<string, unknown>;
50
+ commands: Record<string, Record<string, unknown>>;
51
+ }): void;
52
+ /**
53
+ * Subscribe to preference change notifications. Returns an unsubscribe
54
+ * function. The callback fires *after* `context.preferences` has been
55
+ * replaced with a new frozen snapshot — re-read values inside the
56
+ * callback, do not capture them from the enclosing scope.
57
+ *
58
+ * Typical use: an extension that caches a preference value at
59
+ * `initialize()` time (e.g. to feed a timer engine's internal state)
60
+ * uses this to recompute when the user edits the setting.
61
+ */
62
+ onPreferencesChanged(callback: () => void): () => void;
7
63
  readonly proxies: {
8
64
  LogService: LogServiceProxy;
9
65
  NotificationService: NotificationServiceProxy;
@@ -15,6 +71,14 @@ export declare class ExtensionContext {
15
71
  SettingsService: SettingsServiceProxy;
16
72
  StatusBarService: StatusBarServiceProxy;
17
73
  EntitlementService: EntitlementServiceProxy;
74
+ StorageService: StorageServiceProxy;
75
+ FeedbackService: FeedbackServiceProxy;
76
+ SelectionService: SelectionServiceProxy;
77
+ AIService: AIServiceProxy;
78
+ OAuthService: OAuthServiceProxy;
79
+ ShellService: ShellServiceProxy;
80
+ FileManagerService: FileManagerServiceProxy;
81
+ InteropService: InteropServiceProxy;
18
82
  };
19
83
  constructor();
20
84
  private setupFocusTracking;
@@ -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,EAClB,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;AAErE;;;;;;;;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;;;;;;;;;;;;;;;;;;;MAmBrB;;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,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"}
@@ -13,10 +13,72 @@ exports.ExtensionContext = void 0;
13
13
  exports.injectThemeVariables = injectThemeVariables;
14
14
  exports.injectFontFaceCSS = injectFontFaceCSS;
15
15
  const services_1 = require("./services");
16
+ const AIServiceProxy_1 = require("./services/AIServiceProxy");
17
+ const OAuthServiceProxy_1 = require("./services/OAuthServiceProxy");
18
+ const FileManagerServiceProxy_1 = require("./services/FileManagerServiceProxy");
19
+ const InteropServiceProxy_1 = require("./services/InteropServiceProxy");
16
20
  // Define the context that will be passed to extensions
17
21
  class ExtensionContext {
22
+ /**
23
+ * Replace the preferences snapshot. Called once at extension boot by
24
+ * ExtensionBridge, and again when the user edits preferences in the
25
+ * launcher's Extensions settings tab. The snapshot is frozen at all
26
+ * nesting levels — extensions cannot mutate it.
27
+ *
28
+ * After the snapshot is installed, registered `onPreferencesChanged`
29
+ * listeners fire. They must re-read `context.preferences` to pick up
30
+ * the new values.
31
+ */
32
+ setPreferences(bundle) {
33
+ var _a;
34
+ const snapshot = Object.assign(Object.assign({}, bundle.extension), { commands: {} });
35
+ for (const [cmdId, prefs] of Object.entries((_a = bundle.commands) !== null && _a !== void 0 ? _a : {})) {
36
+ snapshot.commands[cmdId] = Object.freeze(Object.assign({}, prefs));
37
+ }
38
+ Object.freeze(snapshot.commands);
39
+ this.preferences = Object.freeze(snapshot);
40
+ // Fire listeners after the new snapshot is in place so they see the
41
+ // fresh values on first read. Errors in one listener don't prevent
42
+ // the others from running.
43
+ for (const cb of this.preferenceChangeListeners) {
44
+ try {
45
+ cb();
46
+ }
47
+ catch (err) {
48
+ console.error('[ExtensionContext] onPreferencesChanged listener threw:', err);
49
+ }
50
+ }
51
+ }
52
+ /**
53
+ * Subscribe to preference change notifications. Returns an unsubscribe
54
+ * function. The callback fires *after* `context.preferences` has been
55
+ * replaced with a new frozen snapshot — re-read values inside the
56
+ * callback, do not capture them from the enclosing scope.
57
+ *
58
+ * Typical use: an extension that caches a preference value at
59
+ * `initialize()` time (e.g. to feed a timer engine's internal state)
60
+ * uses this to recompute when the user edits the setting.
61
+ */
62
+ onPreferencesChanged(callback) {
63
+ this.preferenceChangeListeners.push(callback);
64
+ return () => {
65
+ this.preferenceChangeListeners = this.preferenceChangeListeners.filter((l) => l !== callback);
66
+ };
67
+ }
18
68
  constructor() {
19
69
  this.extensionId = "";
70
+ this.preferences = Object.freeze({
71
+ commands: Object.freeze({}),
72
+ });
73
+ /**
74
+ * Listeners notified *after* `setPreferences` installs a new frozen
75
+ * snapshot. Callbacks take no arguments and must re-read fresh values
76
+ * from `context.preferences` — the snapshot is already in place when
77
+ * they fire. This is a read-only notification, not a live getter:
78
+ * extensions that cache preference values at boot subscribe here to
79
+ * recompute when the user edits their settings.
80
+ */
81
+ this.preferenceChangeListeners = [];
20
82
  // The local registry is now strictly for proxies
21
83
  this.proxies = {
22
84
  LogService: new services_1.LogServiceProxy(),
@@ -29,6 +91,14 @@ class ExtensionContext {
29
91
  SettingsService: new services_1.SettingsServiceProxy(),
30
92
  StatusBarService: new services_1.StatusBarServiceProxy(),
31
93
  EntitlementService: new services_1.EntitlementServiceProxy(),
94
+ StorageService: new services_1.StorageServiceProxy(),
95
+ FeedbackService: new services_1.FeedbackServiceProxy(),
96
+ SelectionService: new services_1.SelectionServiceProxy(),
97
+ AIService: new AIServiceProxy_1.AIServiceProxy(),
98
+ OAuthService: new OAuthServiceProxy_1.OAuthServiceProxy(),
99
+ ShellService: new services_1.ShellServiceProxy(),
100
+ FileManagerService: new FileManagerServiceProxy_1.FileManagerServiceProxy(),
101
+ InteropService: new InteropServiceProxy_1.InteropServiceProxy(),
32
102
  };
33
103
  this.setupFocusTracking();
34
104
  this.setupThemeInjection();
@@ -116,6 +186,28 @@ class ExtensionContext {
116
186
  svc.setExtensionId(id);
117
187
  }
118
188
  }
189
+ // The ExtensionBridge singleton has its own internal LogServiceProxy that
190
+ // is constructed before any extension context exists, so it never goes
191
+ // through the proxies-bag patching above. Push the extensionId to it now
192
+ // so its `Registered action: ...` and similar debug logs don't get
193
+ // rejected by the host IPC router for missing extensionId.
194
+ //
195
+ // We also self-register this context as the active context for this
196
+ // extension id. Tier 2 iframes that bootstrap by creating their own
197
+ // `ExtensionContext` (rather than going through
198
+ // `bridge.initializeExtensions()`) otherwise never appear in the
199
+ // bridge's `activeContexts` map, and `asyar:event:preferences:set-all`
200
+ // can't find the live context to call `setPreferences` on.
201
+ try {
202
+ const bridge = ExtensionBridge_1.ExtensionBridge.getInstance();
203
+ bridge.setExtensionId(id);
204
+ bridge.registerActiveContext(id, this);
205
+ }
206
+ catch (_a) {
207
+ // ExtensionBridge import is at the bottom of this file (circular avoidance);
208
+ // if for some reason it's not yet available, silently skip — the failure
209
+ // mode is just the pre-existing log spam, not a hard error.
210
+ }
119
211
  }
120
212
  registerAction(action) {
121
213
  const bridge = ExtensionBridge_1.ExtensionBridge.getInstance();
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionContext.js","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExtensionContext.js","sourceRoot":"","sources":["../src/ExtensionContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ExtensionContext.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionContext.test.d.ts","sourceRoot":"","sources":["../src/ExtensionContext.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const ExtensionContext_1 = require("./ExtensionContext");
5
+ (0, vitest_1.describe)('ExtensionContext preferences snapshot', () => {
6
+ (0, vitest_1.it)('starts with an empty frozen snapshot', () => {
7
+ const ctx = new ExtensionContext_1.ExtensionContext();
8
+ (0, vitest_1.expect)(ctx.preferences.commands).toBeDefined();
9
+ (0, vitest_1.expect)(Object.isFrozen(ctx.preferences)).toBe(true);
10
+ (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.commands)).toBe(true);
11
+ });
12
+ (0, vitest_1.it)('setPreferences installs a frozen snapshot at every level', () => {
13
+ const ctx = new ExtensionContext_1.ExtensionContext();
14
+ ctx.setPreferences({
15
+ extension: { apiKey: 'abc', units: 'metric' },
16
+ commands: { forecast: { days: 5 } },
17
+ });
18
+ (0, vitest_1.expect)(ctx.preferences.apiKey).toBe('abc');
19
+ (0, vitest_1.expect)(ctx.preferences.units).toBe('metric');
20
+ (0, vitest_1.expect)(ctx.preferences.commands.forecast.days).toBe(5);
21
+ (0, vitest_1.expect)(Object.isFrozen(ctx.preferences)).toBe(true);
22
+ (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.commands)).toBe(true);
23
+ (0, vitest_1.expect)(Object.isFrozen(ctx.preferences.commands.forecast)).toBe(true);
24
+ });
25
+ (0, vitest_1.it)('direct mutation of the snapshot is rejected', () => {
26
+ 'use strict';
27
+ const ctx = new ExtensionContext_1.ExtensionContext();
28
+ ctx.setPreferences({ extension: { x: 1 }, commands: {} });
29
+ // In strict mode (vitest default), assigning to a frozen property throws.
30
+ (0, vitest_1.expect)(() => {
31
+ ctx.preferences.x = 999;
32
+ }).toThrow();
33
+ });
34
+ (0, vitest_1.it)('setPreferences tolerates an absent commands field', () => {
35
+ const ctx = new ExtensionContext_1.ExtensionContext();
36
+ ctx.setPreferences({ extension: { a: 1 }, commands: undefined });
37
+ (0, vitest_1.expect)(ctx.preferences.a).toBe(1);
38
+ (0, vitest_1.expect)(ctx.preferences.commands).toEqual({});
39
+ });
40
+ });
41
+ (0, vitest_1.describe)('ExtensionContext onPreferencesChanged', () => {
42
+ (0, vitest_1.it)('fires registered listeners after setPreferences', () => {
43
+ const ctx = new ExtensionContext_1.ExtensionContext();
44
+ const listener = vitest_1.vi.fn();
45
+ ctx.onPreferencesChanged(listener);
46
+ ctx.setPreferences({ extension: { x: 1 }, commands: {} });
47
+ (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
48
+ ctx.setPreferences({ extension: { x: 2 }, commands: {} });
49
+ (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(2);
50
+ });
51
+ (0, vitest_1.it)('listener sees the new snapshot when it fires', () => {
52
+ const ctx = new ExtensionContext_1.ExtensionContext();
53
+ let observedValue;
54
+ ctx.onPreferencesChanged(() => {
55
+ observedValue = ctx.preferences.focusMinutes;
56
+ });
57
+ ctx.setPreferences({ extension: { focusMinutes: 25 }, commands: {} });
58
+ (0, vitest_1.expect)(observedValue).toBe(25);
59
+ ctx.setPreferences({ extension: { focusMinutes: 50 }, commands: {} });
60
+ (0, vitest_1.expect)(observedValue).toBe(50);
61
+ });
62
+ (0, vitest_1.it)('unsubscribe function removes the listener', () => {
63
+ const ctx = new ExtensionContext_1.ExtensionContext();
64
+ const listener = vitest_1.vi.fn();
65
+ const unsubscribe = ctx.onPreferencesChanged(listener);
66
+ ctx.setPreferences({ extension: {}, commands: {} });
67
+ (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
68
+ unsubscribe();
69
+ ctx.setPreferences({ extension: {}, commands: {} });
70
+ (0, vitest_1.expect)(listener).toHaveBeenCalledTimes(1);
71
+ });
72
+ (0, vitest_1.it)('one listener throwing does not prevent others from running', () => {
73
+ const ctx = new ExtensionContext_1.ExtensionContext();
74
+ const good1 = vitest_1.vi.fn();
75
+ const bad = vitest_1.vi.fn(() => {
76
+ throw new Error('boom');
77
+ });
78
+ const good2 = vitest_1.vi.fn();
79
+ // Silence the expected console.error
80
+ const errSpy = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
81
+ ctx.onPreferencesChanged(good1);
82
+ ctx.onPreferencesChanged(bad);
83
+ ctx.onPreferencesChanged(good2);
84
+ ctx.setPreferences({ extension: {}, commands: {} });
85
+ (0, vitest_1.expect)(good1).toHaveBeenCalled();
86
+ (0, vitest_1.expect)(bad).toHaveBeenCalled();
87
+ (0, vitest_1.expect)(good2).toHaveBeenCalled();
88
+ (0, vitest_1.expect)(errSpy).toHaveBeenCalled();
89
+ errSpy.mockRestore();
90
+ });
91
+ (0, vitest_1.it)('returns a stable unsubscribe even when called multiple times', () => {
92
+ const ctx = new ExtensionContext_1.ExtensionContext();
93
+ const listener = vitest_1.vi.fn();
94
+ const unsubscribe = ctx.onPreferencesChanged(listener);
95
+ unsubscribe();
96
+ unsubscribe(); // no-op second call
97
+ ctx.setPreferences({ extension: {}, commands: {} });
98
+ (0, vitest_1.expect)(listener).not.toHaveBeenCalled();
99
+ });
100
+ });
101
+ //# sourceMappingURL=ExtensionContext.test.js.map