MCPcopy Create free account
hub / github.com/FIND-Lab/AgentWard / PersistentWorker

Class PersistentWorker

worker/model-worker-manager.ts:56–204  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54 | { requestId: string; success: false; error: string };
55
56export class PersistentWorker {
57 private worker: Worker;
58 private view: Int32Array;
59 private dataBuffer: Uint8Array;
60 private running = true;
61 private encoder = new TextEncoder();
62 private decoder = new TextDecoder();
63 private tmpDir: string;
64 private timeout: number;
65 private aesKey: AesKey;
66
67 constructor(
68 options: {
69 tmpDir: string;
70 config: {
71 timeout: number;
72 debug: boolean;
73 logLevel: string;
74 };
75 }
76 ) {
77 this.tmpDir = options.tmpDir;
78 this.timeout = options.config.timeout;
79 this.aesKey = generateKey();
80
81 const shared = new SharedArrayBuffer(SHARED_BUFFER_SIZE);
82 this.view = new Int32Array(shared);
83 this.dataBuffer = new Uint8Array(shared, 4, SHARED_BUFFER_SIZE - 4);
84
85 this.worker = new Worker(new URL('./model-worker.js', import.meta.url), {
86 workerData: {
87 tmpDir: options.tmpDir,
88 config: options.config,
89 aesKey: this.aesKey,
90 shared,
91 },
92 });
93
94 this.worker.on('online', () => {
95 getLogger().info('[WorkerManager] Worker Online');
96 });
97
98 this.worker.on('message', (msg) => {
99 if (msg.type === 'log') {
100 if (msg.level === 'warn') {
101 getLogger().warn(`[WorkerManager] ${msg.message}`);
102 } else if (msg.level === 'error') {
103 getLogger().error(`[WorkerManager] ${msg.message}`);
104 } else {
105 getLogger().info(`[WorkerManager] ${msg.message}`);
106 }
107 }
108 });
109
110 this.worker.on('error', (err) => {
111 getLogger().error(`[WorkerManager] Error: ${err}`);
112 this.running = false;
113 });

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected