@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.
Files changed (2) hide show
  1. package/dist/bin/kody.js +5 -29
  2. 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.220",
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 verb is NOT graduated in the trust ledger 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.",
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 the trust ledger (or 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. Use `read_ledger({label: 'kody:cto-decisions'})` to look up per-verb graduation modes for the trust gate.",
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 (e.g. 'kody:cto-decisions').")
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 [getProjectDutiesRoot(), getProjectExecutablesRoot(), getExecutablesRoot()];
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.220",
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",