@ai-support-agent/cli 0.0.35 → 0.0.36-beta.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/dist/pid-manager.d.ts +5 -0
- package/dist/pid-manager.d.ts.map +1 -1
- package/dist/pid-manager.js +13 -1
- package/dist/pid-manager.js.map +1 -1
- package/package.json +1 -1
package/dist/pid-manager.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ export declare function getPidFilePath(): string;
|
|
|
2
2
|
/**
|
|
3
3
|
* 既存の pidファイルを確認し、プロセスが生存中なら true を返す。
|
|
4
4
|
* 複数起動防止チェックに使用する。
|
|
5
|
+
*
|
|
6
|
+
* Dockerコンテナ内ではPID 1は常にinitプロセスとして生存しているため、
|
|
7
|
+
* 前のコンテナが残した agent.pid の値が 1 でも誤検知となる。
|
|
8
|
+
* 自分自身がPID 1でない場合にPID 1が記録されていたらstaleとみなす。
|
|
5
9
|
*/
|
|
6
10
|
export declare function isAlreadyRunning(): boolean;
|
|
7
11
|
/** 現在のプロセス PID を pidファイルに書き込む */
|
|
@@ -16,6 +20,7 @@ export declare function readPidFile(): number | null;
|
|
|
16
20
|
/**
|
|
17
21
|
* 指定PIDのプロセスが生存しているか確認する。
|
|
18
22
|
* process.kill(pid, 0) は実際にシグナルを送らず存在チェックのみ行う。
|
|
23
|
+
* EPERM(権限なし)の場合はプロセスが存在しているため true を返す。
|
|
19
24
|
*/
|
|
20
25
|
export declare function isProcessAlive(pid: number): boolean;
|
|
21
26
|
//# sourceMappingURL=pid-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid-manager.d.ts","sourceRoot":"","sources":["../src/pid-manager.ts"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED
|
|
1
|
+
{"version":3,"file":"pid-manager.d.ts","sourceRoot":"","sources":["../src/pid-manager.ts"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAO1C;AAED,iCAAiC;AACjC,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,IAAI,IAAI,CAOpC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAU3C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD"}
|
package/dist/pid-manager.js
CHANGED
|
@@ -55,11 +55,19 @@ function getPidFilePath() {
|
|
|
55
55
|
/**
|
|
56
56
|
* 既存の pidファイルを確認し、プロセスが生存中なら true を返す。
|
|
57
57
|
* 複数起動防止チェックに使用する。
|
|
58
|
+
*
|
|
59
|
+
* Dockerコンテナ内ではPID 1は常にinitプロセスとして生存しているため、
|
|
60
|
+
* 前のコンテナが残した agent.pid の値が 1 でも誤検知となる。
|
|
61
|
+
* 自分自身がPID 1でない場合にPID 1が記録されていたらstaleとみなす。
|
|
58
62
|
*/
|
|
59
63
|
function isAlreadyRunning() {
|
|
60
64
|
const existingPid = readPidFile();
|
|
61
65
|
if (existingPid === null)
|
|
62
66
|
return false;
|
|
67
|
+
// コンテナ内でPID 1は常に生存しているが、前コンテナのstaleなpidファイルの可能性がある
|
|
68
|
+
// 自分自身がPID 1でない場合にPID 1が記録されていたらstaleとみなす
|
|
69
|
+
if (existingPid === 1 && process.pid !== 1)
|
|
70
|
+
return false;
|
|
63
71
|
return isProcessAlive(existingPid);
|
|
64
72
|
}
|
|
65
73
|
/** 現在のプロセス PID を pidファイルに書き込む */
|
|
@@ -101,13 +109,17 @@ function readPidFile() {
|
|
|
101
109
|
/**
|
|
102
110
|
* 指定PIDのプロセスが生存しているか確認する。
|
|
103
111
|
* process.kill(pid, 0) は実際にシグナルを送らず存在チェックのみ行う。
|
|
112
|
+
* EPERM(権限なし)の場合はプロセスが存在しているため true を返す。
|
|
104
113
|
*/
|
|
105
114
|
function isProcessAlive(pid) {
|
|
106
115
|
try {
|
|
107
116
|
process.kill(pid, 0);
|
|
108
117
|
return true;
|
|
109
118
|
}
|
|
110
|
-
catch {
|
|
119
|
+
catch (err) {
|
|
120
|
+
// EPERM: プロセスは存在するが送信権限がない → 生存中とみなす
|
|
121
|
+
if (err.code === 'EPERM')
|
|
122
|
+
return true;
|
|
111
123
|
return false;
|
|
112
124
|
}
|
|
113
125
|
}
|
package/dist/pid-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid-manager.js","sourceRoot":"","sources":["../src/pid-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,wCAEC;
|
|
1
|
+
{"version":3,"file":"pid-manager.js","sourceRoot":"","sources":["../src/pid-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,wCAEC;AAUD,4CAOC;AAGD,oCAOC;AAGD,sCAOC;AAMD,kCAUC;AAOD,wCASC;AApFD;;;;;GAKG;AACH,uCAAwB;AACxB,2CAA4B;AAE5B,qDAA+C;AAE/C,MAAM,aAAa,GAAG,WAAW,CAAA;AAEjC,SAAgB,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,6BAAY,GAAE,EAAE,aAAa,CAAC,CAAA;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,WAAW,GAAG,WAAW,EAAE,CAAA;IACjC,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACtC,mDAAmD;IACnD,0CAA0C;IAC1C,IAAI,WAAW,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACxD,OAAO,cAAc,CAAC,WAAW,CAAC,CAAA;AACpC,CAAC;AAED,iCAAiC;AACjC,SAAgB,YAAY;IAC1B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;AACzD,CAAC;AAED,+BAA+B;AAC/B,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IACzB,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAClD,OAAO,GAAG,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qCAAqC;QACrC,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QAChE,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|