@kody-ade/kody-engine 0.4.220 → 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/dist/bin/kody.js +5 -29
- package/package.json +1 -1
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.221",
|
|
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",
|
|
@@ -1283,7 +1283,7 @@ function dutyToolDefinitions(opts) {
|
|
|
1283
1283
|
);
|
|
1284
1284
|
const recommendTool = {
|
|
1285
1285
|
name: "recommend_to_operator",
|
|
1286
|
-
description: "Post ONE comment on a PR with the operator @-mention prepended. Use this when a
|
|
1286
|
+
description: "Post ONE comment on a PR with the operator @-mention prepended. Use this when a duty is in ASK mode and you want the operator to confirm via the dashboard inbox. The mention handle is substituted from kody.config.json `github.operators` \u2014 do not type it yourself.",
|
|
1287
1287
|
inputSchema: {
|
|
1288
1288
|
pr: z2.number().int().positive().describe("PR number to comment on."),
|
|
1289
1289
|
body: z2.string().min(1).describe("Comment body (markdown). Do not include the operator mention \u2014 the engine prepends it.")
|
|
@@ -1298,9 +1298,9 @@ function dutyToolDefinitions(opts) {
|
|
|
1298
1298
|
};
|
|
1299
1299
|
const ledgerTool = {
|
|
1300
1300
|
name: "read_ledger",
|
|
1301
|
-
description: "Read
|
|
1301
|
+
description: "Read any sentinel-fenced JSON manifest stored on a labeled issue. Returns `{found, issueNumber, payload}` where payload is the parsed JSON between `<!-- <label>:start -->` and `<!-- <label>:end -->` sentinels.",
|
|
1302
1302
|
inputSchema: {
|
|
1303
|
-
label: z2.string().min(1).describe("GitHub issue label that identifies the manifest issue
|
|
1303
|
+
label: z2.string().min(1).describe("GitHub issue label that identifies the manifest issue.")
|
|
1304
1304
|
},
|
|
1305
1305
|
handler: async (args) => {
|
|
1306
1306
|
const label = String(args.label ?? "");
|
|
@@ -2205,27 +2205,10 @@ function listBuiltinJobs(root = getBuiltinJobsRoot()) {
|
|
|
2205
2205
|
return out;
|
|
2206
2206
|
}
|
|
2207
2207
|
function getExecutableRoots() {
|
|
2208
|
-
return [
|
|
2209
|
-
}
|
|
2210
|
-
function builtinExecutableNames() {
|
|
2211
|
-
if (_builtinNames) return _builtinNames;
|
|
2212
|
-
const out = /* @__PURE__ */ new Set();
|
|
2213
|
-
const root = getExecutablesRoot();
|
|
2214
|
-
try {
|
|
2215
|
-
for (const ent of fs7.readdirSync(root, { withFileTypes: true })) {
|
|
2216
|
-
if (ent.isDirectory() && fs7.existsSync(path7.join(root, ent.name, "profile.json"))) out.add(ent.name);
|
|
2217
|
-
}
|
|
2218
|
-
} catch {
|
|
2219
|
-
}
|
|
2220
|
-
_builtinNames = out;
|
|
2221
|
-
return out;
|
|
2222
|
-
}
|
|
2223
|
-
function isBuiltinExecutable(name) {
|
|
2224
|
-
return builtinExecutableNames().has(name);
|
|
2208
|
+
return [getProjectExecutablesRoot(), getExecutablesRoot()];
|
|
2225
2209
|
}
|
|
2226
2210
|
function listExecutables(roots = getExecutableRoots()) {
|
|
2227
2211
|
const rootList = typeof roots === "string" ? [roots] : roots;
|
|
2228
|
-
const dutiesRoot = getProjectDutiesRoot();
|
|
2229
2212
|
const seen = /* @__PURE__ */ new Set();
|
|
2230
2213
|
const out = [];
|
|
2231
2214
|
for (const root of rootList) {
|
|
@@ -2234,9 +2217,7 @@ function listExecutables(roots = getExecutableRoots()) {
|
|
|
2234
2217
|
for (const ent of entries) {
|
|
2235
2218
|
if (!ent.isDirectory()) continue;
|
|
2236
2219
|
if (seen.has(ent.name)) continue;
|
|
2237
|
-
if (root === dutiesRoot && isBuiltinExecutable(ent.name)) continue;
|
|
2238
2220
|
const profilePath = path7.join(root, ent.name, DUTY_PROFILE_FILE);
|
|
2239
|
-
if (root === dutiesRoot && !fs7.existsSync(path7.join(root, ent.name, DUTY_BODY_FILE))) continue;
|
|
2240
2221
|
if (fs7.existsSync(profilePath) && fs7.statSync(profilePath).isFile()) {
|
|
2241
2222
|
out.push({ name: ent.name, profilePath });
|
|
2242
2223
|
seen.add(ent.name);
|
|
@@ -2248,10 +2229,7 @@ function listExecutables(roots = getExecutableRoots()) {
|
|
|
2248
2229
|
function resolveExecutable(name, roots = getExecutableRoots()) {
|
|
2249
2230
|
if (!isSafeName(name)) return null;
|
|
2250
2231
|
const rootList = typeof roots === "string" ? [roots] : roots;
|
|
2251
|
-
const dutiesRoot = getProjectDutiesRoot();
|
|
2252
2232
|
for (const root of rootList) {
|
|
2253
|
-
if (root === dutiesRoot && isBuiltinExecutable(name)) continue;
|
|
2254
|
-
if (root === dutiesRoot && !fs7.existsSync(path7.join(root, name, DUTY_BODY_FILE))) continue;
|
|
2255
2233
|
const profilePath = path7.join(root, name, "profile.json");
|
|
2256
2234
|
if (fs7.existsSync(profilePath) && fs7.statSync(profilePath).isFile()) {
|
|
2257
2235
|
return profilePath;
|
|
@@ -2365,12 +2343,10 @@ function parseGenericFlags(argv) {
|
|
|
2365
2343
|
if (positional.length > 0) args._ = positional;
|
|
2366
2344
|
return args;
|
|
2367
2345
|
}
|
|
2368
|
-
var _builtinNames;
|
|
2369
2346
|
var init_registry = __esm({
|
|
2370
2347
|
"src/registry.ts"() {
|
|
2371
2348
|
"use strict";
|
|
2372
2349
|
init_dutyFolders();
|
|
2373
|
-
_builtinNames = null;
|
|
2374
2350
|
}
|
|
2375
2351
|
});
|
|
2376
2352
|
|
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",
|