open-agents-ai 0.138.27 → 0.138.28

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 +59 -4
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -41935,7 +41935,7 @@ async function handleVoiceList(ctx, focusFilename) {
41935
41935
  title: focusFilename ? "Voice Clone References \u2014 Press any key to name your new voice" : "Voice Clone References",
41936
41936
  rl: ctx.rl,
41937
41937
  availableRows: ctx.availableContentRows?.(),
41938
- customKeyHint: " e rename p play",
41938
+ customKeyHint: " e rename p play x export i import",
41939
41939
  onDelete: (item, done) => {
41940
41940
  if (ctx.voiceDeleteClone?.(item.key)) {
41941
41941
  done(true);
@@ -41987,6 +41987,55 @@ async function handleVoiceList(ctx, focusFilename) {
41987
41987
  });
41988
41988
  return true;
41989
41989
  }
41990
+ if (key === "x" || key === "X") {
41991
+ const clone = clones.find((cl) => cl.filename === item.key);
41992
+ if (!clone)
41993
+ return false;
41994
+ const { join: pjoin2 } = __require("node:path");
41995
+ const defaultPath = pjoin2(process.cwd(), clone.filename);
41996
+ helpers.getInput("Export to:", defaultPath).then((destPath) => {
41997
+ if (destPath !== null && destPath.trim()) {
41998
+ try {
41999
+ const { copyFileSync: copyFileSync2 } = __require("node:fs");
42000
+ copyFileSync2(clone.path, destPath.trim());
42001
+ renderInfo(`Exported "${clone.name}" \u2192 ${destPath.trim()}`);
42002
+ } catch (err) {
42003
+ renderError(`Export failed: ${err.message}`);
42004
+ }
42005
+ }
42006
+ helpers.render();
42007
+ });
42008
+ return true;
42009
+ }
42010
+ if (key === "i" || key === "I") {
42011
+ helpers.getInput("Import from (file path):").then((srcPath) => {
42012
+ if (srcPath !== null && srcPath.trim()) {
42013
+ const src = srcPath.trim();
42014
+ try {
42015
+ const { existsSync: fe, copyFileSync: cpf, mkdirSync: mkd } = __require("node:fs");
42016
+ const { basename: basename16, join: pjoin } = __require("node:path");
42017
+ if (!fe(src)) {
42018
+ renderError(`File not found: ${src}`);
42019
+ helpers.render();
42020
+ return;
42021
+ }
42022
+ const refsDir = pjoin(__require("node:os").homedir(), ".open-agents", "voice", "clone-refs");
42023
+ mkd(refsDir, { recursive: true });
42024
+ const destName = basename16(src);
42025
+ const dest = pjoin(refsDir, destName);
42026
+ cpf(src, dest);
42027
+ renderInfo(`Imported "${destName}" \u2192 ${dest}`);
42028
+ helpers.done();
42029
+ } catch (err) {
42030
+ renderError(`Import failed: ${err.message}`);
42031
+ helpers.render();
42032
+ }
42033
+ } else {
42034
+ helpers.render();
42035
+ }
42036
+ });
42037
+ return true;
42038
+ }
41990
42039
  return false;
41991
42040
  }
41992
42041
  });
@@ -53707,8 +53756,10 @@ async function startInteractive(config, repoPath) {
53707
53756
  streamRenderer.onRenderedLine = (line) => statusBar.bufferContentLine(line);
53708
53757
  if (savedSettings.voice) {
53709
53758
  if (savedSettings.voiceModel) {
53710
- voiceEngine.setModel(savedSettings.voiceModel).catch(() => {
53711
- });
53759
+ voiceEngine.modelId = savedSettings.voiceModel;
53760
+ }
53761
+ if (savedSettings.voiceCloneRef) {
53762
+ voiceEngine.luxttsCloneRef = savedSettings.voiceCloneRef;
53712
53763
  }
53713
53764
  voiceEngine.toggle().then((msg) => {
53714
53765
  if (statusBar?.isActive && !statusBar.isStreaming) {
@@ -54391,7 +54442,11 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
54391
54442
  voiceEngine.renameCloneRef(filename, newName);
54392
54443
  },
54393
54444
  voiceSetActiveClone(filename) {
54394
- return voiceEngine.setActiveCloneRef(filename);
54445
+ const msg = voiceEngine.setActiveCloneRef(filename);
54446
+ if (voiceEngine.luxttsCloneRef) {
54447
+ saveGlobalSettings({ voiceCloneRef: voiceEngine.luxttsCloneRef });
54448
+ }
54449
+ return msg;
54395
54450
  },
54396
54451
  voiceSpeak(text) {
54397
54452
  voiceEngine.speak(text);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.138.27",
3
+ "version": "0.138.28",
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",