@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.
@@ -10,7 +10,7 @@ import {
10
10
  provisionStopHook,
11
11
  requireHost,
12
12
  resolveChannels
13
- } from "../chunk-VCKY6MN2.js";
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
- writeFileSync(join(agentDir, file.relativePath), file.content);
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 Error(`Exit code ${code}: ${stderr.slice(0, 500)}`));
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
  };