micro-models-agent 0.56.2 → 0.56.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to Micro Models Agent (MMA) will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [0.56.4] - 2026-08-27
8
+
9
+ ### Fixed
10
+ - **Tools**: `list_dir` now filters `.mma/`, `node_modules/`, `.git/`, `dist/`, `build/`, `coverage/` from directory listings (consistent with indexer)
11
+ - **Hallucination**: `dotfileVariants` now tries dot-prefixing each directory component, not just basename (fixes false positive on `.mma/index-cache.json` → `mma/index-cache.json`)
12
+
7
13
  ## [0.56.1] - 2026-08-27
8
14
 
9
15
  ### Added
package/dist/main.js CHANGED
@@ -8425,11 +8425,12 @@ var init_grep_tool = __esm(() => {
8425
8425
  // src/tools/list-dir.ts
8426
8426
  import { readdirSync as readdirSync5, statSync as statSync3, existsSync as existsSync16 } from "fs";
8427
8427
  import { resolve as resolve8 } from "path";
8428
- var listDirTool;
8428
+ var IGNORED_DIRS, listDirTool;
8429
8429
  var init_list_dir = __esm(() => {
8430
8430
  init_i18n();
8431
8431
  init_path_validator();
8432
8432
  init_path_utils();
8433
+ IGNORED_DIRS = new Set(["node_modules", ".git", "dist", "build", "coverage", ".mma"]);
8433
8434
  listDirTool = {
8434
8435
  name: "list_dir",
8435
8436
  icon: "\uD83D\uDCC2",
@@ -8458,7 +8459,7 @@ var init_list_dir = __esm(() => {
8458
8459
  if (!existsSync16(resolved)) {
8459
8460
  return { success: false, output: t("file.dir_notfound", { path }) };
8460
8461
  }
8461
- const entries = readdirSync5(resolved);
8462
+ const entries = readdirSync5(resolved).filter((e) => !IGNORED_DIRS.has(e));
8462
8463
  const lines = entries.map((e) => {
8463
8464
  const full = resolve8(resolved, e);
8464
8465
  return statSync3(full).isDirectory() ? `${e}/` : e;
@@ -15086,11 +15087,22 @@ class FactualCheck {
15086
15087
  return false;
15087
15088
  }
15088
15089
  dotfileVariants(fp) {
15089
- const idx = Math.max(fp.lastIndexOf("/"), fp.lastIndexOf("\\"));
15090
- const base = idx >= 0 ? fp.slice(idx + 1) : fp;
15091
- if (base.startsWith("."))
15092
- return [fp];
15093
- return idx >= 0 ? [fp, `${fp.slice(0, idx + 1)}.${base}`] : [fp, `.${fp}`];
15090
+ const variants = [fp];
15091
+ const sep2 = fp.includes("\\") ? "\\" : "/";
15092
+ const parts = fp.split(sep2);
15093
+ const base = parts[parts.length - 1];
15094
+ if (!base.startsWith(".")) {
15095
+ const withDotBase = [...parts.slice(0, -1), `.${base}`].join(sep2);
15096
+ variants.push(withDotBase);
15097
+ }
15098
+ for (let i = 0;i < parts.length - 1; i++) {
15099
+ if (!parts[i].startsWith(".")) {
15100
+ const dotted = [...parts.slice(0, i), `.${parts[i]}`, ...parts.slice(i + 1)].join(sep2);
15101
+ if (!variants.includes(dotted))
15102
+ variants.push(dotted);
15103
+ }
15104
+ }
15105
+ return variants;
15094
15106
  }
15095
15107
  bareNameExists(name) {
15096
15108
  for (const cand of this.dotfileVariants(name)) {
@@ -15142,7 +15154,7 @@ class FactualCheck {
15142
15154
  break;
15143
15155
  const full = join17(dir, entry.name);
15144
15156
  if (entry.isDirectory()) {
15145
- if (!IGNORED_DIRS.has(entry.name)) {
15157
+ if (!IGNORED_DIRS2.has(entry.name)) {
15146
15158
  count = this.scanDir(full, index, count);
15147
15159
  }
15148
15160
  } else if (entry.isFile()) {
@@ -15160,11 +15172,11 @@ class FactualCheck {
15160
15172
  return extractFileLikeTokens(stripUrls(text));
15161
15173
  }
15162
15174
  }
15163
- var IGNORED_DIRS;
15175
+ var IGNORED_DIRS2;
15164
15176
  var init_factual = __esm(() => {
15165
15177
  init_i18n();
15166
15178
  init_js_identifiers();
15167
- IGNORED_DIRS = new Set([
15179
+ IGNORED_DIRS2 = new Set([
15168
15180
  "node_modules",
15169
15181
  ".git",
15170
15182
  "dist",
@@ -35879,7 +35891,6 @@ function createProgram() {
35879
35891
  createSecurityCommand(program2);
35880
35892
  createPluginCommand(program2);
35881
35893
  program2.command("changelog").description(t("cli.changelog_title", { version })).option("--from <version>", t("cli.changelog_range", { from: "..." })).action((opts) => {
35882
- console.error("[DEBUG] changelog action called");
35883
35894
  const changelog = readChangelog("micro-models-agent");
35884
35895
  if (!changelog) {
35885
35896
  console.log(pc2.yellow(t("cli.changelog_not_found")));
@@ -38380,9 +38391,6 @@ async function main() {
38380
38391
  const jsonMode = opts.json === true;
38381
38392
  const reasoningLevel = opts.reasoning;
38382
38393
  const isSubcommand = program2.args.length > 0 && cmdNames.has(program2.args[0]);
38383
- console.error("[DEBUG] program.args:", program2.args);
38384
- console.error("[DEBUG] cmdNames:", [...cmdNames]);
38385
- console.error("[DEBUG] isSubcommand:", isSubcommand);
38386
38394
  if (isSubcommand) {
38387
38395
  return;
38388
38396
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "micro-models-agent",
3
- "version": "0.56.2",
3
+ "version": "0.56.4",
4
4
  "description": "Micro Models Agent (MMA) — LLM agent harness for small models (Qwen3.5-9B, 32K-64K context)",
5
5
  "type": "module",
6
6
  "bin": {