@tarcisiopgs/lisa 1.37.1 → 1.38.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
- - **8 AI agents** — Claude Code, Gemini CLI, GitHub Copilot CLI, Cursor Agent, Aider, Goose, OpenCode, Codex
41
+ - **9 AI agents** — Claude Code, Gemini CLI, GitHub Copilot CLI, Cursor Agent, Aider, Goose, OpenCode, Codex, Kilo 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,6 +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
71
 
71
72
  Configure models and provider-specific options:
72
73
 
@@ -19,7 +19,7 @@ import {
19
19
  readContext,
20
20
  resolveModels,
21
21
  runWithFallback
22
- } from "./chunk-YRKJONH5.js";
22
+ } from "./chunk-MQG6ANVU.js";
23
23
  import {
24
24
  kanbanEmitter
25
25
  } from "./chunk-LR2GREZS.js";
@@ -90,7 +90,8 @@ var VALID_PROVIDERS = [
90
90
  "cursor",
91
91
  "goose",
92
92
  "aider",
93
- "codex"
93
+ "codex",
94
+ "kilo"
94
95
  ];
95
96
  var VALID_SOURCES = [
96
97
  "linear",
@@ -2080,6 +2080,30 @@ var GooseProvider = class {
2080
2080
  }
2081
2081
  };
2082
2082
 
2083
+ // src/providers/kilo.ts
2084
+ var KILO_ERROR_PATTERN = /^Error /;
2085
+ var KiloProvider = class {
2086
+ name = "kilo";
2087
+ async isAvailable() {
2088
+ return isCommandAvailable("kilo");
2089
+ }
2090
+ async run(prompt, opts) {
2091
+ try {
2092
+ const config = {
2093
+ name: "kilo",
2094
+ buildCommand: (promptCatExpr) => `kilo run --auto ${promptCatExpr}`,
2095
+ logLine: "kilo run --auto",
2096
+ kanbanLine: `$ kilo run --auto <prompt: ${prompt.length} chars>
2097
+ `,
2098
+ errorPattern: KILO_ERROR_PATTERN
2099
+ };
2100
+ return await runProviderProcess(config, prompt, opts);
2101
+ } catch (err) {
2102
+ return { success: false, output: formatError(err), duration: 0 };
2103
+ }
2104
+ }
2105
+ };
2106
+
2083
2107
  // src/providers/opencode.ts
2084
2108
  var OpenCodeProvider = class {
2085
2109
  name = "opencode";
@@ -2114,7 +2138,8 @@ var providers = {
2114
2138
  cursor: () => new CursorProvider(),
2115
2139
  goose: () => new GooseProvider(),
2116
2140
  aider: () => new AiderProvider(),
2117
- codex: () => new CodexProvider()
2141
+ codex: () => new CodexProvider(),
2142
+ kilo: () => new KiloProvider()
2118
2143
  };
2119
2144
  async function getAllProvidersWithAvailability() {
2120
2145
  const all = Object.values(providers).map((f) => f());
@@ -4119,7 +4144,8 @@ function resolveModels(config) {
4119
4144
  "cursor",
4120
4145
  "goose",
4121
4146
  "aider",
4122
- "codex"
4147
+ "codex",
4148
+ "kilo"
4123
4149
  ]);
4124
4150
  for (const m of providerModels) {
4125
4151
  if (knownProviders.has(m) && m !== config.provider) {
@@ -5,7 +5,7 @@ import {
5
5
  resolveModels,
6
6
  runWithFallback,
7
7
  saveLineage
8
- } from "./chunk-YRKJONH5.js";
8
+ } from "./chunk-MQG6ANVU.js";
9
9
  import {
10
10
  normalizeLabels
11
11
  } from "./chunk-LR2GREZS.js";
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  runLoop,
15
15
  saveConfig,
16
16
  validateConfig
17
- } from "./chunk-ZERJ7TNX.js";
17
+ } from "./chunk-AKG5WYVB.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-I5HJELVZ.js";
27
+ } from "./chunk-YC736WGU.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-YRKJONH5.js";
37
+ } from "./chunk-MQG6ANVU.js";
38
38
  import {
39
39
  kanbanEmitter
40
40
  } from "./chunk-LR2GREZS.js";
