@livekit/agents 0.1.0 → 0.3.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +47 -0
- package/LICENSE +201 -0
- package/dist/audio.d.ts +9 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +54 -0
- package/dist/audio.js.map +1 -0
- package/dist/cli.d.ts +12 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +102 -19
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +17 -6
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +20 -3
- package/dist/generator.js.map +1 -1
- package/dist/http_server.d.ts +1 -1
- package/dist/http_server.d.ts.map +1 -1
- package/dist/http_server.js +5 -3
- package/dist/http_server.js.map +1 -1
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/ipc/job_executor.d.ts +19 -0
- package/dist/ipc/job_executor.d.ts.map +1 -0
- package/dist/ipc/job_executor.js +8 -0
- package/dist/ipc/job_executor.js.map +1 -0
- package/dist/ipc/job_main.d.ts +7 -4
- package/dist/ipc/job_main.d.ts.map +1 -1
- package/dist/ipc/job_main.js +102 -59
- package/dist/ipc/job_main.js.map +1 -1
- package/dist/ipc/message.d.ts +41 -0
- package/dist/ipc/message.d.ts.map +1 -0
- package/dist/ipc/message.js +2 -0
- package/dist/ipc/message.js.map +1 -0
- package/dist/ipc/proc_job_executor.d.ts +15 -0
- package/dist/ipc/proc_job_executor.d.ts.map +1 -0
- package/dist/ipc/proc_job_executor.js +150 -0
- package/dist/ipc/proc_job_executor.js.map +1 -0
- package/dist/ipc/proc_pool.d.ts +26 -0
- package/dist/ipc/proc_pool.d.ts.map +1 -0
- package/dist/ipc/proc_pool.js +83 -0
- package/dist/ipc/proc_pool.js.map +1 -0
- package/dist/job.d.ts +100 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +213 -0
- package/dist/job.js.map +1 -0
- package/dist/llm/function_context.d.ts +20 -0
- package/dist/llm/function_context.d.ts.map +1 -0
- package/dist/llm/function_context.js +37 -0
- package/dist/llm/function_context.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +6 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/log.d.ts +12 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +28 -11
- package/dist/log.js.map +1 -1
- package/dist/multimodal/agent_playout.d.ts +34 -0
- package/dist/multimodal/agent_playout.d.ts.map +1 -0
- package/dist/multimodal/agent_playout.js +221 -0
- package/dist/multimodal/agent_playout.js.map +1 -0
- package/dist/multimodal/index.d.ts +3 -0
- package/dist/multimodal/index.d.ts.map +1 -0
- package/dist/multimodal/index.js +6 -0
- package/dist/multimodal/index.js.map +1 -0
- package/dist/multimodal/multimodal_agent.d.ts +47 -0
- package/dist/multimodal/multimodal_agent.d.ts.map +1 -0
- package/dist/multimodal/multimodal_agent.js +331 -0
- package/dist/multimodal/multimodal_agent.js.map +1 -0
- package/dist/plugin.js +20 -7
- package/dist/plugin.js.map +1 -1
- package/dist/stt/index.d.ts +1 -1
- package/dist/stt/index.d.ts.map +1 -1
- package/dist/stt/index.js.map +1 -1
- package/dist/stt/stream_adapter.d.ts +2 -11
- package/dist/stt/stream_adapter.d.ts.map +1 -1
- package/dist/stt/stream_adapter.js +47 -33
- package/dist/stt/stream_adapter.js.map +1 -1
- package/dist/stt/stt.d.ts +27 -0
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +32 -5
- package/dist/stt/stt.js.map +1 -1
- package/dist/transcription.d.ts +22 -0
- package/dist/transcription.d.ts.map +1 -0
- package/dist/transcription.js +111 -0
- package/dist/transcription.js.map +1 -0
- package/dist/tts/stream_adapter.d.ts +4 -11
- package/dist/tts/stream_adapter.d.ts.map +1 -1
- package/dist/tts/stream_adapter.js +66 -32
- package/dist/tts/stream_adapter.js.map +1 -1
- package/dist/tts/tts.d.ts +10 -0
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +48 -7
- package/dist/tts/tts.js.map +1 -1
- package/dist/utils.d.ts +59 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +212 -6
- package/dist/utils.js.map +1 -1
- package/dist/vad.d.ts +29 -0
- package/dist/vad.d.ts.map +1 -1
- package/dist/vad.js.map +1 -1
- package/dist/worker.d.ts +69 -50
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +414 -213
- package/dist/worker.js.map +1 -1
- package/package.json +12 -10
- package/src/audio.ts +62 -0
- package/src/cli.ts +108 -20
- package/src/generator.ts +27 -7
- package/src/http_server.ts +5 -0
- package/src/index.ts +15 -3
- package/src/ipc/job_executor.ts +25 -0
- package/src/ipc/job_main.ts +141 -61
- package/src/ipc/message.ts +39 -0
- package/src/ipc/proc_job_executor.ts +162 -0
- package/src/ipc/proc_pool.ts +109 -0
- package/src/job.ts +278 -0
- package/src/llm/function_context.ts +61 -0
- package/src/llm/index.ts +11 -0
- package/src/log.ts +40 -8
- package/src/multimodal/agent_playout.ts +254 -0
- package/src/multimodal/index.ts +5 -0
- package/src/multimodal/multimodal_agent.ts +428 -0
- package/src/stt/index.ts +1 -1
- package/src/stt/stream_adapter.ts +32 -32
- package/src/stt/stt.ts +27 -0
- package/src/transcription.ts +128 -0
- package/src/tts/stream_adapter.ts +32 -31
- package/src/tts/tts.ts +10 -0
- package/src/utils.ts +257 -3
- package/src/vad.ts +29 -0
- package/src/worker.ts +465 -172
- package/tsconfig.json +7 -1
- package/dist/ipc/job_process.d.ts +0 -22
- package/dist/ipc/job_process.d.ts.map +0 -1
- package/dist/ipc/job_process.js +0 -73
- package/dist/ipc/job_process.js.map +0 -1
- package/dist/ipc/protocol.d.ts +0 -40
- package/dist/ipc/protocol.d.ts.map +0 -1
- package/dist/ipc/protocol.js +0 -14
- package/dist/ipc/protocol.js.map +0 -1
- package/dist/job_context.d.ts +0 -16
- package/dist/job_context.d.ts.map +0 -1
- package/dist/job_context.js +0 -31
- package/dist/job_context.js.map +0 -1
- package/dist/job_request.d.ts +0 -42
- package/dist/job_request.d.ts.map +0 -1
- package/dist/job_request.js +0 -79
- package/dist/job_request.js.map +0 -1
- package/src/ipc/job_process.ts +0 -96
- package/src/ipc/protocol.ts +0 -51
- package/src/job_context.ts +0 -49
- package/src/job_request.ts +0 -118
package/dist/http_server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http_server.js","sourceRoot":"","sources":["../src/http_server.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAA0D,YAAY,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"http_server.js","sourceRoot":"","sources":["../src/http_server.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAA0D,YAAY,EAAE,MAAM,MAAM,CAAC;AAC5F,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,WAAW,GAAG,KAAK,EAAE,GAAmB,EAAE,EAAE;IAChD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,UAAU;IAKrB,YAAY,IAAY,EAAE,IAAY;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACpE,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACpB,WAAW,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;gBACpD,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,OAAO,OAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjC,GAAG,EAAE,CAAC,IAAI,CAAC,+BAA+B,OAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAW,EAAE,EAAE;gBAC7B,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveKit Agents is a framework for building realtime programmable participants that run on
|
|
3
|
+
* servers.
|
|
4
|
+
*
|
|
5
|
+
* @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
1
8
|
import * as cli from './cli.js';
|
|
9
|
+
import * as llm from './llm/index.js';
|
|
10
|
+
import * as multimodal from './multimodal/index.js';
|
|
2
11
|
import * as stt from './stt/index.js';
|
|
3
12
|
import * as tts from './tts/index.js';
|
|
4
13
|
export * from './vad.js';
|
|
5
14
|
export * from './plugin.js';
|
|
6
15
|
export * from './version.js';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './job_request.js';
|
|
16
|
+
export * from './job.js';
|
|
9
17
|
export * from './worker.js';
|
|
10
18
|
export * from './utils.js';
|
|
11
19
|
export * from './log.js';
|
|
12
20
|
export * from './generator.js';
|
|
13
|
-
export
|
|
21
|
+
export * from './tokenize.js';
|
|
22
|
+
export * from './audio.js';
|
|
23
|
+
export * from './transcription.js';
|
|
24
|
+
export { cli, stt, tts, llm, multimodal };
|
|
14
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
/**
|
|
5
|
+
* LiveKit Agents is a framework for building realtime programmable participants that run on
|
|
6
|
+
* servers.
|
|
7
|
+
*
|
|
8
|
+
* @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
4
11
|
import * as cli from './cli.js';
|
|
12
|
+
import * as llm from './llm/index.js';
|
|
13
|
+
import * as multimodal from './multimodal/index.js';
|
|
5
14
|
import * as stt from './stt/index.js';
|
|
6
15
|
import * as tts from './tts/index.js';
|
|
7
16
|
export * from './vad.js';
|
|
8
17
|
export * from './plugin.js';
|
|
9
18
|
export * from './version.js';
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './job_request.js';
|
|
19
|
+
export * from './job.js';
|
|
12
20
|
export * from './worker.js';
|
|
13
21
|
export * from './utils.js';
|
|
14
22
|
export * from './log.js';
|
|
15
23
|
export * from './generator.js';
|
|
16
|
-
export
|
|
24
|
+
export * from './tokenize.js';
|
|
25
|
+
export * from './audio.js';
|
|
26
|
+
export * from './transcription.js';
|
|
27
|
+
export { cli, stt, tts, llm, multimodal };
|
|
17
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC;;;;;;GAMG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RunningJobInfo } from '../job.js';
|
|
2
|
+
export interface ProcOpts {
|
|
3
|
+
agent: string;
|
|
4
|
+
initializeTimeout: number;
|
|
5
|
+
closeTimeout: number;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class JobExecutor {
|
|
8
|
+
PING_INTERVAL: number;
|
|
9
|
+
PING_TIMEOUT: number;
|
|
10
|
+
HIGH_PING_THRESHOLD: number;
|
|
11
|
+
abstract get started(): boolean;
|
|
12
|
+
abstract get runningJob(): RunningJobInfo | undefined;
|
|
13
|
+
abstract start(): Promise<void>;
|
|
14
|
+
abstract join(): Promise<void>;
|
|
15
|
+
abstract initialize(): Promise<void>;
|
|
16
|
+
abstract close(): Promise<void>;
|
|
17
|
+
abstract launchJob(info: RunningJobInfo): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=job_executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job_executor.d.ts","sourceRoot":"","sources":["../../src/ipc/job_executor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,8BAAsB,WAAW;IAC/B,aAAa,SAAc;IAC3B,YAAY,SAAa;IACzB,mBAAmB,SAAc;IAEjC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC;IAChC,QAAQ,KAAK,UAAU,IAAI,cAAc,GAAG,SAAS,CAAC;IAEtD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job_executor.js","sourceRoot":"","sources":["../../src/ipc/job_executor.ts"],"names":[],"mappings":"AAWA,MAAM,OAAgB,WAAW;IAAjC;QACE,kBAAa,GAAG,GAAG,GAAG,IAAI,CAAC;QAC3B,iBAAY,GAAG,EAAE,GAAG,IAAI,CAAC;QACzB,wBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC;IAUnC,CAAC;CAAA"}
|
package/dist/ipc/job_main.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
/// <reference types="node"
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { ChildProcess } from 'child_process';
|
|
3
|
+
type StartArgs = {
|
|
4
|
+
agentFile: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const runProcess: (args: StartArgs) => ChildProcess;
|
|
7
|
+
export {};
|
|
5
8
|
//# sourceMappingURL=job_main.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job_main.d.ts","sourceRoot":"","sources":["../../src/ipc/job_main.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"job_main.d.ts","sourceRoot":"","sources":["../../src/ipc/job_main.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAelD,KAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;CAEnB,CAAC;AAOF,eAAO,MAAM,UAAU,SAAU,SAAS,KAAG,YAE5C,CAAC"}
|
package/dist/ipc/job_main.js
CHANGED
|
@@ -1,77 +1,120 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import {
|
|
5
|
-
import { Room } from '@livekit/rtc-node';
|
|
4
|
+
import { Room, RoomEvent } from '@livekit/rtc-node';
|
|
6
5
|
import { fork } from 'child_process';
|
|
7
6
|
import { EventEmitter, once } from 'events';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { isAgent } from '../generator.js';
|
|
9
|
+
import { JobContext } from '../job.js';
|
|
10
|
+
import { JobProcess } from '../job.js';
|
|
11
|
+
import { initializeLogger, log } from '../log.js';
|
|
12
|
+
import { defaultInitializeProcessFunc } from '../worker.js';
|
|
13
|
+
const ORPHANED_TIMEOUT = 15 * 1000;
|
|
14
|
+
export const runProcess = (args) => {
|
|
15
|
+
return fork(fileURLToPath(import.meta.url), [args.agentFile]);
|
|
16
|
+
};
|
|
17
|
+
const startJob = (proc, func, info, closeEvent, logger) => {
|
|
18
|
+
let connect = false;
|
|
19
|
+
let shutdown = false;
|
|
20
|
+
const room = new Room();
|
|
21
|
+
room.on(RoomEvent.Disconnected, () => {
|
|
22
|
+
closeEvent.emit('close', false);
|
|
23
|
+
});
|
|
24
|
+
const onConnect = () => {
|
|
25
|
+
connect = true;
|
|
26
|
+
};
|
|
27
|
+
const onShutdown = (reason) => {
|
|
28
|
+
shutdown = true;
|
|
29
|
+
closeEvent.emit('close', true, reason);
|
|
30
|
+
};
|
|
31
|
+
const ctx = new JobContext(proc, info, room, onConnect, onShutdown);
|
|
32
|
+
const task = new Promise(async () => {
|
|
33
|
+
const unconnectedTimeout = setTimeout(() => {
|
|
34
|
+
if (!(connect || shutdown)) {
|
|
35
|
+
logger.warn('room not connect after job_entry was called after 10 seconds, ', 'did you forget to call ctx.connect()?');
|
|
36
|
+
}
|
|
37
|
+
}, 10000);
|
|
38
|
+
func(ctx).finally(() => clearTimeout(unconnectedTimeout));
|
|
39
|
+
await once(closeEvent, 'close').then((close) => {
|
|
40
|
+
logger.debug('shutting down');
|
|
41
|
+
process.send({ case: 'exiting', value: { reason: close[1] } });
|
|
42
|
+
});
|
|
43
|
+
await room.disconnect();
|
|
44
|
+
logger.debug('disconnected from room');
|
|
45
|
+
const shutdownTasks = [];
|
|
46
|
+
for (const callback of ctx.shutdownCallbacks) {
|
|
47
|
+
shutdownTasks.push(callback());
|
|
48
|
+
}
|
|
49
|
+
await Promise.all(shutdownTasks).catch(() => logger.error('error while shutting down the job'));
|
|
50
|
+
process.send({ case: 'done' });
|
|
51
|
+
process.exit();
|
|
52
|
+
});
|
|
53
|
+
return { ctx, task };
|
|
13
54
|
};
|
|
14
55
|
if (process.send) {
|
|
15
56
|
// process.argv:
|
|
16
57
|
// [0] `node'
|
|
17
58
|
// [1] import.meta.filename
|
|
18
|
-
// [2]
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const room = new Room();
|
|
25
|
-
const closeEvent = new EventEmitter();
|
|
26
|
-
let shuttingDown = false;
|
|
27
|
-
let closed = false;
|
|
28
|
-
process.on('message', (msg) => {
|
|
29
|
-
if (msg.type === IPC_MESSAGE.ShutdownRequest) {
|
|
30
|
-
shuttingDown = true;
|
|
31
|
-
closed = true;
|
|
32
|
-
closeEvent.emit('close');
|
|
33
|
-
}
|
|
34
|
-
else if (msg.type === IPC_MESSAGE.Ping) {
|
|
35
|
-
process.send({
|
|
36
|
-
type: IPC_MESSAGE.Pong,
|
|
37
|
-
lastTimestamp: msg.timestamp,
|
|
38
|
-
timestamp: Date.now(),
|
|
39
|
-
});
|
|
59
|
+
// [2] import.meta.filename of function containing entry file
|
|
60
|
+
const moduleFile = process.argv[2];
|
|
61
|
+
const agent = await import(moduleFile).then((module) => {
|
|
62
|
+
const agent = module.default;
|
|
63
|
+
if (agent === undefined || !isAgent(agent)) {
|
|
64
|
+
throw new Error(`Unable to load agent: Missing or invalid default export in ${moduleFile}`);
|
|
40
65
|
}
|
|
66
|
+
return agent;
|
|
41
67
|
});
|
|
68
|
+
if (!agent.prewarm) {
|
|
69
|
+
agent.prewarm = defaultInitializeProcessFunc;
|
|
70
|
+
}
|
|
42
71
|
// don't do anything on C-c
|
|
72
|
+
// this is handled in cli, triggering a termination of all child processes at once.
|
|
43
73
|
process.on('SIGINT', () => { });
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
74
|
+
await once(process, 'message').then(([msg]) => {
|
|
75
|
+
if (msg.case !== 'initializeRequest') {
|
|
76
|
+
throw new Error('first message must be InitializeRequest');
|
|
77
|
+
}
|
|
78
|
+
initializeLogger(msg.value.loggerOptions);
|
|
79
|
+
});
|
|
80
|
+
const proc = new JobProcess();
|
|
81
|
+
let logger = log().child({ pid: proc.pid });
|
|
82
|
+
logger.debug('initializing job runner');
|
|
83
|
+
agent.prewarm(proc);
|
|
84
|
+
logger.debug('job runner initialized');
|
|
85
|
+
process.send({ case: 'initializeResponse' });
|
|
86
|
+
let job = undefined;
|
|
87
|
+
const closeEvent = new EventEmitter();
|
|
88
|
+
const orphanedTimeout = setTimeout(() => {
|
|
89
|
+
logger.warn('process orphaned, shutting down');
|
|
90
|
+
process.exit();
|
|
91
|
+
}, ORPHANED_TIMEOUT);
|
|
92
|
+
process.on('message', (msg) => {
|
|
93
|
+
switch (msg.case) {
|
|
94
|
+
case 'pingRequest': {
|
|
95
|
+
orphanedTimeout.refresh();
|
|
96
|
+
process.send({
|
|
97
|
+
case: 'pongResponse',
|
|
98
|
+
value: { lastTimestamp: msg.value.timestamp, timestamp: Date.now() },
|
|
99
|
+
});
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case 'startJobRequest': {
|
|
103
|
+
if (job) {
|
|
104
|
+
throw new Error('job task already running');
|
|
105
|
+
}
|
|
106
|
+
logger = logger.child({ jobID: msg.value.runningJob.job.id });
|
|
107
|
+
job = startJob(proc, agent.entry, msg.value.runningJob, closeEvent, logger);
|
|
108
|
+
logger.debug('job started');
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
case 'shutdownRequest': {
|
|
112
|
+
if (!job) {
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
closeEvent.emit('close', '');
|
|
116
|
+
}
|
|
53
117
|
}
|
|
54
|
-
};
|
|
55
|
-
new Promise(() => {
|
|
56
|
-
conn
|
|
57
|
-
.then(() => {
|
|
58
|
-
if (!closed)
|
|
59
|
-
start();
|
|
60
|
-
})
|
|
61
|
-
.catch((err) => {
|
|
62
|
-
if (!closed)
|
|
63
|
-
process.send({ type: IPC_MESSAGE.StartJobResponse, err });
|
|
64
|
-
});
|
|
65
118
|
});
|
|
66
|
-
await once(closeEvent, 'close');
|
|
67
|
-
log.debug('disconnecting from room');
|
|
68
|
-
await room.disconnect();
|
|
69
|
-
if (shuttingDown) {
|
|
70
|
-
process.send({ type: IPC_MESSAGE.ShutdownResponse });
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
process.send({ type: IPC_MESSAGE.UserExit });
|
|
74
|
-
}
|
|
75
|
-
process.exit();
|
|
76
119
|
}
|
|
77
120
|
//# sourceMappingURL=job_main.js.map
|
package/dist/ipc/job_main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job_main.js","sourceRoot":"","sources":["../../src/ipc/job_main.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"job_main.js","sourceRoot":"","sources":["../../src/ipc/job_main.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAc,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAG5D,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAYnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAe,EAAgB,EAAE;IAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CACf,IAAgB,EAChB,IAAwC,EACxC,IAAoB,EACpB,UAAwB,EACxB,MAAc,EACL,EAAE;IACX,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE;QACpC,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEpE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,KAAK,IAAI,EAAE;QACxC,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CACT,gEAAgE,EAChE,uCAAuC,CACxC,CAAC;YACJ,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEvC,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC7C,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAEhG,OAAO,CAAC,IAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,gBAAgB;IAChB,eAAe;IACf,6BAA6B;IAC7B,+DAA+D;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAU,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8DAA8D,UAAU,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,GAAG,4BAA4B,CAAC;IAC/C,CAAC;IAED,2BAA2B;IAC3B,mFAAmF;IACnF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAE/B,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAe,EAAE,EAAE;QAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAE7C,IAAI,GAAG,GAAwB,SAAS,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;IAEtC,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;QACtC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAErB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAe,EAAE,EAAE;QACxC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAK,CAAC;oBACZ,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;iBACrE,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9C,CAAC;gBAED,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBAE9D,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC5B,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,MAAM;gBACR,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { RunningJobInfo } from '../job.js';
|
|
2
|
+
import type { LoggerOptions } from '../log.js';
|
|
3
|
+
export type IPCMessage = {
|
|
4
|
+
case: 'initializeRequest';
|
|
5
|
+
value: {
|
|
6
|
+
loggerOptions: LoggerOptions;
|
|
7
|
+
};
|
|
8
|
+
} | {
|
|
9
|
+
case: 'initializeResponse';
|
|
10
|
+
value: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
case: 'pingRequest';
|
|
13
|
+
value: {
|
|
14
|
+
timestamp: number;
|
|
15
|
+
};
|
|
16
|
+
} | {
|
|
17
|
+
case: 'pongResponse';
|
|
18
|
+
value: {
|
|
19
|
+
lastTimestamp: number;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
};
|
|
22
|
+
} | {
|
|
23
|
+
case: 'startJobRequest';
|
|
24
|
+
value: {
|
|
25
|
+
runningJob: RunningJobInfo;
|
|
26
|
+
};
|
|
27
|
+
} | {
|
|
28
|
+
case: 'shutdownRequest';
|
|
29
|
+
value: {
|
|
30
|
+
reason?: string;
|
|
31
|
+
};
|
|
32
|
+
} | {
|
|
33
|
+
case: 'exiting';
|
|
34
|
+
value: {
|
|
35
|
+
reason?: string;
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
case: 'done';
|
|
39
|
+
value: undefined;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/ipc/message.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE;QAAE,aAAa,EAAE,aAAa,CAAA;KAAE,CAAC;CACzC,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;CAClB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE;QAAE,UAAU,EAAE,cAAc,CAAA;KAAE,CAAC;CACvC,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/ipc/message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RunningJobInfo } from '../job.js';
|
|
2
|
+
import { JobExecutor } from './job_executor.js';
|
|
3
|
+
export declare class ProcJobExecutor extends JobExecutor {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(agent: string, initializeTimeout: number, closeTimeout: number);
|
|
6
|
+
get started(): boolean;
|
|
7
|
+
get runningJob(): RunningJobInfo | undefined;
|
|
8
|
+
start(): Promise<void>;
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
join(): Promise<void>;
|
|
11
|
+
initialize(): Promise<void>;
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
launchJob(info: RunningJobInfo): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=proc_job_executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proc_job_executor.d.ts","sourceRoot":"","sources":["../../src/ipc/proc_job_executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,qBAAa,eAAgB,SAAQ,WAAW;;gBAYlC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAS1E,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,UAAU,IAAI,cAAc,GAAG,SAAS,CAE3C;IAEK,KAAK;IAiBL,GAAG;IAiDH,IAAI;IAQJ,UAAU;IAgBV,KAAK;IAuBL,SAAS,CAAC,IAAI,EAAE,cAAc;CAOrC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _ProcJobExecutor_opts, _ProcJobExecutor_started, _ProcJobExecutor_closing, _ProcJobExecutor_runningJob, _ProcJobExecutor_proc, _ProcJobExecutor_pingInterval, _ProcJobExecutor_pongTimeout, _ProcJobExecutor_init, _ProcJobExecutor_join, _ProcJobExecutor_logger;
|
|
13
|
+
import { once } from 'events';
|
|
14
|
+
import { log, loggerOptions } from '../log.js';
|
|
15
|
+
import { Future } from '../utils.js';
|
|
16
|
+
import { JobExecutor } from './job_executor.js';
|
|
17
|
+
export class ProcJobExecutor extends JobExecutor {
|
|
18
|
+
constructor(agent, initializeTimeout, closeTimeout) {
|
|
19
|
+
super();
|
|
20
|
+
_ProcJobExecutor_opts.set(this, void 0);
|
|
21
|
+
_ProcJobExecutor_started.set(this, false);
|
|
22
|
+
_ProcJobExecutor_closing.set(this, false);
|
|
23
|
+
_ProcJobExecutor_runningJob.set(this, undefined);
|
|
24
|
+
_ProcJobExecutor_proc.set(this, void 0);
|
|
25
|
+
_ProcJobExecutor_pingInterval.set(this, void 0);
|
|
26
|
+
_ProcJobExecutor_pongTimeout.set(this, void 0);
|
|
27
|
+
_ProcJobExecutor_init.set(this, new Future());
|
|
28
|
+
_ProcJobExecutor_join.set(this, new Future());
|
|
29
|
+
_ProcJobExecutor_logger.set(this, log().child({ runningJob: __classPrivateFieldGet(this, _ProcJobExecutor_runningJob, "f") }));
|
|
30
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_opts, {
|
|
31
|
+
agent,
|
|
32
|
+
initializeTimeout,
|
|
33
|
+
closeTimeout,
|
|
34
|
+
}, "f");
|
|
35
|
+
}
|
|
36
|
+
get started() {
|
|
37
|
+
return __classPrivateFieldGet(this, _ProcJobExecutor_started, "f");
|
|
38
|
+
}
|
|
39
|
+
get runningJob() {
|
|
40
|
+
return __classPrivateFieldGet(this, _ProcJobExecutor_runningJob, "f");
|
|
41
|
+
}
|
|
42
|
+
async start() {
|
|
43
|
+
if (__classPrivateFieldGet(this, _ProcJobExecutor_started, "f")) {
|
|
44
|
+
throw new Error('runner already started');
|
|
45
|
+
}
|
|
46
|
+
else if (__classPrivateFieldGet(this, _ProcJobExecutor_closing, "f")) {
|
|
47
|
+
throw new Error('runner is closed');
|
|
48
|
+
}
|
|
49
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_proc, await import('./job_main.js').then((m) => m.runProcess({
|
|
50
|
+
agentFile: __classPrivateFieldGet(this, _ProcJobExecutor_opts, "f").agent,
|
|
51
|
+
})), "f");
|
|
52
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_started, true, "f");
|
|
53
|
+
this.run();
|
|
54
|
+
}
|
|
55
|
+
async run() {
|
|
56
|
+
await __classPrivateFieldGet(this, _ProcJobExecutor_init, "f").await;
|
|
57
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_pingInterval, setInterval(() => {
|
|
58
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").send({ case: 'pingRequest', value: { timestamp: Date.now() } });
|
|
59
|
+
}, this.PING_INTERVAL), "f");
|
|
60
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_pongTimeout, setTimeout(() => {
|
|
61
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_logger, "f").warn('job is unresponsive');
|
|
62
|
+
clearTimeout(__classPrivateFieldGet(this, _ProcJobExecutor_pongTimeout, "f"));
|
|
63
|
+
clearInterval(__classPrivateFieldGet(this, _ProcJobExecutor_pingInterval, "f"));
|
|
64
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").kill();
|
|
65
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_join, "f").resolve();
|
|
66
|
+
}, this.PING_TIMEOUT), "f");
|
|
67
|
+
const listener = (msg) => {
|
|
68
|
+
var _a;
|
|
69
|
+
switch (msg.case) {
|
|
70
|
+
case 'pongResponse': {
|
|
71
|
+
const delay = Date.now() - msg.value.timestamp;
|
|
72
|
+
if (delay > this.HIGH_PING_THRESHOLD) {
|
|
73
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_logger, "f").child({ delay }).warn('job executor is unresponsive');
|
|
74
|
+
}
|
|
75
|
+
(_a = __classPrivateFieldGet(this, _ProcJobExecutor_pongTimeout, "f")) === null || _a === void 0 ? void 0 : _a.refresh();
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'exiting': {
|
|
79
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_logger, "f").child({ reason: msg.value.reason }).debug('job exiting');
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case 'done': {
|
|
83
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_closing, true, "f");
|
|
84
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").off('message', listener);
|
|
85
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_join, "f").resolve();
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").on('message', listener);
|
|
91
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").on('error', (err) => {
|
|
92
|
+
if (__classPrivateFieldGet(this, _ProcJobExecutor_closing, "f"))
|
|
93
|
+
return;
|
|
94
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_logger, "f").child({ err }).warn('job process exited unexpectedly');
|
|
95
|
+
clearTimeout(__classPrivateFieldGet(this, _ProcJobExecutor_pongTimeout, "f"));
|
|
96
|
+
clearInterval(__classPrivateFieldGet(this, _ProcJobExecutor_pingInterval, "f"));
|
|
97
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_join, "f").resolve();
|
|
98
|
+
});
|
|
99
|
+
await __classPrivateFieldGet(this, _ProcJobExecutor_join, "f").await;
|
|
100
|
+
}
|
|
101
|
+
async join() {
|
|
102
|
+
if (!__classPrivateFieldGet(this, _ProcJobExecutor_started, "f")) {
|
|
103
|
+
throw new Error('runner not started');
|
|
104
|
+
}
|
|
105
|
+
await __classPrivateFieldGet(this, _ProcJobExecutor_join, "f").await;
|
|
106
|
+
}
|
|
107
|
+
async initialize() {
|
|
108
|
+
const timer = setTimeout(() => {
|
|
109
|
+
const err = new Error('runner initialization timed out');
|
|
110
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_init, "f").reject(err);
|
|
111
|
+
throw err;
|
|
112
|
+
}, __classPrivateFieldGet(this, _ProcJobExecutor_opts, "f").initializeTimeout);
|
|
113
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").send({ case: 'initializeRequest', value: { loggerOptions } });
|
|
114
|
+
await once(__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f"), 'message').then(([msg]) => {
|
|
115
|
+
clearTimeout(timer);
|
|
116
|
+
if (msg.case !== 'initializeResponse') {
|
|
117
|
+
throw new Error('first message must be InitializeResponse');
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_init, "f").resolve();
|
|
121
|
+
}
|
|
122
|
+
async close() {
|
|
123
|
+
if (!__classPrivateFieldGet(this, _ProcJobExecutor_started, "f")) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_closing, true, "f");
|
|
127
|
+
if (!__classPrivateFieldGet(this, _ProcJobExecutor_runningJob, "f")) {
|
|
128
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").kill();
|
|
129
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_join, "f").resolve();
|
|
130
|
+
}
|
|
131
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").send({ case: 'shutdownRequest' });
|
|
132
|
+
const timer = setTimeout(() => {
|
|
133
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_logger, "f").error('job shutdown is taking too much time');
|
|
134
|
+
}, __classPrivateFieldGet(this, _ProcJobExecutor_opts, "f").closeTimeout);
|
|
135
|
+
await __classPrivateFieldGet(this, _ProcJobExecutor_join, "f").await.then(() => {
|
|
136
|
+
clearTimeout(timer);
|
|
137
|
+
clearTimeout(__classPrivateFieldGet(this, _ProcJobExecutor_pongTimeout, "f"));
|
|
138
|
+
clearInterval(__classPrivateFieldGet(this, _ProcJobExecutor_pingInterval, "f"));
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async launchJob(info) {
|
|
142
|
+
if (__classPrivateFieldGet(this, _ProcJobExecutor_runningJob, "f")) {
|
|
143
|
+
throw new Error('executor already has a running job');
|
|
144
|
+
}
|
|
145
|
+
__classPrivateFieldSet(this, _ProcJobExecutor_runningJob, info, "f");
|
|
146
|
+
__classPrivateFieldGet(this, _ProcJobExecutor_proc, "f").send({ case: 'startJobRequest', value: { runningJob: info } });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_ProcJobExecutor_opts = new WeakMap(), _ProcJobExecutor_started = new WeakMap(), _ProcJobExecutor_closing = new WeakMap(), _ProcJobExecutor_runningJob = new WeakMap(), _ProcJobExecutor_proc = new WeakMap(), _ProcJobExecutor_pingInterval = new WeakMap(), _ProcJobExecutor_pongTimeout = new WeakMap(), _ProcJobExecutor_init = new WeakMap(), _ProcJobExecutor_join = new WeakMap(), _ProcJobExecutor_logger = new WeakMap();
|
|
150
|
+
//# sourceMappingURL=proc_job_executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proc_job_executor.js","sourceRoot":"","sources":["../../src/ipc/proc_job_executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { RunningJobInfo } from '../job.js';
|
|
2
|
+
import { Mutex, Queue } from '../utils.js';
|
|
3
|
+
import type { JobExecutor } from './job_executor.js';
|
|
4
|
+
export declare class ProcPool {
|
|
5
|
+
agent: string;
|
|
6
|
+
initializeTimeout: number;
|
|
7
|
+
closeTimeout: number;
|
|
8
|
+
executors: JobExecutor[];
|
|
9
|
+
tasks: Promise<void>[];
|
|
10
|
+
started: boolean;
|
|
11
|
+
closed: boolean;
|
|
12
|
+
controller: AbortController;
|
|
13
|
+
initMutex: Mutex;
|
|
14
|
+
procMutex: Mutex;
|
|
15
|
+
procUnlock?: () => void;
|
|
16
|
+
warmedProcQueue: Queue<JobExecutor>;
|
|
17
|
+
constructor(agent: string, numIdleProcesses: number, initializeTimeout: number, closeTimeout: number);
|
|
18
|
+
get processes(): JobExecutor[];
|
|
19
|
+
getByJobId(id: string): JobExecutor | null;
|
|
20
|
+
launchJob(info: RunningJobInfo): Promise<void>;
|
|
21
|
+
procWatchTask(): Promise<void>;
|
|
22
|
+
start(): void;
|
|
23
|
+
run(signal: AbortSignal): Promise<void>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=proc_pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proc_pool.d.ts","sourceRoot":"","sources":["../../src/ipc/proc_pool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,QAAQ;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,WAAW,EAAE,CAAM;IAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAM;IAC5B,OAAO,UAAS;IAChB,MAAM,UAAS;IACf,UAAU,kBAAyB;IACnC,SAAS,QAAe;IACxB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,qBAA4B;gBAGzC,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM;IAQtB,IAAI,SAAS,IAAI,WAAW,EAAE,CAE7B;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIpC,SAAS,CAAC,IAAI,EAAE,cAAc;IAS9B,aAAa;IA6BnB,KAAK;IASC,GAAG,CAAC,MAAM,EAAE,WAAW;IASvB,KAAK;CAUZ"}
|