@tarcisiopgs/lisa 1.41.0 → 1.42.0

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/README.md CHANGED
@@ -38,7 +38,7 @@ If something fails — pre-push hooks, quota limits, stuck processes — Lisa ha
38
38
  ## Features
39
39
 
40
40
  - **7 issue trackers** — Linear, GitHub Issues, GitLab Issues, Jira, Trello, Plane, Shortcut
41
- - **9 AI agents** — Claude Code, Gemini CLI, GitHub Copilot CLI, Cursor Agent, Aider, Goose, OpenCode, Codex, Kilo Code
41
+ - **10 AI agents** — Claude Code, Gemini CLI, GitHub Copilot CLI, Cursor Agent, Aider, Goose, OpenCode, Codex, Kilo Code, MiMo Code
42
42
  - **AI planning** — describe a goal, the AI brainstorms with you, decomposes it into issues with dependencies, created in your tracker
43
43
  - **Language-aware** — responds in the same language you write your goal in
44
44
  - **Spec compliance** — LLM-verified acceptance criteria check before PR creation, with auto-retry
@@ -67,7 +67,7 @@ If something fails — pre-push hooks, quota limits, stuck processes — Lisa ha
67
67
  | Gemini CLI | `gemini` | Goose | `goose` |
68
68
  | GitHub Copilot CLI | `copilot` | Aider | `aider` |
69
69
  | OpenCode | `opencode` | OpenAI Codex | `codex` |
70
- | Kilo Code | `kilo` | | |
70
+ | Kilo Code | `kilo` | MiMo Code | `mimo` |
71
71
 
72
72
  Configure models and provider-specific options:
73
73
 
@@ -5,7 +5,7 @@ import {
5
5
  resolveModels,
6
6
  runWithFallback,
7
7
  saveLineage
8
- } from "./chunk-LTVASWBM.js";
8
+ } from "./chunk-YSFHP3A3.js";
9
9
  import {
10
10
  normalizeLabels
11
11
  } from "./chunk-ZHB4S7SP.js";
@@ -111,6 +111,16 @@ function fetchOpenCodeModels() {
111
111
  return [];
112
112
  }
113
113
  }
