@kody-ade/kody-engine 0.2.27 → 0.2.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.
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  └─────────────────────────────────────────────┘
19
19
  ```
20
20
 
21
- Every top-level command is its own auto-discovered executable (`run`, `fix`, `fix-ci`, `resolve`, `review`, `plan`, `orchestrator`, `release`, `watch-*`, `init`). The router has no hardcoded command switch beyond `ci`/`help`/`version` — drop a new `src/executables/<name>/` directory with a `profile.json` + `prompt.md` and `kody2 <name>` starts working. The executor knows nothing about any specific command.
21
+ Every top-level command is its own auto-discovered executable (`run`, `fix`, `fix-ci`, `resolve`, `review`, `sync`, `plan`, `plan-verify`, `orchestrator`, `release`, `watch-*`, `init`). The router has no hardcoded command switch beyond `ci`/`help`/`version` — drop a new `src/executables/<name>/` directory with a `profile.json` + `prompt.md` and `kody2 <name>` starts working. The executor knows nothing about any specific command.
22
22
 
23
23
  ## Install in a consumer repo
24
24
 
@@ -32,9 +32,11 @@ Every top-level command is its own auto-discovered executable (`run`, `fix`, `fi
32
32
 
33
33
  ```
34
34
  kody2 run --issue <N> # implement an issue
35
+ kody2 plan --issue <N> # produce a plan artifact for run
35
36
  kody2 fix --pr <N> [--feedback ...] # apply PR review feedback
36
37
  kody2 fix-ci --pr <N> [--run-id <ID>] # fix failing CI
37
38
  kody2 resolve --pr <N> # merge default branch in, resolve conflicts
39
+ kody2 sync --pr <N> # merge default branch into PR branch (no agent)
38
40
  kody2 review --pr <N> # read-only structured PR review
39
41
  kody2 ci --issue <N> # CI preflight + run
40
42
  ```
package/dist/bin/kody2.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@kody-ade/kody-engine",
6
- version: "0.2.27",
6
+ version: "0.2.28",
7
7
  description: "kody2 \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
8
8
  license: "MIT",
9
9
  type: "module",
@@ -359,6 +359,9 @@ async function runAgent(opts) {
359
359
  if (typeof opts.maxTurns === "number" && opts.maxTurns > 0) {
360
360
  queryOptions.maxTurns = opts.maxTurns;
361
361
  }
362
+ if (typeof opts.maxThinkingTokens === "number" && opts.maxThinkingTokens > 0) {
363
+ queryOptions.maxThinkingTokens = opts.maxThinkingTokens;
364
+ }
362
365
  if (typeof opts.systemPromptAppend === "string" && opts.systemPromptAppend.length > 0) {
363
366
  queryOptions.systemPrompt = { type: "preset", preset: "claude_code", append: opts.systemPromptAppend };
364
367
  }
@@ -837,6 +840,7 @@ function parseClaudeCode(p, raw) {
837
840
  model: typeof r.model === "string" ? r.model : "inherit",
838
841
  permissionMode,
839
842
  maxTurns: typeof r.maxTurns === "number" ? r.maxTurns : null,
843
+ maxThinkingTokens: typeof r.maxThinkingTokens === "number" ? r.maxThinkingTokens : null,
840
844
  systemPromptAppend: typeof r.systemPromptAppend === "string" ? r.systemPromptAppend : null,
841
845
  tools,
842
846
  hooks: Array.isArray(r.hooks) ? r.hooks : [],
@@ -3807,6 +3811,7 @@ async function runExecutable(profileName, input) {
3807
3811
  mcpServers: profile.claudeCode.mcpServers,
3808
3812
  pluginPaths: pluginPaths.length > 0 ? pluginPaths : void 0,
3809
3813
  maxTurns: profile.claudeCode.maxTurns,
3814
+ maxThinkingTokens: profile.claudeCode.maxThinkingTokens,
3810
3815
  systemPromptAppend: profile.claudeCode.systemPromptAppend,
3811
3816
  settingSources: profile.claudeCode.settingSources
3812
3817
  });
@@ -4346,6 +4351,14 @@ ${CHAT_HELP}`);
4346
4351
  `);
