asyar-sdk 1.16.2 → 2.0.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 (281) hide show
  1. package/README.md +95 -42
  2. package/dist/ExtensionBridge.d.ts +1 -1
  3. package/dist/ExtensionBridge.d.ts.map +1 -1
  4. package/dist/ExtensionBridge.js +17 -13
  5. package/dist/ExtensionBridge.js.map +1 -1
  6. package/dist/ExtensionBridge.test.js +76 -101
  7. package/dist/ExtensionBridge.test.js.map +1 -1
  8. package/dist/ExtensionContext.d.ts +22 -57
  9. package/dist/ExtensionContext.d.ts.map +1 -1
  10. package/dist/ExtensionContext.js +84 -207
  11. package/dist/ExtensionContext.js.map +1 -1
  12. package/dist/ExtensionContext.test.js +91 -66
  13. package/dist/ExtensionContext.test.js.map +1 -1
  14. package/dist/ExtensionContextCore.d.ts +46 -0
  15. package/dist/ExtensionContextCore.d.ts.map +1 -0
  16. package/dist/ExtensionContextCore.js +149 -0
  17. package/dist/ExtensionContextCore.js.map +1 -0
  18. package/dist/PreferencesFacade.js +4 -9
  19. package/dist/PreferencesFacade.js.map +1 -1
  20. package/dist/PreferencesFacade.test.js +53 -55
  21. package/dist/PreferencesFacade.test.js.map +1 -1
  22. package/dist/cli/commands/attach.js +1 -1
  23. package/dist/cli/commands/attach.js.map +1 -1
  24. package/dist/cli/commands/build.d.ts +5 -1
  25. package/dist/cli/commands/build.d.ts.map +1 -1
  26. package/dist/cli/commands/build.js +43 -5
  27. package/dist/cli/commands/build.js.map +1 -1
  28. package/dist/cli/lib/manifest.d.ts +17 -5
  29. package/dist/cli/lib/manifest.d.ts.map +1 -1
  30. package/dist/cli/lib/manifest.js +125 -66
  31. package/dist/cli/lib/manifest.js.map +1 -1
  32. package/dist/{index.d.ts → contracts.d.ts} +23 -1
  33. package/dist/contracts.d.ts.map +1 -0
  34. package/dist/contracts.js +36 -0
  35. package/dist/contracts.js.map +1 -0
  36. package/dist/contracts.purity.test.d.ts +2 -0
  37. package/dist/contracts.purity.test.d.ts.map +1 -0
  38. package/dist/contracts.purity.test.js +42 -0
  39. package/dist/contracts.purity.test.js.map +1 -0
  40. package/dist/icons/AsyarIconElement.js +4 -9
  41. package/dist/icons/AsyarIconElement.js.map +1 -1
  42. package/dist/icons/AsyarIconElement.test.js +14 -16
  43. package/dist/icons/AsyarIconElement.test.js.map +1 -1
  44. package/dist/icons/IconRenderer.js +9 -15
  45. package/dist/icons/IconRenderer.js.map +1 -1
  46. package/dist/icons/IconRenderer.test.js +63 -65
  47. package/dist/icons/IconRenderer.test.js.map +1 -1
  48. package/dist/icons/iconData.js +2 -5
  49. package/dist/icons/iconData.js.map +1 -1
  50. package/dist/icons/index.js +3 -14
  51. package/dist/icons/index.js.map +1 -1
  52. package/dist/ipc/MessageBroker.d.ts.map +1 -1
  53. package/dist/ipc/MessageBroker.js +33 -6
  54. package/dist/ipc/MessageBroker.js.map +1 -1
  55. package/dist/ipc/MessageBroker.test.js +26 -28
  56. package/dist/ipc/MessageBroker.test.js.map +1 -1
  57. package/dist/ipc/devInspectorBridge.d.ts +57 -0
  58. package/dist/ipc/devInspectorBridge.d.ts.map +1 -0
  59. package/dist/ipc/devInspectorBridge.js +70 -0
  60. package/dist/ipc/devInspectorBridge.js.map +1 -0
  61. package/dist/ipc/devInspectorBridge.test.d.ts +2 -0
  62. package/dist/ipc/devInspectorBridge.test.d.ts.map +1 -0
  63. package/dist/ipc/devInspectorBridge.test.js +128 -0
  64. package/dist/ipc/devInspectorBridge.test.js.map +1 -0
  65. package/dist/ipc/namespaces.d.ts +1 -1
  66. package/dist/ipc/namespaces.d.ts.map +1 -1
  67. package/dist/ipc/namespaces.js +4 -7
  68. package/dist/ipc/namespaces.js.map +1 -1
  69. package/dist/ipc/namespaces.test.js +11 -13
  70. package/dist/ipc/namespaces.test.js.map +1 -1
  71. package/dist/lib/focusTracker.js +1 -4
  72. package/dist/lib/focusTracker.js.map +1 -1
  73. package/dist/lib/focusTracker.test.js +32 -57
  74. package/dist/lib/focusTracker.test.js.map +1 -1
  75. package/dist/lib/syncProviderBridge.js +1 -4
  76. package/dist/lib/syncProviderBridge.js.map +1 -1
  77. package/dist/lib/syncProviderBridge.test.js +60 -85
  78. package/dist/lib/syncProviderBridge.test.js.map +1 -1
  79. package/dist/lib/themeInjector.js +3 -8
  80. package/dist/lib/themeInjector.js.map +1 -1
  81. package/dist/lib/themeInjector.test.js +42 -44
  82. package/dist/lib/themeInjector.test.js.map +1 -1
  83. package/dist/search/SearchEngine.js +3 -10
  84. package/dist/search/SearchEngine.js.map +1 -1
  85. package/dist/search/SearchEngine.test.js +53 -55
  86. package/dist/search/SearchEngine.test.js.map +1 -1
  87. package/dist/search/index.js +2 -8
  88. package/dist/search/index.js.map +1 -1
  89. package/dist/search/textUtils.js +2 -6
  90. package/dist/search/textUtils.js.map +1 -1
  91. package/dist/search/textUtils.test.js +73 -75
  92. package/dist/search/textUtils.test.js.map +1 -1
  93. package/dist/search/types.js +1 -2
  94. package/dist/services/AIServiceProxy.js +2 -6
  95. package/dist/services/AIServiceProxy.js.map +1 -1
  96. package/dist/services/AIServiceProxy.test.js +69 -71
  97. package/dist/services/AIServiceProxy.test.js.map +1 -1
  98. package/dist/services/ActionServiceProxy.d.ts.map +1 -1
  99. package/dist/services/ActionServiceProxy.js +14 -13
  100. package/dist/services/ActionServiceProxy.js.map +1 -1
  101. package/dist/services/ActionServiceProxy.test.js +28 -23
  102. package/dist/services/ActionServiceProxy.test.js.map +1 -1
  103. package/dist/services/ApplicationService.js +2 -6
  104. package/dist/services/ApplicationService.js.map +1 -1
  105. package/dist/services/ApplicationService.test.js +108 -110
  106. package/dist/services/ApplicationService.test.js.map +1 -1
  107. package/dist/services/BaseServiceProxy.js +3 -7
  108. package/dist/services/BaseServiceProxy.js.map +1 -1
  109. package/dist/services/CacheServiceProxy.js +2 -6
  110. package/dist/services/CacheServiceProxy.js.map +1 -1
  111. package/dist/services/CacheServiceProxy.test.js +21 -23
  112. package/dist/services/CacheServiceProxy.test.js.map +1 -1
  113. package/dist/services/ClipboardHistoryServiceProxy.js +6 -10
  114. package/dist/services/ClipboardHistoryServiceProxy.js.map +1 -1
  115. package/dist/services/ClipboardHistoryServiceProxy.test.js +106 -108
  116. package/dist/services/ClipboardHistoryServiceProxy.test.js.map +1 -1
  117. package/dist/services/CommandServiceProxy.js +7 -11
  118. package/dist/services/CommandServiceProxy.js.map +1 -1
  119. package/dist/services/CommandServiceProxy.test.js +37 -39
  120. package/dist/services/CommandServiceProxy.test.js.map +1 -1
  121. package/dist/services/EntitlementServiceProxy.js +2 -6
  122. package/dist/services/EntitlementServiceProxy.js.map +1 -1
  123. package/dist/services/EntitlementServiceProxy.test.js +16 -18
  124. package/dist/services/EntitlementServiceProxy.test.js.map +1 -1
  125. package/dist/services/ExtensionManagerProxy.js +2 -6
  126. package/dist/services/ExtensionManagerProxy.js.map +1 -1
  127. package/dist/services/ExtensionManagerProxy.test.js +42 -44
  128. package/dist/services/ExtensionManagerProxy.test.js.map +1 -1
  129. package/dist/services/ExtensionRpc.d.ts +90 -0
  130. package/dist/services/ExtensionRpc.d.ts.map +1 -0
  131. package/dist/services/ExtensionRpc.js +277 -0
  132. package/dist/services/ExtensionRpc.js.map +1 -0
  133. package/dist/services/ExtensionRpc.test.d.ts +2 -0
  134. package/dist/services/ExtensionRpc.test.d.ts.map +1 -0
  135. package/dist/services/ExtensionRpc.test.js +259 -0
  136. package/dist/services/ExtensionRpc.test.js.map +1 -0
  137. package/dist/services/ExtensionStateProxy.d.ts +44 -0
  138. package/dist/services/ExtensionStateProxy.d.ts.map +1 -0
  139. package/dist/services/ExtensionStateProxy.js +115 -0
  140. package/dist/services/ExtensionStateProxy.js.map +1 -0
  141. package/dist/services/ExtensionStateProxy.test.d.ts +2 -0
  142. package/dist/services/ExtensionStateProxy.test.d.ts.map +1 -0
  143. package/dist/services/ExtensionStateProxy.test.js +158 -0
  144. package/dist/services/ExtensionStateProxy.test.js.map +1 -0
  145. package/dist/services/FeedbackServiceProxy.js +2 -6
  146. package/dist/services/FeedbackServiceProxy.js.map +1 -1
  147. package/dist/services/FeedbackServiceProxy.test.js +31 -33
  148. package/dist/services/FeedbackServiceProxy.test.js.map +1 -1
  149. package/dist/services/FileManagerServiceProxy.js +2 -6
  150. package/dist/services/FileManagerServiceProxy.js.map +1 -1
  151. package/dist/services/FileManagerServiceProxy.test.js +21 -23
  152. package/dist/services/FileManagerServiceProxy.test.js.map +1 -1
  153. package/dist/services/FileSystemWatcherService.js +2 -6
  154. package/dist/services/FileSystemWatcherService.js.map +1 -1
  155. package/dist/services/FileSystemWatcherService.test.js +45 -47
  156. package/dist/services/FileSystemWatcherService.test.js.map +1 -1
  157. package/dist/services/IAIService.js +1 -2
  158. package/dist/services/ICacheService.js +1 -2
  159. package/dist/services/IClipboardHistoryService.js +1 -2
  160. package/dist/services/ICommandService.js +1 -2
  161. package/dist/services/IEntitlementService.js +1 -2
  162. package/dist/services/IExtensionManager.js +1 -2
  163. package/dist/services/IFeedbackService.js +1 -2
  164. package/dist/services/IFileManagerService.js +1 -2
  165. package/dist/services/IInteropService.js +1 -5
  166. package/dist/services/IInteropService.js.map +1 -1
  167. package/dist/services/INotificationService.js +1 -2
  168. package/dist/services/IOAuthService.js +1 -2
  169. package/dist/services/IPowerService.js +1 -2
  170. package/dist/services/IPreferencesService.js +1 -2
  171. package/dist/services/ISelectionService.js +1 -2
  172. package/dist/services/ISettingsService.js +1 -2
  173. package/dist/services/IShellService.js +1 -2
  174. package/dist/services/IStatusBarService.js +1 -2
  175. package/dist/services/IStorageService.js +1 -2
  176. package/dist/services/ISystemEventsService.js +1 -2
  177. package/dist/services/ISystemEventsService.js.map +1 -1
  178. package/dist/services/ITimerService.js +1 -2
  179. package/dist/services/InteropServiceProxy.js +2 -6
  180. package/dist/services/InteropServiceProxy.js.map +1 -1
  181. package/dist/services/InteropServiceProxy.test.js +19 -21
  182. package/dist/services/InteropServiceProxy.test.js.map +1 -1
  183. package/dist/services/LogService.js +1 -2
  184. package/dist/services/LogServiceProxy.js +2 -6
  185. package/dist/services/LogServiceProxy.js.map +1 -1
  186. package/dist/services/LogServiceProxy.test.js +43 -45
  187. package/dist/services/LogServiceProxy.test.js.map +1 -1
  188. package/dist/services/NetworkServiceProxy.js +2 -6
  189. package/dist/services/NetworkServiceProxy.js.map +1 -1
  190. package/dist/services/NetworkServiceProxy.test.js +20 -22
  191. package/dist/services/NetworkServiceProxy.test.js.map +1 -1
  192. package/dist/services/NotificationServiceProxy.js +2 -6
  193. package/dist/services/NotificationServiceProxy.js.map +1 -1
  194. package/dist/services/NotificationServiceProxy.test.js +39 -41
  195. package/dist/services/NotificationServiceProxy.test.js.map +1 -1
  196. package/dist/services/OAuthServiceProxy.js +2 -6
  197. package/dist/services/OAuthServiceProxy.js.map +1 -1
  198. package/dist/services/OAuthServiceProxy.test.js +42 -44
  199. package/dist/services/OAuthServiceProxy.test.js.map +1 -1
  200. package/dist/services/PowerServiceProxy.js +2 -6
  201. package/dist/services/PowerServiceProxy.js.map +1 -1
  202. package/dist/services/PowerServiceProxy.test.js +24 -26
  203. package/dist/services/PowerServiceProxy.test.js.map +1 -1
  204. package/dist/services/PreferencesServiceProxy.js +2 -6
  205. package/dist/services/PreferencesServiceProxy.js.map +1 -1
  206. package/dist/services/PreferencesServiceProxy.test.js +22 -24
  207. package/dist/services/PreferencesServiceProxy.test.js.map +1 -1
  208. package/dist/services/SelectionServiceProxy.js +2 -6
  209. package/dist/services/SelectionServiceProxy.js.map +1 -1
  210. package/dist/services/SelectionServiceProxy.test.js +20 -22
  211. package/dist/services/SelectionServiceProxy.test.js.map +1 -1
  212. package/dist/services/SettingsServiceProxy.js +2 -6
  213. package/dist/services/SettingsServiceProxy.js.map +1 -1
  214. package/dist/services/SettingsServiceProxy.test.js +18 -20
  215. package/dist/services/SettingsServiceProxy.test.js.map +1 -1
  216. package/dist/services/ShellServiceProxy.js +2 -6
  217. package/dist/services/ShellServiceProxy.js.map +1 -1
  218. package/dist/services/ShellServiceProxy.test.js +92 -94
  219. package/dist/services/ShellServiceProxy.test.js.map +1 -1
  220. package/dist/services/StatusBarServiceProxy.js +9 -13
  221. package/dist/services/StatusBarServiceProxy.js.map +1 -1
  222. package/dist/services/StatusBarServiceProxy.test.js +68 -70
  223. package/dist/services/StatusBarServiceProxy.test.js.map +1 -1
  224. package/dist/services/StorageServiceProxy.js +2 -6
  225. package/dist/services/StorageServiceProxy.js.map +1 -1
  226. package/dist/services/StorageServiceProxy.test.js +31 -33
  227. package/dist/services/StorageServiceProxy.test.js.map +1 -1
  228. package/dist/services/SystemEventsServiceProxy.js +2 -6
  229. package/dist/services/SystemEventsServiceProxy.js.map +1 -1
  230. package/dist/services/SystemEventsServiceProxy.test.js +50 -52
  231. package/dist/services/SystemEventsServiceProxy.test.js.map +1 -1
  232. package/dist/services/TimerServiceProxy.js +2 -6
  233. package/dist/services/TimerServiceProxy.js.map +1 -1
  234. package/dist/services/TimerServiceProxy.test.js +33 -35
  235. package/dist/services/TimerServiceProxy.test.js.map +1 -1
  236. package/dist/services/WindowManagementService.js +2 -6
  237. package/dist/services/WindowManagementService.js.map +1 -1
  238. package/dist/services/WindowManagementService.test.js +23 -25
  239. package/dist/services/WindowManagementService.test.js.map +1 -1
  240. package/dist/services/index.js +36 -76
  241. package/dist/services/index.js.map +1 -1
  242. package/dist/services/statusBarValidation.js +7 -14
  243. package/dist/services/statusBarValidation.js.map +1 -1
  244. package/dist/types/ActionType.js +3 -6
  245. package/dist/types/ActionType.js.map +1 -1
  246. package/dist/types/ApplicationType.js +1 -2
  247. package/dist/types/ClipboardType.js +2 -5
  248. package/dist/types/ClipboardType.js.map +1 -1
  249. package/dist/types/CommandType.js +1 -2
  250. package/dist/types/ExtensionType.d.ts +40 -5
  251. package/dist/types/ExtensionType.d.ts.map +1 -1
  252. package/dist/types/ExtensionType.js +1 -2
  253. package/dist/types/NetworkType.js +1 -2
  254. package/dist/types/NotificationType.js +1 -2
  255. package/dist/types/SyncType.js +1 -2
  256. package/dist/types/index.js +2 -18
  257. package/dist/types/index.js.map +1 -1
  258. package/dist/view.d.ts +12 -0
  259. package/dist/view.d.ts.map +1 -0
  260. package/dist/view.js +19 -0
  261. package/dist/view.js.map +1 -0
  262. package/dist/view.test.d.ts +2 -0
  263. package/dist/view.test.d.ts.map +1 -0
  264. package/dist/view.test.js +114 -0
  265. package/dist/view.test.js.map +1 -0
  266. package/dist/worker.bundle-size.test.d.ts +2 -0
  267. package/dist/worker.bundle-size.test.d.ts.map +1 -0
  268. package/dist/worker.bundle-size.test.js +96 -0
  269. package/dist/worker.bundle-size.test.js.map +1 -0
  270. package/dist/worker.d.ts +37 -0
  271. package/dist/worker.d.ts.map +1 -0
  272. package/dist/worker.js +122 -0
  273. package/dist/worker.js.map +1 -0
  274. package/dist/worker.test.d.ts +2 -0
  275. package/dist/worker.test.d.ts.map +1 -0
  276. package/dist/worker.test.js +136 -0
  277. package/dist/worker.test.js.map +1 -0
  278. package/package.json +12 -4
  279. package/dist/index.d.ts.map +0 -1
  280. package/dist/index.js +0 -47
  281. package/dist/index.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ import type { ExtensionSyncProvider } from "./types/SyncType";
