dory-to-dory-watcher 0.1.2 → 0.1.3
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/README.md +27 -8
- package/dist/agent.d.ts +21 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +222 -28
- package/dist/agent.js.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/core-client.d.ts +14 -1
- package/dist/core-client.d.ts.map +1 -1
- package/dist/core-client.js +31 -4
- package/dist/core-client.js.map +1 -1
- package/dist/doctor.d.ts +7 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +174 -11
- package/dist/doctor.js.map +1 -1
- package/dist/incidents.d.ts +35 -0
- package/dist/incidents.d.ts.map +1 -0
- package/dist/incidents.js +280 -0
- package/dist/incidents.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/process.d.ts +3 -0
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +123 -10
- package/dist/process.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +2 -0
- package/dist/setup.js.map +1 -1
- package/dist/sse.d.ts +1 -1
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +2 -1
- package/dist/sse.js.map +1 -1
- package/dist/watcher.d.ts +13 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +134 -10
- package/dist/watcher.js.map +1 -1
- package/package.json +12 -10
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
dory-to-dory Core의 SSE wake-up 신호를 기다렸다가, 실제 pending item이 있을 때만 로컬 Agent CLI를 한 번 실행하는 크로스 플랫폼 Watcher입니다. SSE에는 작업 본문이 포함되지 않으며, 연결 또는 재연결 때 `/v1/watcher/status`로 실제 상태를 다시 확인합니다.
|
|
4
4
|
|
|
5
|
-
Watcher는 Agent를 새로 구현하지 않습니다. 사용자가 이미 로그인하고 도구를 설정한 Codex CLI, Claude Code, Gemini CLI를 headless 모드로
|
|
5
|
+
Watcher는 Agent를 새로 구현하지 않습니다. 사용자가 이미 로그인하고 도구를 설정한 Codex CLI, Claude Code, Gemini CLI를 headless 모드로 실행합니다. 비대화식 실행이 사람의 승인 창에서 멈추지 않도록 Agent별 안전 모드를 명시적으로 적용하며, 위험한 sandbox·권한 우회 인자는 거부합니다. dory-to-dory MCP는 Watcher의 정확한 런타임 의존성으로 함께 설치됩니다. `custom` Adapter를 통해 다른 Agent 개발자가 실행 방식을 교체할 수 있습니다.
|
|
6
6
|
|
|
7
7
|
## 동작 흐름
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ Watcher는 Agent를 새로 구현하지 않습니다. 사용자가 이미 로그
|
|
|
11
11
|
3. pending item이 있을 때만 선택한 Agent CLI를 실행합니다.
|
|
12
12
|
4. Agent가 MCP의 `d2d_claim_next_item`으로 lease/fencing token을 받고 작업합니다.
|
|
13
13
|
5. 완료 결과는 `d2d_submit_item_result`로 제출합니다.
|
|
14
|
-
6. 사용자 확인이 필요하면 Agent가 구조화된 `ask_user` 결과를 제출하고 종료합니다. Core의
|
|
14
|
+
6. 사용자 확인이 필요하면 Agent가 구조화된 `ask_user` 결과를 제출하고 종료합니다. Core의 알림 outbox가 연결된 이메일과 Telegram으로 일반 알림을 보냅니다.
|
|
15
15
|
7. 사용자가 평소 Agent UI에서 답하면 `d2d_submit_user_response`가 답을 저장하고 item을 다시 pending으로 전환합니다. Watcher가 다시 Agent를 깨워 처리를 이어갑니다.
|
|
16
16
|
|
|
17
17
|
이 전달은 at-least-once 방식입니다. 중복 wake-up은 정상이며, Core의 claim lease, fencing token, idempotency key가 중복 처리를 방지합니다.
|
|
@@ -24,7 +24,9 @@ Watcher는 Agent를 새로 구현하지 않습니다. 사용자가 이미 로그
|
|
|
24
24
|
- Codex CLI
|
|
25
25
|
- Claude Code
|
|
26
26
|
- Gemini CLI
|
|
27
|
-
- Agent가 실행할 도구를 비대화식 환경에서 사용할 수 있도록 구성된 기존
|
|
27
|
+
- Agent가 실행할 도구를 비대화식 환경에서 사용할 수 있도록 구성된 기존 계정과 MCP 설정
|
|
28
|
+
- Claude Code를 선택하는 경우 안전한 `auto` 모드를 지원하는 2.1.83 이상과 해당 계정의 auto mode 사용 권한
|
|
29
|
+
- Gemini CLI를 선택하는 경우 현재는 macOS의 `sandbox-exec` 환경. Linux/Windows의 full-process 컨테이너 sandbox는 setup이 등록한 MCP launcher와 credential 파일을 안전하게 mount하는 기능이 마련될 때까지 fail-closed로 거부합니다.
|
|
28
30
|
|
|
29
31
|
## 빠른 설치
|
|
30
32
|
|
|
@@ -43,7 +45,7 @@ dory-watcher setup
|
|
|
43
45
|
4. 발급된 Agent API key를 화면이나 명령행에 노출하지 않고 OS별 사용자 credential 파일에 저장합니다.
|
|
44
46
|
5. 기존 `dory-to-dory` MCP 설정을 검사하고, 새 등록이면 선택한 Agent의 공식 CLI로 등록합니다.
|
|
45
47
|
6. 기존 MCP 설정이 있으면 자동으로 덮어쓰지 않습니다. 사용자가 교체에 동의하면 설정 파일을 먼저 백업합니다.
|
|
46
|
-
7. `doctor
|
|
48
|
+
7. `doctor`에서 Agent 로그인, 필수 비대화식 승인 모드와 실제 sandbox 시작 여부를 검사합니다. Codex와 macOS의 Gemini는 도구를 사용하지 말라는 짧은 진단 prompt를 각각 한 번 실행하므로 계정 사용량 또는 API 요금이 발생할 수 있지만, item을 claim하거나 처리하지는 않습니다.
|
|
47
49
|
8. macOS와 Linux에서는 사용자가 명시적으로 동의한 경우에만 로그인 백그라운드 서비스를 설치하고 시작합니다.
|
|
48
50
|
|
|
49
51
|
브라우저가 자동으로 열리지 않으면 화면에 표시된 verification URL을 열고 user code를 입력합니다. `device_code`와 API key 원문은 출력하거나 로그에 기록하지 않습니다.
|
|
@@ -151,12 +153,18 @@ export D2D_AGENT_KIND=claude
|
|
|
151
153
|
export D2D_AGENT_KIND=gemini
|
|
152
154
|
```
|
|
153
155
|
|
|
154
|
-
각 Adapter는 prompt를 프로세스 인자가 아니라 stdin으로 전달합니다.
|
|
156
|
+
각 Adapter는 prompt를 프로세스 인자가 아니라 stdin으로 전달합니다. 각 CLI의 사용자 설정에 등록된 MCP와 도구가 로드됩니다.
|
|
155
157
|
|
|
156
|
-
|
|
158
|
+
- Codex: `codex exec --approve-for-me --ephemeral --json`을 사용합니다. Auto Review가 `workspace-write` 경계 안에서 승인 요청을 검토하며, `--ephemeral`로 Watcher 실행의 세션 기록을 남기지 않습니다. `doctor`는 먼저 `codex login status`를 확인하고 같은 ephemeral Auto Review 모드로 무도구 진단을 수행합니다.
|
|
159
|
+
- Claude Code: `--permission-mode auto`와 `stream-json`을 사용합니다. 별도 classifier가 실행 전 안전성을 검토합니다. 2.1.83 이상, 로그인 상태, auto mode 설정을 `doctor`가 fail-closed 방식으로 확인합니다.
|
|
160
|
+
- Gemini CLI: reviewer형 auto mode가 없어 `--approval-mode yolo --sandbox`를 항상 함께 사용합니다. 모든 도구가 자동 승인되므로 macOS에서 `sandbox-exec`의 `strict-open` profile을 강제합니다. Linux/Windows의 Docker/Podman full-process sandbox는 setup이 등록한 절대 MCP launcher와 credential 파일이 기본 mount에 포함되지 않으므로 현재 built-in Adapter가 시작 전에 거부합니다. `doctor`는 macOS의 같은 환경에서 실제 sandbox와 인증을 사용하는 무도구 진단을 수행합니다.
|
|
161
|
+
|
|
162
|
+
Codex와 Claude의 자동 안전 검토가 거부하거나 판단하지 못한 작업은 실행되지 않습니다. Agent는 가능한 경우 결과를 `ask_user` 또는 오류로 제출하고, 제출까지 실패하면 Watcher 장애 보고 흐름이 동작합니다. Gemini는 같은 종류의 reviewer가 없으므로 workspace와 sandbox 구성이 실제 보안 경계입니다.
|
|
163
|
+
|
|
164
|
+
Agent별 추가 인자는 JSON 문자열 배열로 전달할 수 있습니다. built-in Adapter는 향후 CLI에 추가될 수 있는 경계 변경 옵션까지 안전하게 막기 위해 알 수 없는 인자를 모두 거부하고, 모델·비용·turn 수처럼 제한된 tuning 옵션만 허용합니다. 작업 디렉터리, 추가 읽기 디렉터리, config/profile/settings, 도구/MCP, permission/approval, sandbox/provider, policy/trust/extension 관련 재정의는 시작 전에 거부됩니다. Gemini에서는 같은 경계를 우회하거나 prompt를 외부로 전송할 수 있는 system prompt, relaunch, custom endpoint, telemetry/debug 관련 환경 재정의도 자식 환경에서 제거합니다.
|
|
157
165
|
|
|
158
166
|
```sh
|
|
159
|
-
export D2D_AGENT_ARGS_JSON='["--
|
|
167
|
+
export D2D_AGENT_ARGS_JSON='["--model","gpt-5.4"]'
|
|
160
168
|
```
|
|
161
169
|
|
|
162
170
|
다른 Agent는 실행 파일과 인자를 직접 지정합니다. custom 프로그램은 고정 wake-up prompt를 stdin에서 읽고 종료 코드 `0`으로 성공을 알려야 합니다.
|
|
@@ -185,6 +193,13 @@ export D2D_AGENT_ARGS_JSON='["--headless"]'
|
|
|
185
193
|
| `D2D_RECONNECT_MAX_SECONDS` | 아니요 | `60` | SSE 재연결 최대 backoff |
|
|
186
194
|
| `D2D_AGENT_FAILURE_BACKOFF_SECONDS` | 아니요 | `900` | Agent 실패·무진행 시 LLM 반복 호출을 막는 backoff |
|
|
187
195
|
| `D2D_STATE_FILE` | 아니요 | OS별 사용자 state 경로 | 마지막 SSE event ID 저장 위치 |
|
|
196
|
+
| `D2D_INCIDENT_FILE` | 아니요 | state 파일 옆의 `*.incidents.json` | Core 장애 중 안전한 장애 보고를 임시 보관하는 제한 크기 파일 |
|
|
197
|
+
|
|
198
|
+
## 실패 기록과 알림
|
|
199
|
+
|
|
200
|
+
Watcher는 Agent 실행 실패를 `cli_not_found`, `cli_version_unsupported`, `authentication_failed`, `approval_blocked`, `mcp_unavailable`, `timeout`, `agent_exit_nonzero`, `no_progress`, `core_unreachable`, `excessive_output`으로 분류합니다. 로그에는 시각, 분류 코드, 실행 ID, 종료 코드, 수행 시간처럼 제한된 구조화 정보만 기록합니다. Agent의 원문 stdout/stderr, coordination 본문, API key와 Authorization header는 기록하거나 Core로 전송하지 않습니다.
|
|
201
|
+
|
|
202
|
+
장애 보고는 Agent API key로 `/v1/watcher/incidents`에 전송됩니다. Core가 연결되지 않으면 0600 권한의 로컬 incident 파일에 최대 100개의 제한된 보고만 보관하고 같은 idempotency key로 다시 전송합니다. Core 연결과 Agent 실행 장애는 독립적으로 추적하므로 한쪽의 복구가 다른 장애를 잘못 종료하지 않습니다. Core가 사용자별 임계값과 cooldown을 적용해 연결된 이메일·Telegram으로 장애 및 복구 알림을 보냅니다. 운영 장애는 coordination item의 상태를 임의로 변경하지 않으므로 pending item은 lease 규칙에 따라 다시 처리할 수 있습니다.
|
|
188
203
|
|
|
189
204
|
## 백그라운드 실행
|
|
190
205
|
|
|
@@ -219,9 +234,13 @@ dory-watcher service uninstall
|
|
|
219
234
|
|
|
220
235
|
- SSE는 item ID, 요청 본문, 사용자 질문을 보내지 않는 wake-up 신호입니다.
|
|
221
236
|
- API key와 wake-up prompt를 명령행 인자로 넣지 않습니다.
|
|
237
|
+
- Agent 및 `doctor` 자식 프로세스에는 Watcher의 모든 `D2D_*` 환경 변수를 전달하지 않습니다. dory-to-dory MCP credential은 Agent 자체 MCP 설정에서 별도로 읽습니다.
|
|
238
|
+
- credential 파일의 사용자 전용 권한은 다른 OS 사용자로부터 키를 보호하지만, 같은 OS 사용자 권한으로 실행되는 Agent 자체를 격리하지는 않습니다. 신뢰할 수 있는 Agent, MCP 및 플러그인만 연결하십시오.
|
|
222
239
|
- Watcher는 사용자의 Agent CLI와 동일한 도구 접근권한을 가집니다. 기존 Agent 권한 정책이 곧 Watcher 처리 한계입니다.
|
|
223
240
|
- pending item이 없으면 LLM을 호출하지 않습니다. 실제 item이 있으면 Agent CLI의 모델/API 요금이 발생할 수 있습니다.
|
|
224
|
-
-
|
|
241
|
+
- 실제 item 처리와 Codex Auto Review, Claude auto mode classifier는 모델 호출과 사용량을 발생시킬 수 있습니다. 또한 `doctor`는 Codex와 Gemini에서 실제 계정·실행 모드를 검증하기 위해 각각 한 번의 짧은 무도구 모델 호출을 수행하며, 이 진단에도 사용량 또는 API 요금이 발생할 수 있습니다.
|
|
242
|
+
- 이메일과 Telegram에는 `ask_user` 질문이나 coordination 본문을 넣지 않고 Agent를 열어 확인하라는 일반 안내만 보냅니다.
|
|
243
|
+
- `--yolo`, `danger-full-access`, `bypassPermissions`처럼 호스트 보호를 제거하는 옵션을 Watcher 설정에 추가하지 마십시오. Gemini의 `yolo` approval은 예외적으로 명시적인 `--sandbox`와 한 쌍으로만 사용됩니다.
|
|
225
244
|
|
|
226
245
|
## 개발
|
|
227
246
|
|
package/dist/agent.d.ts
CHANGED
|
@@ -8,14 +8,35 @@ export interface AgentInvocation {
|
|
|
8
8
|
export interface AgentRunResult {
|
|
9
9
|
exitCode: number;
|
|
10
10
|
durationMs: number;
|
|
11
|
+
runId?: string;
|
|
11
12
|
}
|
|
13
|
+
export type AgentFailureCode = "cli_not_found" | "cli_version_unsupported" | "authentication_failed" | "approval_blocked" | "mcp_unavailable" | "timeout" | "agent_exit_nonzero" | "excessive_output" | "cancelled";
|
|
12
14
|
export declare class AgentRunError extends Error {
|
|
15
|
+
readonly failureCode: AgentFailureCode;
|
|
16
|
+
readonly details: {
|
|
17
|
+
exitCode?: number;
|
|
18
|
+
durationMs?: number;
|
|
19
|
+
runId?: string;
|
|
20
|
+
};
|
|
13
21
|
name: string;
|
|
22
|
+
constructor(failureCode: AgentFailureCode, details?: {
|
|
23
|
+
exitCode?: number;
|
|
24
|
+
durationMs?: number;
|
|
25
|
+
runId?: string;
|
|
26
|
+
});
|
|
14
27
|
}
|
|
28
|
+
export declare function assertSafeCodexArgs(args: string[]): void;
|
|
29
|
+
export declare function assertSafeClaudeArgs(args: string[]): void;
|
|
30
|
+
export declare function assertSafeGeminiArgs(args: string[]): void;
|
|
31
|
+
export declare function assertSupportedAgentPlatform(kind: AgentKind, platform?: NodeJS.Platform): void;
|
|
32
|
+
/** Remove all Watcher control values before starting any Agent or doctor command. */
|
|
33
|
+
export declare function sanitizedAgentEnvironment(kind: AgentKind, environment?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): NodeJS.ProcessEnv;
|
|
34
|
+
export declare function classifyAgentFailure(output: string): AgentFailureCode;
|
|
15
35
|
export declare function windowsTreeKillInvocation(pid: number, force: boolean): {
|
|
16
36
|
command: string;
|
|
17
37
|
args: string[];
|
|
18
38
|
};
|
|
39
|
+
export declare function windowsTreeKillRequiresFallback(exitCode: number | null): boolean;
|
|
19
40
|
export declare function buildInvocation(kind: AgentKind, command: string, extraArgs: string[]): AgentInvocation;
|
|
20
41
|
export declare function runAgent(config: WatcherConfig, signal?: AbortSignal): Promise<AgentRunResult>;
|
|
21
42
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,WAAW,68BASyD,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,yBAAyB,GACzB,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,GACjB,SAAS,GACT,oBAAoB,GACpB,kBAAkB,GAClB,WAAW,CAAC;AAchB,qBAAa,aAAc,SAAQ,KAAK;IAIpC,QAAQ,CAAC,WAAW,EAAE,gBAAgB;IACtC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IARM,IAAI,SAAmB;gBAGrB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,GAAE;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX;CAIT;AA6BD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAExD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEzD;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,IAAI,CAIN;AA4BD,qFAAqF;AACrF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,EACf,WAAW,GAAE,MAAM,CAAC,UAAwB,EAC5C,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAAC,UAAU,CAgBnB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAkCrE;AASD,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrC;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAEhF;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,GAClB,eAAe,CA2CjB;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CA4InG"}
|
package/dist/agent.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
2
3
|
import { commandForSpawn } from "./process.js";
|
|
3
4
|
export const WAKE_PROMPT = `This is a dory-to-dory background wake-up. Process at most one pending dory-to-dory item.
|
|
4
5
|
|
|
@@ -10,8 +11,135 @@ export const WAKE_PROMPT = `This is a dory-to-dory background wake-up. Process a
|
|
|
10
11
|
6. If the reclaimed item includes an answered interaction, use that answer while continuing the task.
|
|
11
12
|
|
|
12
13
|
Do not process ordinary unrelated work and do not include credentials in output.`;
|
|
14
|
+
const FAILURE_SUMMARIES = {
|
|
15
|
+
cli_not_found: "The configured Agent CLI could not be found.",
|
|
16
|
+
cli_version_unsupported: "The configured Agent CLI does not support the required unattended mode.",
|
|
17
|
+
authentication_failed: "The Agent CLI could not authenticate.",
|
|
18
|
+
approval_blocked: "The Agent's automatic safety review did not allow the requested action.",
|
|
19
|
+
mcp_unavailable: "The dory-to-dory MCP server was unavailable to the Agent.",
|
|
20
|
+
timeout: "The Agent run timed out.",
|
|
21
|
+
agent_exit_nonzero: "The Agent CLI exited unsuccessfully.",
|
|
22
|
+
excessive_output: "The Agent produced more output than the Watcher accepts.",
|
|
23
|
+
cancelled: "The Agent run was cancelled.",
|
|
24
|
+
};
|
|
13
25
|
export class AgentRunError extends Error {
|
|
26
|
+
failureCode;
|
|
27
|
+
details;
|
|
14
28
|
name = "AgentRunError";
|
|
29
|
+
constructor(failureCode, details = {}) {
|
|
30
|
+
super(FAILURE_SUMMARIES[failureCode]);
|
|
31
|
+
this.failureCode = failureCode;
|
|
32
|
+
this.details = details;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const OUTPUT_LIMIT_BYTES = 1024 * 1024;
|
|
36
|
+
const DIAGNOSTIC_TAIL_BYTES = 64 * 1024;
|
|
37
|
+
const TERMINATION_GRACE_MS = 5_000;
|
|
38
|
+
const TERMINATION_FINAL_MS = 10_000;
|
|
39
|
+
/** Built-in adapters fail closed on unknown options because new CLI flags may alter a safety boundary. */
|
|
40
|
+
function assertOnlyAllowedValueOptions(args, allowed) {
|
|
41
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
42
|
+
const raw = args[index];
|
|
43
|
+
const equalsAt = raw.indexOf("=");
|
|
44
|
+
const option = (equalsAt === -1 ? raw : raw.slice(0, equalsAt)).toLowerCase();
|
|
45
|
+
if (!allowed.has(option))
|
|
46
|
+
throw new AgentRunError("approval_blocked");
|
|
47
|
+
const inlineValue = equalsAt === -1 ? undefined : raw.slice(equalsAt + 1);
|
|
48
|
+
if (inlineValue !== undefined) {
|
|
49
|
+
if (inlineValue.length === 0 || inlineValue.includes("\0")) {
|
|
50
|
+
throw new AgentRunError("approval_blocked");
|
|
51
|
+
}
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const next = args[index + 1];
|
|
55
|
+
if (!next || next.startsWith("-") || next.includes("\0")) {
|
|
56
|
+
throw new AgentRunError("approval_blocked");
|
|
57
|
+
}
|
|
58
|
+
index += 1;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function assertSafeCodexArgs(args) {
|
|
62
|
+
assertOnlyAllowedValueOptions(args, new Set(["--model", "-m", "--color"]));
|
|
63
|
+
}
|
|
64
|
+
export function assertSafeClaudeArgs(args) {
|
|
65
|
+
assertOnlyAllowedValueOptions(args, new Set(["--model", "--fallback-model", "--max-budget-usd", "--max-turns", "--effort"]));
|
|
66
|
+
}
|
|
67
|
+
export function assertSafeGeminiArgs(args) {
|
|
68
|
+
assertOnlyAllowedValueOptions(args, new Set(["--model", "-m"]));
|
|
69
|
+
}
|
|
70
|
+
export function assertSupportedAgentPlatform(kind, platform = process.platform) {
|
|
71
|
+
if (kind === "gemini" && platform !== "darwin") {
|
|
72
|
+
throw new AgentRunError("cli_version_unsupported");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function unsafeGeminiEnvironmentName(name) {
|
|
76
|
+
return (name === "SANDBOX" ||
|
|
77
|
+
name.startsWith("SANDBOX_") ||
|
|
78
|
+
name === "BUILD_SANDBOX" ||
|
|
79
|
+
name === "SEATBELT_PROFILE" ||
|
|
80
|
+
name === "GEMINI_SANDBOX" ||
|
|
81
|
+
name.startsWith("GEMINI_SANDBOX_") ||
|
|
82
|
+
name.startsWith("GEMINI_CLI_") ||
|
|
83
|
+
name === "GEMINI_SYSTEM_MD" ||
|
|
84
|
+
name === "GEMINI_WRITE_SYSTEM_MD" ||
|
|
85
|
+
name.startsWith("GEMINI_PROMPT_") ||
|
|
86
|
+
name.startsWith("GEMINI_TELEMETRY_") ||
|
|
87
|
+
name === "GEMINI_DEBUG_LOG_FILE" ||
|
|
88
|
+
name === "GEMINI_EXP" ||
|
|
89
|
+
name === "CODE_ASSIST_ENDPOINT" ||
|
|
90
|
+
name === "GOOGLE_GEMINI_BASE_URL" ||
|
|
91
|
+
name === "DEBUG" ||
|
|
92
|
+
name === "DEBUG_MODE" ||
|
|
93
|
+
name === "DEBUG_PORT" ||
|
|
94
|
+
name === "NODE_DEBUG" ||
|
|
95
|
+
name.startsWith("OTEL_") ||
|
|
96
|
+
name.startsWith("OTLP_"));
|
|
97
|
+
}
|
|
98
|
+
/** Remove all Watcher control values before starting any Agent or doctor command. */
|
|
99
|
+
export function sanitizedAgentEnvironment(kind, environment = process.env, platform = process.platform) {
|
|
100
|
+
assertSupportedAgentPlatform(kind, platform);
|
|
101
|
+
const result = {};
|
|
102
|
+
for (const [name, value] of Object.entries(environment)) {
|
|
103
|
+
const normalized = name.toUpperCase();
|
|
104
|
+
if (normalized.startsWith("D2D_"))
|
|
105
|
+
continue;
|
|
106
|
+
if (kind === "gemini" && unsafeGeminiEnvironmentName(normalized))
|
|
107
|
+
continue;
|
|
108
|
+
result[name] = value;
|
|
109
|
+
}
|
|
110
|
+
if (kind !== "gemini")
|
|
111
|
+
return result;
|
|
112
|
+
if (platform === "darwin") {
|
|
113
|
+
result.GEMINI_SANDBOX = "sandbox-exec";
|
|
114
|
+
result.SEATBELT_PROFILE = "strict-open";
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
export function classifyAgentFailure(output) {
|
|
120
|
+
const normalized = output.toLowerCase();
|
|
121
|
+
if (/(?:unknown|unexpected|unrecognized|invalid).{0,80}(?:--approve-for-me|--permission-mode|--approval-mode|--sandbox|--json|--skip-git-repo-check)/s.test(normalized) ||
|
|
122
|
+
/(?:auto mode|permission mode.{0,40}auto).{0,100}(?:not available|unavailable|not supported)/s.test(normalized)) {
|
|
123
|
+
return "cli_version_unsupported";
|
|
124
|
+
}
|
|
125
|
+
if (/(?:not logged in|login required|please (?:log|sign) in|authentication failed|unauthori[sz]ed|invalid api key|http\s*401|status\s*401)/s.test(normalized)) {
|
|
126
|
+
return "authentication_failed";
|
|
127
|
+
}
|
|
128
|
+
if (/(?:requires? approval|approval.{0,80}(?:denied|blocked|required|failed)|(?:auto.review|auto mode|classifier|guardian).{0,80}(?:denied|blocked|failed|timed out|cannot determine)|not approved)/s.test(normalized)) {
|
|
129
|
+
return "approval_blocked";
|
|
130
|
+
}
|
|
131
|
+
if (/(?:dory-to-dory.{0,160}(?:failed|unavailable|not found|could not start|connection closed|startup timed out)|(?:failed|unavailable|not found|could not start|connection closed|startup timed out).{0,160}dory-to-dory)/s.test(normalized)) {
|
|
132
|
+
return "mcp_unavailable";
|
|
133
|
+
}
|
|
134
|
+
return "agent_exit_nonzero";
|
|
135
|
+
}
|
|
136
|
+
function appendTail(current, chunk) {
|
|
137
|
+
if (chunk.length >= DIAGNOSTIC_TAIL_BYTES)
|
|
138
|
+
return chunk.subarray(chunk.length - DIAGNOSTIC_TAIL_BYTES);
|
|
139
|
+
if (current.length + chunk.length <= DIAGNOSTIC_TAIL_BYTES)
|
|
140
|
+
return Buffer.concat([current, chunk]);
|
|
141
|
+
const keep = DIAGNOSTIC_TAIL_BYTES - chunk.length;
|
|
142
|
+
return Buffer.concat([current.subarray(current.length - keep), chunk]);
|
|
15
143
|
}
|
|
16
144
|
export function windowsTreeKillInvocation(pid, force) {
|
|
17
145
|
return {
|
|
@@ -19,25 +147,48 @@ export function windowsTreeKillInvocation(pid, force) {
|
|
|
19
147
|
args: ["/pid", String(pid), "/t", ...(force ? ["/f"] : [])],
|
|
20
148
|
};
|
|
21
149
|
}
|
|
150
|
+
export function windowsTreeKillRequiresFallback(exitCode) {
|
|
151
|
+
return exitCode !== 0;
|
|
152
|
+
}
|
|
22
153
|
export function buildInvocation(kind, command, extraArgs) {
|
|
23
154
|
if (kind === "codex") {
|
|
155
|
+
assertSafeCodexArgs(extraArgs);
|
|
24
156
|
return {
|
|
25
157
|
command,
|
|
26
|
-
args: [
|
|
158
|
+
args: [
|
|
159
|
+
"exec",
|
|
160
|
+
"--approve-for-me",
|
|
161
|
+
"--ephemeral",
|
|
162
|
+
"--json",
|
|
163
|
+
"--skip-git-repo-check",
|
|
164
|
+
...extraArgs,
|
|
165
|
+
"-",
|
|
166
|
+
],
|
|
27
167
|
promptOnStdin: WAKE_PROMPT,
|
|
28
168
|
};
|
|
29
169
|
}
|
|
30
170
|
if (kind === "claude") {
|
|
171
|
+
assertSafeClaudeArgs(extraArgs);
|
|
31
172
|
return {
|
|
32
173
|
command,
|
|
33
|
-
args: ["-p", "--output-format", "stream-json", "--verbose", ...extraArgs],
|
|
174
|
+
args: ["-p", "--permission-mode", "auto", "--output-format", "stream-json", "--verbose", ...extraArgs],
|
|
34
175
|
promptOnStdin: WAKE_PROMPT,
|
|
35
176
|
};
|
|
36
177
|
}
|
|
37
178
|
if (kind === "gemini") {
|
|
179
|
+
assertSafeGeminiArgs(extraArgs);
|
|
38
180
|
return {
|
|
39
181
|
command,
|
|
40
|
-
args: [
|
|
182
|
+
args: [
|
|
183
|
+
"--prompt",
|
|
184
|
+
"",
|
|
185
|
+
"--approval-mode",
|
|
186
|
+
"yolo",
|
|
187
|
+
"--sandbox",
|
|
188
|
+
"--output-format",
|
|
189
|
+
"stream-json",
|
|
190
|
+
...extraArgs,
|
|
191
|
+
],
|
|
41
192
|
promptOnStdin: WAKE_PROMPT,
|
|
42
193
|
};
|
|
43
194
|
}
|
|
@@ -45,13 +196,13 @@ export function buildInvocation(kind, command, extraArgs) {
|
|
|
45
196
|
}
|
|
46
197
|
export async function runAgent(config, signal) {
|
|
47
198
|
if (signal?.aborted)
|
|
48
|
-
throw new AgentRunError(
|
|
199
|
+
throw new AgentRunError("cancelled");
|
|
49
200
|
const invocation = buildInvocation(config.agentKind, config.agentCommand, config.agentArgs);
|
|
50
201
|
const executable = commandForSpawn(invocation.command, invocation.args);
|
|
51
202
|
const startedAt = Date.now();
|
|
203
|
+
const runId = randomUUID();
|
|
52
204
|
return await new Promise((resolve, reject) => {
|
|
53
|
-
const childEnvironment =
|
|
54
|
-
delete childEnvironment.D2D_API_KEY;
|
|
205
|
+
const childEnvironment = sanitizedAgentEnvironment(config.agentKind);
|
|
55
206
|
const child = spawn(executable.command, executable.args, {
|
|
56
207
|
cwd: config.workspace,
|
|
57
208
|
env: childEnvironment,
|
|
@@ -61,23 +212,40 @@ export async function runAgent(config, signal) {
|
|
|
61
212
|
stdio: ["pipe", "pipe", "pipe"],
|
|
62
213
|
});
|
|
63
214
|
let outputBytes = 0;
|
|
64
|
-
|
|
215
|
+
let stdoutTail = Buffer.alloc(0);
|
|
216
|
+
let stderrTail = Buffer.alloc(0);
|
|
65
217
|
let settled = false;
|
|
66
218
|
let forceTimer;
|
|
219
|
+
let finalTimer;
|
|
220
|
+
let timer;
|
|
67
221
|
const finish = (operation) => {
|
|
68
222
|
if (settled)
|
|
69
223
|
return;
|
|
70
224
|
settled = true;
|
|
71
225
|
signal?.removeEventListener("abort", abort);
|
|
72
|
-
|
|
226
|
+
if (timer)
|
|
227
|
+
clearTimeout(timer);
|
|
73
228
|
if (forceTimer)
|
|
74
229
|
clearTimeout(forceTimer);
|
|
230
|
+
if (finalTimer)
|
|
231
|
+
clearTimeout(finalTimer);
|
|
75
232
|
operation();
|
|
76
233
|
};
|
|
77
|
-
child.once("error", () => finish(() => reject(new AgentRunError(
|
|
234
|
+
child.once("error", (error) => finish(() => reject(new AgentRunError(error.code === "ENOENT" ? "cli_not_found" : "agent_exit_nonzero", {
|
|
235
|
+
durationMs: Date.now() - startedAt,
|
|
236
|
+
runId,
|
|
237
|
+
}))));
|
|
78
238
|
child.stdin.on("error", () => undefined);
|
|
79
239
|
let timedOut = false;
|
|
80
240
|
let cancelled = false;
|
|
241
|
+
const directKill = (killSignal) => {
|
|
242
|
+
try {
|
|
243
|
+
child.kill(killSignal);
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// The process may already have exited.
|
|
247
|
+
}
|
|
248
|
+
};
|
|
81
249
|
const terminate = (killSignal = "SIGTERM") => {
|
|
82
250
|
if (!child.pid || child.exitCode !== null)
|
|
83
251
|
return;
|
|
@@ -89,36 +257,57 @@ export async function runAgent(config, signal) {
|
|
|
89
257
|
stdio: "ignore",
|
|
90
258
|
windowsHide: true,
|
|
91
259
|
});
|
|
260
|
+
let taskkillFailed = false;
|
|
92
261
|
killer.once("error", () => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
262
|
+
taskkillFailed = true;
|
|
263
|
+
directKill(killSignal);
|
|
264
|
+
});
|
|
265
|
+
killer.once("close", (code) => {
|
|
266
|
+
if (!taskkillFailed && windowsTreeKillRequiresFallback(code))
|
|
267
|
+
directKill(killSignal);
|
|
99
268
|
});
|
|
100
269
|
}
|
|
101
270
|
else
|
|
102
271
|
process.kill(-child.pid, killSignal);
|
|
103
272
|
}
|
|
104
273
|
catch {
|
|
105
|
-
|
|
274
|
+
directKill(killSignal);
|
|
106
275
|
}
|
|
107
276
|
};
|
|
108
277
|
const terminateWithGrace = () => {
|
|
109
278
|
terminate();
|
|
110
279
|
if (!forceTimer) {
|
|
111
|
-
forceTimer = setTimeout(() => terminate("SIGKILL"),
|
|
280
|
+
forceTimer = setTimeout(() => terminate("SIGKILL"), TERMINATION_GRACE_MS);
|
|
112
281
|
forceTimer.unref();
|
|
113
282
|
}
|
|
283
|
+
if (!finalTimer) {
|
|
284
|
+
finalTimer = setTimeout(() => {
|
|
285
|
+
directKill("SIGKILL");
|
|
286
|
+
const durationMs = Date.now() - startedAt;
|
|
287
|
+
if (cancelled) {
|
|
288
|
+
finish(() => reject(new AgentRunError("cancelled", { durationMs, runId })));
|
|
289
|
+
}
|
|
290
|
+
else if (timedOut) {
|
|
291
|
+
finish(() => reject(new AgentRunError("timeout", { durationMs, runId })));
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
finish(() => reject(new AgentRunError("excessive_output", { durationMs, runId })));
|
|
295
|
+
}
|
|
296
|
+
}, TERMINATION_FINAL_MS);
|
|
297
|
+
finalTimer.unref();
|
|
298
|
+
}
|
|
114
299
|
};
|
|
115
|
-
const consume = (chunk) => {
|
|
300
|
+
const consume = (stream, chunk) => {
|
|
116
301
|
outputBytes += chunk.length;
|
|
117
|
-
if (
|
|
302
|
+
if (stream === "stdout")
|
|
303
|
+
stdoutTail = appendTail(stdoutTail, chunk);
|
|
304
|
+
else
|
|
305
|
+
stderrTail = appendTail(stderrTail, chunk);
|
|
306
|
+
if (outputBytes > OUTPUT_LIMIT_BYTES)
|
|
118
307
|
terminateWithGrace();
|
|
119
308
|
};
|
|
120
|
-
child.stdout.on("data", consume);
|
|
121
|
-
child.stderr.on("data", consume);
|
|
309
|
+
child.stdout.on("data", (chunk) => consume("stdout", chunk));
|
|
310
|
+
child.stderr.on("data", (chunk) => consume("stderr", chunk));
|
|
122
311
|
const abort = () => {
|
|
123
312
|
cancelled = true;
|
|
124
313
|
terminateWithGrace();
|
|
@@ -126,7 +315,7 @@ export async function runAgent(config, signal) {
|
|
|
126
315
|
signal?.addEventListener("abort", abort, { once: true });
|
|
127
316
|
if (signal?.aborted)
|
|
128
317
|
abort();
|
|
129
|
-
|
|
318
|
+
timer = setTimeout(() => {
|
|
130
319
|
timedOut = true;
|
|
131
320
|
terminateWithGrace();
|
|
132
321
|
}, config.runTimeoutMs);
|
|
@@ -134,19 +323,24 @@ export async function runAgent(config, signal) {
|
|
|
134
323
|
child.once("close", (code) => {
|
|
135
324
|
const durationMs = Date.now() - startedAt;
|
|
136
325
|
if (cancelled) {
|
|
137
|
-
finish(() => reject(new AgentRunError(
|
|
326
|
+
finish(() => reject(new AgentRunError("cancelled", { durationMs, runId })));
|
|
138
327
|
}
|
|
139
328
|
else if (timedOut) {
|
|
140
|
-
finish(() => reject(new AgentRunError(
|
|
329
|
+
finish(() => reject(new AgentRunError("timeout", { durationMs, runId })));
|
|
141
330
|
}
|
|
142
|
-
else if (outputBytes >
|
|
143
|
-
finish(() => reject(new AgentRunError(
|
|
331
|
+
else if (outputBytes > OUTPUT_LIMIT_BYTES) {
|
|
332
|
+
finish(() => reject(new AgentRunError("excessive_output", { durationMs, runId })));
|
|
144
333
|
}
|
|
145
334
|
else if (code !== 0) {
|
|
146
|
-
|
|
335
|
+
const output = `${stdoutTail.toString("utf8")}\n${stderrTail.toString("utf8")}`;
|
|
336
|
+
finish(() => reject(new AgentRunError(classifyAgentFailure(output), {
|
|
337
|
+
...(code === null ? {} : { exitCode: code }),
|
|
338
|
+
durationMs,
|
|
339
|
+
runId,
|
|
340
|
+
})));
|
|
147
341
|
}
|
|
148
342
|
else {
|
|
149
|
-
finish(() => resolve({ exitCode: 0, durationMs }));
|
|
343
|
+
finish(() => resolve({ exitCode: 0, durationMs, runId }));
|
|
150
344
|
}
|
|
151
345
|
});
|
|
152
346
|
child.stdin.end(invocation.promptOnStdin);
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -26,8 +26,9 @@ Required configuration:
|
|
|
26
26
|
Agent selection:
|
|
27
27
|
D2D_AGENT_KIND=codex|claude|gemini|custom (default: codex)
|
|
28
28
|
D2D_AGENT_COMMAND=<executable> (required only for custom)
|
|
29
|
-
D2D_AGENT_ARGS_JSON='["
|
|
29
|
+
D2D_AGENT_ARGS_JSON='["--model","name"]' (built-ins allow safe tuning options only)
|
|
30
30
|
D2D_AGENT_WORKSPACE=/absolute/path (default: current directory)
|
|
31
|
+
D2D_INCIDENT_FILE=/absolute/path (optional bounded incident spool)
|
|
31
32
|
|
|
32
33
|
Setup options:
|
|
33
34
|
--agent codex|claude|gemini
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAY,SAAQ,KAAK;IAC3B,IAAI,SAAiB;CAC/B;AAuED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAgE9E"}
|
package/dist/config.js
CHANGED
|
@@ -99,6 +99,7 @@ export function loadConfig(env = process.env) {
|
|
|
99
99
|
if (reconnectMaxSeconds < reconnectMinSeconds) {
|
|
100
100
|
throw new ConfigError("D2D_RECONNECT_MAX_SECONDS must be at least D2D_RECONNECT_MIN_SECONDS");
|
|
101
101
|
}
|
|
102
|
+
const stateFile = resolve(env.D2D_STATE_FILE?.trim() || defaultStateFile(env));
|
|
102
103
|
return {
|
|
103
104
|
coreUrl,
|
|
104
105
|
apiKey: credential(env),
|
|
@@ -112,7 +113,8 @@ export function loadConfig(env = process.env) {
|
|
|
112
113
|
reconnectMaxMs: reconnectMaxSeconds * 1_000,
|
|
113
114
|
agentFailureBackoffMs: positiveInteger(env.D2D_AGENT_FAILURE_BACKOFF_SECONDS, 900, "D2D_AGENT_FAILURE_BACKOFF_SECONDS") * 1_000,
|
|
114
115
|
maxItemsPerWake: positiveInteger(env.D2D_MAX_ITEMS_PER_WAKE, 10, "D2D_MAX_ITEMS_PER_WAKE"),
|
|
115
|
-
stateFile
|
|
116
|
+
stateFile,
|
|
117
|
+
incidentFile: resolve(env.D2D_INCIDENT_FILE?.trim() || `${stateFile}.incidents.json`),
|
|
116
118
|
};
|
|
117
119
|
}
|
|
118
120
|
//# sourceMappingURL=config.js.map
|