open-agents-ai 0.13.2 → 0.13.4

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.
Files changed (2) hide show
  1. package/dist/index.js +134 -59
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3999,12 +3999,15 @@ import { existsSync as existsSync8, readdirSync as readdirSync4, readFileSync as
3999
3999
  import { join as join11 } from "node:path";
4000
4000
  import { homedir as homedir3 } from "node:os";
4001
4001
  import { spawn as spawn3 } from "node:child_process";
4002
+ function globalToolsDir() {
4003
+ return join11(homedir3(), ".open-agents", "tools");
4004
+ }
4002
4005
  function projectToolsDir(repoRoot) {
4003
4006
  return join11(repoRoot, ".oa", "tools");
4004
4007
  }
4005
4008
  function loadCustomTools(repoRoot) {
4006
4009
  const definitions = /* @__PURE__ */ new Map();
4007
- for (const def of loadFromDirectory(GLOBAL_TOOLS_DIR)) {
4010
+ for (const def of loadFromDirectory(globalToolsDir())) {
4008
4011
  definitions.set(def.name, def);
4009
4012
  }
4010
4013
  const projectDir = projectToolsDir(repoRoot);
@@ -4018,14 +4021,14 @@ function buildCustomTools(repoRoot) {
4018
4021
  return definitions.map((def) => new CustomTool(def, repoRoot));
4019
4022
  }
4020
4023
  function saveCustomToolDefinition(definition, scope, repoRoot) {
4021
- const dir = scope === "project" && repoRoot ? projectToolsDir(repoRoot) : GLOBAL_TOOLS_DIR;
4024
+ const dir = scope === "project" && repoRoot ? projectToolsDir(repoRoot) : globalToolsDir();
4022
4025
  mkdirSync3(dir, { recursive: true });
4023
4026
  const filePath = join11(dir, `${definition.name}.json`);
4024
4027
  writeFileSync3(filePath, JSON.stringify(definition, null, 2), "utf-8");
4025
4028
  return filePath;
4026
4029
  }
4027
4030
  function deleteCustomToolDefinition(name, scope, repoRoot) {
4028
- const dir = scope === "project" && repoRoot ? projectToolsDir(repoRoot) : GLOBAL_TOOLS_DIR;
4031
+ const dir = scope === "project" && repoRoot ? projectToolsDir(repoRoot) : globalToolsDir();
4029
4032
  const filePath = join11(dir, `${name}.json`);
4030
4033
  if (existsSync8(filePath)) {
4031
4034
  const { unlinkSync: unlinkSync3 } = __require("node:fs");
@@ -4047,7 +4050,7 @@ function listCustomToolFiles(repoRoot) {
4047
4050
  });
4048
4051
  seen.add(def.name);
4049
4052
  }
4050
- for (const def of loadFromDirectory(GLOBAL_TOOLS_DIR)) {
4053
+ for (const def of loadFromDirectory(globalToolsDir())) {
4051
4054
  if (!seen.has(def.name)) {
4052
4055
  result.push({
4053
4056
  name: def.name,
@@ -4083,11 +4086,10 @@ function loadFromDirectory(dir) {
4083
4086
  }
4084
4087
  return definitions;
4085
4088
  }
4086
- var GLOBAL_TOOLS_DIR, CustomTool;
4089
+ var CustomTool;
4087
4090
  var init_custom_tool = __esm({
4088
4091
  "packages/execution/dist/tools/custom-tool.js"() {
4089
4092
  "use strict";
4090
- GLOBAL_TOOLS_DIR = join11(homedir3(), ".open-agents", "tools");
4091
4093
  CustomTool = class {
4092
4094
  name;
4093
4095
  description;
@@ -4491,25 +4493,98 @@ var init_tool_creator = __esm({
4491
4493
 
4492
4494
  // packages/execution/dist/tools/skill-tools.js
4493
4495
  import { existsSync as existsSync9, readdirSync as readdirSync5, readFileSync as readFileSync8 } from "node:fs";
4494
- import { join as join12, basename as basename2 } from "node:path";
4496
+ import { join as join12, basename as basename2, dirname as dirname2 } from "node:path";
4495
4497
  import { homedir as homedir4 } from "node:os";
4498
+ import { execSync as execSync8 } from "node:child_process";
4499
+ function getAiwgPaths() {
4500
+ const dataDir = join12(homedir4(), ".local", "share", "ai-writing-guide");
4501
+ return {
4502
+ frameworksDir: join12(dataDir, "agentic", "code", "frameworks"),
4503
+ addonsDir: join12(dataDir, "addons"),
4504
+ pluginsDir: join12(dataDir, "plugins")
4505
+ };
4506
+ }
4507
+ function findAiwgPackageRoot() {
4508
+ if (_cachedAiwgPkgRoot !== void 0)
4509
+ return _cachedAiwgPkgRoot;
4510
+ try {
4511
+ const globalRoot = execSync8("npm root -g", {
4512
+ encoding: "utf-8",
4513
+ timeout: 5e3,
4514
+ stdio: ["pipe", "pipe", "pipe"]
4515
+ }).trim();
4516
+ const candidate = join12(globalRoot, "aiwg");
4517
+ if (existsSync9(join12(candidate, "package.json"))) {
4518
+ _cachedAiwgPkgRoot = candidate;
4519
+ return candidate;
4520
+ }
4521
+ } catch {
4522
+ }
4523
+ const candidates = [
4524
+ "/usr/local/lib/node_modules/aiwg",
4525
+ "/usr/lib/node_modules/aiwg",
4526
+ join12(homedir4(), ".nvm", "versions")
4527
+ // nvm — need to search deeper
4528
+ ];
4529
+ for (const c3 of candidates) {
4530
+ if (c3.includes(".nvm")) {
4531
+ if (existsSync9(c3)) {
4532
+ try {
4533
+ for (const ver of readdirSync5(join12(c3, "node"), { withFileTypes: true })) {
4534
+ if (!ver.isDirectory())
4535
+ continue;
4536
+ const nvmPath = join12(c3, "node", ver.name, "lib", "node_modules", "aiwg");
4537
+ if (existsSync9(join12(nvmPath, "package.json"))) {
4538
+ _cachedAiwgPkgRoot = nvmPath;
4539
+ return nvmPath;
4540
+ }
4541
+ }
4542
+ } catch {
4543
+ }
4544
+ }
4545
+ } else if (existsSync9(join12(c3, "package.json"))) {
4546
+ _cachedAiwgPkgRoot = c3;
4547
+ return c3;
4548
+ }
4549
+ }
4550
+ _cachedAiwgPkgRoot = null;
4551
+ return null;
4552
+ }
4496
4553
  function discoverSkills(repoRoot) {
4497
4554
  const skills = /* @__PURE__ */ new Map();
4498
- if (existsSync9(AIWG_FRAMEWORKS_DIR)) {
4499
- for (const framework of safeReaddir(AIWG_FRAMEWORKS_DIR)) {
4500
- const skillsDir = join12(AIWG_FRAMEWORKS_DIR, framework, "skills");
4555
+ const { frameworksDir, addonsDir, pluginsDir } = getAiwgPaths();
4556
+ const pkgRoot = findAiwgPackageRoot();
4557
+ if (pkgRoot) {
4558
+ const pkgFrameworks = join12(pkgRoot, "agentic", "code", "frameworks");
4559
+ if (existsSync9(pkgFrameworks)) {
4560
+ for (const fw of safeReaddir(pkgFrameworks)) {
4561
+ const skillsDir = join12(pkgFrameworks, fw, "skills");
4562
+ loadSkillsFromDir(skillsDir, `framework:${fw}`, skills);
4563
+ }
4564
+ }
4565
+ const pkgPlugins = join12(pkgRoot, "plugins");
4566
+ if (existsSync9(pkgPlugins)) {
4567
+ for (const plugin of safeReaddir(pkgPlugins)) {
4568
+ const skillsDir = join12(pkgPlugins, plugin, "skills");
4569
+ loadSkillsFromDir(skillsDir, `plugin:${plugin}`, skills);
4570
+ }
4571
+ }
4572
+ }
4573
+ if (existsSync9(frameworksDir)) {
4574
+ for (const framework of safeReaddir(frameworksDir)) {
4575
+ const skillsDir = join12(frameworksDir, framework, "skills");
4501
4576
  loadSkillsFromDir(skillsDir, `framework:${framework}`, skills);
4502
4577
  }
4503
4578
  }
4504
- if (existsSync9(AIWG_ADDONS_DIR)) {
4505
- for (const addon of safeReaddir(AIWG_ADDONS_DIR)) {
4506
- const skillsDir = join12(AIWG_ADDONS_DIR, addon, "skills");
4579
+ if (existsSync9(addonsDir)) {
4580
+ for (const addon of safeReaddir(addonsDir)) {
4581
+ const skillsDir = join12(addonsDir, addon, "skills");
4507
4582
  loadSkillsFromDir(skillsDir, `addon:${addon}`, skills);
4508
4583
  }
4509
4584
  }
4510
- if (existsSync9(AIWG_PLUGINS_DIR)) {
4511
- for (const plugin of safeReaddir(AIWG_PLUGINS_DIR)) {
4512
- const skillsDir = join12(AIWG_PLUGINS_DIR, plugin, "skills");
4585
+ if (existsSync9(pluginsDir)) {
4586
+ for (const plugin of safeReaddir(pluginsDir)) {
4587
+ const skillsDir = join12(pluginsDir, plugin, "skills");
4513
4588
  loadSkillsFromDir(skillsDir, `plugin:${plugin}`, skills);
4514
4589
  }
4515
4590
  }
@@ -4641,14 +4716,10 @@ function parseTriggers(filePath) {
4641
4716
  }
4642
4717
  return triggers;
4643
4718
  }
4644
- var AIWG_DATA_DIR, AIWG_FRAMEWORKS_DIR, AIWG_ADDONS_DIR, AIWG_PLUGINS_DIR, SkillListTool, SkillExecuteTool;
4719
+ var _cachedAiwgPkgRoot, SkillListTool, SkillExecuteTool;
4645
4720
  var init_skill_tools = __esm({
4646
4721
  "packages/execution/dist/tools/skill-tools.js"() {
4647
4722
  "use strict";
4648
- AIWG_DATA_DIR = join12(homedir4(), ".local", "share", "ai-writing-guide");
4649
- AIWG_FRAMEWORKS_DIR = join12(AIWG_DATA_DIR, "agentic", "code", "frameworks");
4650
- AIWG_ADDONS_DIR = join12(AIWG_DATA_DIR, "addons");
4651
- AIWG_PLUGINS_DIR = join12(AIWG_DATA_DIR, "plugins");
4652
4723
  SkillListTool = class {
4653
4724
  name = "skill_list";
4654
4725
  description = "List all available AIWG skills with their descriptions and trigger patterns. Use this to discover skills that can help with the current task.";
@@ -9880,10 +9951,10 @@ async function handleUpdate(subcommand, repoRoot, savePendingTaskState) {
9880
9951
  try {
9881
9952
  const { createRequire: createRequire4 } = await import("node:module");
9882
9953
  const { fileURLToPath: fileURLToPath3 } = await import("node:url");
9883
- const { dirname: dirname4, join: join26 } = await import("node:path");
9954
+ const { dirname: dirname5, join: join26 } = await import("node:path");
9884
9955
  const { existsSync: existsSync17 } = await import("node:fs");
9885
9956
  const req = createRequire4(import.meta.url);
9886
- const thisDir = dirname4(fileURLToPath3(import.meta.url));
9957
+ const thisDir = dirname5(fileURLToPath3(import.meta.url));
9887
9958
  const candidates = [
9888
9959
  join26(thisDir, "..", "package.json"),
9889
9960
  join26(thisDir, "..", "..", "package.json"),
@@ -9974,7 +10045,7 @@ var init_commands = __esm({
9974
10045
 
9975
10046
  // packages/cli/dist/tui/setup.js
9976
10047
  import * as readline from "node:readline";
9977
- import { execSync as execSync8 } from "node:child_process";
10048
+ import { execSync as execSync9 } from "node:child_process";
9978
10049
  import { existsSync as existsSync11, writeFileSync as writeFileSync5, mkdirSync as mkdirSync5 } from "node:fs";
9979
10050
  import { join as join16 } from "node:path";
9980
10051
  import { homedir as homedir6 } from "node:os";
@@ -9984,7 +10055,7 @@ function detectSystemSpecs() {
9984
10055
  let gpuVramGB = 0;
9985
10056
  let gpuName = "";
9986
10057
  try {
9987
- const memInfo = execSync8("free -b 2>/dev/null || sysctl -n hw.memsize 2>/dev/null", {
10058
+ const memInfo = execSync9("free -b 2>/dev/null || sysctl -n hw.memsize 2>/dev/null", {
9988
10059
  encoding: "utf8",
9989
10060
  timeout: 5e3
9990
10061
  });
@@ -10004,7 +10075,7 @@ function detectSystemSpecs() {
10004
10075
  } catch {
10005
10076
  }
10006
10077
  try {
10007
- const nvidiaSmi = execSync8("nvidia-smi --query-gpu=memory.total,name --format=csv,noheader,nounits 2>/dev/null", { encoding: "utf8", timeout: 5e3 });
10078
+ const nvidiaSmi = execSync9("nvidia-smi --query-gpu=memory.total,name --format=csv,noheader,nounits 2>/dev/null", { encoding: "utf8", timeout: 5e3 });
10008
10079
  const lines = nvidiaSmi.trim().split("\n");
10009
10080
  if (lines.length > 0) {
10010
10081
  for (const line of lines) {
@@ -10066,7 +10137,7 @@ function ask(rl, question) {
10066
10137
  }
10067
10138
  function pullModelWithAutoUpdate(tag) {
10068
10139
  try {
10069
- execSync8(`ollama pull ${tag}`, {
10140
+ execSync9(`ollama pull ${tag}`, {
10070
10141
  stdio: "inherit",
10071
10142
  timeout: 36e5
10072
10143
  // 1 hour max
@@ -10083,7 +10154,7 @@ function pullModelWithAutoUpdate(tag) {
10083
10154
 
10084
10155
  `);
10085
10156
  try {
10086
- execSync8("curl -fsSL https://ollama.com/install.sh | sh", {
10157
+ execSync9("curl -fsSL https://ollama.com/install.sh | sh", {
10087
10158
  stdio: "inherit",
10088
10159
  timeout: 3e5
10089
10160
  // 5 min max for install
@@ -10094,7 +10165,7 @@ function pullModelWithAutoUpdate(tag) {
10094
10165
  process.stdout.write(` ${c2.cyan("\u25CF")} Retrying pull of ${c2.bold(tag)}...
10095
10166
 
10096
10167
  `);
10097
- execSync8(`ollama pull ${tag}`, {
10168
+ execSync9(`ollama pull ${tag}`, {
10098
10169
  stdio: "inherit",
10099
10170
  timeout: 36e5
10100
10171
  });
@@ -10277,7 +10348,7 @@ async function doSetup(config, rl) {
10277
10348
  const modelfilePath = join16(modelDir2, `Modelfile.${customName}`);
10278
10349
  writeFileSync5(modelfilePath, modelfileContent + "\n", "utf8");
10279
10350
  process.stdout.write(` ${c2.dim("Creating model...")} `);
10280
- execSync8(`ollama create ${customName} -f ${modelfilePath}`, {
10351
+ execSync9(`ollama create ${customName} -f ${modelfilePath}`, {
10281
10352
  stdio: "pipe",
10282
10353
  timeout: 12e4
10283
10354
  });
@@ -10362,7 +10433,7 @@ var init_setup = __esm({
10362
10433
  // packages/cli/dist/tui/project-context.js
10363
10434
  import { existsSync as existsSync12, readFileSync as readFileSync10, readdirSync as readdirSync7 } from "node:fs";
10364
10435
  import { join as join17, basename as basename4 } from "node:path";
10365
- import { execSync as execSync9 } from "node:child_process";
10436
+ import { execSync as execSync10 } from "node:child_process";
10366
10437
  import { homedir as homedir7, platform, release } from "node:os";
10367
10438
  function loadProjectFiles(repoRoot) {
10368
10439
  const discovered = discoverContextFiles(repoRoot);
@@ -10393,19 +10464,19 @@ function loadProjectMap(repoRoot) {
10393
10464
  }
10394
10465
  function getGitInfo(repoRoot) {
10395
10466
  try {
10396
- execSync9("git rev-parse --is-inside-work-tree", { cwd: repoRoot, stdio: "pipe" });
10467
+ execSync10("git rev-parse --is-inside-work-tree", { cwd: repoRoot, stdio: "pipe" });
10397
10468
  } catch {
10398
10469
  return "";
10399
10470
  }
10400
10471
  const lines = [];
10401
10472
  try {
10402
- const branch = execSync9("git branch --show-current", { cwd: repoRoot, encoding: "utf-8", stdio: "pipe" }).trim();
10473
+ const branch = execSync10("git branch --show-current", { cwd: repoRoot, encoding: "utf-8", stdio: "pipe" }).trim();
10403
10474
  if (branch)
10404
10475
  lines.push(`Branch: ${branch}`);
10405
10476
  } catch {
10406
10477
  }
10407
10478
  try {
10408
- const status = execSync9("git status --porcelain", { cwd: repoRoot, encoding: "utf-8", stdio: "pipe" }).trim();
10479
+ const status = execSync10("git status --porcelain", { cwd: repoRoot, encoding: "utf-8", stdio: "pipe" }).trim();
10409
10480
  if (status) {
10410
10481
  const changed = status.split("\n").length;
10411
10482
  lines.push(`Working tree: ${changed} changed file(s)`);
@@ -10415,7 +10486,7 @@ function getGitInfo(repoRoot) {
10415
10486
  } catch {
10416
10487
  }
10417
10488
  try {
10418
- const log = execSync9("git log --oneline -5 --no-decorate", { cwd: repoRoot, encoding: "utf-8", stdio: "pipe" }).trim();
10489
+ const log = execSync10("git log --oneline -5 --no-decorate", { cwd: repoRoot, encoding: "utf-8", stdio: "pipe" }).trim();
10419
10490
  if (log)
10420
10491
  lines.push(`Recent commits:
10421
10492
  ${log}`);
@@ -11463,10 +11534,16 @@ var init_carousel = __esm({
11463
11534
  import { existsSync as existsSync13, mkdirSync as mkdirSync6, writeFileSync as writeFileSync6, readFileSync as readFileSync11, unlinkSync as unlinkSync2 } from "node:fs";
11464
11535
  import { join as join18 } from "node:path";
11465
11536
  import { homedir as homedir8, tmpdir as tmpdir2, platform as platform2 } from "node:os";
11466
- import { execSync as execSync10, spawn as nodeSpawn } from "node:child_process";
11537
+ import { execSync as execSync11, spawn as nodeSpawn } from "node:child_process";
11467
11538
  import { createRequire } from "node:module";
11539
+ function voiceDir() {
11540
+ return join18(homedir8(), ".open-agents", "voice");
11541
+ }
11542
+ function modelsDir() {
11543
+ return join18(voiceDir(), "models");
11544
+ }
11468
11545
  function modelDir(id) {
11469
- return join18(MODELS_DIR, id);
11546
+ return join18(modelsDir(), id);
11470
11547
  }
11471
11548
  function modelOnnxPath(id) {
11472
11549
  return join18(modelDir(id), "model.onnx");
@@ -11568,7 +11645,7 @@ function formatBytes2(bytes) {
11568
11645
  return `${(bytes / 1024).toFixed(0)}KB`;
11569
11646
  return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
11570
11647
  }
11571
- var VOICE_MODELS, VOICE_DIR, MODELS_DIR, VoiceEngine;
11648
+ var VOICE_MODELS, VoiceEngine;
11572
11649
  var init_voice = __esm({
11573
11650
  "packages/cli/dist/tui/voice.js"() {
11574
11651
  "use strict";
@@ -11587,8 +11664,6 @@ var init_voice = __esm({
11587
11664
  configUrl: "https://raw.githubusercontent.com/robit-man/combine_overwatch_onnx/main/overwatch.onnx.json"
11588
11665
  }
11589
11666
  };
11590
- VOICE_DIR = join18(homedir8(), ".open-agents", "voice");
11591
- MODELS_DIR = join18(VOICE_DIR, "models");
11592
11667
  VoiceEngine = class {
11593
11668
  enabled = false;
11594
11669
  modelId = "glados";
@@ -11877,7 +11952,7 @@ var init_voice = __esm({
11877
11952
  }
11878
11953
  for (const player of ["paplay", "pw-play", "aplay"]) {
11879
11954
  try {
11880
- execSync10(`which ${player}`, { stdio: "pipe" });
11955
+ execSync11(`which ${player}`, { stdio: "pipe" });
11881
11956
  return [player, path];
11882
11957
  } catch {
11883
11958
  }
@@ -11899,8 +11974,8 @@ var init_voice = __esm({
11899
11974
  async ensureRuntime() {
11900
11975
  if (this.ort)
11901
11976
  return;
11902
- mkdirSync6(VOICE_DIR, { recursive: true });
11903
- const pkgPath = join18(VOICE_DIR, "package.json");
11977
+ mkdirSync6(voiceDir(), { recursive: true });
11978
+ const pkgPath = join18(voiceDir(), "package.json");
11904
11979
  const expectedDeps = {
11905
11980
  "onnxruntime-node": "^1.21.0",
11906
11981
  "phonemizer": "^1.2.1"
@@ -11922,20 +11997,20 @@ var init_voice = __esm({
11922
11997
  dependencies: expectedDeps
11923
11998
  }, null, 2));
11924
11999
  }
11925
- const voiceRequire = createRequire(join18(VOICE_DIR, "index.js"));
12000
+ const voiceRequire = createRequire(join18(voiceDir(), "index.js"));
11926
12001
  try {
11927
12002
  this.ort = voiceRequire("onnxruntime-node");
11928
12003
  } catch {
11929
12004
  renderInfo("Installing ONNX runtime for voice synthesis...");
11930
12005
  try {
11931
- execSync10("npm install --no-audit --no-fund", {
11932
- cwd: VOICE_DIR,
12006
+ execSync11("npm install --no-audit --no-fund", {
12007
+ cwd: voiceDir(),
11933
12008
  stdio: "pipe",
11934
12009
  timeout: 12e4
11935
12010
  });
11936
12011
  this.ort = voiceRequire("onnxruntime-node");
11937
12012
  } catch (err) {
11938
- throw new Error(`Failed to install voice dependencies. Try manually: cd ${VOICE_DIR} && npm install
12013
+ throw new Error(`Failed to install voice dependencies. Try manually: cd ${voiceDir()} && npm install
11939
12014
  Error: ${err instanceof Error ? err.message : String(err)}`);
11940
12015
  }
11941
12016
  }
@@ -11945,15 +12020,15 @@ Error: ${err instanceof Error ? err.message : String(err)}`);
11945
12020
  } catch {
11946
12021
  renderInfo("Installing phonemizer for voice synthesis...");
11947
12022
  try {
11948
- execSync10("npm install --no-audit --no-fund", {
11949
- cwd: VOICE_DIR,
12023
+ execSync11("npm install --no-audit --no-fund", {
12024
+ cwd: voiceDir(),
11950
12025
  stdio: "pipe",
11951
12026
  timeout: 12e4
11952
12027
  });
11953
12028
  const phonemizerMod = voiceRequire("phonemizer");
11954
12029
  this.phonemizeFn = phonemizerMod.phonemize ?? phonemizerMod.default?.phonemize ?? phonemizerMod;
11955
12030
  } catch (err) {
11956
- throw new Error(`Failed to install phonemizer. Try manually: cd ${VOICE_DIR} && npm install
12031
+ throw new Error(`Failed to install phonemizer. Try manually: cd ${voiceDir()} && npm install
11957
12032
  Error: ${err instanceof Error ? err.message : String(err)}`);
11958
12033
  }
11959
12034
  }
@@ -12408,7 +12483,7 @@ var init_edit_history = __esm({
12408
12483
  // packages/cli/dist/tui/dream-engine.js
12409
12484
  import { mkdirSync as mkdirSync8, writeFileSync as writeFileSync7, readFileSync as readFileSync12, existsSync as existsSync14, cpSync, rmSync, readdirSync as readdirSync8 } from "node:fs";
12410
12485
  import { join as join20, basename as basename5 } from "node:path";
12411
- import { execSync as execSync11 } from "node:child_process";
12486
+ import { execSync as execSync12 } from "node:child_process";
12412
12487
  function adaptTool(tool) {
12413
12488
  return {
12414
12489
  name: tool.name,
@@ -12661,7 +12736,7 @@ var init_dream_engine = __esm({
12661
12736
  }
12662
12737
  }
12663
12738
  try {
12664
- const output = execSync11(cmd, {
12739
+ const output = execSync12(cmd, {
12665
12740
  cwd: this.repoRoot,
12666
12741
  timeout: 3e4,
12667
12742
  encoding: "utf-8",
@@ -12881,17 +12956,17 @@ Dreams directory: ${this.dreamsDir}`);
12881
12956
  try {
12882
12957
  mkdirSync8(checkpointDir, { recursive: true });
12883
12958
  try {
12884
- const gitStatus = execSync11("git status --porcelain", {
12959
+ const gitStatus = execSync12("git status --porcelain", {
12885
12960
  cwd: this.repoRoot,
12886
12961
  encoding: "utf-8",
12887
12962
  timeout: 1e4
12888
12963
  });
12889
- const gitDiff = execSync11("git diff", {
12964
+ const gitDiff = execSync12("git diff", {
12890
12965
  cwd: this.repoRoot,
12891
12966
  encoding: "utf-8",
12892
12967
  timeout: 1e4
12893
12968
  });
12894
- const gitHash = execSync11("git rev-parse HEAD 2>/dev/null || echo 'no-git'", {
12969
+ const gitHash = execSync12("git rev-parse HEAD 2>/dev/null || echo 'no-git'", {
12895
12970
  cwd: this.repoRoot,
12896
12971
  encoding: "utf-8",
12897
12972
  timeout: 5e3
@@ -13301,7 +13376,7 @@ var init_status_bar = __esm({
13301
13376
  import * as readline2 from "node:readline";
13302
13377
  import { Writable } from "node:stream";
13303
13378
  import { cwd } from "node:process";
13304
- import { resolve as resolve12, join as join21, dirname as dirname2 } from "node:path";
13379
+ import { resolve as resolve12, join as join21, dirname as dirname3 } from "node:path";
13305
13380
  import { createRequire as createRequire2 } from "node:module";
13306
13381
  import { fileURLToPath } from "node:url";
13307
13382
  import { readFileSync as readFileSync13 } from "node:fs";
@@ -13310,7 +13385,7 @@ import { extname as extname5 } from "node:path";
13310
13385
  function getVersion() {
13311
13386
  try {
13312
13387
  const require2 = createRequire2(import.meta.url);
13313
- const thisDir = dirname2(fileURLToPath(import.meta.url));
13388
+ const thisDir = dirname3(fileURLToPath(import.meta.url));
13314
13389
  const candidates = [
13315
13390
  join21(thisDir, "..", "package.json"),
13316
13391
  join21(thisDir, "..", "..", "package.json"),
@@ -15116,7 +15191,7 @@ init_updater();
15116
15191
  import { parseArgs as nodeParseArgs2 } from "node:util";
15117
15192
  import { createRequire as createRequire3 } from "node:module";
15118
15193
  import { fileURLToPath as fileURLToPath2 } from "node:url";
15119
- import { dirname as dirname3, join as join25 } from "node:path";
15194
+ import { dirname as dirname4, join as join25 } from "node:path";
15120
15195
 
15121
15196
  // packages/cli/dist/cli.js
15122
15197
  import { createInterface } from "node:readline";
@@ -15223,7 +15298,7 @@ init_output();
15223
15298
  function getVersion2() {
15224
15299
  try {
15225
15300
  const require2 = createRequire3(import.meta.url);
15226
- const pkgPath = join25(dirname3(fileURLToPath2(import.meta.url)), "..", "package.json");
15301
+ const pkgPath = join25(dirname4(fileURLToPath2(import.meta.url)), "..", "package.json");
15227
15302
  const pkg = require2(pkgPath);
15228
15303
  return pkg.version;
15229
15304
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.13.2",
3
+ "version": "0.13.4",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",