@kody-ade/kody-engine-lite 0.1.50 → 0.1.51

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
@@ -23,7 +23,7 @@ Most AI coding tools are **autocomplete** (Copilot) or **chat-based** (Cursor, C
23
23
  | **Incremental codebase improvement** | Step files encode gaps to fix — every task raises quality | No | No | No |
24
24
  | **Model flexible** | Any LLM via LiteLLM | GitHub models only | Proprietary | Cursor models |
25
25
  | **Open source** | MIT | Proprietary | Proprietary | Proprietary |
26
- | **Cost** | Your API costs only | $10-39/month | $20-500/month | Subscription |
26
+ | **Cost** | **Free** with free-tier models (Gemini, etc.) or pay-per-use with any LLM | $10-39/month | $20-500/month | Subscription |
27
27
 
28
28
  [Full comparison →](docs/COMPARISON.md)
29
29
 
package/dist/bin/cli.js CHANGED
@@ -1651,9 +1651,14 @@ function executeShipStage(ctx, _def) {
1651
1651
  const existingPr = getPRForBranch(head);
1652
1652
  if (existingPr) {
1653
1653
  updatePR(existingPr.number, body);
1654
- if (ctx.input.issueNumber && !ctx.input.local) {
1654
+ if (!ctx.input.local) {
1655
+ const msg = `\u2705 Fix pushed to PR #${existingPr.number}: ${existingPr.url}`;
1655
1656
  try {
1656
- postComment(ctx.input.issueNumber, `\u2705 Fix pushed to existing PR: ${existingPr.url}`);
1657
+ if (ctx.input.prNumber) {
1658
+ postPRComment(ctx.input.prNumber, msg);
1659
+ } else if (ctx.input.issueNumber) {
1660
+ postComment(ctx.input.issueNumber, msg);
1661
+ }
1657
1662
  } catch {
1658
1663
  }
1659
1664
  }
@@ -2872,7 +2877,8 @@ async function main() {
2872
2877
  setGhCwd(projectDir);
2873
2878
  logger.info(`Working directory: ${projectDir}`);
2874
2879
  }
2875
- if (input.issueNumber && input.command !== "review") {
2880
+ const isPRFix = input.command === "fix" && !!input.prNumber;
2881
+ if (input.issueNumber && input.command !== "review" && !isPRFix) {
2876
2882
  const taskAction = resolveForIssue(input.issueNumber, projectDir);
2877
2883
  logger.info(`Task action: ${taskAction.action}`);
2878
2884
  if (taskAction.action === "already-completed") {
@@ -2904,7 +2910,9 @@ async function main() {
2904
2910
  }
2905
2911
  let taskId = input.taskId;
2906
2912
  if (!taskId) {
2907
- if (input.issueNumber) {
2913
+ if (isPRFix) {
2914
+ taskId = `fix-pr-${input.prNumber}-${generateTaskId()}`;
2915
+ } else if (input.issueNumber) {
2908
2916
  taskId = `${input.issueNumber}-${generateTaskId()}`;
2909
2917
  } else if (input.command === "run" && input.task) {
2910
2918
  taskId = generateTaskId();
@@ -3005,7 +3013,17 @@ async function main() {
3005
3013
  fs20.writeFileSync(path19.join(taskDir, "task.md"), input.task);
3006
3014
  }
3007
3015
  const taskMdPath = path19.join(taskDir, "task.md");
3008
- if (!fs20.existsSync(taskMdPath) && input.issueNumber) {
3016
+ if (!fs20.existsSync(taskMdPath) && isPRFix && input.prNumber) {
3017
+ logger.info(`Fetching PR #${input.prNumber} details as task context...`);
3018
+ const prDetails = getPRDetails(input.prNumber);
3019
+ if (prDetails) {
3020
+ const taskContent = `# ${prDetails.title}
3021
+
3022
+ ${prDetails.body ?? ""}`;
3023
+ fs20.writeFileSync(taskMdPath, taskContent);
3024
+ logger.info(` Task loaded from PR #${input.prNumber}: ${prDetails.title}`);
3025
+ }
3026
+ } else if (!fs20.existsSync(taskMdPath) && input.issueNumber) {
3009
3027
  logger.info(`Fetching issue #${input.issueNumber} body as task...`);
3010
3028
  const issue = getIssue(input.issueNumber);
3011
3029
  if (issue) {
@@ -3092,6 +3110,7 @@ ${input.feedback}` : reviewContext;
3092
3110
  fromStage: input.fromStage,
3093
3111
  dryRun: input.dryRun,
3094
3112
  issueNumber: input.issueNumber,
3113
+ prNumber: input.prNumber,
3095
3114
  feedback: input.feedback,
3096
3115
  local: input.local,
3097
3116
  complexity: input.complexity
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine-lite",
3
- "version": "0.1.50",
3
+ "version": "0.1.51",
4
4
  "description": "Autonomous SDLC pipeline: Kody orchestration + Claude Code + LiteLLM",
5
5
  "license": "MIT",
6
6
  "type": "module",