2
+ import type { ExtensionAction } from "./types/ActionType";
3
+ import type { CommandHandler } from "./types/CommandType";
4
+ import type { Namespace } from "./ipc/namespaces";
5
+ import type { BaseServiceProxy } from "./services/BaseServiceProxy";
6
+ import { PreferencesFacade } from './PreferencesFacade';
7
+ export type ExtensionContextRole = 'worker' | 'view';
8
+ interface CoreInit {
9
+ role: ExtensionContextRole;
10
+ proxies: Partial<Record<Namespace, BaseServiceProxy>>;
11
+ }
12
+ /**
13
+ * Shared plumbing for both worker- and view-scoped ExtensionContexts.
14
+ *
15
+ * Consumers never construct this class directly — the role-specific entry
16
+ * points (`asyar-sdk/worker` / `asyar-sdk/view`) build a subclass with the
17
+ * correct proxies bag, and launcher Tier 1 code references the class only
18
+ * as a type.
19
+ */
20
+ export declare class ExtensionContextCore {
21
+ private extensionId;
22
+ readonly role: ExtensionContextRole;
23
+ readonly preferences: PreferencesFacade;
24
+ readonly proxies: Partial<Record<Namespace, BaseServiceProxy>>;
25
+ private preferenceChangeListeners;
26
+ constructor(init: CoreInit);
27
+ setPreferences(bundle: {
28
+ extension: Record<string, unknown>;
29
+ commands: Record<string, Record<string, unknown>>;
30
+ }): void;
31
+ onPreferencesChanged(callback: () => void): () => void;
32
+ getService<T>(namespace: Namespace): T;
33
+ setExtensionId(id: string): void;
34
+ protected notifyBridgeIfAvailable(_id: string): void;
35
+ protected notifyRpcIfAvailable(_id: string): void;
36
+ protected emitLoadedEvent(id: string): void;
37
+ private resolveRuntimeRole;
38
+ registerAction(action: ExtensionAction): void;
39
+ unregisterAction(actionId: string): void;
40
+ registerCommand(commandId: string, handler: CommandHandler): void;
41
+ unregisterCommand(commandId: string): void;
42
+ createDeeplink(commandId: string, args?: Record<string, string>): string;
43
+ registerSyncProvider(provider: ExtensionSyncProvider): void;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=ExtensionContextCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionContextCore.d.ts","sourceRoot":"","sources":["../src/ExtensionContextCore.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,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAG7E,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,UAAU,QAAQ;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,SAAgB,IAAI,EAAE,oBAAoB,CAAC;IAC3C,SAAgB,WAAW,EAAE,iBAAiB,CAA2B;IACzE,SAAgB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEtE,OAAO,CAAC,yBAAyB,CAAyB;gBAE9C,IAAI,EAAE,QAAQ;IAKnB,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;IAWD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAS7D,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC;IAQtC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAehC,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMpD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAYjD,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAmB3C,OAAO,CAAC,kBAAkB;IAQ1B,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAc7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQxC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAejE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS1C,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;CAO5D"}
@@ -0,0 +1,149 @@
1
+ import { PreferencesFacade, buildFrozenSnapshot } from './PreferencesFacade';
2
+ import { registerSyncProvider as setupSyncProvider } from './lib/syncProviderBridge';
3
+ /**
4
+ * Shared plumbing for both worker- and view-scoped ExtensionContexts.
5
+ *
6
+ * Consumers never construct this class directly — the role-specific entry
7
+ * points (`asyar-sdk/worker` / `asyar-sdk/view`) build a subclass with the
8
+ * correct proxies bag, and launcher Tier 1 code references the class only
9
+ * as a type.
10
+ */
11
+ export class ExtensionContextCore {
12
+ constructor(init) {
13
+ this.extensionId = "";
14
+ this.preferences = new PreferencesFacade();
15
+ this.preferenceChangeListeners = [];
16
+ this.role = init.role;
17
+ this.proxies = init.proxies;
18
+ }
19
+ setPreferences(bundle) {
20
+ this.preferences._setValues(buildFrozenSnapshot(bundle));
21
+ for (const cb of this.preferenceChangeListeners) {
22
+ try {
23
+ cb();
24
+ }
25
+ catch (err) {
26
+ console.error('[ExtensionContext] onPreferencesChanged listener threw:', err);
27
+ }
28
+ }
29
+ }
30
+ onPreferencesChanged(callback) {
31
+ this.preferenceChangeListeners.push(callback);
32
+ return () => {
33
+ this.preferenceChangeListeners = this.preferenceChangeListeners.filter((l) => l !== callback);
34
+ };
35
+ }
36
+ getService(namespace) {
37
+ const service = this.proxies[namespace];
38
+ if (!service) {
39
+ throw new Error(`Service "${namespace}" not registered`);
40
+ }
41
+ return service;
42
+ }
43
+ setExtensionId(id) {
44
+ this.extensionId = id;
45
+ for (const key of Object.keys(this.proxies)) {
46
+ const svc = this.proxies[key];
47
+ if (svc && typeof svc.setExtensionId === 'function') {
48
+ svc.setExtensionId(id);
49
+ }
50
+ }
51
+ this.preferences._setExtensionId(id);
52
+ this.notifyRpcIfAvailable(id);
53
+ this.notifyBridgeIfAvailable(id);
54
+ this.emitLoadedEvent(id);
55
+ }
56
+ notifyBridgeIfAvailable(_id) {
57
+ // Subclasses that pull in ExtensionBridge override this. The core class
58
+ // has no static import of the bridge so Tier 1 / worker consumers can
59
+ // opt out of the keystroke-forwarder side effects.
60
+ }
61
+ notifyRpcIfAvailable(_id) {
62
+ // Subclasses override this to patch the `extensionRpc` singleton's
63
+ // broker with this extension's id. Core has no static import of
64
+ // ExtensionRpc so Tier 1 consumers (which have no iframe boundary
65
+ // and thus no RPC) don't pull it into their bundle.
66
+ //
67
+ // Why: extensionRpc is a module-level singleton outside the proxies
68
+ // bag, so the iteration above doesn't visit it. Without this hook,
69
+ // state:rpcRequest / state:rpcAbort / state:rpcReply messages go out
70
+ // with no extensionId and are rejected by the launcher's IPC router.
71
+ }
72
+ emitLoadedEvent(id) {
73
+ try {
74
+ if (typeof window !== 'undefined' &&
75
+ window.parent &&
76
+ window.parent !== window &&
77
+ typeof window.parent.postMessage === 'function') {
78
+ const role = this.resolveRuntimeRole();
79
+ window.parent.postMessage({ type: 'asyar:extension:loaded', extensionId: id, role }, '*');
80
+ }
81
+ }
82
+ catch (_a) {
83
+ // best-effort — host will time out and strike if we can't signal.
84
+ }
85
+ }
86
+ resolveRuntimeRole() {
87
+ if (typeof window !== 'undefined') {
88
+ const injected = window.__ASYAR_ROLE__;
89
+ if (injected === 'worker' || injected === 'view')
90
+ return injected;
91
+ }
92
+ return this.role;
93
+ }
94
+ registerAction(action) {
95
+ if (!this.extensionId) {
96
+ console.error("Cannot register action: Extension ID not set");
97
+ return;
98
+ }
99
+ const actions = this.proxies.actions;
100
+ if (!actions) {
101
+ throw new Error('actions service not available in this context');
102
+ }
103
+ actions.registerAction(action);
104
+ }
105
+ unregisterAction(actionId) {
106
+ const actions = this.proxies.actions;
107
+ if (!actions)
108
+ return;
109
+ actions.unregisterAction(actionId);
110
+ }
111
+ registerCommand(commandId, handler) {
112
+ if (!this.extensionId) {
113
+ console.error("Cannot register command: Extension ID not set");
114
+ return;
115
+ }
116
+ const fullCommandId = `${this.extensionId}.${commandId}`;
117
+ const commands = this.proxies.commands;
118
+ if (!commands) {
119
+ throw new Error('commands service not available in this context');
120
+ }
121
+ commands.registerCommand(fullCommandId, handler, this.extensionId);
122
+ }
123
+ unregisterCommand(commandId) {
124
+ const fullCommandId = `${this.extensionId}.${commandId}`;
125
+ const commands = this.proxies.commands;
126
+ if (!commands)
127
+ return;
128
+ commands.unregisterCommand(fullCommandId);
129
+ }
130
+ createDeeplink(commandId, args) {
131
+ if (!this.extensionId) {
132
+ throw new Error('Cannot create deeplink: Extension ID not set');
133
+ }
134
+ let url = `asyar://extensions/${encodeURIComponent(this.extensionId)}/${encodeURIComponent(commandId)}`;
135
+ if (args && Object.keys(args).length > 0) {
136
+ const params = new URLSearchParams(args).toString();
137
+ url += `?${params}`;
138
+ }
139
+ return url;
140
+ }
141
+ registerSyncProvider(provider) {
142
+ if (!this.extensionId) {
143
+ console.error("Cannot register sync provider: Extension ID not set");
144
+ return;
145
+ }
146
+ setupSyncProvider(this.extensionId, provider);
147
+ }
148
+ }
149
+ //# sourceMappingURL=ExtensionContextCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionContextCore.js","sourceRoot":"","sources":["../src/ExtensionContextCore.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,11 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
8
  });
