@kody-ade/kody-engine 0.4.219 → 0.4.221
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 +3 -3
- package/dist/bin/kody.js +570 -665
- package/dist/duties/fix/duty.md +10 -0
- package/dist/duties/fix/profile.json +6 -0
- package/dist/duties/fix-ci/duty.md +10 -0
- package/dist/duties/fix-ci/profile.json +6 -0
- package/dist/duties/init/duty.md +10 -0
- package/dist/duties/init/profile.json +6 -0
- package/dist/duties/merge/duty.md +10 -0
- package/dist/duties/merge/profile.json +6 -0
- package/dist/duties/preview-build/duty.md +10 -0
- package/dist/duties/preview-build/profile.json +6 -0
- package/dist/duties/release/duty.md +10 -0
- package/dist/duties/release/profile.json +6 -0
- package/dist/duties/release-deploy/duty.md +10 -0
- package/dist/duties/release-deploy/profile.json +6 -0
- package/dist/duties/release-prepare/duty.md +10 -0
- package/dist/duties/release-prepare/profile.json +6 -0
- package/dist/duties/release-publish/duty.md +10 -0
- package/dist/duties/release-publish/profile.json +6 -0
- package/dist/duties/resolve/duty.md +10 -0
- package/dist/duties/resolve/profile.json +6 -0
- package/dist/duties/revert/duty.md +10 -0
- package/dist/duties/revert/profile.json +6 -0
- package/dist/duties/run/duty.md +10 -0
- package/dist/duties/run/profile.json +6 -0
- package/dist/duties/sync/duty.md +10 -0
- package/dist/duties/sync/profile.json +6 -0
- package/dist/duties/worker-ask/duty.md +10 -0
- package/dist/duties/worker-ask/profile.json +6 -0
- package/dist/executables/duty-scheduler/profile.json +1 -1
- package/dist/executables/duty-tick/profile.json +2 -2
- package/dist/executables/duty-tick-scripted/profile.json +3 -3
- package/dist/executables/goal-scheduler/scheduler.sh +0 -0
- package/dist/executables/release-deploy/deploy.sh +0 -0
- package/dist/executables/release-prepare/prepare.sh +0 -0
- package/dist/executables/release-publish/publish.sh +0 -0
- package/dist/executables/resolve/apply-prefer.sh +0 -0
- package/dist/executables/revert/revert.sh +0 -0
- package/dist/executables/types.ts +3 -3
- package/dist/executables/worker-ask/profile.json +1 -1
- package/package.json +22 -23
- package/dist/duties/public-actions.json +0 -86
- /package/dist/jobs/watch-stale-prs/{prompt.md → duty.md} +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Fix Ci
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Fix a failing CI workflow on an existing PR.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `fix-ci` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Preview Build
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Build and publish a per-PR preview.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `preview-build` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Release Deploy
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Deploy or promote a release.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `release-deploy` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Release Publish
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Publish a prepared release.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `release-publish` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Resolve
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Resolve merge conflicts on an existing PR.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `resolve` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Revert
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Revert one or more commits on a PR branch.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `revert` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Worker Ask
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Run a staff member once against an inline request.
|
|
6
|
+
|
|
7
|
+
## Instructions
|
|
8
|
+
|
|
9
|
+
Use the `worker-ask` executable for the implementation details.
|
|
10
|
+
The duty owns the public action name and the reason this action exists; the executable owns the method.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duty-scheduler",
|
|
3
3
|
"role": "watch",
|
|
4
|
-
"describe": "Scheduled: for every duty
|
|
4
|
+
"describe": "Scheduled: for every duty folder under .kody/duties/, invoke duty-tick once. No agent on the scheduler itself.",
|
|
5
5
|
"kind": "scheduled",
|
|
6
6
|
"schedule": "*/5 * * * *",
|
|
7
7
|
"inputs": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duty-tick",
|
|
3
3
|
"role": "primitive",
|
|
4
|
-
"describe": "One classifier tick for one duty
|
|
4
|
+
"describe": "One classifier tick for one duty folder: read intent + state, decide and execute via gh, emit next state.",
|
|
5
5
|
"kind": "oneshot",
|
|
6
6
|
"inputs": [
|
|
7
7
|
{
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"flag": "--duty",
|
|
10
10
|
"type": "string",
|
|
11
11
|
"required": true,
|
|
12
|
-
"describe": "Duty slug —
|
|
12
|
+
"describe": "Duty slug — folder name under .kody/duties/."
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"name": "force",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duty-tick-scripted",
|
|
3
3
|
"role": "utility",
|
|
4
|
-
"describe": "Deterministic duty tick: runs the slug's `tickScript:` (declared in duty
|
|
4
|
+
"describe": "Deterministic duty tick: runs the slug's `tickScript:` (declared in the duty profile), parses next-state from its stdout, persists. No agent.",
|
|
5
5
|
"kind": "oneshot",
|
|
6
6
|
"inputs": [
|
|
7
7
|
{
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"flag": "--duty",
|
|
10
10
|
"type": "string",
|
|
11
11
|
"required": true,
|
|
12
|
-
"describe": "Duty slug —
|
|
12
|
+
"describe": "Duty slug — folder name under .kody/duties/."
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"name": "force",
|
|
16
16
|
"flag": "--force",
|
|
17
17
|
"type": "bool",
|
|
18
|
-
"describe": "Accepted for parity with `duty-tick`. Scripted ticks have no agent cadence guard to bypass — the dispatcher already gated on
|
|
18
|
+
"describe": "Accepted for parity with `duty-tick`. Scripted ticks have no agent cadence guard to bypass — the dispatcher already gated on profile `every`. Forwarded to the script via env if it cares."
|
|
19
19
|
}
|
|
20
20
|
],
|
|
21
21
|
"claudeCode": {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -65,7 +65,7 @@ export interface Profile {
|
|
|
65
65
|
kind: "oneshot" | "scheduled"
|
|
66
66
|
/**
|
|
67
67
|
* Recurrence cadence for a duty that runs on a timer (unified successor to a
|
|
68
|
-
* markdown duty's `every:`
|
|
68
|
+
* markdown duty's `every:` metadata). One of the ScheduleEvery values
|
|
69
69
|
* ("15m".."7d" | "manual"). Present → the duty-scheduler fires a one-shot run
|
|
70
70
|
* when due (no target). Absent → on-demand only (runs against an issue/PR).
|
|
71
71
|
* This is what makes "scheduled" just a field on the one duty shape.
|
|
@@ -73,7 +73,7 @@ export interface Profile {
|
|
|
73
73
|
every?: string
|
|
74
74
|
/**
|
|
75
75
|
* Locked-toolbox palette (unified successor to a markdown duty's `tools:`
|
|
76
|
-
*
|
|
76
|
+
* metadata). When non-empty, loadDutyState sets ctx.data.dutyTools so the
|
|
77
77
|
* executor spins up the in-process kody-duty MCP server and the agent runs
|
|
78
78
|
* MCP-only (Bash/Read revoked unless also in claudeCode.tools). Absent →
|
|
79
79
|
* normal SDK tools.
|
|
@@ -82,7 +82,7 @@ export interface Profile {
|
|
|
82
82
|
/**
|
|
83
83
|
* GitHub logins (no leading `@`) this duty's output should mention. Rendered
|
|
84
84
|
* to `@a @b` and exposed to the prompt as {{mentions}} (and as the duty-MCP
|
|
85
|
-
* operator mention), mirroring a markdown duty's `mentions:`
|
|
85
|
+
* operator mention), mirroring a markdown duty's `mentions:` metadata.
|
|
86
86
|
*/
|
|
87
87
|
mentions?: string[]
|
|
88
88
|
/** Cron expression for scheduled profiles (e.g. "0 8 * * MON"). */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "worker-ask",
|
|
3
3
|
"role": "primitive",
|
|
4
|
-
"describe": "Ad-hoc one-shot: run a staff persona against an inline message + context (from a dashboard @staff mention). Stateless — no duty
|
|
4
|
+
"describe": "Ad-hoc one-shot: run a staff persona against an inline message + context (from a dashboard @staff mention). Stateless — no duty folder, no state, no commit. Replies into the originating thread.",
|
|
5
5
|
"kind": "oneshot",
|
|
6
6
|
"inputs": [
|
|
7
7
|
{
|
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.221",
|
|
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",
|
|
@@ -12,26 +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
|
-
"build": "tsup && node scripts/copy-assets.cjs",
|
|
21
|
-
"check:modularity": "tsx scripts/check-script-modularity.ts",
|
|
22
|
-
"pretest": "pnpm check:modularity",
|
|
23
|
-
"test": "vitest run tests/unit tests/int --coverage",
|
|
24
|
-
"posttest": "tsx scripts/check-coverage-floor.ts",
|
|
25
|
-
"test:smoke": "vitest run tests/smoke --no-coverage",
|
|
26
|
-
"test:e2e": "vitest run tests/e2e --no-coverage",
|
|
27
|
-
"test:all": "vitest run tests --no-coverage",
|
|
28
|
-
"typecheck": "tsc --noEmit",
|
|
29
|
-
"lint": "biome check",
|
|
30
|
-
"lint:fix": "biome check --write",
|
|
31
|
-
"format": "biome format --write",
|
|
32
|
-
"brain:publish": "docker buildx build --platform linux/amd64 -f runner/Dockerfile.brain -t ghcr.io/${KODY_BRAIN_GHCR_OWNER:-aharonyaircohen}/kody-brain:latest --push runner",
|
|
33
|
-
"prepublishOnly": "pnpm typecheck && vitest run tests/unit tests/int --no-coverage && pnpm build"
|
|
34
|
-
},
|
|
35
15
|
"dependencies": {
|
|
36
16
|
"@actions/cache": "^6.0.0",
|
|
37
17
|
"@anthropic-ai/claude-agent-sdk": "0.2.119",
|
|
@@ -55,5 +35,24 @@
|
|
|
55
35
|
"url": "git+https://github.com/aharonyaircohen/kody-engine.git"
|
|
56
36
|
},
|
|
57
37
|
"homepage": "https://github.com/aharonyaircohen/kody-engine",
|
|
58
|
-
"bugs": "https://github.com/aharonyaircohen/kody-engine/issues"
|
|
59
|
-
|
|
38
|
+
"bugs": "https://github.com/aharonyaircohen/kody-engine/issues",
|
|
39
|
+
"scripts": {
|
|
40
|
+
"kody:run": "tsx bin/kody.ts",
|
|
41
|
+
"serve": "tsx bin/kody.ts serve",
|
|
42
|
+
"serve:vscode": "tsx bin/kody.ts serve vscode",
|
|
43
|
+
"serve:claude": "tsx bin/kody.ts serve claude",
|
|
44
|
+
"build": "tsup && node scripts/copy-assets.cjs",
|
|
45
|
+
"check:modularity": "tsx scripts/check-script-modularity.ts",
|
|
46
|
+
"pretest": "pnpm check:modularity",
|
|
47
|
+
"test": "vitest run tests/unit tests/int --coverage",
|
|
48
|
+
"posttest": "tsx scripts/check-coverage-floor.ts",
|
|
49
|
+
"test:smoke": "vitest run tests/smoke --no-coverage",
|
|
50
|
+
"test:e2e": "vitest run tests/e2e --no-coverage",
|
|
51
|
+
"test:all": "vitest run tests --no-coverage",
|
|
52
|
+
"typecheck": "tsc --noEmit",
|
|
53
|
+
"lint": "biome check",
|
|
54
|
+
"lint:fix": "biome check --write",
|
|
55
|
+
"format": "biome format --write",
|
|
56
|
+
"brain:publish": "docker buildx build --platform linux/amd64 -f runner/Dockerfile.brain -t ghcr.io/${KODY_BRAIN_GHCR_OWNER:-aharonyaircohen}/kody-brain:latest --push runner"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"name": "run",
|
|
4
|
-
"action": "run",
|
|
5
|
-
"executable": "run",
|
|
6
|
-
"describe": "Implement a GitHub issue end-to-end."
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"name": "fix",
|
|
10
|
-
"action": "fix",
|
|
11
|
-
"executable": "fix",
|
|
12
|
-
"describe": "Apply review feedback to an existing PR."
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"name": "fix-ci",
|
|
16
|
-
"action": "fix-ci",
|
|
17
|
-
"executable": "fix-ci",
|
|
18
|
-
"describe": "Fix a failing CI workflow on an existing PR."
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "resolve",
|
|
22
|
-
"action": "resolve",
|
|
23
|
-
"executable": "resolve",
|
|
24
|
-
"describe": "Resolve merge conflicts on an existing PR."
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"name": "sync",
|
|
28
|
-
"action": "sync",
|
|
29
|
-
"executable": "sync",
|
|
30
|
-
"describe": "Merge the base branch into a PR branch."
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"name": "merge",
|
|
34
|
-
"action": "merge",
|
|
35
|
-
"executable": "merge",
|
|
36
|
-
"describe": "Self-gating squash merge of a PR."
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"name": "revert",
|
|
40
|
-
"action": "revert",
|
|
41
|
-
"executable": "revert",
|
|
42
|
-
"describe": "Revert one or more commits on a PR branch."
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"name": "preview-build",
|
|
46
|
-
"action": "preview-build",
|
|
47
|
-
"executable": "preview-build",
|
|
48
|
-
"describe": "Build and publish a per-PR preview."
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"name": "release",
|
|
52
|
-
"action": "release",
|
|
53
|
-
"executable": "release",
|
|
54
|
-
"describe": "Run the release flow."
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"name": "release-prepare",
|
|
58
|
-
"action": "release-prepare",
|
|
59
|
-
"executable": "release-prepare",
|
|
60
|
-
"describe": "Prepare a release PR."
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"name": "release-publish",
|
|
64
|
-
"action": "release-publish",
|
|
65
|
-
"executable": "release-publish",
|
|
66
|
-
"describe": "Publish a prepared release."
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"name": "release-deploy",
|
|
70
|
-
"action": "release-deploy",
|
|
71
|
-
"executable": "release-deploy",
|
|
72
|
-
"describe": "Deploy or promote a release."
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"name": "init",
|
|
76
|
-
"action": "init",
|
|
77
|
-
"executable": "init",
|
|
78
|
-
"describe": "Install Kody engine files in a repo."
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"name": "worker-ask",
|
|
82
|
-
"action": "worker-ask",
|
|
83
|
-
"executable": "worker-ask",
|
|
84
|
-
"describe": "Run a staff member once against an inline request."
|
|
85
|
-
}
|
|
86
|
-
]
|
|
File without changes
|