114
+ function fetchMimoModels() {
115
+ try {
116
+ const raw = execSync("mimo models", { encoding: "utf-8", timeout: 1e4 });
117
+ const clean = raw.replace(/\x1b\[[0-9;]*[mGKHFA-Z]/g, "");
118
+ return clean.split("\n").map((l) => l.trim()).filter((m) => /^[a-z0-9][\w.-]*\/.+/i.test(m));
119
+ } catch (err) {
120
+ verbose(`Failed to fetch MiMo models: ${formatError(err)}`);
121
+ return [];
122
+ }
123
+ }
114
124
  function detectPlatformFromRemoteUrl(remoteUrl) {
115
125
  if (/github\.com/.test(remoteUrl)) return "cli";
116
126
  if (/gitlab\./.test(remoteUrl)) return "gitlab";
@@ -267,6 +277,7 @@ export {
267
277
  fetchCursorModels,
268
278
  fetchCopilotModels,
269
279
  fetchOpenCodeModels,
280
+ fetchMimoModels,
270
281
  detectPlatformFromRemoteUrl,
271
282
  detectPlatform,
272
283
  verifyPlatformCredential,
@@ -19,7 +19,7 @@ import {
19
19
  readContext,
20
20
  resolveModels,
21
21
  runWithFallback
22
- } from "./chunk-LTVASWBM.js";
22
+ } from "./chunk-YSFHP3A3.js";
23
23
  import {
24
24
  kanbanEmitter
25
25
  } from "./chunk-ZHB4S7SP.js";
@@ -91,7 +91,8 @@ var VALID_PROVIDERS = [
91
91
  "goose",
92
92
  "aider",
93
93
  "codex",
94
- "kilo"
94
+ "kilo",
95
+ "mimo"
95
96
  ];
96
97
  var VALID_SOURCES = [
97
98
  "linear",
@@ -2105,6 +2105,32 @@ var KiloProvider = class {
2105
2105
  }
2106
2106
  };
2107
2107
 
2108
+ // src/providers/mimo.ts
2109
+ var MIMO_ERROR_PATTERN = /^Error /;
2110
+ var MimoProvider = class {
2111
+ name = "mimo";
2112
+ async isAvailable() {
2113
+ return isCommandAvailable("mimo");
2114
+ }
2115
+ async run(prompt, opts) {
2116
+ try {
2117
+ if (opts.model) validateShellArg(opts.model, "model");
2118
+ const modelFlag = opts.model ? `--model ${opts.model}` : "";
2119
+ const config = {
2120
+ name: "mimo",
2121
+ buildCommand: (promptCatExpr) => `mimo run --dangerously-skip-permissions ${modelFlag} ${promptCatExpr}`,
2122
+ logLine: `mimo run --dangerously-skip-permissions ${modelFlag || "(default model)"}`,
2123
+ kanbanLine: `$ mimo run --dangerously-skip-permissions ${modelFlag || "(default model)"} <prompt: ${prompt.length} chars>
2124
+ `,
2125
+ errorPattern: MIMO_ERROR_PATTERN
2126
+ };
2127
+ return await runProviderProcess(config, prompt, opts);
2128
+ } catch (err) {
2129
+ return { success: false, output: formatError(err), duration: 0 };
2130
+ }
2131
+ }
2132
+ };
2133
+
2108
2134
  // src/providers/opencode.ts
2109
2135
  var OpenCodeProvider = class {
2110
2136
  name = "opencode";
@@ -2140,7 +2166,8 @@ var providers = {
2140
2166
  goose: () => new GooseProvider(),
2141
2167
  aider: () => new AiderProvider(),
2142
2168
  codex: () => new CodexProvider(),
2143
- kilo: () => new KiloProvider()
2169
+ kilo: () => new KiloProvider(),
2170
+ mimo: () => new MimoProvider()
2144
2171
  };
2145
2172
  async function getAllProvidersWithAvailability() {
2146
2173
  const all = Object.values(providers).map((f) => f());
@@ -4146,7 +4173,8 @@ function resolveModels(config) {
4146
4173
  "goose",
4147
4174
  "aider",
4148
4175
  "codex",
4149
- "kilo"
4176
+ "kilo",
4177
+ "mimo"
4150
4178
  ]);
4151
4179
  for (const m of providerModels) {
4152
4180
  if (knownProviders.has(m) && m !== config.provider) {
@@ -6,13 +6,14 @@ import {
6
6
  detectPlatformFromRemoteUrl,
7
7
  fetchCopilotModels,
8
8
  fetchCursorModels,
9
+ fetchMimoModels,
9
10
  fetchOpenCodeModels,
10
11
  getGitRepoName,
11
12
  getMissingEnvVars,
12
13
  getVersion,
13
14
  isCursorFreePlan,
14
15
  verifyPlatformCredential
15
- } from "./chunk-MC4SAOF2.js";
16
+ } from "./chunk-JALGARX3.js";
16
17
  import "./chunk-YBM6JNRO.js";
17
18
  import "./chunk-HPWL5JRW.js";
18
19
  import "./chunk-4MZ2565Y.js";
@@ -23,6 +24,7 @@ export {
23
24
  detectPlatformFromRemoteUrl,
24
25
  fetchCopilotModels,
25
26
  fetchCursorModels,
27
+ fetchMimoModels,
26
28
  fetchOpenCodeModels,
27
29
  getGitRepoName,
28
30
  getMissingEnvVars,
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  runLoop,
15
15
  saveConfig,
16
16
  validateConfig
17
- } from "./chunk-4TXH7PTM.js";
17
+ } from "./chunk-VVYGYOPG.js";
18
18
  import {
19
19
  CliError,
20
20
  buildExecutionWaves,
@@ -24,7 +24,7 @@ import {
24
24
  parseStructuredOutput,
25
25
  runPlanWizard,
26
26
  savePlan
27
- } from "./chunk-H2ATCMBI.js";
27
+ } from "./chunk-6ZWVYPR5.js";
28
28
  import {
29
29
  buildContextMdBlock,
30
30
  createProvider,
@@ -34,7 +34,7 @@ import {
34
34
  readContext,
35
35
  resolveModels,
36
36
  runWithFallback
37
- } from "./chunk-LTVASWBM.js";
37
+ } from "./chunk-YSFHP3A3.js";
38
38
  import {
39
39
  kanbanEmitter
40
40
  } from "./chunk-ZHB4S7SP.js";
@@ -55,11 +55,12 @@ import {
55
55
  detectPlatform,
56
56
  fetchCopilotModels,
57
57
  fetchCursorModels,
58
+ fetchMimoModels,
58
59
  fetchOpenCodeModels,
59
60
  getMissingEnvVars,
60
61
  getVersion,
61
62
  isCursorFreePlan
62
- } from "./chunk-MC4SAOF2.js";
63
+ } from "./chunk-JALGARX3.js";
63
64
  import {
64
65
  isGhCliAvailable
65
66
  } from "./chunk-YBM6JNRO.js";
@@ -251,7 +252,8 @@ async function runConfigWizard(existing) {
251
252
  goose: "Goose",
252
253
  aider: "Aider",
253
254
  codex: "OpenAI Codex",
254
- kilo: "Kilo Code"
255
+ kilo: "Kilo Code",
256
+ mimo: "MiMo Code"
255
257
  };
256
258
  const providerModels = {
257
259
  claude: ["claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5", "claude-sonnet-4-5"],
@@ -292,7 +294,8 @@ async function runConfigWizard(existing) {
292
294
  ${pc.bold("OpenAI Codex")} ${pc.dim("npm i -g @openai/codex")}
293
295
  ${pc.bold("Goose")} ${pc.dim("https://block.github.io/goose")}
294
296
  ${pc.bold("Aider")} ${pc.dim("pip install aider-chat")}
295
- ${pc.bold("Kilo Code")} ${pc.dim("npm i -g @kilocode/cli")}`
297
+ ${pc.bold("Kilo Code")} ${pc.dim("npm i -g @kilocode/cli")}
298
+ ${pc.bold("MiMo Code")} ${pc.dim("npm i -g @mimo-ai/cli")}`
296
299
  );
297
300
  return process.exit(1);
298
301
  }
@@ -426,6 +429,9 @@ remove them or set the file to ${pc.cyan("{}")} \u2014 MCP tools can cause OpenC
426
429
  "google/gemini-2.5-pro",
427
430
  "google/gemini-2.5-flash"
428
431
  ];
432
+ } else if (providerName === "mimo") {
433
+ const dynamic = fetchMimoModels();
434
+ availableModels = dynamic.length > 0 ? dynamic : ["mimo/mimo-auto", "xiaomi/mimo-v2.5-pro", "xiaomi/mimo-v2.5", "xiaomi/mimo-v2-flash"];
429
435
  }
