@weave-apps/sdk 0.1.16 → 0.1.18

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.
@@ -0,0 +1,237 @@
1
+ /**
2
+ * WeaveAppInstanceAPI
3
+ *
4
+ * Client-side API for Weave apps to discover and communicate with
5
+ * other instances of themselves across browser tabs.
6
+ *
7
+ * Use cases:
8
+ * - Prevent duplicate automation runs across tabs
9
+ * - Coordinate which tab is "controlling" vs "observing"
10
+ * - Send messages between app instances
11
+ *
12
+ * Usage:
13
+ * ```typescript
14
+ * // Register this instance
15
+ * const instances = await this.instances.register({ url: window.location.href });
16
+ *
17
+ * // Claim controller status (for automation)
18
+ * const claimed = await this.instances.claimController();
19
+ *
20
+ * // Listen for messages from other instances
21
+ * this.instances.onMessage((msg, sender) => {
22
+ * if (msg.type === 'YIELD_CONTROL') {
23
+ * // Another tab wants control
24
+ * }
25
+ * });
26
+ *
27
+ * // Broadcast to all other instances
28
+ * await this.instances.broadcast({ type: 'YIELD_CONTROL' });
29
+ * ```
30
+ */
31
+ /**
32
+ * Represents a single app instance in a tab
33
+ */
34
+ export interface AppInstance {
35
+ appId: string;
36
+ tabId: number;
37
+ url: string;
38
+ isController: boolean;
39
+ registeredAt: number;
40
+ metadata?: Record<string, any>;
41
+ }
42
+ /**
43
+ * Message sent between app instances
44
+ */
45
+ export interface InstanceMessage {
46
+ type: string;
47
+ data?: any;
48
+ senderId: number;
49
+ timestamp: number;
50
+ }
51
+ /**
52
+ * Callback for instance messages
53
+ */
54
+ export type InstanceMessageCallback = (message: InstanceMessage) => void;
55
+ /**
56
+ * Callback for instance changes
57
+ */
58
+ export type InstanceChangeCallback = (instances: AppInstance[]) => void;
59
+ /**
60
+ * WeaveAppInstanceAPI class
61
+ *
62
+ * Provides methods for apps to discover and communicate with
63
+ * other instances of themselves across browser tabs.
64
+ */
65
+ export declare class WeaveAppInstanceAPI {
66
+ private appId;
67
+ private _tabId;
68
+ constructor(appId: string);
69
+ /**
70
+ * Get this instance's tab ID (available after register)
71
+ */
72
+ get tabId(): number | null;
73
+ /**
74
+ * Register this app instance
75
+ * Call this when your app starts to make it discoverable by other instances.
76
+ *
77
+ * @param metadata - Optional metadata to associate with this instance
78
+ * @returns All current instances of this app (including this one)
79
+ *
80
+ * @example
81
+ * const instances = await this.instances.register({
82
+ * url: window.location.href,
83
+ * startedAt: Date.now()
84
+ * });
85
+ * console.log(`There are ${instances.length} instances of this app`);
86
+ */
87
+ register(metadata?: Record<string, any>): Promise<AppInstance[]>;
88
+ /**
89
+ * Unregister this app instance
90
+ * Call this when your app is being destroyed.
91
+ *
92
+ * @example
93
+ * await this.instances.unregister();
94
+ */
95
+ unregister(): Promise<void>;
96
+ /**
97
+ * Get all instances of this app
98
+ *
99
+ * @returns All current instances
100
+ *
101
+ * @example
102
+ * const instances = await this.instances.getInstances();
103
+ * const otherInstances = instances.filter(i => i.tabId !== this.instances.tabId);
104
+ */
105
+ getInstances(): Promise<AppInstance[]>;
106
+ /**
107
+ * Claim controller status for this instance
108
+ * Only one instance can be controller at a time.
109
+ *
110
+ * @param force - If true, forcibly take control from current controller
111
+ * @returns true if successfully claimed, false if another instance is controller
112
+ *
113
+ * @example
114
+ * const claimed = await this.instances.claimController();
115
+ * if (claimed) {
116
+ * // This instance is now the controller
117
+ * this.startAutomation();
118
+ * } else {
119
+ * // Another instance is already controlling
120
+ * this.showObserverUI();
121
+ * }
122
+ */
123
+ claimController(force?: boolean): Promise<boolean>;
124
+ /**
125
+ * Release controller status
126
+ * Call this when you want to give up control.
127
+ *
128
+ * @example
129
+ * await this.instances.releaseController();
130
+ */
131
+ releaseController(): Promise<void>;
132
+ /**
133
+ * Check if this instance is the controller
134
+ *
135
+ * @returns true if this instance is the controller
136
+ *
137
+ * @example
138
+ * if (await this.instances.isController()) {
139
+ * // We're in control
140
+ * }
141
+ */
142
+ isController(): Promise<boolean>;
143
+ /**
144
+ * Get the current controller instance
145
+ *
146
+ * @returns The controller instance, or null if none
147
+ *
148
+ * @example
149
+ * const controller = await this.instances.getController();
150
+ * if (controller) {
151
+ * console.log(`Controller is in tab ${controller.tabId}`);
152
+ * }
153
+ */
154
+ getController(): Promise<AppInstance | null>;
155
+ /**
156
+ * Broadcast a message to all other instances
157
+ *
158
+ * @param message - Message to send (type and optional data)
159
+ * @returns Array of tab IDs that received the message
160
+ *
161
+ * @example
162
+ * await this.instances.broadcast({
163
+ * type: 'YIELD_CONTROL',
164
+ * data: { reason: 'User requested control' }
165
+ * });
166
+ */
167
+ broadcast(message: {
168
+ type: string;
169
+ data?: any;
170
+ }): Promise<number[]>;
171
+ /**
172
+ * Send a message to the controller instance
173
+ *
174
+ * @param message - Message to send
175
+ * @returns Tab ID of the controller, or null if no controller
176
+ *
177
+ * @example
178
+ * await this.instances.sendToController({
179
+ * type: 'REQUEST_STATUS',
180
+ * });
181
+ */
182
+ sendToController(message: {
183
+ type: string;
184
+ data?: any;
185
+ }): Promise<number | null>;
186
+ /**
187
+ * Send a message to a specific tab
188
+ *
189
+ * @param targetTabId - Tab ID to send to
190
+ * @param message - Message to send
191
+ * @returns true if sent successfully
192
+ *
193
+ * @example
194
+ * await this.instances.sendToTab(123, {
195
+ * type: 'PING',
196
+ * });
197
+ */
198
+ sendToTab(targetTabId: number, message: {
199
+ type: string;
200
+ data?: any;
201
+ }): Promise<boolean>;
202
+ /**
203
+ * Listen for messages from other instances
204
+ *
205
+ * @param callback - Function to call when a message is received
206
+ * @returns Unsubscribe function
207
+ *
208
+ * @example
209
+ * const unsubscribe = this.instances.onMessage((msg) => {
210
+ * if (msg.type === 'YIELD_CONTROL') {
211
+ * this.releaseController();
212
+ * this.showObserverUI();
213
+ * }
214
+ * });
215
+ *
216
+ * // Later, to stop listening:
217
+ * unsubscribe();
218
+ */
219
+ onMessage(callback: InstanceMessageCallback): () => void;
220
+ /**
221
+ * Listen for instance changes (new instances, removed instances)
222
+ *
223
+ * @param callback - Function to call when instances change
224
+ * @returns Unsubscribe function
225
+ *
226
+ * @example
227
+ * const unsubscribe = this.instances.onInstanceChange((instances) => {
228
+ * console.log(`Now ${instances.length} instances`);
229
+ * const controller = instances.find(i => i.isController);
230
+ * if (controller) {
231
+ * console.log(`Controller is tab ${controller.tabId}`);
232
+ * }
233
+ * });
234
+ */
235
+ onInstanceChange(callback: InstanceChangeCallback): () => void;
236
+ }
237
+ //# sourceMappingURL=WeaveAppInstanceAPI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeaveAppInstanceAPI.d.ts","sourceRoot":"","sources":["../src/WeaveAppInstanceAPI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAeH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;AAqHxE;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,KAAK,EAAE,MAAM;IAIzB;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAetE;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;;;;;;;OAQG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAO5C;;;;;;;;;;;;;;;;OAgBG;IACG,eAAe,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ/D;;;;;;OAMG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC;;;;;;;;;OASG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAOtC;;;;;;;;;;OAUG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAOlD;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQzE;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQrF;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7F;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAsBxD;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,IAAI;CAqB/D"}
@@ -0,0 +1,395 @@
1
+ /**
2
+ * WeaveAppInstanceAPI
3
+ *
4
+ * Client-side API for Weave apps to discover and communicate with
5
+ * other instances of themselves across browser tabs.
6
+ *
7
+ * Use cases:
8
+ * - Prevent duplicate automation runs across tabs
9
+ * - Coordinate which tab is "controlling" vs "observing"
10
+ * - Send messages between app instances
11
+ *
12
+ * Usage:
13
+ * ```typescript
14
+ * // Register this instance
15
+ * const instances = await this.instances.register({ url: window.location.href });
16
+ *
17
+ * // Claim controller status (for automation)
18
+ * const claimed = await this.instances.claimController();
19
+ *
20
+ * // Listen for messages from other instances
21
+ * this.instances.onMessage((msg, sender) => {
22
+ * if (msg.type === 'YIELD_CONTROL') {
23
+ * // Another tab wants control
24
+ * }
25
+ * });
26
+ *
27
+ * // Broadcast to all other instances
28
+ * await this.instances.broadcast({ type: 'YIELD_CONTROL' });
29
+ * ```
30
+ */
31
+ // Request timeout in ms
32
+ const REQUEST_TIMEOUT = 5000;
33
+ // Counter for unique request IDs
34
+ let requestIdCounter = 0;
35
+ // Pending requests waiting for response
36
+ const pendingRequests = new Map();
37
+ // Flag to track if listener is set up
38
+ let listenerInitialized = false;
39
+ // Global callbacks for instance messages (keyed by appId)
40
+ const messageCallbacks = new Map();
41
+ // Global callbacks for instance changes (keyed by appId)
42
+ const changeCallbacks = new Map();
43
+ /**
44
+ * Initialize the response listener (called once)
45
+ */
46
+ function initializeListener() {
47
+ if (listenerInitialized)
48
+ return;
49
+ listenerInitialized = true;
50
+ window.addEventListener('message', (event) => {
51
+ const message = event.data;
52
+ // Handle app instance responses
53
+ if (message?.type === 'APP_INSTANCE_RESPONSE') {
54
+ const response = message;
55
+ const pending = pendingRequests.get(response.requestId);
56
+ if (!pending)
57
+ return;
58
+ // Clear timeout and remove from pending
59
+ clearTimeout(pending.timeout);
60
+ pendingRequests.delete(response.requestId);
61
+ if (response.success) {
62
+ pending.resolve(response);
63
+ }
64
+ else {
65
+ pending.reject(new Error(response.error || 'Unknown error'));
66
+ }
67
+ return;
68
+ }
69
+ // Handle incoming instance messages from other tabs
70
+ if (message?.type === 'APP_INSTANCE_MESSAGE') {
71
+ const { appId, message: instanceMessage } = message.payload;
72
+ const callbacks = messageCallbacks.get(appId);
73
+ if (callbacks) {
74
+ for (const callback of callbacks) {
75
+ try {
76
+ callback(instanceMessage);
77
+ }
78
+ catch (error) {
79
+ console.error('[WeaveAppInstanceAPI] Error in message callback:', error);
80
+ }
81
+ }
82
+ }
83
+ return;
84
+ }
85
+ // Handle instance change notifications
86
+ if (message?.type === 'APP_INSTANCE_CHANGE') {
87
+ const { appId, instances } = message.payload;
88
+ const callbacks = changeCallbacks.get(appId);
89
+ if (callbacks) {
90
+ for (const callback of callbacks) {
91
+ try {
92
+ callback(instances);
93
+ }
94
+ catch (error) {
95
+ console.error('[WeaveAppInstanceAPI] Error in change callback:', error);
96
+ }
97
+ }
98
+ }
99
+ return;
100
+ }
101
+ });
102
+ }
103
+ /**
104
+ * Send a message to the background service via content script
105
+ */
106
+ async function sendMessage(type, payload) {
107
+ // Initialize listener on first use
108
+ initializeListener();
109
+ const requestId = `app-${++requestIdCounter}-${Date.now()}`;
110
+ return new Promise((resolve, reject) => {
111
+ // Set up timeout
112
+ const timeout = setTimeout(() => {
113
+ pendingRequests.delete(requestId);
114
+ reject(new Error(`App instance request timed out: ${type}`));
115
+ }, REQUEST_TIMEOUT);
116
+ // Store pending request
117
+ pendingRequests.set(requestId, { resolve, reject, timeout });
118
+ // Send message to content script (which forwards to background)
119
+ window.parent.postMessage({
120
+ type,
121
+ requestId,
122
+ payload,
123
+ }, '*');
124
+ });
125
+ }
126
+ /**
127
+ * WeaveAppInstanceAPI class
128
+ *
129
+ * Provides methods for apps to discover and communicate with
130
+ * other instances of themselves across browser tabs.
131
+ */
132
+ export class WeaveAppInstanceAPI {
133
+ constructor(appId) {
134
+ this._tabId = null;
135
+ this.appId = appId;
136
+ }
137
+ /**
138
+ * Get this instance's tab ID (available after register)
139
+ */
140
+ get tabId() {
141
+ return this._tabId;
142
+ }
143
+ /**
144
+ * Register this app instance
145
+ * Call this when your app starts to make it discoverable by other instances.
146
+ *
147
+ * @param metadata - Optional metadata to associate with this instance
148
+ * @returns All current instances of this app (including this one)
149
+ *
150
+ * @example
151
+ * const instances = await this.instances.register({
152
+ * url: window.location.href,
153
+ * startedAt: Date.now()
154
+ * });
155
+ * console.log(`There are ${instances.length} instances of this app`);
156
+ */
157
+ async register(metadata) {
158
+ const response = await sendMessage('APP_REGISTER_INSTANCE', {
159
+ appId: this.appId,
160
+ url: window.location.href,
161
+ metadata,
162
+ });
163
+ // Store our tab ID
164
+ if (response.tabId) {
165
+ this._tabId = response.tabId;
166
+ }
167
+ return response.instances || [];
168
+ }
169
+ /**
170
+ * Unregister this app instance
171
+ * Call this when your app is being destroyed.
172
+ *
173
+ * @example
174
+ * await this.instances.unregister();
175
+ */
176
+ async unregister() {
177
+ await sendMessage('APP_UNREGISTER_INSTANCE', {
178
+ appId: this.appId,
179
+ });
180
+ this._tabId = null;
181
+ }
182
+ /**
183
+ * Get all instances of this app
184
+ *
185
+ * @returns All current instances
186
+ *
187
+ * @example
188
+ * const instances = await this.instances.getInstances();
189
+ * const otherInstances = instances.filter(i => i.tabId !== this.instances.tabId);
190
+ */
191
+ async getInstances() {
192
+ const response = await sendMessage('APP_GET_INSTANCES', {
193
+ appId: this.appId,
194
+ });
195
+ return response.instances || [];
196
+ }
197
+ /**
198
+ * Claim controller status for this instance
199
+ * Only one instance can be controller at a time.
200
+ *
201
+ * @param force - If true, forcibly take control from current controller
202
+ * @returns true if successfully claimed, false if another instance is controller
203
+ *
204
+ * @example
205
+ * const claimed = await this.instances.claimController();
206
+ * if (claimed) {
207
+ * // This instance is now the controller
208
+ * this.startAutomation();
209
+ * } else {
210
+ * // Another instance is already controlling
211
+ * this.showObserverUI();
212
+ * }
213
+ */
214
+ async claimController(force = false) {
215
+ const response = await sendMessage('APP_CLAIM_CONTROLLER', {
216
+ appId: this.appId,
217
+ force,
218
+ });
219
+ return response.claimed ?? false;
220
+ }
221
+ /**
222
+ * Release controller status
223
+ * Call this when you want to give up control.
224
+ *
225
+ * @example
226
+ * await this.instances.releaseController();
227
+ */
228
+ async releaseController() {
229
+ await sendMessage('APP_RELEASE_CONTROLLER', {
230
+ appId: this.appId,
231
+ });
232
+ }
233
+ /**
234
+ * Check if this instance is the controller
235
+ *
236
+ * @returns true if this instance is the controller
237
+ *
238
+ * @example
239
+ * if (await this.instances.isController()) {
240
+ * // We're in control
241
+ * }
242
+ */
243
+ async isController() {
244
+ const response = await sendMessage('APP_IS_CONTROLLER', {
245
+ appId: this.appId,
246
+ });
247
+ return response.isController ?? false;
248
+ }
249
+ /**
250
+ * Get the current controller instance
251
+ *
252
+ * @returns The controller instance, or null if none
253
+ *
254
+ * @example
255
+ * const controller = await this.instances.getController();
256
+ * if (controller) {
257
+ * console.log(`Controller is in tab ${controller.tabId}`);
258
+ * }
259
+ */
260
+ async getController() {
261
+ const response = await sendMessage('APP_GET_CONTROLLER', {
262
+ appId: this.appId,
263
+ });
264
+ return response.controller ?? null;
265
+ }
266
+ /**
267
+ * Broadcast a message to all other instances
268
+ *
269
+ * @param message - Message to send (type and optional data)
270
+ * @returns Array of tab IDs that received the message
271
+ *
272
+ * @example
273
+ * await this.instances.broadcast({
274
+ * type: 'YIELD_CONTROL',
275
+ * data: { reason: 'User requested control' }
276
+ * });
277
+ */
278
+ async broadcast(message) {
279
+ const response = await sendMessage('APP_BROADCAST', {
280
+ appId: this.appId,
281
+ instanceMessage: message,
282
+ });
283
+ return response.recipientTabIds || [];
284
+ }
285
+ /**
286
+ * Send a message to the controller instance
287
+ *
288
+ * @param message - Message to send
289
+ * @returns Tab ID of the controller, or null if no controller
290
+ *
291
+ * @example
292
+ * await this.instances.sendToController({
293
+ * type: 'REQUEST_STATUS',
294
+ * });
295
+ */
296
+ async sendToController(message) {
297
+ const response = await sendMessage('APP_SEND_TO_CONTROLLER', {
298
+ appId: this.appId,
299
+ instanceMessage: message,
300
+ });
301
+ return response.controllerTabId ?? null;
302
+ }
303
+ /**
304
+ * Send a message to a specific tab
305
+ *
306
+ * @param targetTabId - Tab ID to send to
307
+ * @param message - Message to send
308
+ * @returns true if sent successfully
309
+ *
310
+ * @example
311
+ * await this.instances.sendToTab(123, {
312
+ * type: 'PING',
313
+ * });
314
+ */
315
+ async sendToTab(targetTabId, message) {
316
+ const response = await sendMessage('APP_SEND_TO_TAB', {
317
+ appId: this.appId,
318
+ targetTabId,
319
+ instanceMessage: message,
320
+ });
321
+ return response.sent ?? false;
322
+ }
323
+ /**
324
+ * Listen for messages from other instances
325
+ *
326
+ * @param callback - Function to call when a message is received
327
+ * @returns Unsubscribe function
328
+ *
329
+ * @example
330
+ * const unsubscribe = this.instances.onMessage((msg) => {
331
+ * if (msg.type === 'YIELD_CONTROL') {
332
+ * this.releaseController();
333
+ * this.showObserverUI();
334
+ * }
335
+ * });
336
+ *
337
+ * // Later, to stop listening:
338
+ * unsubscribe();
339
+ */
340
+ onMessage(callback) {
341
+ // Initialize listener
342
+ initializeListener();
343
+ // Get or create callback set for this app
344
+ let callbacks = messageCallbacks.get(this.appId);
345
+ if (!callbacks) {
346
+ callbacks = new Set();
347
+ messageCallbacks.set(this.appId, callbacks);
348
+ }
349
+ callbacks.add(callback);
350
+ // Return unsubscribe function
351
+ return () => {
352
+ callbacks?.delete(callback);
353
+ if (callbacks?.size === 0) {
354
+ messageCallbacks.delete(this.appId);
355
+ }
356
+ };
357
+ }
358
+ /**
359
+ * Listen for instance changes (new instances, removed instances)
360
+ *
361
+ * @param callback - Function to call when instances change
362
+ * @returns Unsubscribe function
363
+ *
364
+ * @example
365
+ * const unsubscribe = this.instances.onInstanceChange((instances) => {
366
+ * console.log(`Now ${instances.length} instances`);
367
+ * const controller = instances.find(i => i.isController);
368
+ * if (controller) {
369
+ * console.log(`Controller is tab ${controller.tabId}`);
370
+ * }
371
+ * });
372
+ */
373
+ onInstanceChange(callback) {
374
+ // Initialize listener
375
+ initializeListener();
376
+ // Get or create callback set for this app
377
+ let callbacks = changeCallbacks.get(this.appId);
378
+ if (!callbacks) {
379
+ callbacks = new Set();
380
+ changeCallbacks.set(this.appId, callbacks);
381
+ }
382
+ callbacks.add(callback);
383
+ // Return unsubscribe function
384
+ return () => {
385
+ callbacks?.delete(callback);
386
+ if (callbacks?.size === 0) {
387
+ changeCallbacks.delete(this.appId);
388
+ }
389
+ };
390
+ }
391
+ }
392
+ // Export for global usage
393
+ if (typeof window !== 'undefined') {
394
+ window.WeaveAppInstanceAPI = WeaveAppInstanceAPI;
395
+ }
@@ -116,12 +116,20 @@ export declare abstract class WeaveBaseApp<TSettings = Record<string, any>, TSta
116
116
  private _backgroundAPI;
