Merge public-gh/master into paperclip-company-import-export
This commit is contained in:
@@ -556,6 +556,18 @@ export function buildHostServices(
|
||||
}
|
||||
await scopedBus.emit(params.name, params.companyId, params.payload);
|
||||
},
|
||||
async subscribe(params: { eventPattern: string; filter?: Record<string, unknown> | null }) {
|
||||
const handler = async (event: import("@paperclipai/plugin-sdk").PluginEvent) => {
|
||||
if (notifyWorker) {
|
||||
notifyWorker("onEvent", { event });
|
||||
}
|
||||
};
|
||||
if (params.filter) {
|
||||
scopedBus.subscribe(params.eventPattern as any, params.filter as any, handler);
|
||||
} else {
|
||||
scopedBus.subscribe(params.eventPattern as any, handler);
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
http: {
|
||||
@@ -1060,6 +1072,10 @@ export function buildHostServices(
|
||||
dispose() {
|
||||
disposed = true;
|
||||
|
||||
// Clear event bus subscriptions to prevent accumulation on worker restart.
|
||||
// Without this, each crash/restart cycle adds duplicate subscriptions.
|
||||
scopedBus.clear();
|
||||
|
||||
// Snapshot to avoid iterator invalidation from concurrent sendMessage() calls
|
||||
const snapshot = Array.from(activeSubscriptions);
|
||||
activeSubscriptions.clear();
|
||||
|
||||
Reference in New Issue
Block a user