@kody-ade/kody-engine 0.4.224 → 0.4.225

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.
Files changed (114) hide show
  1. package/README.md +2 -2
  2. package/dist/bin/kody.js +779 -831
  3. package/dist/executables/run/profile.json +1 -1
  4. package/dist/executables/types.ts +3 -1
  5. package/package.json +1 -1
  6. package/dist/duties/duty-scheduler/duty.md +0 -3
  7. package/dist/duties/duty-scheduler/profile.json +0 -6
  8. package/dist/duties/duty-tick/duty.md +0 -3
  9. package/dist/duties/duty-tick/profile.json +0 -6
  10. package/dist/duties/duty-tick-scripted/duty.md +0 -3
  11. package/dist/duties/duty-tick-scripted/profile.json +0 -6
  12. package/dist/duties/fix/duty.md +0 -10
  13. package/dist/duties/fix/profile.json +0 -6
  14. package/dist/duties/fix-ci/duty.md +0 -10
  15. package/dist/duties/fix-ci/profile.json +0 -6
  16. package/dist/duties/goal-scheduler/duty.md +0 -3
  17. package/dist/duties/goal-scheduler/profile.json +0 -6
  18. package/dist/duties/goal-tick/duty.md +0 -3
  19. package/dist/duties/goal-tick/profile.json +0 -6
  20. package/dist/duties/init/duty.md +0 -10
  21. package/dist/duties/init/profile.json +0 -6
  22. package/dist/duties/job-live-verify/duty.md +0 -3
  23. package/dist/duties/job-live-verify/profile.json +0 -6
  24. package/dist/duties/merge/duty.md +0 -10
  25. package/dist/duties/merge/profile.json +0 -6
  26. package/dist/duties/npm-publish/duty.md +0 -17
  27. package/dist/duties/npm-publish/profile.json +0 -6
  28. package/dist/duties/plan-verify/duty.md +0 -3
  29. package/dist/duties/plan-verify/profile.json +0 -6
  30. package/dist/duties/preview-build/duty.md +0 -10
  31. package/dist/duties/preview-build/profile.json +0 -6
  32. package/dist/duties/probe-skill/duty.md +0 -3
  33. package/dist/duties/probe-skill/profile.json +0 -6
  34. package/dist/duties/qa-goal/duty.md +0 -3
  35. package/dist/duties/qa-goal/profile.json +0 -6
  36. package/dist/duties/release/duty.md +0 -10
  37. package/dist/duties/release/profile.json +0 -6
  38. package/dist/duties/release-deploy/duty.md +0 -10
  39. package/dist/duties/release-deploy/profile.json +0 -6
  40. package/dist/duties/release-prepare/duty.md +0 -10
  41. package/dist/duties/release-prepare/profile.json +0 -6
  42. package/dist/duties/release-publish/duty.md +0 -10
  43. package/dist/duties/release-publish/profile.json +0 -6
  44. package/dist/duties/resolve/duty.md +0 -10
  45. package/dist/duties/resolve/profile.json +0 -6
  46. package/dist/duties/revert/duty.md +0 -10
  47. package/dist/duties/revert/profile.json +0 -6
  48. package/dist/duties/sync/duty.md +0 -10
  49. package/dist/duties/sync/profile.json +0 -6
  50. package/dist/duties/task-job-fail-once/duty.md +0 -3
  51. package/dist/duties/task-job-fail-once/profile.json +0 -6
  52. package/dist/duties/task-job-pass-a/duty.md +0 -3
  53. package/dist/duties/task-job-pass-a/profile.json +0 -6
  54. package/dist/duties/task-job-pass-b/duty.md +0 -3
  55. package/dist/duties/task-job-pass-b/profile.json +0 -6
  56. package/dist/duties/task-jobs/duty.md +0 -3
  57. package/dist/duties/task-jobs/profile.json +0 -6
  58. package/dist/duties/worker-ask/duty.md +0 -10
  59. package/dist/duties/worker-ask/profile.json +0 -6
  60. package/dist/executables/duty-scheduler/profile.json +0 -57
  61. package/dist/executables/duty-tick/profile.json +0 -78
  62. package/dist/executables/duty-tick/prompt.md +0 -77
  63. package/dist/executables/duty-tick/prompts/locked.md +0 -50
  64. package/dist/executables/duty-tick-scripted/profile.json +0 -72
  65. package/dist/executables/fix/profile.json +0 -91
  66. package/dist/executables/fix/prompt.md +0 -90
  67. package/dist/executables/fix-ci/profile.json +0 -71
  68. package/dist/executables/fix-ci/prompt.md +0 -78
  69. package/dist/executables/goal-scheduler/profile.json +0 -53
  70. package/dist/executables/goal-scheduler/scheduler.sh +0 -82
  71. package/dist/executables/goal-tick/profile.json +0 -69
  72. package/dist/executables/init/profile.json +0 -36
  73. package/dist/executables/job-live-verify/profile.json +0 -36
  74. package/dist/executables/job-live-verify/prompt.md +0 -42
  75. package/dist/executables/merge/profile.json +0 -54
  76. package/dist/executables/npm-publish/profile.json +0 -73
  77. package/dist/executables/npm-publish/publish.sh +0 -93
  78. package/dist/executables/plan-verify/profile.json +0 -38
  79. package/dist/executables/plan-verify/prompt.md +0 -72
  80. package/dist/executables/preview-build/profile.json +0 -61
  81. package/dist/executables/preview-health/profile.json +0 -48
  82. package/dist/executables/preview-health/tick.sh +0 -319
  83. package/dist/executables/probe-skill/profile.json +0 -35
  84. package/dist/executables/probe-skill/prompt.md +0 -31
  85. package/dist/executables/probe-skill/skills/probe-skill-marker/SKILL.md +0 -18
  86. package/dist/executables/qa-goal/profile.json +0 -65
  87. package/dist/executables/release/deploy.sh +0 -157
  88. package/dist/executables/release/prepare.sh +0 -353
  89. package/dist/executables/release/profile.json +0 -95
  90. package/dist/executables/release/publish.sh +0 -88
  91. package/dist/executables/release/release.sh +0 -230
  92. package/dist/executables/release/wait.sh +0 -88
  93. package/dist/executables/release-deploy/deploy.sh +0 -222
  94. package/dist/executables/release-deploy/profile.json +0 -53
  95. package/dist/executables/release-prepare/prepare.sh +0 -368
  96. package/dist/executables/release-prepare/profile.json +0 -70
  97. package/dist/executables/release-publish/profile.json +0 -53
  98. package/dist/executables/release-publish/publish.sh +0 -137
  99. package/dist/executables/resolve/apply-prefer.sh +0 -54
  100. package/dist/executables/resolve/profile.json +0 -107
  101. package/dist/executables/resolve/prompt.md +0 -51
  102. package/dist/executables/revert/profile.json +0 -82
  103. package/dist/executables/revert/revert.sh +0 -33
  104. package/dist/executables/sync/profile.json +0 -48
  105. package/dist/executables/task-job-fail-once/profile.json +0 -44
  106. package/dist/executables/task-job-fail-once/prompt.md +0 -1
  107. package/dist/executables/task-job-pass-a/profile.json +0 -43
  108. package/dist/executables/task-job-pass-a/prompt.md +0 -1
  109. package/dist/executables/task-job-pass-b/profile.json +0 -43
  110. package/dist/executables/task-job-pass-b/prompt.md +0 -1
  111. package/dist/executables/task-jobs/profile.json +0 -41
  112. package/dist/executables/task-jobs/prompt.md +0 -1
  113. package/dist/executables/worker-ask/profile.json +0 -70
  114. package/dist/executables/worker-ask/prompt.md +0 -60
