@kody-ade/kody-engine 0.4.2 → 0.4.4

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
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@kody-ade/kody-engine",
6
- version: "0.4.2",
6
+ version: "0.4.4",
7
7
  description: "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
8
8
  license: "MIT",
9
9
  type: "module",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "chore",
3
- "role": "orchestrator",
4
- "describe": "Sub-orchestrator for chore / docs / dep-bump issues — run → review (→ fix on concerns/fail). Skips planning entirely. No agent.",
3
+ "role": "container",
4
+ "describe": "Chore / docs / dep-bump flow — run → review (→ fix on concerns/fail). Skips planning entirely. Children run sequentially in one process via the container loop.",
5
5
  "inputs": [
6
6
  {
7
7
  "name": "issue",
@@ -45,30 +45,21 @@
45
45
  }
46
46
  },
47
47
  { "script": "loadIssueContext" },
48
- { "script": "loadTaskState" },
49
- { "script": "skipAgent" }
48
+ { "script": "loadTaskState" }
50
49
  ],
51
50
  "postflight": [
52
- { "script": "startFlow", "with": { "entry": "run", "target": "issue" } },
53
-
54
- { "script": "dispatch", "with": { "next": "review", "target": "pr" },
55
- "runWhen": { "data.taskState.core.lastOutcome.type": "RUN_COMPLETED" } },
56
-
57
51
  { "script": "finishFlow",
58
52
  "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
59
53
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_PASS" } },
60
54
 
61
- { "script": "dispatch", "with": { "next": "fix", "target": "pr" },
62
- "runWhen": { "data.taskState.core.lastOutcome.type": ["REVIEW_CONCERNS", "REVIEW_FAIL"] } },
55
+ { "script": "finishFlow",
56
+ "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
57
+ "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
63
58
 
64
59
  { "script": "finishFlow",
65
60
  "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
66
61
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_FAILED" } },
67
62
 
68
- { "script": "finishFlow",
69
- "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
70
- "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
71
-
72
63
  { "script": "finishFlow",
73
64
  "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
74
65
  "runWhen": { "data.taskState.core.lastOutcome.type": ["RUN_FAILED", "FIX_FAILED", "AGENT_NOT_RUN"] } },
@@ -76,9 +67,36 @@
76
67
  { "script": "persistFlowState" }
77
68
  ]
78
69
  },
70
+ "children": [
71
+ {
72
+ "exec": "run",
73
+ "target": "issue",
74
+ "next": {
75
+ "RUN_COMPLETED": "review",
76
+ "*": "abort"
77
+ }
78
+ },
79
+ {
80
+ "exec": "review",
81
+ "target": "pr",
82
+ "next": {
83
+ "REVIEW_PASS": "done",
84
+ "REVIEW_CONCERNS": "fix",
85
+ "REVIEW_FAIL": "fix",
86
+ "*": "abort"
87
+ }
88
+ },
89
+ {
90
+ "exec": "fix",
91
+ "target": "pr",
92
+ "next": {
93
+ "FIX_COMPLETED": "done",
94
+ "*": "abort"
95
+ }
96
+ }
97
+ ],
79
98
  "output": {
80
99
  "actionTypes": [
81
- "FLOW_STARTED",
82
100
  "FLOW_COMPLETED",
83
101
  "FLOW_ABORTED"
84
102
  ]
@@ -1,5 +1,6 @@
1
1
  <!--
2
- Placeholder. The chore sub-orchestrator runs with maxTurns: 0 and a
3
- `skipAgent` preflight, so this prompt is never sent to Claude. The
4
- transition logic lives entirely in profile.json's postflight entries.
2
+ Container role: no agent runs. The transition logic lives entirely in
3
+ profile.json's `children[].next` map (driven by the container loop in
4
+ src/executor.ts:runContainerLoop). This file exists only because the
5
+ profile loader expects a prompt.md sibling.
5
6
  -->
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "feature",
3
- "role": "orchestrator",
4
- "describe": "Sub-orchestrator for feature / refactor issues — research → plan → run → review (→ fix on concerns/fail). No agent the postflight entries ARE the transition table, evaluated top-to-bottom via runWhen.",
3
+ "role": "container",
4
+ "describe": "Feature / refactor flow — research → plan → run → review (→ fix on concerns/fail). Children run sequentially in one process via the container loop.",
5
5
  "inputs": [
6
6
  {
7
7
  "name": "issue",
@@ -45,36 +45,21 @@
45
45
  }
46
46
  },
47
47
  { "script": "loadIssueContext" },
48
- { "script": "loadTaskState" },
49
- { "script": "skipAgent" }
48
+ { "script": "loadTaskState" }
50
49
  ],
51
50
  "postflight": [
52
- { "script": "startFlow", "with": { "entry": "research", "target": "issue" } },
53
-
54
- { "script": "dispatch", "with": { "next": "plan", "target": "issue" },
55
- "runWhen": { "data.taskState.core.lastOutcome.type": "RESEARCH_COMPLETED" } },
56
-
57
- { "script": "dispatch", "with": { "next": "run", "target": "issue" },
58
- "runWhen": { "data.taskState.core.lastOutcome.type": "PLAN_COMPLETED" } },
59
-
60
- { "script": "dispatch", "with": { "next": "review", "target": "pr" },
61
- "runWhen": { "data.taskState.core.lastOutcome.type": "RUN_COMPLETED" } },
62
-
63
51
  { "script": "finishFlow",
64
52
  "with": { "reason": "review-passed", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
65
53
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_PASS" } },
66
54
 
67
- { "script": "dispatch", "with": { "next": "fix", "target": "pr" },
68
- "runWhen": { "data.taskState.core.lastOutcome.type": ["REVIEW_CONCERNS", "REVIEW_FAIL"] } },
55
+ { "script": "finishFlow",
56
+ "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
57
+ "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
69
58
 
70
59
  { "script": "finishFlow",
71
60
  "with": { "reason": "review-failed", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
72
61
  "runWhen": { "data.taskState.core.lastOutcome.type": "REVIEW_FAILED" } },
73
62
 
74
- { "script": "finishFlow",
75
- "with": { "reason": "fix-applied", "label": "kody:done", "color": "0e8a16", "description": "kody: PR ready for human review/merge" },
76
- "runWhen": { "data.taskState.core.lastOutcome.type": "FIX_COMPLETED" } },
77
-
78
63
  { "script": "finishFlow",
79
64
  "with": { "reason": "aborted", "label": "kody:failed", "color": "e11d21", "description": "kody: flow failed" },
80
65
  "runWhen": { "data.taskState.core.lastOutcome.type": ["RESEARCH_FAILED", "PLAN_FAILED", "RUN_FAILED", "FIX_FAILED", "AGENT_NOT_RUN"] } },
@@ -82,9 +67,52 @@
82
67
  { "script": "persistFlowState" }
83
68
  ]
84
69
  },
70
+ "children": [
71
+ {
72
+ "exec": "research",
73
+ "target": "issue",
74
+ "next": {
75
+ "RESEARCH_COMPLETED": "plan",
76
+ "*": "abort"
77
+ }
78
+ },
79
+ {
80
+ "exec": "plan",
81
+ "target": "issue",
82
+ "next": {
83
+ "PLAN_COMPLETED": "run",
84
+ "*": "abort"
85
+ }
86
+ },
87
+ {
88
+ "exec": "run",
89
+ "target": "issue",
90
+ "next": {
91
+ "RUN_COMPLETED": "review",
92
+ "*": "abort"
93
+ }
94
+ },
95
+ {
96
+ "exec": "review",
97
+ "target": "pr",
98
+ "next": {
99
+ "REVIEW_PASS": "done",
100
+ "REVIEW_CONCERNS": "fix",
101
+ "REVIEW_FAIL": "fix",
102
+ "*": "abort"
103
+ }
104
+ },
105
+ {
106
+ "exec": "fix",
107
+ "target": "pr",
108
+ "next": {
109
+ "FIX_COMPLETED": "done",
110
+ "*": "abort"
111
+ }
112
+ }
113
+ ],
85
114
  "output": {
86
115
  "actionTypes": [
87
- "FLOW_STARTED",
88
116
  "FLOW_COMPLETED",
89
117
  "FLOW_ABORTED"
90
118
  ]
@@ -1,5 +1,6 @@
1
1
  <!--
2
- Placeholder. The feature sub-orchestrator runs with maxTurns: 0 and a
3
- `skipAgent` preflight, so this prompt is never sent to Claude. The
4
- transition logic lives entirely in profile.json's postflight entries.
2
+ Container role: no agent runs. The transition logic lives entirely in
3
+ profile.json's `children[].next` map (driven by the container loop in
4
+ src/executor.ts:runContainerLoop). This file exists only because the
5
+ profile loader expects a prompt.md sibling.
5
6
  -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "description": "kody — autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
5
5
  "license": "MIT",
6
6
  "type": "module",