@kody-ade/kody-engine 0.4.214-live.1 → 0.4.214

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.214-live.1",
18
+ version: "0.4.214",
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",
@@ -7832,6 +7832,12 @@ function readJobFile(cwd, jobsDir, slug) {
7832
7832
  return { frontmatter: {}, body: "" };
7833
7833
  }
7834
7834
  }
7835
+ function parseDutyFilter(raw) {
7836
+ return typeof raw === "string" && raw.trim().length > 0 ? raw.trim() : void 0;
7837
+ }
7838
+ function filterSlugs(slugs, onlyDuty) {
7839
+ return onlyDuty ? slugs.filter((slug) => slug === onlyDuty) : slugs;
7840
+ }
7835
7841
  function createDutyTaskIssue(opts) {
7836
7842
  const title = `Duty ${opts.slug} - multi-executable task`;
7837
7843
  const body = buildDutyTaskIssueBody(opts.slug, opts.body, opts.frontmatter);
@@ -7919,18 +7925,24 @@ var init_dispatchDutyFileTicks = __esm({
7919
7925
  await backend.hydrate();
7920
7926
  }
7921
7927
  try {
7922
- const slugs = listJobSlugs(path26.join(ctx.cwd, jobsDir));
7923
- ctx.data.jobSlugCount = slugs.length;
7924
- if (slugs.length === 0) {
7925
- process.stdout.write(`[jobs] no job files in ${jobsDir}
7928
+ const onlyDuty = parseDutyFilter(ctx.args.duty);
7929
+ const jobsPath = path26.join(ctx.cwd, jobsDir);
7930
+ const slugs = filterSlugs(listJobSlugs(jobsPath), onlyDuty);
7931
+ const folderSlugList = filterSlugs(listFolderDutySlugs(jobsPath), onlyDuty);
7932
+ ctx.data.jobSlugCount = slugs.length + folderSlugList.length;
7933
+ if (slugs.length === 0 && folderSlugList.length === 0) {
7934
+ const filter = onlyDuty ? ` matching ${onlyDuty}` : "";
7935
+ process.stdout.write(`[jobs] no job files${filter} in ${jobsDir}
7926
7936
  `);
7927
7937
  return;
7928
7938
  }
7929
- process.stdout.write(`[jobs] ticking ${slugs.length} job(s) via ${targetExecutable}
7930
- `);
7939
+ const filtered = onlyDuty ? ` matching ${onlyDuty}` : "";
7940
+ process.stdout.write(
7941
+ `[jobs] ticking ${slugs.length + folderSlugList.length} job(s)${filtered} via ${targetExecutable}
7942
+ `
7943
+ );
7931
7944
  const results = [];
7932
7945
  const now = Date.now();
7933
- const folderSlugList = listFolderDutySlugs(path26.join(ctx.cwd, jobsDir));
7934
7946
  const folderDutySlugs = new Set(folderSlugList);
7935
7947
  const scheduledDuties = folderSlugList.map((slug) => {
7936
7948
  try {
@@ -4,7 +4,15 @@
4
4
  "describe": "Scheduled: for every duty file under .kody/duties/, invoke duty-tick once. No agent on the scheduler itself.",
5
5
  "kind": "scheduled",
6
6
  "schedule": "*/5 * * * *",
7
- "inputs": [],
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
+ ],
8
16
  "claudeCode": {
9
17
  "model": "inherit",
10
18
  "permissionMode": "default",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.4.214-live.1",
3
+ "version": "0.4.214",
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",