@kody-ade/kody-engine 0.4.536 → 0.4.537

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/dist/bin/kody.js CHANGED
@@ -15,7 +15,7 @@ var init_package = __esm({
15
15
  "package.json"() {
16
16
  package_default = {
17
17
  name: "@kody-ade/kody-engine",
18
- version: "0.4.536",
18
+ version: "0.4.537",
19
19
  description: "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative implementation profiles.",
20
20
  license: "MIT",
21
21
  type: "module",
@@ -22642,14 +22642,12 @@ async function runJob(job, base) {
22642
22642
  }
22643
22643
  if (valid.workflowRunId && workflowIdentity && hasGitHubActionsIdentity()) {
22644
22644
  const facts = result.workflowState?.facts ?? {};
22645
- const pr = typeof facts.pr === "number" ? facts.pr : typeof valid.cliArgs.pr === "number" ? valid.cliArgs.pr : void 0;
22646
- const headSha = typeof facts.headSha === "string" ? facts.headSha : typeof valid.cliArgs.headSha === "string" ? valid.cliArgs.headSha : void 0;
22647
22645
  await notifyWorkflowCompleted({
22648
22646
  workflowId: workflowIdentity,
22649
22647
  runId: valid.workflowRunId,
22650
22648
  status: result.workflowState?.status === "blocked" ? "blocked" : result.exitCode === 0 ? "success" : "failed",
22651
22649
  ...result.reason ? { summary: result.reason } : {},
22652
- ...pr !== void 0 || headSha !== void 0 ? { output: { ...pr !== void 0 ? { pr } : {}, ...headSha ? { headSha } : {} } } : {}
22650
+ ...Object.keys(facts).length > 0 ? { output: facts } : {}
22653
22651
  });
22654
22652
  }
22655
22653
  return result;
@@ -22768,9 +22766,10 @@ async function runCapabilityWorkflow(parent, workflow, capability, base, checkpo
22768
22766
  }
22769
22767
  return result;
22770
22768
  }
22771
- return runLinearCapabilityWorkflow(parent, workflow, capability, base);
22769
+ return runLinearCapabilityWorkflow(parent, workflow, capability, base, checkpoint);
22772
22770
  }
22773
- async function runLinearCapabilityWorkflow(parent, workflow, capability, base) {
22771
+ async function runLinearCapabilityWorkflow(parent, workflow, capability, base, checkpoint) {
22772
+ const state = initialWorkflowState(parent, workflow);
22774
22773
  let chainData = {
22775
22774
  ...base.preloadedData ?? {},
22776
22775
  runSubjectType: "workflow",
@@ -22821,6 +22820,10 @@ async function runLinearCapabilityWorkflow(parent, workflow, capability, base) {
22821
22820
  workflowContinueOn: step.continueOn ?? []
22822
22821
  }
22823
22822
  });
22823
+ mergeWorkflowResults(state, result.capabilityResults);
22824
+ if (result.capabilityOutput && typeof result.capabilityOutput === "object" && !Array.isArray(result.capabilityOutput)) {
22825
+ Object.assign(state.facts, result.capabilityOutput);
22826
+ }
22824
22827
  const outcome = workflowOutcome(result);
22825
22828
  const prUrl = result.prUrl ?? result.taskState?.core.prUrl ?? (typeof chainData.workflowPrUrl === "string" ? chainData.workflowPrUrl : void 0);
22826
22829
  chainData = {
@@ -22835,13 +22838,20 @@ async function runLinearCapabilityWorkflow(parent, workflow, capability, base) {
22835
22838
  ...parsePrNumber5(prUrl) ? { workflowPrNumber: parsePrNumber5(prUrl) } : {}
22836
22839
  };
22837
22840
  if (result.exitCode !== 0 && !canContinueWorkflow(step, outcome)) {
22841
+ state.status = result.capabilityResults?.at(-1)?.status === "blocked" ? "blocked" : "failed";
22842
+ state.blocker = result.reason ?? `workflow ${capability.slug} stopped at step ${index + 1}/${workflow.steps.length}: ${label}`;
22843
+ await checkpoint?.(state);
22838
22844
  return withWorkflowBoundaryEval(capability, {
22839
22845
  ...result,
22840
- reason: result.reason ?? `workflow ${capability.slug} stopped at step ${index + 1}/${workflow.steps.length}: ${label}`
22846
+ reason: state.blocker,
22847
+ workflowState: state
22841
22848
  });
22842
22849
  }
22843
22850
  }
22844
- return withWorkflowBoundaryEval(capability, result);
22851
+ state.status = "done";
22852
+ delete state.blocker;
22853
+ await checkpoint?.(state);
22854
+ return withWorkflowBoundaryEval(capability, { ...result, workflowState: state });
22845
22855
  }
22846
22856
  function isGraphWorkflow(workflow) {
22847
22857
  return workflow.startAt !== void 0 || workflow.steps.some((step) => step.id !== void 0 || step.next !== void 0);
@@ -22881,7 +22891,11 @@ function initialWorkflowState(parent, workflow) {
22881
22891
  ...currentStepId ? { currentStepId } : {},
22882
22892
  completedStepIds: [...prior?.completedStepIds ?? []],
22883
22893
  transitionCounts: { ...prior?.transitionCounts ?? {} },
22884
- facts: { ...parent.workflowFacts ?? {}, ...prior?.facts ?? {} },
22894
+ facts: {
22895
+ ...workflowInputContext(parent.cliArgs),
22896
+ ...parent.workflowFacts ?? {},
22897
+ ...prior?.facts ?? {}
22898
+ },
22885
22899
  evidence: { ...prior?.evidence ?? {} },
22886
22900
  artifacts: (prior?.artifacts ?? []).map((artifact) => ({ ...artifact }))
22887
22901
  };
@@ -22968,6 +22982,9 @@ async function runGraphCapabilityWorkflow(parent, workflow, capability, base, ch
22968
22982
  }
22969
22983
  });
22970
22984
  mergeWorkflowResults(state, result.capabilityResults);
22985
+ if (result.capabilityOutput && typeof result.capabilityOutput === "object" && !Array.isArray(result.capabilityOutput)) {
22986
+ Object.assign(state.facts, result.capabilityOutput);
22987
+ }
22971
22988
  const outcome = workflowOutcome(result);
22972
22989
  const prUrl = result.prUrl ?? result.taskState?.core.prUrl ?? (typeof chainData.workflowPrUrl === "string" ? chainData.workflowPrUrl : void 0);
22973
22990
  chainData = {
File without changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.4.536",
4
- "description": "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative implementation profiles.",
3
+ "version": "0.4.537",
4
+ "description": "kody autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative implementation profiles.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "bin": {
@@ -12,29 +12,6 @@
12
12
  "templates",
13
13
  "kody.config.schema.json"
14
14
  ],
15
- "scripts": {
16
- "kody:run": "tsx bin/kody.ts",
17
- "serve": "tsx bin/kody.ts serve",
18
- "serve:vscode": "tsx bin/kody.ts serve vscode",
19
- "serve:claude": "tsx bin/kody.ts serve claude",
20
- "clean:dist": "node scripts/clean-dist.cjs",
21
- "build": "pnpm clean:dist && tsup && node scripts/copy-assets.cjs",
22
- "check:modularity": "tsx scripts/check-script-modularity.ts",
23
- "pretest": "pnpm check:modularity",
24
- "test": "vitest run tests/unit tests/int --coverage",
25
- "posttest": "tsx scripts/check-coverage-floor.ts",
26
- "test:smoke": "vitest run tests/smoke --no-coverage",
27
- "test:e2e": "vitest run tests/e2e --no-coverage",
28
- "test:runtime-services": "node --test \"tests/runtime-services/*.test.mjs\"",
29
- "test:all": "vitest run tests --no-coverage",
30
- "typecheck": "tsc --noEmit",
31
- "lint": "biome check",
32
- "lint:fix": "biome check --write",
33
- "format": "biome format --write",
34
- "verify:package": "node scripts/verify-package-tarball.cjs",
35
- "brain:publish": "docker buildx build --platform linux/amd64 -f runner/Dockerfile.brain --build-arg KODY_ENGINE_REF=$(git rev-parse HEAD) -t ghcr.io/${KODY_BRAIN_GHCR_OWNER:-aharonyaircohen}/kody-brain:latest --push runner",
36
- "prepublishOnly": "pnpm typecheck && pnpm test:runtime-services && pnpm build && pnpm verify:package"
37
- },
38
15
  "dependencies": {
39
16
  "@actions/cache": "^6.0.0",
40
17
  "@anthropic-ai/claude-agent-sdk": "0.2.119",
@@ -61,5 +38,27 @@
61
38
  "url": "git+https://github.com/aharonyaircohen/kody-engine.git"
62
39
  },
63
40
  "homepage": "https://github.com/aharonyaircohen/kody-engine",
64
- "bugs": "https://github.com/aharonyaircohen/kody-engine/issues"
65
- }
41
+ "bugs": "https://github.com/aharonyaircohen/kody-engine/issues",
42
+ "scripts": {
43
+ "kody:run": "tsx bin/kody.ts",
44
+ "serve": "tsx bin/kody.ts serve",
45
+ "serve:vscode": "tsx bin/kody.ts serve vscode",
46
+ "serve:claude": "tsx bin/kody.ts serve claude",
47
+ "clean:dist": "node scripts/clean-dist.cjs",
48
+ "build": "pnpm clean:dist && tsup && node scripts/copy-assets.cjs",
49
+ "check:modularity": "tsx scripts/check-script-modularity.ts",
50
+ "pretest": "pnpm check:modularity",
51
+ "test": "vitest run tests/unit tests/int --coverage",
52
+ "posttest": "tsx scripts/check-coverage-floor.ts",
53
+ "test:smoke": "vitest run tests/smoke --no-coverage",
54
+ "test:e2e": "vitest run tests/e2e --no-coverage",
55
+ "test:runtime-services": "node --test \"tests/runtime-services/*.test.mjs\"",
56
+ "test:all": "vitest run tests --no-coverage",
57
+ "typecheck": "tsc --noEmit",
58
+ "lint": "biome check",
59
+ "lint:fix": "biome check --write",
60
+ "format": "biome format --write",
61
+ "verify:package": "node scripts/verify-package-tarball.cjs",
62
+ "brain:publish": "docker buildx build --platform linux/amd64 -f runner/Dockerfile.brain --build-arg KODY_ENGINE_REF=$(git rev-parse HEAD) -t ghcr.io/${KODY_BRAIN_GHCR_OWNER:-aharonyaircohen}/kody-brain:latest --push runner"
63
+ }
64
+ }