430
436
  if (availableModels && availableModels.length > 0) {
431
437
  const modelSelection = await clack.multiselect({
@@ -1861,7 +1867,7 @@ async function reviewAndCreate(plan2, planPath, opts) {
1861
1867
  log("Run `lisa run` when ready.");
1862
1868
  return;
1863
1869
  }
1864
- const { runLoop: runLoop2 } = await import("./loop-VITV7WGU.js");
1870
+ const { runLoop: runLoop2 } = await import("./loop-3OBNPSYF.js");
1865
1871
  const waves = buildExecutionWaves(plan2.issues);
1866
1872
  const maxWaveSize = Math.max(...waves.map((w) => w.length));
1867
1873
  await runLoop2(config2, {
@@ -2345,7 +2351,7 @@ Add them to your ${shell} and run: source ${shell}`));
2345
2351
  const initialCards = persistence.load();
2346
2352
  persistedCards = initialCards;
2347
2353
  persistence.start();
2348
- const { registerPlanBridge } = await import("./tui-bridge-EFC4OZZU.js");
2354
+ const { registerPlanBridge } = await import("./tui-bridge-HVSZNVDO.js");
2349
2355
  const cleanupPlan = registerPlanBridge(merged);
2350
2356
  onBeforeExit = () => {
2351
2357
  persistence.stop();
@@ -2509,7 +2515,7 @@ process.on("unhandledRejection", (err) => {
2509
2515
  }
2510
2516
  process.exit(1);
2511
2517
  });
2512
- import("./detection-2Z6TXYHU.js").then(
2518
+ import("./detection-TGAZED6Q.js").then(
2513
2519
  ({ getVersion: getVersion2 }) => import("./version-D2YFKS7Q.js").then(({ checkForUpdate }) => checkForUpdate(getVersion2()))
2514
2520
  );
2515
2521
  runCli();
@@ -4,10 +4,10 @@ import {
4
4
  cleanupEventListeners,
5
5
  runDemoLoop,
6
6
  runLoop
7
- } from "./chunk-4TXH7PTM.js";
7
+ } from "./chunk-VVYGYOPG.js";
8
8
  import {
9
9
  WATCH_POLL_INTERVAL_MS
10
- } from "./chunk-LTVASWBM.js";
10
+ } from "./chunk-YSFHP3A3.js";
11
11
  import "./chunk-ZHB4S7SP.js";
12
12
  import "./chunk-ZOVVFU7B.js";
13
13
  import "./chunk-3EOEDL3T.js";
@@ -6,12 +6,12 @@ import {
6
6
  markdownToIssue,
7
7
  parseStructuredOutput,
8
8
  savePlan
9
- } from "./chunk-H2ATCMBI.js";
9
+ } from "./chunk-6ZWVYPR5.js";
10
10
  import {
11
11
  createSource,
12
12
  resolveModels,
13
13
  runWithFallback
14
- } from "./chunk-LTVASWBM.js";
14
+ } from "./chunk-YSFHP3A3.js";
15
15
  import {
16
16
  kanbanEmitter
17
17
  } from "./chunk-ZHB4S7SP.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tarcisiopgs/lisa",
3
- "version": "1.41.0",
3
+ "version": "1.42.0",
4
4
  "description": "Autonomous issue resolver",
5
5
  "keywords": [
6
6
  "loop",