@csdwd/ai-teams-agent 0.3.3 → 0.3.5
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/index.js +47 -17
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -247,6 +247,28 @@ var CLAUDE_HOOKS_ENABLED = process.env.CLAUDE_HOOKS_ENABLED !== "false";
|
|
|
247
247
|
var WORKSPACE_CLAUDE_MD = path3.join(DEFAULT_WORKSPACE, "CLAUDE.md");
|
|
248
248
|
var CLAUDE_MD_SECTION_START = "<!-- AI_TEAMS_AGENT_RULES_START -->";
|
|
249
249
|
var CLAUDE_MD_SECTION_END = "<!-- AI_TEAMS_AGENT_RULES_END -->";
|
|
250
|
+
function reinitializeConfig() {
|
|
251
|
+
fileConfig = loadConfigFile();
|
|
252
|
+
SERVER_PORT = process.env.AI_TEAMS_SERVER_PORT || "3789";
|
|
253
|
+
SERVER_URL = process.env.SERVER_URL || fileConfig?.serverUrl || `ws://localhost:${SERVER_PORT}`;
|
|
254
|
+
AUTH_TOKEN = process.env.AI_TEAMS_AUTH_TOKEN || fileConfig?.authToken || "";
|
|
255
|
+
EMPLOYEE_ID = process.env.EMPLOYEE_ID || fileConfig?.employeeId || "emp_local";
|
|
256
|
+
EMPLOYEE_NAME = process.env.EMPLOYEE_NAME || fileConfig?.employeeName || "Local Agent";
|
|
257
|
+
EMPLOYEE_LABELS = process.env.EMPLOYEE_LABELS?.split(",").map((item) => item.trim()).filter(Boolean) ?? [];
|
|
258
|
+
RECONNECT_MS = Number(process.env.RECONNECT_MS) || 5e3;
|
|
259
|
+
RUNNER_MODE = process.env.RUNNER_MODE || fileConfig?.runnerMode || "claude";
|
|
260
|
+
DEFAULT_WORKSPACE = process.env.DEFAULT_WORKSPACE || fileConfig?.workspace || process.cwd();
|
|
261
|
+
MAX_BUFFERED_MESSAGES = Number(process.env.AGENT_BUFFER_LIMIT) || 400;
|
|
262
|
+
AGENT_RECORDS_DIR = process.env.AGENT_RECORDS_DIR || path3.join(DEFAULT_WORKSPACE, ".ai-teams", "agents", EMPLOYEE_ID);
|
|
263
|
+
STATE_FILE = process.env.AGENT_STATE_FILE || path3.join(AGENT_RECORDS_DIR, "session-state.json");
|
|
264
|
+
LEGACY_STATE_FILE = path3.join(process.cwd(), `.agent-state.${EMPLOYEE_ID}.json`);
|
|
265
|
+
DAILY_RECORDS_DIR = path3.join(AGENT_RECORDS_DIR, "daily");
|
|
266
|
+
HOOKS_DIR = path3.join(AGENT_RECORDS_DIR, "hooks");
|
|
267
|
+
CLAUDE_HOOK_SCRIPT = path3.join(HOOKS_DIR, "claude-session-recorder.cjs");
|
|
268
|
+
CLAUDE_HOOK_SETTINGS = path3.join(HOOKS_DIR, "claude-hooks.settings.json");
|
|
269
|
+
CLAUDE_HOOKS_ENABLED = process.env.CLAUDE_HOOKS_ENABLED !== "false";
|
|
270
|
+
WORKSPACE_CLAUDE_MD = path3.join(DEFAULT_WORKSPACE, "CLAUDE.md");
|
|
271
|
+
}
|
|
250
272
|
|
|
251
273
|
// src/state.ts
|
|
252
274
|
import fs3 from "node:fs";
|
|
@@ -1045,7 +1067,6 @@ function connect(state, getMainTask, getQueueTask, onMessage) {
|
|
|
1045
1067
|
}
|
|
1046
1068
|
|
|
1047
1069
|
// src/index.ts
|
|
1048
|
-
var PKG_VERSION = "0.2.0";
|
|
1049
1070
|
var mainTask = null;
|
|
1050
1071
|
var queueTask = null;
|
|
1051
1072
|
var agentState = loadState();
|
|
@@ -1202,15 +1223,19 @@ function gracefulShutdown(signal) {
|
|
|
1202
1223
|
if (shuttingDown) return;
|
|
1203
1224
|
shuttingDown = true;
|
|
1204
1225
|
console.log(`[agent:${EMPLOYEE_ID}] received ${signal}, shutting down...`);
|
|
1226
|
+
const children = [];
|
|
1205
1227
|
for (const task of [mainTask, queueTask]) {
|
|
1206
1228
|
if (!task) continue;
|
|
1207
1229
|
task.cancelRequested = true;
|
|
1230
|
+
if (task.child) children.push(task.child);
|
|
1208
1231
|
task.child?.kill("SIGTERM");
|
|
1209
1232
|
send2({ type: "task.cancelled", taskId: task.taskId });
|
|
1210
1233
|
}
|
|
1234
|
+
mainTask = null;
|
|
1235
|
+
queueTask = null;
|
|
1211
1236
|
setTimeout(() => {
|
|
1212
|
-
for (const
|
|
1213
|
-
|
|
1237
|
+
for (const child of children) {
|
|
1238
|
+
child.kill("SIGKILL");
|
|
1214
1239
|
}
|
|
1215
1240
|
}, 2e3);
|
|
1216
1241
|
if (connState.reconnectTimer) clearTimeout(connState.reconnectTimer);
|
|
@@ -1218,7 +1243,7 @@ function gracefulShutdown(signal) {
|
|
|
1218
1243
|
if (connState.socket && connState.socket.readyState === WebSocket2.OPEN) {
|
|
1219
1244
|
connState.socket.close(1e3, "agent shutting down");
|
|
1220
1245
|
}
|
|
1221
|
-
setTimeout(() => process.exit(0),
|
|
1246
|
+
setTimeout(() => process.exit(0), 3e3);
|
|
1222
1247
|
}
|
|
1223
1248
|
process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
|
|
1224
1249
|
process.on("SIGINT", () => gracefulShutdown("SIGINT"));
|
|
@@ -1255,7 +1280,7 @@ if (isCli) {
|
|
|
1255
1280
|
getArgValue2 = getArgValue, resolveWorkspace3 = resolveWorkspace2, resolveAgentDir2 = resolveAgentDir, resolvePidFile2 = resolvePidFile, resolveLogDir2 = resolveLogDir, applyCliArgsToEnv2 = applyCliArgsToEnv;
|
|
1256
1281
|
const args = process.argv.slice(2);
|
|
1257
1282
|
if (args.includes("--version") || args.includes("-v")) {
|
|
1258
|
-
console.log(
|
|
1283
|
+
console.log("0.3.5");
|
|
1259
1284
|
process.exit(0);
|
|
1260
1285
|
}
|
|
1261
1286
|
if (args.includes("--help") || args.includes("-h")) {
|
|
@@ -1292,20 +1317,22 @@ if (isCli) {
|
|
|
1292
1317
|
} else {
|
|
1293
1318
|
const subcommand = args[0];
|
|
1294
1319
|
if (subcommand === "start" || subcommand === "restart") {
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1320
|
+
applyCliArgsToEnv();
|
|
1321
|
+
if (!process.env.__AI_TEAMS_DAEMON_WATCHDOG && !process.env.__AI_TEAMS_DAEMON_WORKER) {
|
|
1322
|
+
if (subcommand === "restart") {
|
|
1323
|
+
const pidFile = resolvePidFile();
|
|
1324
|
+
const status = getDaemonStatus(pidFile);
|
|
1325
|
+
if (status.running) {
|
|
1326
|
+
void stopDaemon(pidFile);
|
|
1327
|
+
}
|
|
1328
|
+
} else {
|
|
1329
|
+
const status = getDaemonStatus(resolvePidFile());
|
|
1330
|
+
if (status.running) {
|
|
1331
|
+
console.log(`Already running (PID ${status.pid}).`);
|
|
1332
|
+
process.exit(0);
|
|
1333
|
+
}
|
|
1306
1334
|
}
|
|
1307
1335
|
}
|
|
1308
|
-
applyCliArgsToEnv();
|
|
1309
1336
|
const fileConfig2 = loadConfigFile();
|
|
1310
1337
|
const hasEnvConfig = process.env.AI_TEAMS_AUTH_TOKEN || process.env.SERVER_URL;
|
|
1311
1338
|
if (!fileConfig2 && !hasEnvConfig) {
|
|
@@ -1320,6 +1347,8 @@ if (isCli) {
|
|
|
1320
1347
|
run: async () => {
|
|
1321
1348
|
console.log(" \u2713 \u6B63\u5728\u8FDE\u63A5\u670D\u52A1\u5668...");
|
|
1322
1349
|
connect2();
|
|
1350
|
+
return new Promise(() => {
|
|
1351
|
+
});
|
|
1323
1352
|
}
|
|
1324
1353
|
});
|
|
1325
1354
|
})();
|
|
@@ -1356,6 +1385,7 @@ if (isCli) {
|
|
|
1356
1385
|
await runSetup(null);
|
|
1357
1386
|
}
|
|
1358
1387
|
applyCliArgsToEnv();
|
|
1388
|
+
reinitializeConfig();
|
|
1359
1389
|
console.log(" \u2713 \u6B63\u5728\u8FDE\u63A5\u670D\u52A1\u5668...");
|
|
1360
1390
|
connect2();
|
|
1361
1391
|
})();
|