@integrity-labs/agt-cli 0.10.2 → 0.10.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/dist/bin/agt.js +3 -3
- package/dist/bin/agt.js.map +1 -1
- package/dist/{chunk-VCKY6MN2.js → chunk-6YGOQRAR.js} +313 -18
- package/dist/chunk-6YGOQRAR.js.map +1 -0
- package/dist/lib/manager-worker.js +47 -4
- package/dist/lib/manager-worker.js.map +1 -1
- package/mcp/slack-channel.js +30 -3
- package/package.json +2 -2
- package/dist/chunk-VCKY6MN2.js.map +0 -1
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
provisionStopHook,
|
|
11
11
|
requireHost,
|
|
12
12
|
resolveChannels
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-6YGOQRAR.js";
|
|
14
14
|
import {
|
|
15
15
|
findTaskByTemplate,
|
|
16
16
|
getProjectDir,
|
|
@@ -1541,7 +1541,23 @@ async function processAgent(agent, agentStates) {
|
|
|
1541
1541
|
const fileNames = changedFiles.map((f) => f.relativePath).join(", ");
|
|
1542
1542
|
log(`${verb} '${agent.code_name}': ${fileNames}`);
|
|
1543
1543
|
for (const file of changedFiles) {
|
|
1544
|
-
|
|
1544
|
+
const filePath = join(agentDir, file.relativePath);
|
|
1545
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
1546
|
+
writeFileSync(filePath, file.content);
|
|
1547
|
+
}
|
|
1548
|
+
try {
|
|
1549
|
+
const provSkillsDir = join(agentDir, ".claude", "skills");
|
|
1550
|
+
if (existsSync(provSkillsDir)) {
|
|
1551
|
+
for (const folder of readdirSync(provSkillsDir)) {
|
|
1552
|
+
if (folder.startsWith("knowledge-")) {
|
|
1553
|
+
try {
|
|
1554
|
+
rmSync(join(provSkillsDir, folder), { recursive: true });
|
|
1555
|
+
} catch {
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
} catch {
|
|
1545
1561
|
}
|
|
1546
1562
|
lastProvisionAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
1547
1563
|
knownVersions.set(agent.agent_id, { charterVersion, toolsVersion });
|
|
@@ -2492,6 +2508,7 @@ async function executeAndProcessClaudeTask(codeName, agentId, task, prompt) {
|
|
|
2492
2508
|
} catch {
|
|
2493
2509
|
}
|
|
2494
2510
|
}
|
|
2511
|
+
delete childEnv.ANTHROPIC_API_KEY;
|
|
2495
2512
|
const { stdout, stderr } = await execFilePromiseLong("claude", claudeArgs, {
|
|
2496
2513
|
cwd: projectDir,
|
|
2497
2514
|
timeout: 3e5,
|
|
@@ -2519,6 +2536,14 @@ async function executeAndProcessClaudeTask(codeName, agentId, task, prompt) {
|
|
|
2519
2536
|
} catch (err) {
|
|
2520
2537
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
2521
2538
|
log(`[claude-scheduler] Task '${task.name}' failed for '${codeName}': ${errMsg}`);
|
|
2539
|
+
if (err instanceof ChildProcessError) {
|
|
2540
|
+
if (err.stdout.trim()) {
|
|
2541
|
+
log(`[claude-scheduler] Task '${task.name}' stdout for '${codeName}': ${err.stdout.trim().slice(0, 1e3)}`);
|
|
2542
|
+
}
|
|
2543
|
+
if (err.stderr.trim()) {
|
|
2544
|
+
log(`[claude-scheduler] Task '${task.name}' stderr for '${codeName}': ${err.stderr.trim().slice(0, 1e3)}`);
|
|
2545
|
+
}
|
|
2546
|
+
}
|
|
2522
2547
|
const updated = markTaskFired(codeName, task.taskId, "error");
|
|
2523
2548
|
claudeSchedulerStates.set(codeName, updated);
|
|
2524
2549
|
}
|
|
@@ -3022,6 +3047,7 @@ async function processDirectChatMessage(agent, msg) {
|
|
|
3022
3047
|
} catch {
|
|
3023
3048
|
}
|
|
3024
3049
|
}
|
|
3050
|
+
delete childEnv.ANTHROPIC_API_KEY;
|
|
3025
3051
|
const { stdout } = await execFilePromiseLong("claude", chatArgs, { cwd: projDir, stdin: "ignore", env: childEnv });
|
|
3026
3052
|
reply = stdout.trim() || "[No response from agent]";
|
|
3027
3053
|
} else {
|
|
@@ -3420,6 +3446,21 @@ async function execFilePromise(cmd, args) {
|
|
|
3420
3446
|
});
|
|
3421
3447
|
});
|
|
3422
3448
|
}
|
|
3449
|
+
var ChildProcessError = class extends Error {
|
|
3450
|
+
code;
|
|
3451
|
+
stdout;
|
|
3452
|
+
stderr;
|
|
3453
|
+
constructor(code, stdout, stderr) {
|
|
3454
|
+
const stderrSnippet = stderr.trim().slice(0, 500);
|
|
3455
|
+
const stdoutSnippet = stdout.trim().slice(0, 500);
|
|
3456
|
+
const detail = stderrSnippet || stdoutSnippet || "(no output)";
|
|
3457
|
+
super(`Exit code ${code}: ${detail}`);
|
|
3458
|
+
this.name = "ChildProcessError";
|
|
3459
|
+
this.code = code;
|
|
3460
|
+
this.stdout = stdout;
|
|
3461
|
+
this.stderr = stderr;
|
|
3462
|
+
}
|
|
3463
|
+
};
|
|
3423
3464
|
async function execFilePromiseLong(cmd, args, opts) {
|
|
3424
3465
|
const { spawn: sp } = await import("child_process");
|
|
3425
3466
|
return new Promise((resolve, reject) => {
|
|
@@ -3442,7 +3483,7 @@ async function execFilePromiseLong(cmd, args, opts) {
|
|
|
3442
3483
|
}, opts?.timeout ?? 12e4);
|
|
3443
3484
|
child.on("close", (code) => {
|
|
3444
3485
|
clearTimeout(timer);
|
|
3445
|
-
if (code !== 0) reject(new
|
|
3486
|
+
if (code !== 0) reject(new ChildProcessError(code, stdout, stderr));
|
|
3446
3487
|
else resolve({ stdout, stderr });
|
|
3447
3488
|
});
|
|
3448
3489
|
child.on("error", (err) => {
|
|
@@ -3731,7 +3772,8 @@ function generateArtifacts(agent, refreshData, adapter) {
|
|
|
3731
3772
|
team: refreshData.team ?? void 0,
|
|
3732
3773
|
timezone: agentTimezone,
|
|
3733
3774
|
reportsTo,
|
|
3734
|
-
personalitySeed
|
|
3775
|
+
personalitySeed,
|
|
3776
|
+
knowledge: (refreshData.knowledge ?? []).filter((k) => !!k.content)
|
|
3735
3777
|
};
|
|
3736
3778
|
const provisionOutput = provision(provisionInput, adapter.id);
|
|
3737
3779
|
return provisionOutput.artifacts;
|
|
@@ -3975,6 +4017,7 @@ process.on("disconnect", () => {
|
|
|
3975
4017
|
});
|
|
3976
4018
|
});
|
|
3977
4019
|
export {
|
|
4020
|
+
ChildProcessError,
|
|
3978
4021
|
startManager,
|
|
3979
4022
|
stopManager
|
|
3980
4023
|
};
|