@@ -250,7 +250,8 @@ async function runConfigWizard(existing) {
250
250
  cursor: "Cursor Agent",
251
251
  goose: "Goose",
252
252
  aider: "Aider",
253
- codex: "OpenAI Codex"
253
+ codex: "OpenAI Codex",
254
+ kilo: "Kilo Code"
254
255
  };
255
256
  const providerModels = {
256
257
  claude: ["claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5", "claude-sonnet-4-5"],
@@ -275,6 +276,7 @@ async function runConfigWizard(existing) {
275
276
  "gpt-5.4"
276
277
  ]
277
278
  // cursor: populated dynamically below (fetchCursorModels)
279
+ // kilo: model configured in Kilo's own config (~/.config/kilo/kilo.jsonc)
278
280
  };
279
281
  const allProviders = await getAllProvidersWithAvailability();
280
282
  const available = allProviders.filter((r) => r.available).map((r) => r.provider);
@@ -289,7 +291,8 @@ async function runConfigWizard(existing) {
289
291
  ${pc.bold("GitHub Copilot CLI")} ${pc.dim("npm i -g @github/copilot-cli")}
290
292
  ${pc.bold("OpenAI Codex")} ${pc.dim("npm i -g @openai/codex")}
291
293
  ${pc.bold("Goose")} ${pc.dim("https://block.github.io/goose")}
292
- ${pc.bold("Aider")} ${pc.dim("pip install aider-chat")}`
294
+ ${pc.bold("Aider")} ${pc.dim("pip install aider-chat")}
295
+ ${pc.bold("Kilo Code")} ${pc.dim("npm i -g @kilocode/cli")}`
293
296
  );
294
297
  return process.exit(1);
295
298
  }
@@ -1847,7 +1850,7 @@ async function reviewAndCreate(plan2, planPath, opts) {
1847
1850
  log("Run `lisa run` when ready.");
1848
1851
  return;
1849
1852
  }
1850
- const { runLoop: runLoop2 } = await import("./loop-FKUQEJVU.js");
1853
+ const { runLoop: runLoop2 } = await import("./loop-DNAY72UG.js");
1851
1854
  const waves = buildExecutionWaves(plan2.issues);
1852
1855
  const maxWaveSize = Math.max(...waves.map((w) => w.length));
1853
1856
  await runLoop2(config2, {
@@ -2317,7 +2320,7 @@ Add them to your ${shell} and run: source ${shell}`));
2317
2320
  const initialCards = persistence.load();
2318
2321
  persistedCards = initialCards;
2319
2322
  persistence.start();
2320
- const { registerPlanBridge } = await import("./tui-bridge-MMP6OGHK.js");
2323
+ const { registerPlanBridge } = await import("./tui-bridge-L5NWRFEF.js");
2321
2324
  const cleanupPlan = registerPlanBridge(merged);
2322
2325
  onBeforeExit = () => {
2323
2326
  persistence.stop();
@@ -4,10 +4,10 @@ import {
4
4
  cleanupEventListeners,
5
5
  runDemoLoop,
6
6
  runLoop
7
- } from "./chunk-ZERJ7TNX.js";
7
+ } from "./chunk-AKG5WYVB.js";
8
8
  import {
9
9
  WATCH_POLL_INTERVAL_MS
10
- } from "./chunk-YRKJONH5.js";
10
+ } from "./chunk-MQG6ANVU.js";
11
11
  import "./chunk-LR2GREZS.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-I5HJELVZ.js";
9
+ } from "./chunk-YC736WGU.js";
10
10
  import {
11
11
  createSource,
12
12
  resolveModels,
13
13
  runWithFallback
14
- } from "./chunk-YRKJONH5.js";
14
+ } from "./chunk-MQG6ANVU.js";
15
15
  import {
16
16
  kanbanEmitter
17
17
  } from "./chunk-LR2GREZS.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tarcisiopgs/lisa",
3
- "version": "1.37.1",
3
+ "version": "1.38.0",
4
4
  "description": "Autonomous issue resolver",
5
5
  "keywords": [
6
6
  "loop",