@kody-ade/kody-engine 0.4.337 → 0.4.339
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.
|
|
18
|
+
version: "0.4.339",
|
|
19
19
|
description: "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
|
|
20
20
|
license: "MIT",
|
|
21
21
|
type: "module",
|
|
@@ -11403,7 +11403,7 @@ function formatCapabilityReference(data, profileName) {
|
|
|
11403
11403
|
lines.push(`- Capability: \`${capabilitySlug}\`${capabilityTitle ? ` \u2014 *${capabilityTitle}*` : ""}`);
|
|
11404
11404
|
}
|
|
11405
11405
|
if (executableSlug) {
|
|
11406
|
-
lines.push(`-
|
|
11406
|
+
lines.push(`- Implementation: \`${executableSlug}\``);
|
|
11407
11407
|
}
|
|
11408
11408
|
const agentLine = agentSlug ? `\`${agentSlug}\`${agentTitle && agentTitle !== agentSlug ? ` \u2014 *${agentTitle}*` : ""}` : "";
|
|
11409
11409
|
if (agentLine) {
|
|
@@ -19153,7 +19153,7 @@ var init_writeAgentRunSummary = __esm({
|
|
|
19153
19153
|
writeAgentRunSummary = async (ctx, profile) => {
|
|
19154
19154
|
const summaryPath = process.env.GITHUB_STEP_SUMMARY;
|
|
19155
19155
|
if (!summaryPath) return;
|
|
19156
|
-
const
|
|
19156
|
+
const implementation = profile.name;
|
|
19157
19157
|
const issue = ctx.args.issue;
|
|
19158
19158
|
const pr = ctx.args.pr;
|
|
19159
19159
|
const target = issue ? `issue #${issue}` : pr ? `PR #${pr}` : "(unknown)";
|
|
@@ -19162,9 +19162,9 @@ var init_writeAgentRunSummary = __esm({
|
|
|
19162
19162
|
const reason = ctx.output.reason;
|
|
19163
19163
|
const status = exitCode === 0 ? "\u2705 success" : exitCode === 3 ? "\u23ED\uFE0F no-op" : "\u26A0\uFE0F failed";
|
|
19164
19164
|
const lines = [];
|
|
19165
|
-
lines.push(`## kody ${
|
|
19165
|
+
lines.push(`## kody ${implementation} \u2014 ${status}`);
|
|
19166
19166
|
lines.push("");
|
|
19167
|
-
lines.push(`- **
|
|
19167
|
+
lines.push(`- **Implementation:** \`${implementation}\``);
|
|
19168
19168
|
lines.push(`- **Target:** ${target}`);
|
|
19169
19169
|
if (prUrl) lines.push(`- **PR:** ${prUrl}`);
|
|
19170
19170
|
lines.push(`- **Exit code:** ${exitCode}`);
|
|
@@ -55,10 +55,18 @@ Each `models[]` entry must also carry the creator's canonical model metadata:
|
|
|
55
55
|
|
|
56
56
|
- Agent models include `"owns": ["identity", "judgment", "boundaries"]` and `doesNotOwn` includes `"tasks"`.
|
|
57
57
|
- Goal models include `"outcome"`, non-empty `"evidence"`, and non-empty `"capabilities"`. Use `"capabilities"`, not only `"allowedCapabilities"`, in `models[]`.
|
|
58
|
+
- Goal model `"capabilities"` entries must be slugs of generated `kind: "capability"` models only. Do not put a workflow slug in a goal's `"capabilities"` or `"allowedCapabilities"` list.
|
|
58
59
|
- Loop models use `"kind": "agentLoop"` and include `"wakeTarget": {"type": "goal|workflow|capability", "slug": "target-slug"}`. Use `"wakeTarget"`, not only `"target"`, in `models[]`.
|
|
59
60
|
- Workflow models include non-empty `"steps"` as objects with a `"capability"` slug.
|
|
60
61
|
- Capability models include `"capabilityKind"`, `"ability"`, `"inputs"`, `"outputs"`, `"allowedActions"`, `"forbiddenActions"`, and `doesNotOwn` includes `"agent identity"` and `"goal progress"`.
|
|
61
62
|
|
|
63
|
+
When a request asks for both a goal and a workflow, keep them separate:
|
|
64
|
+
|
|
65
|
+
- The goal owns outcome, evidence, and the allowlist of capabilities that can produce evidence.
|
|
66
|
+
- The workflow owns ordered capability steps for one run.
|
|
67
|
+
- The goal may name the capability that produces evidence; the workflow may also use that capability as a step.
|
|
68
|
+
- Do not make the goal depend on the workflow by listing the workflow slug as a capability.
|
|
69
|
+
|
|
62
70
|
Capability files must be shaped by ability, kind, interface, and constraints. Do not include fields or prose that make the capability depend on who asked for it, which workflow calls it, which goal consumes it, which loop wakes it, or which agent may run it.
|
|
63
71
|
|
|
64
72
|
Use the current Kody vocabulary:
|
|
@@ -65,6 +65,19 @@ Required files:
|
|
|
65
65
|
|
|
66
66
|
In `profile.json`, include `"slug": "<slug>"`. The `"name"` field may be a display name, but if `slug` is absent then `name` must equal the slug.
|
|
67
67
|
|
|
68
|
+
The profile is part of the Capability contract. It must use the same slug as `model.slug` and must declare the current capability kind field:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"slug": "<same slug as model.slug>",
|
|
73
|
+
"name": "Display Name",
|
|
74
|
+
"capabilityKind": "observe|act|verify"
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Do not put `kind: "observe"`, `kind: "act"`, or `kind: "verify"` in the profile. `kind` is not the capability kind field.
|
|
79
|
+
Every generated file path must use exactly the same slug as `model.slug`.
|
|
80
|
+
|
|
68
81
|
Add colocated prompt/scripts only if the capability needs a new implementation. Reuse existing capabilities, implementation profiles, skills, or scripts when they fit.
|
|
69
82
|
|
|
70
83
|
# Final Output Contract
|
|
@@ -95,7 +108,7 @@ PR_SUMMARY:
|
|
|
95
108
|
"files": [
|
|
96
109
|
{
|
|
97
110
|
"path": "capabilities/example/profile.json",
|
|
98
|
-
"content": "{\n \"
|
|
111
|
+
"content": "{\n \"slug\": \"example\",\n \"name\": \"Example\",\n \"capabilityKind\": \"observe\"\n}\n"
|
|
99
112
|
},
|
|
100
113
|
{
|
|
101
114
|
"path": "capabilities/example/capability.md",
|
|
@@ -52,6 +52,27 @@ Prefer placing workflow steps on the public capability that owns the composed ac
|
|
|
52
52
|
|
|
53
53
|
Put the workflow contract in `capabilities/<slug>/profile.json`. Prefer a `workflow` object with `steps`; top-level `steps` are only for existing profiles that already use that shape.
|
|
54
54
|
|
|
55
|
+
The workflow profile is stored as a capability profile because workflows are composed capability runs. The generated file path must use exactly the same slug as `model.slug`.
|
|
56
|
+
|
|
57
|
+
Minimum profile shape:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"slug": "<same slug as model.slug>",
|
|
62
|
+
"name": "Display Name",
|
|
63
|
+
"workflow": {
|
|
64
|
+
"steps": [
|
|
65
|
+
{
|
|
66
|
+
"capability": "capability-slug",
|
|
67
|
+
"reason": "why this step exists"
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Do not place workflow files under `workflows/`. Do not use a different profile slug than `model.slug`.
|
|
75
|
+
|
|
55
76
|
# Final Output Contract
|
|
56
77
|
|
|
57
78
|
If the request is too ambiguous to produce one review-ready Workflow model, output one line:
|
|
@@ -80,7 +101,7 @@ PR_SUMMARY:
|
|
|
80
101
|
"files": [
|
|
81
102
|
{
|
|
82
103
|
"path": "capabilities/example/profile.json",
|
|
83
|
-
"content": "{\n \"workflow\": { \"steps\": [] }\n}\n"
|
|
104
|
+
"content": "{\n \"slug\": \"example\",\n \"name\": \"Example Workflow\",\n \"workflow\": { \"steps\": [{ \"capability\": \"example-capability\", \"reason\": \"run the composed capability\" }] }\n}\n"
|
|
84
105
|
}
|
|
85
106
|
]
|
|
86
107
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kody-ade/kody-engine",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.339",
|
|
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",
|