@@ -15,7 +15,7 @@
15
15
  "flag": "--base",
16
16
  "type": "string",
17
17
  "required": false,
18
- "describe": "Optional base branch override. Used by goal-tick's stacked-PR dispatch so each task PR forks from the previous task's head ref. Accepts any safe git ref (see resolveBaseOverride in runFlow.ts)."
18
+ "describe": "Optional safe base branch override for manual branch targeting (see resolveBaseOverride in runFlow.ts)."
19
19
  }
20
20
  ],
21
21
  "claudeCode": {
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import type { AgentResult } from "../agent.js"
11
- import type { KodyConfig } from "../config.js"
11
+ import type { KodyConfig, ReasoningEffort } from "../config.js"
12
12
  import type { Phase } from "../state.js"
13
13
 
14
14
  // ────────────────────────────────────────────────────────────────────────────
@@ -257,6 +257,8 @@ export interface ClaudeCodeSpec {
257
257
  maxTurns: number | null
258
258
  /** Extended-thinking token budget. null = SDK default. */
259
259
  maxThinkingTokens: number | null
260
+ /** User-facing effort level. When set, preferred over maxThinkingTokens. */
261
+ reasoningEffort?: ReasoningEffort | null
260
262
  /**
261
263
  * Watchdog: abort the agent if no SDK message arrives within this many
262
264
  * seconds. Per-profile override for the global 600s default. Useful on
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.4.224",
3
+ "version": "0.4.225",
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",
@@ -1,3 +0,0 @@
1
- # Duty Scheduler
2
-
3
- Scan `.kody/duties/` for due duty folders and run each due duty through its declared executable.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "duty-scheduler",
3
- "action": "duty-scheduler",
4
- "executable": "duty-scheduler",
5
- "describe": "Schedule due duty folders."
6
- }
@@ -1,3 +0,0 @@
1
- # Duty Tick
2
-
3
- Run one scheduled duty folder using its duty prompt, staff persona, tools, and state.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "duty-tick",
3
- "action": "duty-tick",
4
- "executable": "duty-tick",
5
- "describe": "Run one folder duty tick."
6
- }
@@ -1,3 +0,0 @@
1
- # Duty Tick Scripted
2
-
3
- Run one scheduled duty folder through its deterministic tick script and persist the next duty state.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "duty-tick-scripted",
3
- "action": "duty-tick-scripted",
4
- "executable": "duty-tick-scripted",
5
- "describe": "Run one scripted folder duty tick."
6
- }
@@ -1,10 +0,0 @@
1
- # Fix
2
-
3
- ## Purpose
4
-
5
- Apply review feedback to an existing PR.
6
-
7
- ## Instructions
8
-
9
- Use the `fix` 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,6 +0,0 @@
1
- {
2
- "name": "fix",
3
- "action": "fix",
4
- "executable": "fix",
5
- "describe": "Apply review feedback to an existing PR."
6
- }
@@ -1,10 +0,0 @@
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.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "fix-ci",
3
- "action": "fix-ci",
4
- "executable": "fix-ci",
5
- "describe": "Fix a failing CI workflow on an existing PR."
6
- }
@@ -1,3 +0,0 @@
1
- # Goal Scheduler
2
-
3
- Scan active goal state and run one goal tick per active goal.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "goal-scheduler",
3
- "action": "goal-scheduler",
4
- "executable": "goal-scheduler",
5
- "describe": "Schedule active goals."
6
- }
@@ -1,3 +0,0 @@
1
- # Goal Tick
2
-
3
- Read one goal state file, dispatch the next ready task, or finalize the goal when all tasks are complete.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "goal-tick",
3
- "action": "goal-tick",
4
- "executable": "goal-tick",
5
- "describe": "Advance one goal."
6
- }
@@ -1,10 +0,0 @@
1
- # Init
2
-
3
- ## Purpose
4
-
5
- Install Kody engine files in a repo.
6
-
7
- ## Instructions
8
-
9
- Use the `init` 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,6 +0,0 @@
1
- {
2
- "name": "init",
3
- "action": "init",
4
- "executable": "init",
5
- "describe": "Install Kody engine files in a repo."
6
- }
@@ -1,3 +0,0 @@
1
- # Job Live Verify
2
-
3
- Verify live job reference, staff, duty, executable, skill, and state wiring.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "job-live-verify",
3
- "action": "job-live-verify",
4
- "executable": "job-live-verify",
5
- "describe": "Verify live job wiring."
6
- }
@@ -1,10 +0,0 @@
1
- # Merge
2
-
3
- ## Purpose
4
-
5
- Self-gating squash merge of a PR.
6
-
7
- ## Instructions
8
-
9
- Use the `merge` 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,6 +0,0 @@
1
- {
2
- "name": "merge",
3
- "action": "merge",
4
- "executable": "merge",
5
- "describe": "Self-gating squash merge of a PR."
6
- }
@@ -1,17 +0,0 @@
1
- # NPM Publish
2
-
3
- ## Purpose
4
-
5
- Publish current `package.json` version to npm from the repository CI sandbox.
6
-
7
- ## Requirements
8
-
9
- - Store npm automation token as `NPM_TOKEN` in `.kody/secrets.enc`.
10
- - Kody must load that secret into the `NPM_TOKEN` environment variable before the executable runs.
11
- - The executable must not read or decrypt `.kody/secrets.enc` directly.
12
- - Run only after version in `package.json` is ready to publish.
13
-
14
- ## Instructions
15
-
16
- Use the `npm-publish` executable for the implementation details.
17
- The duty owns the public action name and the reason this action exists; the executable owns the method.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "npm-publish",
3
- "action": "npm-publish",
4
- "executable": "npm-publish",
5
- "describe": "Publish the current package.json version to npm."
6
- }
@@ -1,3 +0,0 @@
1
- # Plan Verify
2
-
3
- Verify one planned task slice.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "plan-verify",
3
- "action": "plan-verify",
4
- "executable": "plan-verify",
5
- "describe": "Verify a planned task slice."
6
- }
@@ -1,10 +0,0 @@
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.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "preview-build",
3
- "action": "preview-build",
4
- "executable": "preview-build",
5
- "describe": "Build and publish a per-PR preview."
6
- }
@@ -1,3 +0,0 @@
1
- # Probe Skill
2
-
3
- Run the probe skill test executable.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "probe-skill",
3
- "action": "probe-skill",
4
- "executable": "probe-skill",
5
- "describe": "Run the probe skill test executable."
6
- }
@@ -1,3 +0,0 @@
1
- # QA Goal
2
-
3
- Run one QA goal workflow.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "qa-goal",
3
- "action": "qa-goal",
4
- "executable": "qa-goal",
5
- "describe": "Run a QA goal."
6
- }
@@ -1,10 +0,0 @@
1
- # Release
2
-
3
- ## Purpose
4
-
5
- Run the release flow.
6
-
7
- ## Instructions
8
-
9
- Use the `release` 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,6 +0,0 @@
1
- {
2
- "name": "release",
3
- "action": "release",
4
- "executable": "release",
5
- "describe": "Run the release flow."
6
- }
@@ -1,10 +0,0 @@
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.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "release-deploy",
3
- "action": "release-deploy",
4
- "executable": "release-deploy",
5
- "describe": "Deploy or promote a release."
6
- }
@@ -1,10 +0,0 @@
1
- # Release Prepare
2
-
3
- ## Purpose
4
-
5
- Prepare a release PR.
6
-
7
- ## Instructions
8
-
9
- Use the `release-prepare` 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,6 +0,0 @@
1
- {
2
- "name": "release-prepare",
3
- "action": "release-prepare",
4
- "executable": "release-prepare",
5
- "describe": "Prepare a release PR."
6
- }
@@ -1,10 +0,0 @@
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.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "release-publish",
3
- "action": "release-publish",
4
- "executable": "release-publish",
5
- "describe": "Publish a prepared release."
6
- }
@@ -1,10 +0,0 @@
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.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "resolve",
3
- "action": "resolve",
4
- "executable": "resolve",
5
- "describe": "Resolve merge conflicts on an existing PR."
6
- }
@@ -1,10 +0,0 @@
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.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "revert",
3
- "action": "revert",
4
- "executable": "revert",
5
- "describe": "Revert one or more commits on a PR branch."
6
- }
@@ -1,10 +0,0 @@
1
- # Sync
2
-
3
- ## Purpose
4
-
5
- Merge the base branch into a PR branch.
6
-
7
- ## Instructions
8
-
9
- Use the `sync` 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,6 +0,0 @@
1
- {
2
- "name": "sync",
3
- "action": "sync",
4
- "executable": "sync",
5
- "describe": "Merge the base branch into a PR branch."
6
- }
@@ -1,3 +0,0 @@
1
- # Task Job Fail Once
2
-
3
- Fail the first run and pass after a recorded failed attempt.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "task-job-fail-once",
3
- "action": "task-job-fail-once",
4
- "executable": "task-job-fail-once",
5
- "describe": "Fail once for task job retry verification."
6
- }
@@ -1,3 +0,0 @@
1
- # Task Job Pass A
2
-
3
- Run task job pass test A.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "task-job-pass-a",
3
- "action": "task-job-pass-a",
4
- "executable": "task-job-pass-a",
5
- "describe": "Pass task job test A."
6
- }
@@ -1,3 +0,0 @@
1
- # Task Job Pass B
2
-
3
- Run task job pass test B.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "task-job-pass-b",
3
- "action": "task-job-pass-b",
4
- "executable": "task-job-pass-b",
5
- "describe": "Pass task job test B."
6
- }
@@ -1,3 +0,0 @@
1
- # Task Jobs
2
-
3
- Drain the next pending planned task job and return until the plan is complete.
@@ -1,6 +0,0 @@
1
- {
2
- "name": "task-jobs",
3
- "action": "task-jobs",
4
- "executable": "task-jobs",
5
- "describe": "Run planned task jobs."
6
- }
@@ -1,10 +0,0 @@
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,6 +0,0 @@
1
- {
2
- "name": "worker-ask",
3
- "action": "worker-ask",
4
- "executable": "worker-ask",
5
- "describe": "Run a staff member once against an inline request."
6
- }
@@ -1,57 +0,0 @@
1
- {
2
- "name": "duty-scheduler",
3
- "role": "watch",
4
- "describe": "Scheduled: for every duty folder under .kody/duties/, invoke duty-tick once. No agent on the scheduler itself.",
5
- "kind": "scheduled",
6
- "schedule": "*/5 * * * *",
7
- "inputs": [
8
- {
9
- "name": "duty",
10
- "flag": "--duty",
11
- "type": "string",
12
- "required": false,
13
- "describe": "Optional duty slug to run instead of scanning every due duty."
14
- }
15
- ],
16
- "claudeCode": {
17
- "model": "inherit",
18
- "permissionMode": "default",
19
- "maxTurns": null,
20
- "maxThinkingTokens": null,
21
- "systemPromptAppend": null,
22
- "tools": [],
23
- "hooks": [],
24
- "skills": [],
25
- "commands": [],
26
- "subagents": [],
27
- "plugins": [],
28
- "mcpServers": []
29
- },
30
- "cliTools": [
31
- {
32
- "name": "gh",
33
- "install": {
34
- "required": true,
35
- "checkCommand": "command -v gh"
36
- },
37
- "verify": "gh auth status",
38
- "usage": "",
39
- "allowedUses": ["api", "issue", "pr"]
40
- }
41
- ],
42
- "inputArtifacts": [],
43
- "outputArtifacts": [],
44
- "scripts": {
45
- "preflight": [
46
- {
47
- "script": "dispatchDutyFileTicks",
48
- "with": {
49
- "jobsDir": ".kody/duties",
50
- "targetExecutable": "duty-tick",
51
- "slugArg": "duty"
52
- }
53
- }
54
- ],
55
- "postflight": []
56
- }
57
- }
@@ -1,78 +0,0 @@
1
- {
2
- "name": "duty-tick",
3
- "role": "primitive",
4
- "describe": "One classifier tick for one duty folder: read intent + state, decide and execute via gh, emit next state.",
5
- "kind": "oneshot",
6
- "inputs": [
7
- {
8
- "name": "duty",
9
- "flag": "--duty",
10
- "type": "string",
11
- "required": true,
12
- "describe": "Duty slug — folder name under .kody/duties/."
13
- },
14
- {
15
- "name": "force",
16
- "flag": "--force",
17
- "type": "bool",
18
- "describe": "When true, the agent ignores the duty body's cadence guard and executes the work this tick. All other body rules (allowed commands, restrictions, state schema) still apply. Used for manual triggers from the dashboard's 'Run now' button."
19
- }
20
- ],
21
- "claudeCode": {
22
- "model": "inherit",
23
- "permissionMode": "default",
24
- "maxTurns": 100,
25
- "maxThinkingTokens": null,
26
- "systemPromptAppend": null,
27
- "enableSubmitTool": true,
28
- "tools": ["Bash", "Read", "mcp__kody-submit"],
29
- "hooks": [],
30
- "skills": [],
31
- "commands": [],
32
- "subagents": [],
33
- "plugins": [],
34
- "mcpServers": []
35
- },
36
- "cliTools": [
37
- {
38
- "name": "gh",
39
- "install": {
40
- "required": true,
41
- "checkCommand": "command -v gh"
42
- },
43
- "verify": "gh auth status",
44
- "usage": "Use `gh` for all GitHub actions: `gh pr list ...` to enumerate candidate PRs, `gh pr comment <n> --body \"...\"` to issue a Kody command, `gh pr view <n> --json mergeable,statusCheckRollup,headRefOid` to inspect state, `gh api ...` for anything else. NEVER edit files in the working tree.",
45
- "allowedUses": ["pr", "api", "issue"]
46
- }
47
- ],
48
- "inputArtifacts": [],
49
- "outputArtifacts": [],
50
- "scripts": {
51
- "preflight": [
52
- {
53
- "script": "loadJobFromFile",
54
- "with": {
55
- "jobsDir": ".kody/duties",
56
- "slugArg": "duty"
57
- }
58
- },
59
- {
60
- "script": "composePrompt"
61
- }
62
- ],
63
- "postflight": [
64
- {
65
- "script": "parseJobStateFromAgentResult",
66
- "with": {
67
- "fenceLabel": "kody-job-next-state"
68
- }
69
- },
70
- {
71
- "script": "writeJobStateFile"
72
- },
73
- {
74
- "script": "appendCompanyActivity"
75
- }
76
- ]
77
- }
78
- }