open-agents-ai 0.101.3 → 0.101.5

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/index.js CHANGED
@@ -6205,7 +6205,8 @@ var init_skill_tools = __esm({
6205
6205
  }
6206
6206
  async execute(args) {
6207
6207
  const start = performance.now();
6208
- const filter = typeof args["filter"] === "string" ? args["filter"].toLowerCase() : "";
6208
+ const filterRaw = args["filter"] ?? args["pattern"] ?? args["query"] ?? args["search"] ?? "";
6209
+ const filter = typeof filterRaw === "string" ? filterRaw.toLowerCase() : "";
6209
6210
  const sourceFilter = typeof args["source"] === "string" ? args["source"] : "";
6210
6211
  let skills = discoverSkills(this.repoRoot);
6211
6212
  if (filter) {
@@ -6258,7 +6259,7 @@ var init_skill_tools = __esm({
6258
6259
  }
6259
6260
  async execute(args) {
6260
6261
  const start = performance.now();
6261
- const name = String(args["name"] ?? args["skill_name"] ?? args["skillName"] ?? "").trim();
6262
+ const name = String(args["name"] ?? args["skill_name"] ?? args["skillName"] ?? args["skill"] ?? "").trim();
6262
6263
  if (!name) {
6263
6264
  return {
6264
6265
  success: false,
@@ -18270,6 +18271,8 @@ ${newerSummary}` : newerSummary;
18270
18271
  const content = msg.content;
18271
18272
  if (content.startsWith("Error:") || /^(FAIL|ERR!|TypeError|SyntaxError)/i.test(content))
18272
18273
  return msg;
18274
+ if (/\bError:|is required|not found|FAIL|permission denied/i.test(content) && content.length < 2e3)
18275
+ return msg;
18273
18276
  if (content.length < 500)
18274
18277
  return msg;
18275
18278
  const toolName = msg.tool_call_id ? toolCallNames.get(msg.tool_call_id) : void 0;
@@ -39816,6 +39819,8 @@ var init_status_bar = __esm({
39816
39819
  active = false;
39817
39820
  scrollRegionTop = 1;
39818
39821
  stdinHooked = false;
39822
+ /** Track previous terminal rows to clear ghost separators on resize */
39823
+ _prevTermRows = 0;
39819
39824
  /**
39820
39825
  * Depth-counted content write guard. Incremented by beginContentWrite(),
39821
39826
  * decremented by endContentWrite(). Footer is only redrawn and cursor
@@ -40097,6 +40102,7 @@ var init_status_bar = __esm({
40097
40102
  activate(scrollRegionTop) {
40098
40103
  this.scrollRegionTop = scrollRegionTop ?? 1;
40099
40104
  this.active = true;
40105
+ this._prevTermRows = process.stdout.rows ?? 24;
40100
40106
  this.applyScrollRegion();
40101
40107
  this.renderFooterAndPositionInput();
40102
40108
  this.hookStdin();
@@ -40140,12 +40146,18 @@ var init_status_bar = __esm({
40140
40146
  return;
40141
40147
  this.updateFooterHeight();
40142
40148
  const rows = process.stdout.rows ?? 24;
40149
+ const prevRows = this._prevTermRows;
40150
+ this._prevTermRows = rows;
40143
40151
  const pos = this.rowPositions(rows);
40144
40152
  const w = getTermWidth();
40145
40153
  const sep = c2.dim("\u2500".repeat(w));
40154
+ let clearGhosts = "";
40155
+ if (prevRows > 0 && rows < prevRows) {
40156
+ clearGhosts = "\x1B[1;" + rows + `r\x1B[${pos.bufferRow};1H\x1B[J`;
40157
+ }
40146
40158
  if (this.writeDepth > 0) {
40147
40159
  const inputWrap = this.wrapInput(w);
40148
- let buf = `\x1B[${this.scrollRegionTop};${pos.scrollEnd}r\x1B[?25l\x1B[?7l\x1B[${pos.bufferRow};1H\x1B[2K${this.buildBufferContent(w)}\x1B[${pos.topSepRow};1H\x1B[2K${sep}`;
40160
+ let buf = clearGhosts + `\x1B[${this.scrollRegionTop};${pos.scrollEnd}r\x1B[?25l\x1B[?7l\x1B[${pos.bufferRow};1H\x1B[2K${this.buildBufferContent(w)}\x1B[${pos.topSepRow};1H\x1B[2K${sep}`;
40149
40161
  for (let i = 0; i < inputWrap.lines.length; i++) {
40150
40162
  const row = pos.inputStartRow + i;
40151
40163
  const prefix = i === 0 ? this.promptText : " ".repeat(this.promptWidth);
@@ -40154,6 +40166,8 @@ var init_status_bar = __esm({
40154
40166
  buf += `\x1B[${pos.bottomSepRow};1H\x1B[2K${sep}\x1B[${pos.metricsRow};1H\x1B[2K${this.buildMetricsLine()}\x1B[?7h\x1B[${pos.scrollEnd};1H`;
40155
40167
  process.stdout.write(buf);
40156
40168
  } else {
40169
+ if (clearGhosts)
40170
+ process.stdout.write(clearGhosts);
40157
40171
  this.applyScrollRegion();
40158
40172
  this.renderFooterAndPositionInput();
40159
40173
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.101.3",
3
+ "version": "0.101.5",
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",
@@ -154,6 +154,7 @@ You are **Open Agent** (open-agents-ai), an autonomous AI coding agent running o
154
154
  - Skills: 250+ behavioral skills (skill_list), build new ones (skill_build)
155
155
  - P2P: connect to other agents via nexus (libp2p + NATS mesh)
156
156
  - Background tasks: run long commands in background, check status later
157
+ - Voice/TTS: text-to-speech via ONNX (cross-platform) or MLX (Apple Silicon) — use /voice to enable
157
158
  - Desktop/Vision: screenshot, click UI, OCR (via explore_tools)
158
159
  - Scheduling: cron jobs, reminders, agenda (via explore_tools)
159
160
  - Custom tools: create reusable tools from repeated workflows
@@ -69,6 +69,7 @@ You are **Open Agent** (open-agents-ai), an autonomous AI coding agent running o
69
69
  - Skills: 250+ behavioral skills (skill_list), build new ones (skill_build)
70
70
  - P2P: connect to other agents via nexus (libp2p + NATS mesh)
71
71
  - Background tasks: run long commands in background, check status later
72
+ - Voice/TTS: text-to-speech via ONNX (cross-platform) or MLX (Apple Silicon) — use /voice to enable
72
73
  - Desktop/Vision: screenshot, click UI, OCR (via explore_tools)
73
74
  - Scheduling: cron jobs, reminders, agenda (via explore_tools)
74
75
  - Custom tools: create reusable tools from repeated workflows