4347
4352
  return 64;
4348
4353
  }
4354
+ if (needsLitellmProxy(model)) {
4355
+ const code = installLitellmIfNeeded(cwd);
4356
+ if (code !== 0) {
4357
+ process.stderr.write(`error: litellm install failed (exit ${code})
4358
+ `);
4359
+ return 99;
4360
+ }
4361
+ }
4349
4362
  let litellm = null;
4350
4363
  try {
4351
4364
  litellm = await startLitellmIfNeeded(model, cwd);
@@ -87,6 +87,8 @@ export interface ClaudeCodeSpec {
87
87
  permissionMode: "default" | "acceptEdits" | "plan" | "bypassPermissions"
88
88
  /** null = unbounded. */
89
89
  maxTurns: number | null
90
+ /** Extended-thinking token budget. null = SDK default. */
91
+ maxThinkingTokens: number | null
90
92
  /** Text appended on top of Claude Code's baseline system prompt. */
91
93
  systemPromptAppend: string | null
92
94
  /** SDK built-in tools this executable is allowed to use (capability pack). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.2.27",
3
+ "version": "0.2.28",
4
4
  "description": "kody2 — autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,6 +12,18 @@
12
12
  "templates",
13
13
  "kody.config.schema.json"
14
14
  ],
15
+ "scripts": {
16
+ "kody2": "tsx bin/kody2.ts",
17
+ "build": "tsup && node scripts/copy-assets.cjs",
18
+ "test": "vitest run tests/unit tests/int --no-coverage",
19
+ "test:e2e": "vitest run tests/e2e --no-coverage",
20
+ "test:all": "vitest run tests --no-coverage",
21
+ "typecheck": "tsc --noEmit",
22
+ "lint": "biome check",
23
+ "lint:fix": "biome check --write",
24
+ "format": "biome format --write",
25
+ "prepublishOnly": "pnpm build"
26
+ },
15
27
  "dependencies": {
16
28
  "@anthropic-ai/claude-agent-sdk": "0.2.92"
17
29
  },
@@ -31,16 +43,5 @@
31
43
  "url": "git+https://github.com/aharonyaircohen/kody-engine.git"
32
44
  },
33
45
  "homepage": "https://github.com/aharonyaircohen/kody-engine",
34
- "bugs": "https://github.com/aharonyaircohen/kody-engine/issues",
35
- "scripts": {
36
- "kody2": "tsx bin/kody2.ts",
37
- "build": "tsup && node scripts/copy-assets.cjs",
38
- "test": "vitest run tests/unit tests/int --no-coverage",
39
- "test:e2e": "vitest run tests/e2e --no-coverage",
40
- "test:all": "vitest run tests --no-coverage",
41
- "typecheck": "tsc --noEmit",
42
- "lint": "biome check",
43
- "lint:fix": "biome check --write",
44
- "format": "biome format --write"
45
- }
46
- }
46
+ "bugs": "https://github.com/aharonyaircohen/kody-engine/issues"
47
+ }
@@ -76,13 +76,13 @@ jobs:
76
76
  node-version: 22
77
77
 
78
78
  - name: Write pip cache key for LiteLLM
79
- run: echo "litellm[proxy]" > "$RUNNER_TEMP/kody2-pip-requirements.txt"
79
+ run: echo "litellm[proxy]" > .kody2-pip-requirements.txt
80
80
 
81
81
  - uses: actions/setup-python@v5
82
82
  with:
83
83
  python-version: "3.12"
84
84
  cache: "pip"
85
- cache-dependency-path: ${{ runner.temp }}/kody2-pip-requirements.txt
85
+ cache-dependency-path: .kody2-pip-requirements.txt
86
86
 
87
87
  - env:
88
88
  ALL_SECRETS: ${{ toJSON(secrets) }}