@poolzin/pool-bot 2026.4.29 → 2026.4.31

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.4.29",
3
- "commit": "e2cd7ace753fbfb62c6481ad41f147f2281b561d",
4
- "builtAt": "2026-04-02T08:33:03.364Z"
2
+ "version": "2026.4.31",
3
+ "commit": "4486adc8409ed1305aa5fee2a37117ff7cab5aab",
4
+ "builtAt": "2026-04-04T22:45:58.617Z"
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-cli.d.ts","sourceRoot":"","sources":["../../src/cli/config-cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,eAAe,CAAC;AAyXhE,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,iBA4B9F;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,iBAqBhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,QAiOjD"}
1
+ {"version":3,"file":"config-cli.d.ts","sourceRoot":"","sources":["../../src/cli/config-cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,eAAe,CAAC;AA6XhE,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,iBA4B9F;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,iBAqBhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,QAkSjD"}
@@ -6,6 +6,10 @@ import { formatDocsLink } from "../terminal/links.js";
6
6
  import { formatCliCommand } from "./command-format.js";
7
7
  import { theme } from "../terminal/theme.js";
8
8
  import { shortenHomePath } from "../utils.js";
9
+ import { evolveSkill, findSkill } from "../infra/skill-evolution.js";
10
+ import { resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agents/agent-scope.js";
11
+ import { callGatewayFromCli } from "./gateway-rpc.js";
12
+ import { loadConfig } from "../config/config.js";
9
13
  function generateConfigJsonSchema() {
10
14
  return {
11
15
  $schema: "http://json-schema.org/draft-07/schema#",
@@ -633,4 +637,56 @@ export function registerConfigCli(program) {
633
637
  defaultRuntime.exit(1);
634
638
  }
635
639
  });
640
+ cmd
641
+ .command("evolve-skill")
642
+ .description("Evolve a skill file using LLM-based optimization (GEPA-inspired)")
643
+ .argument("<skill>", "Skill name or path to evolve")
644
+ .option("-n, --iterations <n>", "Number of optimization iterations", "5")
645
+ .option("--dry-run", "Show improvements without writing", false)
646
+ .action(async (skillName, opts) => {
647
+ try {
648
+ const cfg = loadConfig();
649
+ const agentId = resolveDefaultAgentId(cfg);
650
+ const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
651
+ const skillsDir = `${workspaceDir}/skills`;
652
+ let skillPath = null;
653
+ // Check if it's a direct path
654
+ if (skillName.includes("/") || skillName.includes("\\")) {
655
+ skillPath = skillName;
656
+ }
657
+ else {
658
+ skillPath = findSkill(skillName, skillsDir);
659
+ }
660
+ if (!skillPath) {
661
+ defaultRuntime.error(danger(`Skill '${skillName}' not found in ${skillsDir}`));
662
+ defaultRuntime.exit(1);
663
+ return;
664
+ }
665
+ const iterations = parseInt(opts.iterations, 10) || 5;
666
+ const dryRun = opts.dryRun === true;
667
+ defaultRuntime.log(info(`Evolving skill: ${skillPath}`));
668
+ defaultRuntime.log(info(`Iterations: ${iterations}, Dry run: ${dryRun}`));
669
+ // LLM call via gateway
670
+ const llmCall = async (prompt, systemPrompt) => {
671
+ const result = await callGatewayFromCli("agent.chat", {}, {
672
+ message: prompt,
673
+ systemPrompt,
674
+ model: cfg.agents?.defaults?.model?.primary,
675
+ });
676
+ return result?.reply ?? "";
677
+ };
678
+ const result = await evolveSkill({ skillPath, llmCall, config: { iterations, dryRun } });
679
+ if (result.improved && result.bestCandidate) {
680
+ defaultRuntime.log(info(`✅ Improved! ${result.original.name}: ${result.bestCandidate.score.toFixed(3)} (was baseline)`));
681
+ }
682
+ else {
683
+ defaultRuntime.log(info(`No improvement found for ${result.original.name}`));
684
+ }
685
+ defaultRuntime.exit(0);
686
+ }
687
+ catch (err) {
688
+ defaultRuntime.error(danger(String(err)));
689
+ defaultRuntime.exit(1);
690
+ }
691
+ });
636
692
  }