117
117
  /** Cron API for scheduled tasks */
118
118
  private _cronAPI;
119
+ /** App Instance API for cross-tab communication */
120
+ private _instancesAPI;
119
121
  /** Debounced persist function */
120
122
  private _debouncedPersist;
121
123
  /** Flag to track if state has been restored */
122
124
  private _stateRestored;
123
125
  /** App UUID from registry */
124
126
  private _appUuid;
127
+ /** User's company role (e.g., 'admin', 'member') */
128
+ protected companyRole: string | null;
129
+ /** Current user object */
130
+ protected currentUser: any;
131
+ /** Current company object */
132
+ protected currentCompany: any;
125
133
  /**
126
134
  * Creates a new Weave app
127
135
  * @param appInfo - App metadata configuration
@@ -136,6 +144,33 @@ export declare abstract class WeaveBaseApp<TSettings = Record<string, any>, TSta
136
144
  * Get the cron API for scheduled tasks
137
145
  */
138
146
  protected get cron(): any;
147
+ /**
148
+ * Get the app instance API for cross-tab communication
149
+ *
150
+ * Use this to:
151
+ * - Discover other instances of your app across browser tabs
152
+ * - Claim/release controller status (for automation coordination)
153
+ * - Send messages between instances
154
+ * - Listen for instance changes
155
+ *
156
+ * @example
157
+ * // Register this instance and check for others
158
+ * const instances = await this.instances.register();
159
+ * if (instances.length > 1) {
160
+ * // Other instances exist
161
+ * }
162
+ *
163
+ * // Claim controller status
164
+ * const claimed = await this.instances.claimController();
165
+ *
166
+ * // Listen for messages from other instances
167
+ * this.instances.onMessage((msg) => {
168
+ * if (msg.type === 'YIELD_CONTROL') {
169
+ * // Another tab wants control
170
+ * }
171
+ * });
172
+ */
173
+ protected get instances(): any;
139
174
  /**
140
175
  * Register a cron job with a callback
141
176
  *
@@ -1 +1 @@
1
- {"version":3,"file":"WeaveBaseApp.d.ts","sourceRoot":"","sources":["../src/WeaveBaseApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WeaveBaseApp.d.ts","sourceRoot":"","sources":["../src/WeaveBaseApp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAMhB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAsBD;;;;GAIG;AACH,8BAAsB,YAAY,CAChC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC5B,SAAQ,WAAW;IACnB,mBAAmB;IACnB,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAEhC,2CAA2C;IAC3C,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IAElC,gDAAgD;IAChD,SAAS,CAAC,KAAK,EAAE,MAAM,CAAgB;IAEvC,sCAAsC;IACtC,OAAO,CAAC,WAAW,CAAa;IAEhC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;IAExB,2CAA2C;IAC3C,OAAO,CAAC,cAAc,CAAa;IAEnC,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAa;IAE7B,mDAAmD;IACnD,OAAO,CAAC,aAAa,CAAa;IAElC,iCAAiC;IACjC,OAAO,CAAC,iBAAiB,CAA6B;IAEtD,+CAA+C;IAC/C,OAAO,CAAC,cAAc,CAAkB;IAExC,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,oDAAoD;IACpD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE5C,0BAA0B;IAC1B,SAAS,CAAC,WAAW,EAAE,GAAG,CAAQ;IAElC,6BAA6B;IAC7B,SAAS,CAAC,cAAc,EAAE,GAAG,CAAQ;IAErC;;;OAGG;gBACS,OAAO,EAAE,YAAY;IAyEjC;;;OAGG;IACH,SAAS,KAAK,UAAU,IAAI,GAAG,CAE9B;IAED;;OAEG;IACH,SAAS,KAAK,IAAI,IAAI,GAAG,CAExB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,SAAS,KAAK,SAAS,IAAI,GAAG,CAE7B;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;cACa,OAAO,CACrB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYzB;;OAEG;cACa,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpD;;OAEG;IACH,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,IAAI;IAEtC;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAEzC;;;OAGG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAIxB;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAIrC;;;OAGG;IACI,2BAA2B,IAAI,IAAI;IAO1C;;;OAGG;IACI,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMzC;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAoBzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;;OAGG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;IAIzB;;OAEG;IACI,UAAU,IAAI,YAAY;IAIjC;;OAEG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAOzC;;;OAGG;IAEI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IASlD;;;OAGG;YACW,aAAa;IAU3B;;;OAGG;IACU,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB7C;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAIxE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CAGjF"}
@@ -89,12 +89,20 @@ export class WeaveBaseApp extends HTMLElement {
89
89
  this._backgroundAPI = null;
90
90
  /** Cron API for scheduled tasks */
