@kody-ade/kody-engine 0.4.133 → 0.4.134

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 +22 -11
  2. package/package.json +1 -1
package/dist/bin/kody.js CHANGED
@@ -880,7 +880,7 @@ var init_loadPriorArt = __esm({
880
880
  // package.json
881
881
  var package_default = {
882
882
  name: "@kody-ade/kody-engine",
883
- version: "0.4.133",
883
+ version: "0.4.134",
884
884
  description: "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
885
885
  license: "MIT",
886
886
  type: "module",
@@ -8624,23 +8624,34 @@ function readKodyVariables(cwd) {
8624
8624
 
8625
8625
  // src/scripts/loadQaContext.ts
8626
8626
  var PROFILE_DIR_REL_PATH = ".kody/profile";
8627
+ var QA_STAFF = "qa-engineer";
8628
+ var ALL_STAFF = "*";
8629
+ var LEGACY_AUDIENCE_TO_STAFF = { chat: "kody", qa: QA_STAFF };
8627
8630
  var FRONTMATTER_RE2 = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;
8628
- function readProfileAudience(raw) {
8631
+ function parseSlugList(value) {
8632
+ const inner = value.startsWith("[") && value.endsWith("]") ? value.slice(1, -1) : value;
8633
+ return inner.split(",").map((s) => s.trim().replace(/^["']|["']$/g, "").toLowerCase()).filter(Boolean);
8634
+ }
8635
+ function readProfileStaff(raw) {
8629
8636
  const m = FRONTMATTER_RE2.exec(raw);
8630
- if (!m) return { audience: ["chat"], body: raw };
8637
+ if (!m) return { staff: ["kody"], body: raw };
8631
8638
  const body = raw.slice(m[0].length);
8639
+ let staff = null;
8640
+ let legacy = null;
8632
8641
  for (const line of (m[1] ?? "").split(/\r?\n/)) {
8633
8642
  const t = line.trim();
8634
8643
  const c = t.indexOf(":");
8635
8644
  if (c < 0) continue;
8636
- if (t.slice(0, c).trim() === "audience") {
8637
- const v = t.slice(c + 1).trim();
8638
- const inner = v.startsWith("[") && v.endsWith("]") ? v.slice(1, -1) : v;
8639
- const audience = inner.split(",").map((s) => s.trim().replace(/^["']|["']$/g, "").toLowerCase()).filter(Boolean);
8640
- return { audience: audience.length > 0 ? audience : ["chat"], body };
8645
+ const key = t.slice(0, c).trim();
8646
+ const value = t.slice(c + 1).trim();
8647
+ if (key === "staff") {
8648
+ staff = parseSlugList(value);
8649
+ } else if (key === "audience" || key === "for") {
8650
+ const mapped = parseSlugList(value).map((tok) => LEGACY_AUDIENCE_TO_STAFF[tok]).filter(Boolean);
8651
+ if (mapped.length > 0) legacy = mapped;
8641
8652
  }
8642
8653
  }
8643
- return { audience: ["chat"], body };
8654
+ return { staff: staff ?? legacy ?? ["kody"], body };
8644
8655
  }
8645
8656
  function readProfile(cwd) {
8646
8657
  const dir = path33.join(cwd, PROFILE_DIR_REL_PATH);
@@ -8655,8 +8666,8 @@ function readProfile(cwd) {
8655
8666
  for (const file of entries) {
8656
8667
  try {
8657
8668
  const raw = fs34.readFileSync(path33.join(dir, file), "utf-8");
8658
- const { audience, body } = readProfileAudience(raw);
8659
- if (!audience.includes("qa")) continue;
8669
+ const { staff, body } = readProfileStaff(raw);
8670
+ if (!staff.includes(QA_STAFF) && !staff.includes(ALL_STAFF)) continue;
8660
8671
  blocks.push(`## ${file}
8661
8672
 
8662
8673
  ${body.trim()}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.4.133",
3
+ "version": "0.4.134",
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",