10
9
  };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PreferencesFacade = void 0;
13
- exports.buildFrozenSnapshot = buildFrozenSnapshot;
14
- const services_1 = require("./services");
15
- function buildFrozenSnapshot(bundle) {
10
+ import { PreferencesServiceProxy } from "./services/PreferencesServiceProxy";
11
+ export function buildFrozenSnapshot(bundle) {
16
12
  var _a;
17
13
  const snapshot = Object.assign(Object.assign({}, bundle.extension), { commands: {} });
18
14
  for (const [cmdId, prefs] of Object.entries((_a = bundle.commands) !== null && _a !== void 0 ? _a : {})) {
@@ -26,12 +22,12 @@ function buildFrozenSnapshot(bundle) {
26
22
  * frozen snapshot at `.values` (boot-time + push-updated) alongside
27
23
  * IPC-backed mutation methods (`set`, `reset`, `refresh`).
28
24
  */
29
- class PreferencesFacade {
25
+ export class PreferencesFacade {
30
26
  constructor() {
31
27
  this.values = Object.freeze({
32
28
  commands: Object.freeze({}),
33
29
  });
34
- this.proxy = new services_1.PreferencesServiceProxy();
30
+ this.proxy = new PreferencesServiceProxy();
35
31
  }
36
32
  /** @internal */
37
33
  _setValues(snapshot) {
@@ -55,5 +51,4 @@ class PreferencesFacade {
55
51
  });
56
52
  }
57
53
  }
58
- exports.PreferencesFacade = PreferencesFacade;
59
54
  //# sourceMappingURL=PreferencesFacade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesFacade.js","sourceRoot":"","sources":["../src/PreferencesFacade.ts"],"names":[],"mappings":";;;;;;;;;;;;AAgBA,kDAUC;AA1BD,yCAAqD;AAgBrD,SAAgB,mBAAmB,CAAC,MAGnC;;IACC,MAAM,QAAQ,GAAG,gCAAK,MAAM,CAAC,SAAS,KAAE,QAAQ,EAAE,EAAE,GAA+F,CAAC;IACpJ,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAA,MAAM,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAAE,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,mBAAM,KAAK,EAAG,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAwB,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAa,iBAAiB;IAA9B;QACS,WAAM,GAAwB,MAAM,CAAC,MAAM,CAAC;YACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5B,CAAwB,CAAC;QACT,UAAK,GAAG,IAAI,kCAAuB,EAAE,CAAC;IAyBzD,CAAC;IAvBC,gBAAgB;IAChB,UAAU,CAAC,QAA6B;QACtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED,gBAAgB;IAChB,eAAe,CAAC,EAAU;QACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,KAAc;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEK,OAAO;;YACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;KAAA;CACF;AA7BD,8CA6BC"}
1
+ {"version":3,"file":"PreferencesFacade.js","sourceRoot":"","sources":["../src/PreferencesFacade.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAgB7E,MAAM,UAAU,mBAAmB,CAAC,MAGnC;;IACC,MAAM,QAAQ,GAAG,gCAAK,MAAM,CAAC,SAAS,KAAE,QAAQ,EAAE,EAAE,GAA+F,CAAC;IACpJ,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAA,MAAM,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAAE,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,mBAAM,KAAK,EAAG,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAwB,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QACS,WAAM,GAAwB,MAAM,CAAC,MAAM,CAAC;YACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5B,CAAwB,CAAC;QACT,UAAK,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAyBzD,CAAC;IAvBC,gBAAgB;IAChB,UAAU,CAAC,QAA6B;QACtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED,gBAAgB;IAChB,eAAe,CAAC,EAAU;QACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,KAAc;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEK,OAAO;;YACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;KAAA;CACF"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,94 +7,93 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
8
  });
10
9
  };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const vitest_1 = require("vitest");
13
- const { mockInvoke } = vitest_1.vi.hoisted(() => ({
14
- mockInvoke: vitest_1.vi.fn().mockResolvedValue(undefined),
10
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
11
+ const { mockInvoke } = vi.hoisted(() => ({
12
+ mockInvoke: vi.fn().mockResolvedValue(undefined),
15
13
  }));
16
- vitest_1.vi.mock('./ipc/MessageBroker', () => ({
14
+ vi.mock('./ipc/MessageBroker', () => ({
17
15
  messageBroker: {
18
16
  invoke: mockInvoke,
19
- on: vitest_1.vi.fn(),
20
- off: vitest_1.vi.fn(),
17
+ on: vi.fn(),
18
+ off: vi.fn(),
21
19
  },
22
20
  }));
23
- const PreferencesFacade_1 = require("./PreferencesFacade");
24
- (0, vitest_1.beforeEach)(() => {
21
+ import { PreferencesFacade, buildFrozenSnapshot } from './PreferencesFacade';
22
+ beforeEach(() => {
25
23
  mockInvoke.mockReset();
26
24
  mockInvoke.mockResolvedValue(undefined);
27
25
  });
28
- (0, vitest_1.describe)('buildFrozenSnapshot', () => {
29
- (0, vitest_1.it)('freezes the top-level object', () => {
30
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: { a: 1 }, commands: {} });
31
- (0, vitest_1.expect)(Object.isFrozen(snap)).toBe(true);
26
+ describe('buildFrozenSnapshot', () => {
27
+ it('freezes the top-level object', () => {
28
+ const snap = buildFrozenSnapshot({ extension: { a: 1 }, commands: {} });
29
+ expect(Object.isFrozen(snap)).toBe(true);
32
30
  });
33
- (0, vitest_1.it)('freezes the commands map', () => {
34
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: {}, commands: { foo: { x: 1 } } });
35
- (0, vitest_1.expect)(Object.isFrozen(snap.commands)).toBe(true);
31
+ it('freezes the commands map', () => {
32
+ const snap = buildFrozenSnapshot({ extension: {}, commands: { foo: { x: 1 } } });
33
+ expect(Object.isFrozen(snap.commands)).toBe(true);
36
34
  });
37
- (0, vitest_1.it)('freezes each command entry', () => {
38
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: {}, commands: { foo: { x: 1 } } });
39
- (0, vitest_1.expect)(Object.isFrozen(snap.commands.foo)).toBe(true);
35
+ it('freezes each command entry', () => {
36
+ const snap = buildFrozenSnapshot({ extension: {}, commands: { foo: { x: 1 } } });
37
+ expect(Object.isFrozen(snap.commands.foo)).toBe(true);
40
38
  });
41
- (0, vitest_1.it)('spreads extension-level keys onto the top-level snapshot', () => {
42
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: { apiKey: 'abc', units: 'metric' }, commands: {} });
43
- (0, vitest_1.expect)(snap.apiKey).toBe('abc');
44
- (0, vitest_1.expect)(snap.units).toBe('metric');
39
+ it('spreads extension-level keys onto the top-level snapshot', () => {
40
+ const snap = buildFrozenSnapshot({ extension: { apiKey: 'abc', units: 'metric' }, commands: {} });
41
+ expect(snap.apiKey).toBe('abc');
42
+ expect(snap.units).toBe('metric');
45
43
  });
46
- (0, vitest_1.it)('tolerates undefined commands field', () => {
47
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: { a: 1 }, commands: undefined });
48
- (0, vitest_1.expect)(snap.a).toBe(1);
49
- (0, vitest_1.expect)(snap.commands).toEqual({});
44
+ it('tolerates undefined commands field', () => {
45
+ const snap = buildFrozenSnapshot({ extension: { a: 1 }, commands: undefined });
46
+ expect(snap.a).toBe(1);
47
+ expect(snap.commands).toEqual({});
50
48
  });
51
- (0, vitest_1.it)('direct mutation is rejected in strict mode', () => {
49
+ it('direct mutation is rejected in strict mode', () => {
52
50
  'use strict';
53
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: { x: 1 }, commands: {} });
54
- (0, vitest_1.expect)(() => {
51
+ const snap = buildFrozenSnapshot({ extension: { x: 1 }, commands: {} });
52
+ expect(() => {
55
53
  snap.x = 999;
56
54
  }).toThrow();
57
55
  });
58
56
  });
59
- (0, vitest_1.describe)('PreferencesFacade', () => {
60
- (0, vitest_1.it)('starts with an empty frozen snapshot at .values', () => {
61
- const facade = new PreferencesFacade_1.PreferencesFacade();
62
- (0, vitest_1.expect)(facade.values.commands).toBeDefined();
63
- (0, vitest_1.expect)(Object.isFrozen(facade.values)).toBe(true);
64
- (0, vitest_1.expect)(Object.isFrozen(facade.values.commands)).toBe(true);
57
+ describe('PreferencesFacade', () => {
58
+ it('starts with an empty frozen snapshot at .values', () => {
59
+ const facade = new PreferencesFacade();
60
+ expect(facade.values.commands).toBeDefined();
61
+ expect(Object.isFrozen(facade.values)).toBe(true);
62
+ expect(Object.isFrozen(facade.values.commands)).toBe(true);
65
63
  });
66
- (0, vitest_1.it)('_setValues replaces .values with the given snapshot', () => {
67
- const facade = new PreferencesFacade_1.PreferencesFacade();
68
- const snap = (0, PreferencesFacade_1.buildFrozenSnapshot)({ extension: { theme: 'dark' }, commands: {} });
64
+ it('_setValues replaces .values with the given snapshot', () => {
65
+ const facade = new PreferencesFacade();
66
+ const snap = buildFrozenSnapshot({ extension: { theme: 'dark' }, commands: {} });
69
67
  facade._setValues(snap);
70
- (0, vitest_1.expect)(facade.values).toBe(snap);
71
- (0, vitest_1.expect)(facade.values.theme).toBe('dark');
68
+ expect(facade.values).toBe(snap);
69
+ expect(facade.values.theme).toBe('dark');
72
70
  });
73
- (0, vitest_1.it)('.set forwards to the IPC proxy with the right wire type', () => __awaiter(void 0, void 0, void 0, function* () {
74
- const facade = new PreferencesFacade_1.PreferencesFacade();
71
+ it('.set forwards to the IPC proxy with the right wire type', () => __awaiter(void 0, void 0, void 0, function* () {
72
+ const facade = new PreferencesFacade();
75
73
  yield facade.set('extension', 'theme', 'dark');
76
74
  const call = mockInvoke.mock.calls.find((c) => c[0] === 'preferences:set');
77
- (0, vitest_1.expect)(call).toBeDefined();
78
- (0, vitest_1.expect)(call[1]).toMatchObject({ scope: 'extension', key: 'theme', value: 'dark' });
75
+ expect(call).toBeDefined();
76
+ expect(call[1]).toMatchObject({ scope: 'extension', key: 'theme', value: 'dark' });
79
77
  }));
80
- (0, vitest_1.it)('.reset forwards to the IPC proxy with the scope', () => __awaiter(void 0, void 0, void 0, function* () {
81
- const facade = new PreferencesFacade_1.PreferencesFacade();
78
+ it('.reset forwards to the IPC proxy with the scope', () => __awaiter(void 0, void 0, void 0, function* () {
79
+ const facade = new PreferencesFacade();
82
80
  yield facade.reset('extension');
83
81
  const call = mockInvoke.mock.calls.find((c) => c[0] === 'preferences:reset');
84
- (0, vitest_1.expect)(call).toBeDefined();
85
- (0, vitest_1.expect)(call[1]).toMatchObject({ scope: 'extension' });
82
+ expect(call).toBeDefined();
83
+ expect(call[1]).toMatchObject({ scope: 'extension' });
86
84
  }));
87
- (0, vitest_1.it)('.refresh fetches fresh values via IPC and updates .values', () => __awaiter(void 0, void 0, void 0, function* () {
85
+ it('.refresh fetches fresh values via IPC and updates .values', () => __awaiter(void 0, void 0, void 0, function* () {
88
86
  mockInvoke.mockImplementation((cmd) => __awaiter(void 0, void 0, void 0, function* () {
89
87
  if (cmd === 'preferences:getAll') {
90
88
  return { extension: { theme: 'blue' }, commands: {} };
91
89
  }
92
90
  return undefined;
93
91
  }));
94
- const facade = new PreferencesFacade_1.PreferencesFacade();
92
+ const facade = new PreferencesFacade();
95
93
  const fresh = yield facade.refresh();
96
- (0, vitest_1.expect)(facade.values).toBe(fresh);
97
- (0, vitest_1.expect)(facade.values.theme).toBe('blue');
98
- (0, vitest_1.expect)(Object.isFrozen(facade.values)).toBe(true);
94
+ expect(facade.values).toBe(fresh);
95
+ expect(facade.values.theme).toBe('blue');
96
+ expect(Object.isFrozen(facade.values)).toBe(true);
99
97
  }));
100
98
  });
101
99
  //# sourceMappingURL=PreferencesFacade.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesFacade.test.js","sourceRoot":"","sources":["../src/PreferencesFacade.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PreferencesFacade.test.js","sourceRoot":"","sources":["../src/PreferencesFacade.test.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,7 @@ function registerAttach(program) {
86
86
  const manifest = (0, manifest_1.readManifest)(dir);
87
87
  if (opts.build !== false) {
88
88
  yield (0, build_1.runViteBuild)(dir);
89
- (0, build_1.verifyBuildOutput)(dir);
89
+ (0, build_1.verifyBuildOutput)(dir, manifest);
90
90
  }
91
91
  registry[manifest.id] = dir;
92
92
  console.log(chalk_1.default.green('✓') + ` Attached ${manifest.name} (${manifest.id})`);
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../cli/commands/attach.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wCAgEC;AAvED,4CAA6B;AAC7B,gDAAiC;AACjC,kDAAyB;AACzB,8CAA8C;AAC9C,8CAAsD;AACtD,mCAAyD;AAEzD,SAAgB,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,OAAO,EAAE,6EAA6E,CAAC;SAC9F,MAAM,CAAC,YAAY,EAAE,gCAAgC,CAAC;SACtD,MAAM,CAAC,CAAO,aAAiC,EAAE,IAAS,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;YAC/D,IAAI,aAAa,GAAa,EAAE,CAAA;YAEhC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;qBAChE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;qBACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;gBAEtD,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;gBAEvF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,CAAC,CAAA;oBACnF,OAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;oBAC3D,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAA;gBAC7D,CAAC;gBACD,aAAa,GAAG,CAAC,UAAU,CAAC,CAAA;YAC9B,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAA,+BAAoB,GAAE,CAAA;YAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;YAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACrC,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,CAAC;YAED,IAAI,QAAQ,GAA2B,EAAE,CAAA;YACzC,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAA;gBACpE,CAAC;gBAAC,WAAM,CAAC;oBACP,QAAQ,GAAG,EAAE,CAAA;gBACf,CAAC;YACH,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAA,uBAAY,EAAC,GAAG,CAAC,CAAA;gBAElC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAA;oBACvB,IAAA,yBAAiB,EAAC,GAAG,CAAC,CAAA;gBACxB,CAAC;gBAED,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;gBAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;YAC/E,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,MAAM,4DAA4D,CAAC,CAAC,CAAA;QAChH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAA,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../cli/commands/attach.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { Command } from 'commander';
2
2
  export declare function registerBuild(program: Command): void;
3
3
  export declare function runViteBuild(cwd: string): Promise<void>;
4
- export declare function verifyBuildOutput(cwd: string): void;
4
+ export declare function verifyBuildOutput(cwd: string, manifest?: {
5
+ background?: {
6
+ main?: string;
7
+ };
8
+ }): void;
5
9
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAgC7C;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,QA4B5C"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAgC7C;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7D;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,QAmE9C"}
@@ -68,7 +68,7 @@ function registerBuild(program) {
68
68
  }
69
69
  try {
70
70
  yield runViteBuild(cwd);
71
- verifyBuildOutput(cwd);
71
+ verifyBuildOutput(cwd, manifest);
72
72
  }
73
73
  catch (_a) {
74
74
  process.exit(1);
@@ -98,16 +98,54 @@ function runViteBuild(cwd) {
98
98
  });
99
99
  });
100
100
  }
101
- function verifyBuildOutput(cwd) {
101
+ function verifyBuildOutput(cwd, manifest) {
102
+ var _a;
102
103
  const distDir = path.join(cwd, 'dist');
104
+ // Dual-entry layout (Tier 2 worker/view split): dist/view.html is the
105
+ // user-facing iframe; dist/worker.html is additionally required when
106
+ // the manifest declares background.main (always-on headless worker).
107
+ const hasView = fs.existsSync(path.join(distDir, 'view.html'));
108
+ const hasWorker = fs.existsSync(path.join(distDir, 'worker.html'));
109
+ const requiresWorker = !!((_a = manifest === null || manifest === void 0 ? void 0 : manifest.background) === null || _a === void 0 ? void 0 : _a.main);
110
+ // Legacy single-entry layouts (pre-dual-entry extensions).
103
111
  const hasWebApp = fs.existsSync(path.join(distDir, 'index.html'));
104
112
  const hasLibrary = fs.existsSync(path.join(distDir, 'index.js'));
105
- if (!hasWebApp && !hasLibrary) {
106
- console.log(chalk_1.default.red('✗ Build output not found: expected dist/index.html (web app) or dist/index.js (library)'));
113
+ const hasDualEntry = hasView && (!requiresWorker || hasWorker);
114
+ const hasLegacy = hasWebApp || hasLibrary;
115
+ if (!hasDualEntry && !hasLegacy) {
116
+ if (requiresWorker && hasView && !hasWorker) {
117
+ console.log(chalk_1.default.red('✗ Build output incomplete: manifest declares background.main but dist/worker.html is missing. ' +
118
+ 'Ensure vite.config.ts rollupOptions.input includes worker.html.'));
119
+ }
120
+ else {
121
+ console.log(chalk_1.default.red('✗ Build output not found: expected dist/view.html (dual-entry) ' +
122
+ 'or dist/index.html (legacy web app) or dist/index.js (legacy library)'));
123
+ }
107
124
  process.exit(1);
108
125
  }
109
126
  console.log('\nOutput:');
110
- if (hasWebApp) {
127
+ if (hasDualEntry) {
128
+ printFileSize(cwd, path.join(distDir, 'view.html'));
129
+ if (hasWorker)
130
+ printFileSize(cwd, path.join(distDir, 'worker.html'));
131
+ for (const file of fs.readdirSync(distDir)) {
132
+ if (file === 'view.html' || file === 'worker.html')
133
+ continue;
134
+ const full = path.join(distDir, file);
135
+ const stat = fs.statSync(full);
136
+ if (stat.isDirectory()) {
137
+ if (file === 'assets') {
138
+ for (const asset of fs.readdirSync(full)) {
139
+ printFileSize(cwd, path.join(full, asset));
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ printFileSize(cwd, full);
145
+ }
146
+ }
147
+ }
148
+ else if (hasWebApp) {
111
149
  printFileSize(cwd, path.join(distDir, 'index.html'));
112
150
  const assetsDir = path.join(distDir, 'assets');
113
151
  if (fs.existsSync(assetsDir)) {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export type CommandMode = 'view' | 'background';
1
2
  export interface AsyarManifest {
2
3
  id: string;
3
4
  name: string;
@@ -9,11 +10,19 @@ export interface AsyarManifest {
9
10
  minAppVersion?: string;
10
11
  asyarSdk?: string;
11
12
  platforms?: string[];
12
- type?: 'result' | 'view' | 'theme';
13
- defaultView?: string;
13
+ type?: 'theme' | 'extension';
14
14
  searchable?: boolean;
15
- main?: string;
16
15
  preferences?: PreferenceDeclaration[];
16
+ /**
17
+ * Tier 2 extensions that need an always-on headless worker (any command
18
+ * with `mode: "background"`, or a searchable extension whose `search()`
19
+ * runs headlessly) declare it via `background.main`. Points at the built
20
+ * worker bundle, typically `dist/worker.js`. Presence gates the CLI's
21
+ * build-output validator to additionally require `dist/worker.html`.
22
+ */
23
+ background?: {
24
+ main: string;
25
+ };
17
26
  }
18
27
  export type PreferenceType = 'textfield' | 'password' | 'number' | 'checkbox' | 'dropdown' | 'appPicker' | 'file' | 'directory';
19
28
  export interface DropdownOption {
@@ -47,8 +56,11 @@ export interface ManifestCommand {
47
56
  id: string;
48
57
  name: string;
49
58
  description: string;
50
- resultType?: 'view' | 'no-view' | 'result';
51
- view?: string;
59
+ mode: CommandMode;
60
+ /** Svelte component entry for mode="view" commands. Required when mode is "view". */
61
+ component?: string;
62
+ icon?: string;
63
+ trigger?: string;
52
64
  schedule?: {
53
65
  intervalSeconds: number;
54
66
  };