@ai-support-agent/cli 0.0.15-beta.0 → 0.0.15
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 +159 -95
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +25 -30
- package/dist/agent-runner.js.map +1 -1
- package/dist/agent-transport.d.ts +1 -0
- package/dist/agent-transport.d.ts.map +1 -1
- package/dist/agent-transport.js +11 -0
- package/dist/agent-transport.js.map +1 -1
- package/dist/child-process-manager.d.ts +5 -0
- package/dist/child-process-manager.d.ts.map +1 -1
- package/dist/child-process-manager.js +41 -1
- package/dist/child-process-manager.js.map +1 -1
- package/dist/config-watcher.d.ts +23 -0
- package/dist/config-watcher.d.ts.map +1 -0
- package/dist/config-watcher.js +70 -0
- package/dist/config-watcher.js.map +1 -0
- package/dist/ipc-types.d.ts +1 -0
- package/dist/ipc-types.d.ts.map +1 -1
- package/dist/ipc-types.js.map +1 -1
- package/dist/project-agent.d.ts.map +1 -1
- package/dist/project-agent.js +2 -1
- package/dist/project-agent.js.map +1 -1
- package/dist/project-worker.d.ts.map +1 -1
- package/dist/project-worker.js +3 -0
- package/dist/project-worker.js.map +1 -1
- package/dist/token-watcher.d.ts +4 -4
- package/dist/token-watcher.d.ts.map +1 -1
- package/dist/token-watcher.js +6 -32
- package/dist/token-watcher.js.map +1 -1
- package/dist/vscode/vscode-server.d.ts +7 -1
- package/dist/vscode/vscode-server.d.ts.map +1 -1
- package/dist/vscode/vscode-server.js +39 -1
- package/dist/vscode/vscode-server.js.map +1 -1
- package/dist/vscode/vscode-tunnel-websocket.d.ts +1 -0
- package/dist/vscode/vscode-tunnel-websocket.d.ts.map +1 -1
- package/dist/vscode/vscode-tunnel-websocket.js +2 -0
- package/dist/vscode/vscode-tunnel-websocket.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,159 +1,223 @@
|
|
|
1
1
|
# AI Support Agent CLI
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@ai-support-agent/cli)
|
|
4
|
-
[](https://github.com/mbc-net/ai-support-agent-
|
|
4
|
+
[](https://github.com/mbc-net/ai-support-agent-cli/blob/main/LICENSE)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
A daemon that turns your machine into an AI-powered remote agent. Install it, authenticate via browser, and your team can send shell commands, AI chat prompts, file operations, and more — all from a Web UI, with results streamed back in real time.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
```
|
|
9
|
+
┌──────────────┐ AppSync ┌─────────────────┐ WebSocket/HTTP ┌──────────────────┐
|
|
10
|
+
│ Web UI │ ──────────── │ API Server │ ─────────────── │ Agent CLI │
|
|
11
|
+
│ (browser) │ subscription│ (NestJS) │ commands/result │ (your machine) │
|
|
12
|
+
└──────────────┘ └─────────────────┘ └──────────────────┘
|
|
13
|
+
├─ Claude Code
|
|
14
|
+
├─ Shell / PTY
|
|
15
|
+
├─ File I/O
|
|
16
|
+
├─ Git repos
|
|
17
|
+
├─ MCP server
|
|
18
|
+
└─ VS Code tunnel
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Why?
|
|
9
22
|
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **i18n support** - English (default) and Japanese locales with OS locale auto-detection
|
|
23
|
+
- **Remote AI pair-programming** — Ask questions about your codebase from the Web UI; Claude Code runs on the agent machine with full repository access.
|
|
24
|
+
- **Multi-tenant, multi-project** — A single agent manages multiple projects across different tenants. Add/remove projects on the fly; the agent hot-reloads.
|
|
25
|
+
- **Zero-config realtime** — AppSync WebSocket subscriptions deliver commands instantly. No polling delay, no port forwarding.
|
|
26
|
+
- **Secure by default** — OAuth login, 0600 config permissions, nonce-protected callbacks, SQL injection detection, path traversal guards, and environment sanitization.
|
|
15
27
|
|
|
16
28
|
## Quick Start
|
|
17
29
|
|
|
18
30
|
```bash
|
|
19
|
-
# Install globally
|
|
20
31
|
npm install -g @ai-support-agent/cli
|
|
21
32
|
|
|
22
|
-
#
|
|
23
|
-
ai-support-agent login
|
|
33
|
+
# Opens your browser → select tenant & project → done
|
|
34
|
+
ai-support-agent login
|
|
24
35
|
|
|
25
|
-
# Start the
|
|
36
|
+
# Start the daemon (Ctrl-C to stop)
|
|
26
37
|
ai-support-agent start
|
|
27
38
|
```
|
|
28
39
|
|
|
29
|
-
|
|
40
|
+
That's it. The agent registers with the server, syncs project config, clones repositories, and starts listening for commands.
|
|
30
41
|
|
|
31
|
-
|
|
32
|
-
|---------|-------------|
|
|
33
|
-
| `start` | Start the agent and begin polling for commands |
|
|
34
|
-
| `login` | Authenticate with the server via browser-based OAuth |
|
|
35
|
-
| `add-project` | Add a project to the agent configuration |
|
|
36
|
-
| `remove-project` | Remove a project from the agent configuration |
|
|
37
|
-
| `configure` | Update agent configuration interactively |
|
|
38
|
-
| `set-language` | Set the display language (`en` or `ja`) |
|
|
39
|
-
| `status` | Show current agent status and configuration |
|
|
40
|
-
|
|
41
|
-
### Start
|
|
42
|
+
### Add more projects
|
|
42
43
|
|
|
43
44
|
```bash
|
|
44
|
-
#
|
|
45
|
-
ai-support-agent
|
|
45
|
+
ai-support-agent add-project # browser OAuth flow
|
|
46
|
+
ai-support-agent status # verify registered projects
|
|
47
|
+
```
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
ai-support-agent start --verbose
|
|
49
|
+
### Run in Docker
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
ai-support-agent start --
|
|
51
|
+
```bash
|
|
52
|
+
ai-support-agent start --docker
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
|
|
55
|
+
Project dirs, `~/.claude/`, and `~/.aws/` are auto-mounted. The container runs with your host UID/GID.
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
## How It Works
|
|
58
|
+
|
|
59
|
+
1. **Register** — Agent sends its capabilities (shell, file I/O, chat, terminal, vscode) to the API.
|
|
60
|
+
2. **Subscribe** — Connects to AppSync for real-time command delivery.
|
|
61
|
+
3. **Config sync** — Pulls project settings, MCP config, and repo list from the server.
|
|
62
|
+
4. **Execute** — Receives commands, runs them locally, streams results back chunk-by-chunk.
|
|
63
|
+
|
|
64
|
+
Each project runs in its own forked child process. The main process watches `config.json` and hot-adds/removes projects without restart.
|
|
65
|
+
|
|
66
|
+
### Supported Commands
|
|
67
|
+
|
|
68
|
+
| Command Type | What It Does |
|
|
69
|
+
|-------------|-------------|
|
|
70
|
+
| `chat` | Runs Claude Code (or Anthropic API) with your codebase context |
|
|
71
|
+
| `execute_command` | Executes a shell command with timeout and output capture |
|
|
72
|
+
| `file_read` / `file_write` / `file_list` / `file_rename` / `file_delete` / `file_mkdir` | File system operations |
|
|
73
|
+
| `process_list` / `process_kill` | Process management |
|
|
74
|
+
| `chat_cancel` | Cancels a running chat process |
|
|
75
|
+
| `setup` / `config_sync` / `reboot` / `update` | Lifecycle management |
|
|
76
|
+
|
|
77
|
+
### Chat Modes
|
|
78
|
+
|
|
79
|
+
| Mode | How it works |
|
|
80
|
+
|------|-------------|
|
|
81
|
+
| `claude_code` (default) | Spawns Claude Code CLI as a subprocess with MCP tools, system prompts, and tool allowlists |
|
|
82
|
+
| `api` | Direct Anthropic API streaming. Requires `ANTHROPIC_API_KEY` |
|
|
83
|
+
|
|
84
|
+
The mode is resolved as: agent config → server default → auto-detection (whether `claude` CLI is installed).
|
|
85
|
+
|
|
86
|
+
### Built-in MCP Server
|
|
87
|
+
|
|
88
|
+
The agent ships a [Model Context Protocol](https://modelcontextprotocol.io/) server that Claude Code can call:
|
|
89
|
+
|
|
90
|
+
| Tool | Description |
|
|
91
|
+
|------|-------------|
|
|
92
|
+
| `get_credentials` | Fetch AWS STS or database credentials from the API |
|
|
93
|
+
| `query_database` | Run SELECT queries (injection-protected) |
|
|
94
|
+
| `get_db_schemas` | Retrieve table/column metadata |
|
|
95
|
+
| `upload_file` | Upload files to S3 via presigned URLs |
|
|
96
|
+
| `get_project_info` | Fetch project configuration |
|
|
97
|
+
| `read_conversation_file` | Read conversation history |
|
|
98
|
+
|
|
99
|
+
## CLI Reference
|
|
59
100
|
|
|
60
|
-
|
|
61
|
-
ai-support-agent
|
|
101
|
+
```
|
|
102
|
+
ai-support-agent <command> [options]
|
|
103
|
+
|
|
104
|
+
Commands:
|
|
105
|
+
start Start the agent daemon
|
|
106
|
+
login Authenticate via browser OAuth
|
|
107
|
+
add-project Add a project (browser OAuth)
|
|
108
|
+
remove-project Remove a project by code
|
|
109
|
+
configure Register with --token and --api-url
|
|
110
|
+
status Show agent status and registered projects
|
|
111
|
+
set-language Set display language (en | ja)
|
|
112
|
+
set-auto-update Configure auto-update (--enable | --disable | --channel)
|
|
113
|
+
set-project-dir Set project working directory
|
|
114
|
+
docker-login Login and start in Docker
|
|
115
|
+
|
|
116
|
+
Global options:
|
|
117
|
+
--lang <lang> Override display language for this invocation
|
|
118
|
+
--version Show version
|
|
62
119
|
```
|
|
63
120
|
|
|
64
|
-
###
|
|
121
|
+
### `start` Options
|
|
65
122
|
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
|
|
123
|
+
```
|
|
124
|
+
--verbose Enable debug logging
|
|
125
|
+
--heartbeat-interval <ms> Heartbeat interval (default: 60000)
|
|
126
|
+
--no-auto-update Disable auto-update for this session
|
|
127
|
+
--update-channel <channel> Release channel: latest | beta | alpha
|
|
128
|
+
--no-docker Force native mode (skip Docker)
|
|
129
|
+
--docker Run inside a Docker container
|
|
130
|
+
```
|
|
69
131
|
|
|
70
|
-
|
|
71
|
-
ai-support-agent remove-project my_project
|
|
132
|
+
### `set-project-dir` Options
|
|
72
133
|
|
|
73
|
-
|
|
74
|
-
|
|
134
|
+
```
|
|
135
|
+
--default <template> Set default dir template (e.g. ~/projects/{projectCode})
|
|
136
|
+
--project <code> --path <path> Set dir for a specific project
|
|
75
137
|
```
|
|
76
138
|
|
|
77
|
-
## Configuration
|
|
139
|
+
## Configuration
|
|
78
140
|
|
|
79
|
-
|
|
141
|
+
Stored at `~/.ai-support-agent/config.json` (mode `0600`):
|
|
80
142
|
|
|
81
|
-
```
|
|
143
|
+
```jsonc
|
|
82
144
|
{
|
|
83
|
-
"agentId": "
|
|
84
|
-
"createdAt": "2025-01-01T00:00:
|
|
85
|
-
"lastConnected": "2025-
|
|
86
|
-
"language": "en",
|
|
145
|
+
"agentId": "macbook-a1b2c3d4", // auto-generated
|
|
146
|
+
"createdAt": "2025-01-01T00:00:00Z",
|
|
147
|
+
"lastConnected": "2025-06-15T09:00:00Z",
|
|
148
|
+
"language": "en", // en | ja
|
|
149
|
+
"agentChatMode": "claude_code", // claude_code | api
|
|
150
|
+
"defaultProjectDir": "~/.ai-support-agent/projects/{projectCode}",
|
|
151
|
+
"autoUpdate": {
|
|
152
|
+
"enabled": true,
|
|
153
|
+
"autoRestart": true,
|
|
154
|
+
"channel": "latest" // latest | beta | alpha
|
|
155
|
+
},
|
|
87
156
|
"projects": [
|
|
88
157
|
{
|
|
89
|
-
"projectCode": "
|
|
90
|
-
"token": "
|
|
91
|
-
"apiUrl": "https://api.example.com"
|
|
158
|
+
"projectCode": "MY_PROJECT",
|
|
159
|
+
"token": "agt_xxxx",
|
|
160
|
+
"apiUrl": "https://api.example.com",
|
|
161
|
+
"projectDir": "~/custom-path" // optional override
|
|
92
162
|
}
|
|
93
163
|
]
|
|
94
164
|
}
|
|
95
165
|
```
|
|
96
166
|
|
|
97
|
-
|
|
98
|
-
|-------|-------------|
|
|
99
|
-
| `agentId` | Auto-generated unique agent identifier (hostname + random hex) |
|
|
100
|
-
| `createdAt` | Timestamp when the config was first created |
|
|
101
|
-
| `lastConnected` | Timestamp of last successful connection |
|
|
102
|
-
| `language` | Display language (`en` or `ja`) |
|
|
103
|
-
| `projects` | Array of registered projects with `projectCode`, `token`, and `apiUrl` |
|
|
104
|
-
|
|
105
|
-
## Environment Variables
|
|
167
|
+
### Environment Variables
|
|
106
168
|
|
|
107
169
|
| Variable | Description |
|
|
108
170
|
|----------|-------------|
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
171
|
+
| `AI_SUPPORT_AGENT_TOKEN` | Override auth token (lowest priority) |
|
|
172
|
+
| `AI_SUPPORT_AGENT_API_URL` | Override API URL (lowest priority) |
|
|
173
|
+
| `AI_SUPPORT_AGENT_CONFIG_DIR` | Override config directory path |
|
|
174
|
+
| `ANTHROPIC_API_KEY` | Required for `api` chat mode |
|
|
111
175
|
|
|
112
|
-
|
|
176
|
+
Priority: CLI flags > config file > environment variables.
|
|
113
177
|
|
|
114
|
-
##
|
|
178
|
+
## Project Directory Structure
|
|
115
179
|
|
|
116
|
-
|
|
180
|
+
Each project gets an isolated workspace:
|
|
117
181
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
#
|
|
125
|
-
ai-support-agent
|
|
126
|
-
|
|
127
|
-
#
|
|
128
|
-
ai-support-agent status --lang ja
|
|
182
|
+
```
|
|
183
|
+
{projectDir}/
|
|
184
|
+
├── workspace/
|
|
185
|
+
│ ├── repos/ # Git-cloned repositories
|
|
186
|
+
│ ├── docs/ # Documentation from server
|
|
187
|
+
│ └── artifacts/ # Generated outputs
|
|
188
|
+
├── uploads/ # File uploads staging
|
|
189
|
+
└── .ai-support-agent/
|
|
190
|
+
├── cache/ # Temporary cache
|
|
191
|
+
└── aws/ # AWS credential cache
|
|
129
192
|
```
|
|
130
193
|
|
|
131
194
|
## Security
|
|
132
195
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
196
|
+
| Layer | Detail |
|
|
197
|
+
|-------|--------|
|
|
198
|
+
| Authentication | Browser-based OAuth with localhost callback, CSRF nonce |
|
|
199
|
+
| Config file | Mode `0600`, directory `0700` |
|
|
200
|
+
| Path traversal | Blocked paths: `/root`, `/etc`, `/sys`, `/proc`, `/dev`, `~/.ssh`, `~/.aws`, etc. |
|
|
201
|
+
| SQL injection | Pattern-based detection: comments, time-based blind, encoding bypass, file system access |
|
|
202
|
+
| Subprocess env | Sensitive variables stripped before spawning child processes |
|
|
203
|
+
| File transfer | Extension allowlist (53 types), `basename()` sanitization |
|
|
204
|
+
| Git operations | Branch name validation to prevent CLI injection |
|
|
136
205
|
|
|
137
206
|
## Development
|
|
138
207
|
|
|
139
208
|
```bash
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
cd ai-support-agent-client
|
|
209
|
+
git clone https://github.com/mbc-net/ai-support-agent-cli.git
|
|
210
|
+
cd ai-support-agent-cli
|
|
143
211
|
|
|
144
|
-
# Install dependencies
|
|
145
212
|
npm install
|
|
146
|
-
|
|
147
|
-
#
|
|
148
|
-
npm run
|
|
149
|
-
|
|
150
|
-
# Run tests
|
|
151
|
-
npm test
|
|
152
|
-
|
|
153
|
-
# Run tests with coverage
|
|
154
|
-
npm run test:cov
|
|
213
|
+
npm run dev -- start --verbose # development mode
|
|
214
|
+
npm test # run tests
|
|
215
|
+
npm run test:cov # coverage (95%+ thresholds enforced)
|
|
216
|
+
npm run build # compile to dist/
|
|
155
217
|
```
|
|
156
218
|
|
|
219
|
+
Requires Node.js >= 20. `node-pty` is an optional dependency for terminal/PTY sessions.
|
|
220
|
+
|
|
157
221
|
## License
|
|
158
222
|
|
|
159
223
|
[MIT](LICENSE)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAKzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAMnG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GACA;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAQrF;AAYD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,EAAE,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAEnE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAkBN;AAmCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,GAAG,gBAAgB,CAWnI;AAmCD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAKzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAMnG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GACA;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAQrF;AAYD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,EAAE,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAEnE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAkBN;AAmCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,GAAG,gBAAgB,CAWnI;AAmCD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyHtE"}
|
package/dist/agent-runner.js
CHANGED
|
@@ -50,7 +50,7 @@ const system_info_1 = require("./system-info");
|
|
|
50
50
|
const update_checker_1 = require("./update-checker");
|
|
51
51
|
const utils_1 = require("./utils");
|
|
52
52
|
const api_client_1 = require("./api-client");
|
|
53
|
-
const
|
|
53
|
+
const config_watcher_1 = require("./config-watcher");
|
|
54
54
|
function startProjectAgent(project, agentId, options) {
|
|
55
55
|
const agent = new project_agent_1.ProjectAgent(project, agentId, options, options.agentChatMode, options.defaultProjectDir);
|
|
56
56
|
agent.start();
|
|
@@ -123,7 +123,7 @@ function runSingleProject(project, agentId, options, agentChatMode, defaultProje
|
|
|
123
123
|
const updater = initAutoUpdater(options, undefined, started.client, agentId, () => started.stop());
|
|
124
124
|
let tokenWatcher;
|
|
125
125
|
if (enableTokenWatcher) {
|
|
126
|
-
tokenWatcher = (0,
|
|
126
|
+
tokenWatcher = (0, config_watcher_1.startTokenWatcher)([project], (_projectCode, newToken) => {
|
|
127
127
|
started.agent.updateToken(newToken);
|
|
128
128
|
});
|
|
129
129
|
}
|
|
@@ -202,45 +202,40 @@ async function startAgent(options) {
|
|
|
202
202
|
const agentId = config.agentId ?? os.hostname();
|
|
203
203
|
const { pollInterval, heartbeatInterval } = resolveIntervals(options);
|
|
204
204
|
logger_1.logger.info((0, i18n_1.t)('runner.startingMulti', { count: projects.length }));
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
logMultiProjectStartup(projects, pollInterval, heartbeatInterval);
|
|
214
|
-
const originalStop = started.stop;
|
|
215
|
-
const stopWithWatcher = () => {
|
|
216
|
-
tokenWatcher.stop();
|
|
217
|
-
originalStop();
|
|
218
|
-
};
|
|
219
|
-
setupShutdownHandlers({ kind: 'agents', agents: [{ stop: stopWithWatcher }] }, updater);
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
// Multiple projects: fork child processes for isolation
|
|
205
|
+
const forkOptions = {
|
|
206
|
+
pollInterval,
|
|
207
|
+
heartbeatInterval,
|
|
208
|
+
agentChatMode: config.agentChatMode,
|
|
209
|
+
defaultProjectDir: config.defaultProjectDir,
|
|
210
|
+
verbose: options.verbose,
|
|
211
|
+
};
|
|
212
|
+
// Always use ChildProcessManager for dynamic project management
|
|
223
213
|
const processManager = new child_process_manager_1.ChildProcessManager();
|
|
224
214
|
for (const project of projects) {
|
|
225
|
-
processManager.forkProject(project, agentId,
|
|
226
|
-
pollInterval,
|
|
227
|
-
heartbeatInterval,
|
|
228
|
-
agentChatMode: config.agentChatMode,
|
|
229
|
-
defaultProjectDir: config.defaultProjectDir,
|
|
230
|
-
});
|
|
215
|
+
processManager.forkProject(project, agentId, forkOptions);
|
|
231
216
|
}
|
|
232
217
|
(0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
|
|
233
218
|
const client = new api_client_1.ApiClient(projects[0].apiUrl, projects[0].token);
|
|
234
219
|
const updater = initAutoUpdater(options, config, client, agentId, () => processManager.sendUpdateToAll());
|
|
235
|
-
const
|
|
236
|
-
|
|
220
|
+
const configWatcher = (0, config_watcher_1.startConfigWatcher)(projects, {
|
|
221
|
+
onTokenUpdate: (projectCode, newToken) => {
|
|
222
|
+
processManager.sendTokenUpdate(projectCode, newToken);
|
|
223
|
+
},
|
|
224
|
+
onProjectAdded: (project) => {
|
|
225
|
+
logger_1.logger.info(`Hot-adding project: ${project.projectCode}`);
|
|
226
|
+
processManager.forkProject(project, agentId, forkOptions);
|
|
227
|
+
},
|
|
228
|
+
onProjectRemoved: (projectCode) => {
|
|
229
|
+
logger_1.logger.info(`Hot-removing project: ${projectCode}`);
|
|
230
|
+
void processManager.stopProject(projectCode);
|
|
231
|
+
},
|
|
237
232
|
});
|
|
238
233
|
logMultiProjectStartup(projects, pollInterval, heartbeatInterval);
|
|
239
234
|
setupShutdownHandlers({ kind: 'processManager', processManager }, updater);
|
|
240
|
-
// Clean up
|
|
235
|
+
// Clean up config watcher on shutdown
|
|
241
236
|
const origStopAll = processManager.stopAll.bind(processManager);
|
|
242
237
|
processManager.stopAll = async (timeoutMs) => {
|
|
243
|
-
|
|
238
|
+
configWatcher.stop();
|
|
244
239
|
await origStopAll(timeoutMs);
|
|
245
240
|
};
|
|
246
241
|
}
|
package/dist/agent-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,8CAiBC;AAgBD,sDAqBC;AAmCD,0DAWC;AAmCD,
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export interface TransportDeps {
|
|
|
19
19
|
token: string;
|
|
20
20
|
projectDir: string | undefined;
|
|
21
21
|
tenantCode: string;
|
|
22
|
+
projectCode: string;
|
|
22
23
|
/** @deprecated pollInterval is no longer used. Kept for backward compatibility with CLI options. */
|
|
23
24
|
pollInterval: number;
|
|
24
25
|
heartbeatInterval: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-transport.d.ts","sourceRoot":"","sources":["../src/agent-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAMvF,OAAO,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAA;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAA;IACrD,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACtC,UAAU,EAAE,OAAO,CAAA;IACnB,uBAAuB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAA;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,oGAAoG;IACpG,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,eAAe,CAAA;IAChC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,sBAAsB,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,EAC9E,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAuCN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAaN;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-transport.d.ts","sourceRoot":"","sources":["../src/agent-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAMvF,OAAO,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAA;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAA;IACrD,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACtC,UAAU,EAAE,OAAO,CAAA;IACnB,uBAAuB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAA;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,oGAAoG;IACpG,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,eAAe,CAAA;IAChC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,sBAAsB,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,EAC9E,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAuCN;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAaN;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAoDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAMzD"}
|
package/dist/agent-transport.js
CHANGED
|
@@ -116,6 +116,17 @@ async function handleNotification(deps, state, ctx, notification) {
|
|
|
116
116
|
logger_1.logger.debug(`${deps.prefix} Ignoring command for agent ${targetAgentId} (expected ${deps.agentId})`);
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
|
+
// tenantCode/projectCodeが含まれていない通知、または自分宛でない通知をスキップ
|
|
120
|
+
const contentTenantCode = content.tenantCode;
|
|
121
|
+
const contentProjectCode = content.projectCode;
|
|
122
|
+
if (!contentTenantCode || contentTenantCode !== deps.tenantCode) {
|
|
123
|
+
logger_1.logger.debug(`${deps.prefix} Ignoring command for tenant ${contentTenantCode ?? '(none)'} (expected ${deps.tenantCode})`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!contentProjectCode || contentProjectCode !== deps.projectCode) {
|
|
127
|
+
logger_1.logger.debug(`${deps.prefix} Ignoring command for project ${contentProjectCode ?? '(none)'} (expected ${deps.projectCode})`);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
119
130
|
if (!commandId) {
|
|
120
131
|
logger_1.logger.warn(`${deps.prefix} Notification missing commandId: ${JSON.stringify(content)}`);
|
|
121
132
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-transport.js","sourceRoot":"","sources":["../src/agent-transport.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"agent-transport.js","sourceRoot":"","sources":["../src/agent-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,11 @@ export declare class ChildProcessManager {
|
|
|
13
13
|
private resetRestartCount;
|
|
14
14
|
private handleChildMessage;
|
|
15
15
|
private handleChildExit;
|
|
16
|
+
/**
|
|
17
|
+
* 特定プロジェクトの子プロセスを graceful shutdown する
|
|
18
|
+
*/
|
|
19
|
+
stopProject(projectCode: string, timeoutMs?: number): Promise<void>;
|
|
20
|
+
hasProject(projectCode: string): boolean;
|
|
16
21
|
sendTokenUpdate(projectCode: string, newToken: string): void;
|
|
17
22
|
sendUpdateToAll(): void;
|
|
18
23
|
stopAll(timeoutMs?: number): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-process-manager.d.ts","sourceRoot":"","sources":["../src/child-process-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"child-process-manager.d.ts","sourceRoot":"","sources":["../src/child-process-manager.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AASjE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmD;IACjF,OAAO,CAAC,QAAQ,CAAQ;IAExB,WAAW,CACT,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,iBAAiB,EAAE,MAAM,CAAA;QACzB,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,GACA,IAAI;IAWP,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAyBvB;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCxG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAc5D,eAAe,IAAI,IAAI;IASjB,OAAO,CAAC,SAAS,GAAE,MAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC/E,eAAe,IAAI,MAAM;CAG1B"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ChildProcessManager = void 0;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
|
+
const fs_1 = require("fs");
|
|
5
6
|
const path_1 = require("path");
|
|
6
7
|
const constants_1 = require("./constants");
|
|
7
8
|
const ipc_types_1 = require("./ipc-types");
|
|
@@ -20,9 +21,14 @@ class ChildProcessManager {
|
|
|
20
21
|
this.spawnChild(project.projectCode, startMessage);
|
|
21
22
|
}
|
|
22
23
|
spawnChild(projectCode, startMessage) {
|
|
23
|
-
|
|
24
|
+
// ts-node 環境では .ts ファイルを使用、ビルド後は .js ファイルを使用
|
|
25
|
+
const jsPath = (0, path_1.join)(__dirname, 'project-worker.js');
|
|
26
|
+
const tsPath = (0, path_1.join)(__dirname, 'project-worker.ts');
|
|
27
|
+
const workerPath = (0, fs_1.existsSync)(jsPath) ? jsPath : tsPath;
|
|
28
|
+
const execArgv = workerPath.endsWith('.ts') ? ['--require', 'ts-node/register'] : [];
|
|
24
29
|
const child = (0, child_process_1.fork)(workerPath, [], {
|
|
25
30
|
stdio: ['pipe', 'inherit', 'inherit', 'ipc'],
|
|
31
|
+
execArgv,
|
|
26
32
|
});
|
|
27
33
|
const managed = {
|
|
28
34
|
child,
|
|
@@ -83,6 +89,40 @@ class ChildProcessManager {
|
|
|
83
89
|
}, constants_1.CHILD_PROCESS_RESTART_DELAY_MS);
|
|
84
90
|
this.restartTimers.set(projectCode, timer);
|
|
85
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* 特定プロジェクトの子プロセスを graceful shutdown する
|
|
94
|
+
*/
|
|
95
|
+
async stopProject(projectCode, timeoutMs = constants_1.CHILD_PROCESS_STOP_TIMEOUT_MS) {
|
|
96
|
+
// pending restart timer があればキャンセル
|
|
97
|
+
const restartTimer = this.restartTimers.get(projectCode);
|
|
98
|
+
if (restartTimer) {
|
|
99
|
+
clearTimeout(restartTimer);
|
|
100
|
+
this.restartTimers.delete(projectCode);
|
|
101
|
+
}
|
|
102
|
+
const managed = this.processes.get(projectCode);
|
|
103
|
+
if (!managed)
|
|
104
|
+
return;
|
|
105
|
+
if (managed.child.connected) {
|
|
106
|
+
managed.child.send({ type: 'shutdown' });
|
|
107
|
+
logger_1.logger.debug(`Sent shutdown to ${projectCode}`);
|
|
108
|
+
}
|
|
109
|
+
await new Promise((resolve) => {
|
|
110
|
+
const timer = setTimeout(() => {
|
|
111
|
+
logger_1.logger.warn(`Force killing ${projectCode} (timeout)`);
|
|
112
|
+
managed.child.kill('SIGKILL');
|
|
113
|
+
resolve();
|
|
114
|
+
}, timeoutMs);
|
|
115
|
+
managed.child.once('exit', () => {
|
|
116
|
+
clearTimeout(timer);
|
|
117
|
+
resolve();
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
this.processes.delete(projectCode);
|
|
121
|
+
logger_1.logger.info(`Project ${projectCode} stopped and removed`);
|
|
122
|
+
}
|
|
123
|
+
hasProject(projectCode) {
|
|
124
|
+
return this.processes.has(projectCode);
|
|
125
|
+
}
|
|
86
126
|
sendTokenUpdate(projectCode, newToken) {
|
|
87
127
|
const managed = this.processes.get(projectCode);
|
|
88
128
|
if (!managed)
|