91
91
  this._cronAPI = null;
92
+ /** App Instance API for cross-tab communication */
93
+ this._instancesAPI = null;
92
94
  /** Debounced persist function */
93
95
  this._debouncedPersist = null;
94
96
  /** Flag to track if state has been restored */
95
97
  this._stateRestored = false;
96
98
  /** App UUID from registry */
97
99
  this._appUuid = null;
100
+ /** User's company role (e.g., 'admin', 'member') */
101
+ this.companyRole = null;
102
+ /** Current user object */
103
+ this.currentUser = null;
104
+ /** Current company object */
105
+ this.currentCompany = null;
98
106
  // Validate required fields
99
107
  if (!appInfo.id || !appInfo.name || !appInfo.version) {
100
108
  throw new Error('WeaveBaseApp: id, name, and version are required');
@@ -113,6 +121,10 @@ export class WeaveBaseApp extends HTMLElement {
113
121
  }
114
122
  // Store app UUID for background API
115
123
  this._appUuid = registryData?.uuid || null;
124
+ // Store user context for conditional rendering and personalization
125
+ this.currentUser = registryData?.currentUser || null;
126
+ this.currentCompany = registryData?.currentCompany || null;
127
+ this.companyRole = registryData?.companyRole || null;
116
128
  // Set app UUID on the global API client so it's included in all requests
117
129
  // This allows background services to make API calls without the app being open
118
130
  if (window.weaveAPI) {
@@ -129,6 +141,10 @@ export class WeaveBaseApp extends HTMLElement {
129
141
  this._cronAPI = new window.WeaveCronAPI(this._appUuid);
130
142
  this._cronAPI.initialize();
131
143
  }
144
+ // Create app instance API for cross-tab communication
145
+ if (window.WeaveAppInstanceAPI) {
146
+ this._instancesAPI = new window.WeaveAppInstanceAPI(this._appUuid);
147
+ }
132
148
  // Set up debounced persist if enabled
133
149
  if (appInfo.persistState) {
134
150
  const delay = appInfo.persistDebounce ?? 100;
@@ -160,6 +176,35 @@ export class WeaveBaseApp extends HTMLElement {
160
176
  get cron() {
161
177
  return this._cronAPI;
162
178
  }
179
+ /**
180
+ * Get the app instance API for cross-tab communication
181
+ *
182
+ * Use this to:
183
+ * - Discover other instances of your app across browser tabs
184
+ * - Claim/release controller status (for automation coordination)
185
+ * - Send messages between instances
186
+ * - Listen for instance changes
187
+ *
188
+ * @example
189
+ * // Register this instance and check for others
190
+ * const instances = await this.instances.register();
191
+ * if (instances.length > 1) {
192
+ * // Other instances exist
193
+ * }
194
+ *
195
+ * // Claim controller status
196
+ * const claimed = await this.instances.claimController();
197
+ *
198
+ * // Listen for messages from other instances
199
+ * this.instances.onMessage((msg) => {
200
+ * if (msg.type === 'YIELD_CONTROL') {
201
+ * // Another tab wants control
202
+ * }
203
+ * });
204
+ */
205
+ get instances() {
206
+ return this._instancesAPI;
207
+ }
163
208
  /**
164
209
  * Register a cron job with a callback
165
210
  *
@@ -446,6 +446,36 @@ export declare class WeaveDOMAPI {
446
446
  * await weaveDOM.unwatchElement('weave-watcher-1');
447
447
  */
448
448
  unwatchElement(watcherId: string): Promise<void>;
449
+ /**
450
+ * Show an alert dialog on the parent page
451
+ *
452
+ * This displays a native browser alert dialog with the specified message.
453
+ * The dialog blocks until the user clicks OK.
454
+ *
455
+ * @param message - Message to display in the alert
456
+ *
457
+ * @example
458
+ * await weaveDOM.alert('Please log in to continue.');
459
+ */
460
+ alert(message: string): Promise<void>;
461
+ /**
462
+ * Show a confirm dialog on the parent page
463
+ *
464
+ * This displays a native browser confirm dialog with the specified message.
465
+ * Returns true if user clicked OK, false if user clicked Cancel.
466
+ *
467
+ * @param message - Message to display in the confirm dialog
468
+ * @returns Promise<boolean> - true if confirmed, false if cancelled
469
+ *
470
+ * @example
471
+ * const confirmed = await weaveDOM.confirm('Are you sure you want to proceed?');
472
+ * if (confirmed) {
473
+ * // User clicked OK
474
+ * } else {
475
+ * // User clicked Cancel
476
+ * }
477
+ */
478
+ confirm(message: string): Promise<boolean>;
449
479
  }
450
480
  declare const _default: WeaveDOMAPI;
451
481
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"WeaveDOMAPI.d.ts","sourceRoot":"","sources":["../src/WeaveDOMAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WeaveDOMAPI.d.ts","sourceRoot":"","sources":["../src/WeaveDOMAPI.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,9 @@ var DOMOperation;
47
47
  DOMOperation["UNWATCH_ELEMENT"] = "UNWATCH_ELEMENT";
48
48
  // Navigation operations
49
49
  DOMOperation["RELOAD_PAGE"] = "RELOAD_PAGE";
50
+ // Dialog operations
51
+ DOMOperation["SHOW_ALERT"] = "SHOW_ALERT";
52
+ DOMOperation["SHOW_CONFIRM"] = "SHOW_CONFIRM";
50
53
  })(DOMOperation || (DOMOperation = {}));
51
54
  /**
52
55
  * Weave DOM API
@@ -642,5 +645,42 @@ export class WeaveDOMAPI {
642
645
  watcherId,
643
646
  });
644
647
  }
648
+ // ============================================================================
649
+ // Dialog Operations
650
+ // ============================================================================
651
+ /**
652
+ * Show an alert dialog on the parent page
653
+ *
654
+ * This displays a native browser alert dialog with the specified message.
655
+ * The dialog blocks until the user clicks OK.
656
+ *
657
+ * @param message - Message to display in the alert
658
+ *
659
+ * @example
660
+ * await weaveDOM.alert('Please log in to continue.');
661
+ */
662
+ async alert(message) {
663
+ return this.sendRequest(DOMOperation.SHOW_ALERT, { message });
664
+ }
665
+ /**
666
+ * Show a confirm dialog on the parent page
667
+ *
668
+ * This displays a native browser confirm dialog with the specified message.
669
+ * Returns true if user clicked OK, false if user clicked Cancel.
670
+ *
671
+ * @param message - Message to display in the confirm dialog
672
+ * @returns Promise<boolean> - true if confirmed, false if cancelled
673
+ *
674
+ * @example
675
+ * const confirmed = await weaveDOM.confirm('Are you sure you want to proceed?');
676
+ * if (confirmed) {
677
+ * // User clicked OK
678
+ * } else {
679
+ * // User clicked Cancel
680
+ * }
681
+ */
682
+ async confirm(message) {
683
+ return this.sendRequest(DOMOperation.SHOW_CONFIRM, { message });
684
+ }
645
685
  }
646
686
  export default new WeaveDOMAPI();
package/dist/global.d.ts CHANGED
@@ -9,6 +9,7 @@ import { WeaveDOMAPI } from './WeaveDOMAPI';
9
9
  import { WeaveAPIClient } from './WeaveAPIClient';
10
10
  import { WeaveBackgroundAPI } from './WeaveBackgroundAPI';
11
11
  import { WeaveCronAPI } from './WeaveCronAPI';
12
+ import { WeaveAppInstanceAPI } from './WeaveAppInstanceAPI';
12
13
  declare global {
13
14
  interface Window {
14
15
  WeaveBaseApp: typeof WeaveBaseApp;
@@ -18,6 +19,7 @@ declare global {
18
19
  weaveAPI: WeaveAPIClient;
19
20
  WeaveBackgroundAPI: typeof WeaveBackgroundAPI;
20
21
  WeaveCronAPI: typeof WeaveCronAPI;
22
+ WeaveAppInstanceAPI: typeof WeaveAppInstanceAPI;
21
23
  }
22
24
  }
23
25
  //# sourceMappingURL=global.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,WAAW,EAAE,OAAO,WAAW,CAAC;QAChC,QAAQ,EAAE,WAAW,CAAC;QACtB,cAAc,EAAE,OAAO,cAAc,CAAC;QACtC,QAAQ,EAAE,cAAc,CAAC;QACzB,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;QAC9C,YAAY,EAAE,OAAO,YAAY,CAAC;KAAG;CACxC"}
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,WAAW,EAAE,OAAO,WAAW,CAAC;QAChC,QAAQ,EAAE,WAAW,CAAC;QACtB,cAAc,EAAE,OAAO,cAAc,CAAC;QACtC,QAAQ,EAAE,cAAc,CAAC;QACzB,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;QAC9C,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;KAAG;CACtD"}
package/dist/global.js CHANGED
@@ -11,6 +11,7 @@ import { WeaveAPIClient } from './WeaveAPIClient';
11
11
  import weaveAPI from './WeaveAPIClient';
12
12
  import { WeaveBackgroundAPI } from './WeaveBackgroundAPI';
13
13
  import { WeaveCronAPI } from './WeaveCronAPI';
14
+ import { WeaveAppInstanceAPI } from './WeaveAppInstanceAPI';
14
15
  // Make SDK available globally
15
16
  window.WeaveBaseApp = WeaveBaseApp;
16
17
  window.WeaveDOMAPI = WeaveDOMAPI;
@@ -19,3 +20,4 @@ window.WeaveAPIClient = WeaveAPIClient;
19
20
  window.weaveAPI = weaveAPI;
20
21
  window.WeaveBackgroundAPI = WeaveBackgroundAPI;
21
22
  window.WeaveCronAPI = WeaveCronAPI;
23
+ window.WeaveAppInstanceAPI = WeaveAppInstanceAPI;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weave-apps/sdk",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "SDK for building Weave Micro Apps",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -18,6 +18,7 @@ const filesToCopy = [
18
18
  'WeaveAPIClient.ts',
19
19
  'WeaveBackgroundAPI.ts',
20
20
  'WeaveCronAPI.ts',
21
+ 'WeaveAppInstanceAPI.ts',
21
22
  'global.ts',
22
23
  'app-template.js',
23
24
  'README.md',