@auto-engineer/dev-server 0.14.0 → 0.16.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/CHANGELOG.md +20 -0
- package/README.md +210 -0
- package/dist/src/commands/start-client.d.ts.map +1 -1
- package/dist/src/commands/start-client.js +5 -1
- package/dist/src/commands/start-client.js.map +1 -1
- package/dist/src/commands/start-server.d.ts +16 -1
- package/dist/src/commands/start-server.d.ts.map +1 -1
- package/dist/src/commands/start-server.js +143 -21
- package/dist/src/commands/start-server.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @auto-engineer/dev-server
|
|
2
2
|
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @auto-engineer/cli@0.16.0
|
|
9
|
+
- @auto-engineer/message-bus@0.16.0
|
|
10
|
+
|
|
11
|
+
## 0.15.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- version bump
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Updated dependencies []:
|
|
20
|
+
- @auto-engineer/message-bus@0.15.0
|
|
21
|
+
- @auto-engineer/cli@0.15.0
|
|
22
|
+
|
|
3
23
|
## 0.14.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
package/README.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# @auto-engineer/dev-server
|
|
2
|
+
|
|
3
|
+
Development server commands for starting and managing client/server processes with file watching.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Without `@auto-engineer/dev-server`, you would have to manually manage process spawning, file watching for auto-restart, and process cleanup when developing client/server applications.
|
|
10
|
+
|
|
11
|
+
This package provides command handlers that integrate with the CLI pipeline system to start development processes with optional file watching for automatic restarts on code changes.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @auto-engineer/dev-server
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
Register the handlers and start a development server:
|
|
24
|
+
|
|
25
|
+
### 1. Register the handlers
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { COMMANDS } from '@auto-engineer/dev-server';
|
|
29
|
+
import { createMessageBus } from '@auto-engineer/message-bus';
|
|
30
|
+
|
|
31
|
+
const bus = createMessageBus();
|
|
32
|
+
COMMANDS.forEach(cmd => bus.registerCommand(cmd));
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 2. Send a command
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
const result = await bus.dispatch({
|
|
39
|
+
type: 'StartServer',
|
|
40
|
+
data: {
|
|
41
|
+
serverDirectory: './server',
|
|
42
|
+
watch: true,
|
|
43
|
+
},
|
|
44
|
+
requestId: 'req-123',
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
console.log(result);
|
|
48
|
+
// → { type: 'ServerStarted', data: { serverDirectory: './server', pid: 12345, watching: true } }
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The server starts with file watching enabled, automatically restarting on code changes.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## How-to Guides
|
|
56
|
+
|
|
57
|
+
### Run via CLI
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
auto start:server --server-directory=./server
|
|
61
|
+
auto start:client --client-directory=./client
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Run with Watch Mode
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
auto start:server --server-directory=./server --watch --watch-directories=./server,./shared
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Run with Custom Command
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
auto start:server --server-directory=./server --command="pnpm dev"
|
|
74
|
+
auto start:client --client-directory=./client --command="npm run dev"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Handle Errors
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
if (result.type === 'ServerStartFailed') {
|
|
81
|
+
console.error(result.data.error);
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Enable Debug Logging
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
DEBUG=auto:dev-server:* auto start:server --server-directory=./server
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## API Reference
|
|
94
|
+
|
|
95
|
+
### Exports
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import {
|
|
99
|
+
COMMANDS,
|
|
100
|
+
startServerCommandHandler,
|
|
101
|
+
startClientCommandHandler,
|
|
102
|
+
} from '@auto-engineer/dev-server';
|
|
103
|
+
|
|
104
|
+
import type {
|
|
105
|
+
StartServerCommand,
|
|
106
|
+
StartClientCommand,
|
|
107
|
+
ServerStartedEvent,
|
|
108
|
+
ServerStartFailedEvent,
|
|
109
|
+
ClientStartedEvent,
|
|
110
|
+
ClientStartFailedEvent,
|
|
111
|
+
} from '@auto-engineer/dev-server';
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Commands
|
|
115
|
+
|
|
116
|
+
| Command | CLI Alias | Description |
|
|
117
|
+
|---------|-----------|-------------|
|
|
118
|
+
| `StartServer` | `start:server` | Start development server with optional file watching |
|
|
119
|
+
| `StartClient` | `start:client` | Start development client process |
|
|
120
|
+
|
|
121
|
+
### StartServerCommand
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
type StartServerCommand = Command<
|
|
125
|
+
'StartServer',
|
|
126
|
+
{
|
|
127
|
+
serverDirectory: string;
|
|
128
|
+
command?: string; // default: 'pnpm start'
|
|
129
|
+
watch?: boolean; // default: true
|
|
130
|
+
watchDirectories?: string[];
|
|
131
|
+
debounceMs?: number; // default: 2000
|
|
132
|
+
}
|
|
133
|
+
>;
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### StartClientCommand
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
type StartClientCommand = Command<
|
|
140
|
+
'StartClient',
|
|
141
|
+
{
|
|
142
|
+
clientDirectory: string;
|
|
143
|
+
command?: string; // default: 'pnpm start'
|
|
144
|
+
}
|
|
145
|
+
>;
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### ServerStartedEvent
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
type ServerStartedEvent = Event<
|
|
152
|
+
'ServerStarted',
|
|
153
|
+
{
|
|
154
|
+
serverDirectory: string;
|
|
155
|
+
pid: number;
|
|
156
|
+
port?: number;
|
|
157
|
+
watching: boolean;
|
|
158
|
+
}
|
|
159
|
+
>;
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### ClientStartedEvent
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
type ClientStartedEvent = Event<
|
|
166
|
+
'ClientStarted',
|
|
167
|
+
{
|
|
168
|
+
clientDirectory: string;
|
|
169
|
+
pid: number;
|
|
170
|
+
port?: number;
|
|
171
|
+
}
|
|
172
|
+
>;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Architecture
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
src/
|
|
181
|
+
├── index.ts
|
|
182
|
+
└── commands/
|
|
183
|
+
├── start-server.ts
|
|
184
|
+
└── start-client.ts
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The following diagram shows the server watch flow:
|
|
188
|
+
|
|
189
|
+
```mermaid
|
|
190
|
+
flowchart TB
|
|
191
|
+
A[StartServer] --> B[Spawn Process]
|
|
192
|
+
B --> C{Watch Mode?}
|
|
193
|
+
C -->|Yes| D[Start Watcher]
|
|
194
|
+
C -->|No| E[ServerStartedEvent]
|
|
195
|
+
D --> E
|
|
196
|
+
D --> F[File Change]
|
|
197
|
+
F --> G[Kill Process]
|
|
198
|
+
G --> B
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
*Flow: Command spawns process, optionally starts file watcher which restarts on changes.*
|
|
202
|
+
|
|
203
|
+
### Dependencies
|
|
204
|
+
|
|
205
|
+
| Package | Usage |
|
|
206
|
+
|---------|-------|
|
|
207
|
+
| `@auto-engineer/message-bus` | Command/event infrastructure |
|
|
208
|
+
| `chokidar` | File system watching |
|
|
209
|
+
| `execa` | Process execution |
|
|
210
|
+
| `debug` | Debug logging |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-client.d.ts","sourceRoot":"","sources":["../../../src/commands/start-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAM5F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,aAAa,EACb;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CACpC,eAAe,EACf;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AAE5E,eAAO,MAAM,cAAc;;;yBAxBN,MAAM;kBACb,MAAM;;;;;
|
|
1
|
+
{"version":3,"file":"start-client.d.ts","sourceRoot":"","sources":["../../../src/commands/start-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAM5F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,aAAa,EACb;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CACpC,eAAe,EACf;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AAE5E,eAAO,MAAM,cAAc;;;yBAxBN,MAAM;kBACb,MAAM;;;;;GA2HlB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { execa } from 'execa';
|
|
|
6
6
|
const debug = createDebug('auto:dev-server:start-client');
|
|
7
7
|
export const commandHandler = defineCommandHandler({
|
|
8
8
|
name: 'StartClient',
|
|
9
|
+
displayName: 'Start Client',
|
|
9
10
|
alias: 'start:client',
|
|
10
11
|
description: 'Start the development client',
|
|
11
12
|
category: 'dev',
|
|
@@ -24,7 +25,10 @@ export const commandHandler = defineCommandHandler({
|
|
|
24
25
|
'$ auto start:client --client-directory=./client',
|
|
25
26
|
'$ auto start:client --client-directory=./client --command="pnpm dev"',
|
|
26
27
|
],
|
|
27
|
-
events: [
|
|
28
|
+
events: [
|
|
29
|
+
{ name: 'ClientStarted', displayName: 'Client Started' },
|
|
30
|
+
{ name: 'ClientStartFailed', displayName: 'Client Start Failed' },
|
|
31
|
+
],
|
|
28
32
|
handle: async (command) => {
|
|
29
33
|
const typedCommand = command;
|
|
30
34
|
debug('CommandHandler executing for StartClient');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-client.js","sourceRoot":"","sources":["../../../src/commands/start-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAgB,oBAAoB,EAAc,MAAM,4BAA4B,CAAC;AAC5F,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,MAAM,KAAK,GAAG,WAAW,CAAC,8BAA8B,CAAC,CAAC;AA6B1D,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAGhD;IACA,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,8BAA8B;IAC3C,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,SAAS;IACf,MAAM,EAAE;QACN,eAAe,EAAE;YACf,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,IAAI;SACf;QACD,OAAO,EAAE;YACP,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,QAAQ,EAAE;QACR,iDAAiD;QACjD,sEAAsE;KACvE;IACD,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"start-client.js","sourceRoot":"","sources":["../../../src/commands/start-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,22 +2,37 @@ import { type Command, type Event } from '@auto-engineer/message-bus';
|
|
|
2
2
|
export type StartServerCommand = Command<'StartServer', {
|
|
3
3
|
serverDirectory: string;
|
|
4
4
|
command?: string;
|
|
5
|
+
watch?: boolean;
|
|
6
|
+
watchDirectories?: string[];
|
|
7
|
+
debounceMs?: number;
|
|
5
8
|
}>;
|
|
6
9
|
export type ServerStartedEvent = Event<'ServerStarted', {
|
|
7
10
|
serverDirectory: string;
|
|
8
11
|
pid: number;
|
|
9
12
|
port?: number;
|
|
13
|
+
watching: boolean;
|
|
10
14
|
}>;
|
|
11
15
|
export type ServerStartFailedEvent = Event<'ServerStartFailed', {
|
|
12
16
|
serverDirectory: string;
|
|
13
17
|
error: string;
|
|
14
18
|
}>;
|
|
15
|
-
export type
|
|
19
|
+
export type ServerRestartingEvent = Event<'ServerRestarting', {
|
|
20
|
+
serverDirectory: string;
|
|
21
|
+
changedPath: string;
|
|
22
|
+
}>;
|
|
23
|
+
export type ServerRestartedEvent = Event<'ServerRestarted', {
|
|
24
|
+
serverDirectory: string;
|
|
25
|
+
pid: number;
|
|
26
|
+
}>;
|
|
27
|
+
export type StartServerEvents = ServerStartedEvent | ServerStartFailedEvent | ServerRestartingEvent | ServerRestartedEvent;
|
|
16
28
|
export declare const commandHandler: import("@auto-engineer/message-bus").UnifiedCommandHandler<Readonly<{
|
|
17
29
|
type: "StartServer";
|
|
18
30
|
data: Readonly<{
|
|
19
31
|
serverDirectory: string;
|
|
20
32
|
command?: string;
|
|
33
|
+
watch?: boolean;
|
|
34
|
+
watchDirectories?: string[];
|
|
35
|
+
debounceMs?: number;
|
|
21
36
|
}>;
|
|
22
37
|
timestamp?: Date;
|
|
23
38
|
requestId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-server.d.ts","sourceRoot":"","sources":["../../../src/commands/start-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start-server.d.ts","sourceRoot":"","sources":["../../../src/commands/start-server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAU5F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,aAAa,EACb;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CACpC,eAAe,EACf;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,KAAK,CACvC,kBAAkB,EAClB;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,iBAAiB,EACjB;IACE,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;CACb,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,CAAC;AA+FzB,eAAO,MAAM,cAAc;;;yBA7IN,MAAM;kBACb,MAAM;gBACR,OAAO;2BACI,MAAM,EAAE;qBACd,MAAM;;;;;GAySrB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1,13 +1,86 @@
|
|
|
1
1
|
import { access } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { defineCommandHandler } from '@auto-engineer/message-bus';
|
|
4
|
+
import { watch } from 'chokidar';
|
|
4
5
|
import createDebug from 'debug';
|
|
5
6
|
import { execa } from 'execa';
|
|
6
7
|
const debug = createDebug('auto:dev-server:start-server');
|
|
8
|
+
const DEFAULT_DEBOUNCE_MS = 2000;
|
|
9
|
+
const IGNORED_PATTERNS = ['**/node_modules/**', '**/.git/**', '**/.DS_Store'];
|
|
10
|
+
function parseCommand(cmd) {
|
|
11
|
+
const [executable, ...args] = cmd.split(' ');
|
|
12
|
+
return { executable, args };
|
|
13
|
+
}
|
|
14
|
+
async function startProcess(executable, args, cwd) {
|
|
15
|
+
debug('Starting server process...');
|
|
16
|
+
debug(' Executable: %s', executable);
|
|
17
|
+
debug(' Args: %o', args);
|
|
18
|
+
debug(' CWD: %s', cwd);
|
|
19
|
+
const subprocess = execa(executable, args, {
|
|
20
|
+
cwd,
|
|
21
|
+
stdio: 'inherit',
|
|
22
|
+
reject: false,
|
|
23
|
+
detached: false,
|
|
24
|
+
});
|
|
25
|
+
const pid = subprocess.pid;
|
|
26
|
+
if (pid === undefined) {
|
|
27
|
+
throw new Error('Failed to start server process');
|
|
28
|
+
}
|
|
29
|
+
debug('Server process started with PID: %d', pid);
|
|
30
|
+
subprocess.catch((error) => {
|
|
31
|
+
debug('Server process error: %O', error);
|
|
32
|
+
});
|
|
33
|
+
return { subprocess, pid };
|
|
34
|
+
}
|
|
35
|
+
function killProcess(process) {
|
|
36
|
+
return new Promise((resolve) => {
|
|
37
|
+
debug('Killing server process PID: %d', process.pid);
|
|
38
|
+
process.subprocess.kill('SIGTERM');
|
|
39
|
+
const timeout = setTimeout(() => {
|
|
40
|
+
debug('Process did not exit gracefully, sending SIGKILL');
|
|
41
|
+
process.subprocess.kill('SIGKILL');
|
|
42
|
+
resolve();
|
|
43
|
+
}, 5000);
|
|
44
|
+
process.subprocess.finally(() => {
|
|
45
|
+
clearTimeout(timeout);
|
|
46
|
+
debug('Server process terminated');
|
|
47
|
+
resolve();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function createFileWatcher(directories, onFileChange) {
|
|
52
|
+
debug('Creating file watcher for directories: %o', directories);
|
|
53
|
+
const watcher = watch(directories, {
|
|
54
|
+
ignoreInitial: true,
|
|
55
|
+
persistent: true,
|
|
56
|
+
ignored: IGNORED_PATTERNS,
|
|
57
|
+
awaitWriteFinish: {
|
|
58
|
+
stabilityThreshold: 200,
|
|
59
|
+
pollInterval: 50,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
watcher.on('add', (filePath) => {
|
|
63
|
+
debug('File added: %s', filePath);
|
|
64
|
+
onFileChange(filePath);
|
|
65
|
+
});
|
|
66
|
+
watcher.on('change', (filePath) => {
|
|
67
|
+
debug('File changed: %s', filePath);
|
|
68
|
+
onFileChange(filePath);
|
|
69
|
+
});
|
|
70
|
+
watcher.on('unlink', (filePath) => {
|
|
71
|
+
debug('File removed: %s', filePath);
|
|
72
|
+
onFileChange(filePath);
|
|
73
|
+
});
|
|
74
|
+
watcher.on('error', (error) => {
|
|
75
|
+
debug('Watcher error: %O', error);
|
|
76
|
+
});
|
|
77
|
+
return watcher;
|
|
78
|
+
}
|
|
7
79
|
export const commandHandler = defineCommandHandler({
|
|
8
80
|
name: 'StartServer',
|
|
81
|
+
displayName: 'Start Server',
|
|
9
82
|
alias: 'start:server',
|
|
10
|
-
description: 'Start the development server',
|
|
83
|
+
description: 'Start the development server with optional watch mode for auto-restart',
|
|
11
84
|
category: 'dev',
|
|
12
85
|
icon: 'server',
|
|
13
86
|
fields: {
|
|
@@ -19,19 +92,41 @@ export const commandHandler = defineCommandHandler({
|
|
|
19
92
|
description: 'Command to run (default: pnpm start)',
|
|
20
93
|
required: false,
|
|
21
94
|
},
|
|
95
|
+
watch: {
|
|
96
|
+
description: 'Enable watch mode to auto-restart on file changes (default: true)',
|
|
97
|
+
required: false,
|
|
98
|
+
},
|
|
99
|
+
watchDirectories: {
|
|
100
|
+
description: 'Directories to watch for changes (default: serverDirectory/src)',
|
|
101
|
+
required: false,
|
|
102
|
+
},
|
|
103
|
+
debounceMs: {
|
|
104
|
+
description: 'Debounce delay in milliseconds before restart (default: 2000)',
|
|
105
|
+
required: false,
|
|
106
|
+
},
|
|
22
107
|
},
|
|
23
108
|
examples: [
|
|
24
109
|
'$ auto start:server --server-directory=./server',
|
|
25
110
|
'$ auto start:server --server-directory=./server --command="pnpm dev"',
|
|
111
|
+
'$ auto start:server --server-directory=./server --watch',
|
|
112
|
+
'$ auto start:server --server-directory=./server --watch --watch-directories=./server,./shared',
|
|
113
|
+
],
|
|
114
|
+
events: [
|
|
115
|
+
{ name: 'ServerStarted', displayName: 'Server Started' },
|
|
116
|
+
{ name: 'ServerStartFailed', displayName: 'Server Start Failed' },
|
|
117
|
+
{ name: 'ServerRestarting', displayName: 'Server Restarting' },
|
|
118
|
+
{ name: 'ServerRestarted', displayName: 'Server Restarted' },
|
|
26
119
|
],
|
|
27
|
-
events: ['ServerStarted', 'ServerStartFailed'],
|
|
28
120
|
handle: async (command) => {
|
|
29
121
|
const typedCommand = command;
|
|
30
122
|
debug('CommandHandler executing for StartServer');
|
|
31
|
-
const { serverDirectory, command: customCommand } = typedCommand.data;
|
|
123
|
+
const { serverDirectory, command: customCommand, watch: watchEnabled = true, watchDirectories, debounceMs = DEFAULT_DEBOUNCE_MS, } = typedCommand.data;
|
|
32
124
|
debug('Handling StartServerCommand');
|
|
33
125
|
debug(' Server directory: %s', serverDirectory);
|
|
34
126
|
debug(' Command: %s', customCommand ?? 'pnpm start');
|
|
127
|
+
debug(' Watch enabled: %s', watchEnabled);
|
|
128
|
+
debug(' Watch directories: %o', watchDirectories);
|
|
129
|
+
debug(' Debounce: %dms', debounceMs);
|
|
35
130
|
debug(' Request ID: %s', typedCommand.requestId);
|
|
36
131
|
debug(' Correlation ID: %s', typedCommand.correlationId ?? 'none');
|
|
37
132
|
try {
|
|
@@ -41,29 +136,56 @@ export const commandHandler = defineCommandHandler({
|
|
|
41
136
|
await access(path.join(serverDir, 'package.json'));
|
|
42
137
|
debug('package.json found in server directory');
|
|
43
138
|
const cmd = customCommand ?? 'pnpm start';
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
139
|
+
const { executable, args } = parseCommand(cmd);
|
|
140
|
+
let currentProcess = await startProcess(executable, args, serverDir);
|
|
141
|
+
if (watchEnabled) {
|
|
142
|
+
const defaultWatchDir = path.join(serverDir, 'src');
|
|
143
|
+
const dirsToWatch = watchDirectories?.map((d) => path.resolve(d)) ?? [defaultWatchDir];
|
|
144
|
+
let debounceTimeout = null;
|
|
145
|
+
let isRestarting = false;
|
|
146
|
+
let lastRestartTime = 0;
|
|
147
|
+
const restartCooldownMs = debounceMs;
|
|
148
|
+
const handleFileChange = (changedPath) => {
|
|
149
|
+
if (isRestarting) {
|
|
150
|
+
debug('Already restarting, ignoring change: %s', changedPath);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const timeSinceLastRestart = Date.now() - lastRestartTime;
|
|
154
|
+
if (timeSinceLastRestart < restartCooldownMs) {
|
|
155
|
+
debug('In cooldown period (%dms remaining), ignoring: %s', restartCooldownMs - timeSinceLastRestart, changedPath);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (debounceTimeout) {
|
|
159
|
+
clearTimeout(debounceTimeout);
|
|
160
|
+
}
|
|
161
|
+
debug('File change detected, will restart in %dms: %s', debounceMs, changedPath);
|
|
162
|
+
debounceTimeout = setTimeout(() => {
|
|
163
|
+
debounceTimeout = null;
|
|
164
|
+
isRestarting = true;
|
|
165
|
+
debug('Restarting server due to file change: %s', changedPath);
|
|
166
|
+
killProcess(currentProcess)
|
|
167
|
+
.then(() => startProcess(executable, args, serverDir))
|
|
168
|
+
.then((newProcess) => {
|
|
169
|
+
currentProcess = newProcess;
|
|
170
|
+
lastRestartTime = Date.now();
|
|
171
|
+
debug('Server restarted with new PID: %d', newProcess.pid);
|
|
172
|
+
isRestarting = false;
|
|
173
|
+
})
|
|
174
|
+
.catch((error) => {
|
|
175
|
+
debug('Failed to restart server: %O', error);
|
|
176
|
+
isRestarting = false;
|
|
177
|
+
});
|
|
178
|
+
}, debounceMs);
|
|
179
|
+
};
|
|
180
|
+
createFileWatcher(dirsToWatch, handleFileChange);
|
|
181
|
+
debug('File watcher started for directories: %o', dirsToWatch);
|
|
57
182
|
}
|
|
58
|
-
debug('Server process started with PID: %d', pid);
|
|
59
|
-
subprocess.catch((error) => {
|
|
60
|
-
debug('Server process error: %O', error);
|
|
61
|
-
});
|
|
62
183
|
return {
|
|
63
184
|
type: 'ServerStarted',
|
|
64
185
|
data: {
|
|
65
186
|
serverDirectory,
|
|
66
|
-
pid,
|
|
187
|
+
pid: currentProcess.pid,
|
|
188
|
+
watching: watchEnabled,
|
|
67
189
|
},
|
|
68
190
|
timestamp: new Date(),
|
|
69
191
|
requestId: typedCommand.requestId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-server.js","sourceRoot":"","sources":["../../../src/commands/start-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"start-server.js","sourceRoot":"","sources":["../../../src/commands/start-server.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export declare const COMMANDS: (import("@auto-engineer/message-bus").UnifiedComm
|
|
|
12
12
|
data: Readonly<{
|
|
13
13
|
serverDirectory: string;
|
|
14
14
|
command?: string;
|
|
15
|
+
watch?: boolean;
|
|
16
|
+
watchDirectories?: string[];
|
|
17
|
+
debounceMs?: number;
|
|
15
18
|
}>;
|
|
16
19
|
timestamp?: Date;
|
|
17
20
|
requestId?: string;
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;MAA2C,CAAC;AAEjE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,cAAc,IAAI,yBAAyB,EAC3C,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,IAAI,yBAAyB,EAC3C,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC"}
|