devlyn-cli 4.3.8 → 4.3.9

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.
@@ -160,6 +160,33 @@ function discoveryRoots(context, env, config) {
160
160
  return [...new Set(roots)];
161
161
  }
162
162
 
163
+ function kimiSkillRoots(context, env) {
164
+ const home = env.HOME || env.USERPROFILE || os.homedir();
165
+ let project = path.resolve(context.cwd);
166
+ const roots = new Set(), errors = [];
167
+ for (let dir = project; ; dir = path.dirname(dir)) {
168
+ const git = path.join(dir, '.git');
169
+ try {
170
+ if (fs.statSync(git, { throwIfNoEntry: false })) { project = dir; break; }
171
+ } catch (error) {
172
+ errors.push(reason('config-unreadable', { path: git, detail: error.message }));
173
+ break;
174
+ }
175
+ if (dir === path.dirname(dir)) break;
176
+ }
177
+ // --skills-dir replaces auto discovery and makes every root user-priority:
178
+ // first-name wins, so preserve workspace precedence by putting it first.
179
+ for (const root of [path.join(project, '.kimi-code/skills'), path.join(project, '.agents/skills'),
180
+ path.resolve(env.KIMI_CODE_HOME || path.join(home, '.kimi-code'), 'skills'), path.resolve(home, '.agents/skills')]) {
181
+ try {
182
+ if (fs.statSync(root, { throwIfNoEntry: false })?.isDirectory()) roots.add(fs.realpathSync(root));
183
+ } catch (error) {
184
+ errors.push(reason('config-unreadable', { path: root, detail: error.message }));
185
+ }
186
+ }
187
+ return { roots: [...roots], errors };
188
+ }
189
+
163
190
  function inspectSkills(context, release, env, config, active) {
164
191
  const found = [], errors = [], hashes = new Map();
165
192
  for (const root of discoveryRoots(context, env, config)) {
@@ -420,7 +447,12 @@ function planActivation(releaseRoot, input, env = process.env) {
420
447
  status.skills = channel('partial', null, [reason('skills-unavailable', { launchMode: context.launchMode, ownerAgent: config.ownerAgent })]);
421
448
  } else {
422
449
  plan.engineArgs.push('--agent-file', file('devlyn-kimi.md', joinText('${base_prompt}', instructions)));
423
- principles('agent-file'); fallback();
450
+ principles('agent-file');
451
+ const kimi = kimiSkillRoots(context, env);
452
+ if (!collisions.length && !errors.length && !kimi.errors.length) {
453
+ for (const root of [...kimi.roots, path.join(release.root, 'config/skills')]) plan.engineArgs.push('--skills-dir', root);
454
+ native('--skills-dir', 'read-file', `Read ${path.join(release.root, 'config/skills/devlyn-ideate/SKILL.md')}`);
455
+ } else fallback([...collisions, ...errors, ...kimi.errors]);
424
456
  }
425
457
  break;
426
458
  case 'antigravity':
@@ -769,6 +769,7 @@
769
769
  "4.3.5",
770
770
  "4.3.6",
771
771
  "4.3.7",
772
- "4.3.8"
772
+ "4.3.8",
773
+ "4.3.9"
773
774
  ]
774
775
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devlyn",
3
- "version": "4.3.8",
3
+ "version": "4.3.9",
4
4
  "description": "Devlyn harness skills",
5
5
  "skills": "./skills/"
6
6
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "devlyn-harness-v4-3-8",
2
+ "name": "devlyn-harness-v4-3-9",
3
3
  "plugins": [
4
4
  {
5
5
  "name": "devlyn",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devlyn",
3
- "version": "4.3.8",
3
+ "version": "4.3.9",
4
4
  "description": "Devlyn harness skills",
5
5
  "skills": "./skills/"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devlyn-cli",
3
- "version": "4.3.8",
3
+ "version": "4.3.9",
4
4
  "description": "Loop & harness engineering for AI coding agents (Claude Code, Codex, and any AGENTS.md-driven agent) — core engineering principles for CLAUDE.md/AGENTS.md and a loop designer that splits one intent into tasks agents drain hands-free",
5
5
  "homepage": "https://github.com/fysoul17/devlyn-cli#readme",
6
6
  "bin": {
package/release.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "devlyn-cli",
4
- "version": "4.3.8",
4
+ "version": "4.3.9",
5
5
  "principles": {
6
6
  "defaults": "config/skills/_shared/runtime-principles.md",
7
7
  "memory": {
@@ -139,7 +139,7 @@
139
139
  },
140
140
  {
141
141
  "path": "bin/harness-activation.js",
142
- "sha256": "980f251957d9093b47ba2c5229b77145233a7253938220b69069468f7b4f8979",
142
+ "sha256": "fecb47b04e7f6e72735a9ea50b6aa524eca611d42c6db1b03c1260ddf2259bbc",
143
143
  "executable": false
144
144
  },
145
145
  {
@@ -164,7 +164,7 @@
164
164
  },
165
165
  {
166
166
  "path": "bin/skill-history.json",
167
- "sha256": "9012124a107faba4ee1a0719462920590ff04bcdf82d5bc40d178ef8f182ea82",
167
+ "sha256": "947ec7e9dead4b4e9ebb234219c7aaea76b0561fde997c95d53c67f6babbdb3a",
168
168
  "executable": false
169
169
  },
170
170
  {
@@ -309,7 +309,7 @@
309
309
  },
310
310
  {
311
311
  "path": "native/claude/.claude-plugin/plugin.json",
312
- "sha256": "54f89d39a32c9d822321ae2a2805c8fe071c2b78c6b84f1c29ac85e4ae59667f",
312
+ "sha256": "5aa927b9eb784e0a246571e8c747607390c7dc89207a66b9bc8759281429b259",
313
313
  "executable": false
314
314
  },
315
315
  {
@@ -439,12 +439,12 @@
439
439
  },
440
440
  {
441
441
  "path": "native/codex/.agents/plugins/marketplace.json",
442
- "sha256": "6c507f8668ee2df5322e6bc0a7f1f7303410d2566b24709eaf4a9a581a25755c",
442
+ "sha256": "39a9e1bcfd87ffca63ce3e6a7b38d280b8bf4db725a28683c2f1f60cdb792730",
443
443
  "executable": false
444
444
  },
445
445
  {
446
446
  "path": "native/codex/plugins/devlyn/.codex-plugin/plugin.json",
447
- "sha256": "54f89d39a32c9d822321ae2a2805c8fe071c2b78c6b84f1c29ac85e4ae59667f",
447
+ "sha256": "5aa927b9eb784e0a246571e8c747607390c7dc89207a66b9bc8759281429b259",
448
448
  "executable": false
449
449
  },
450
450
  {
@@ -1619,12 +1619,12 @@
1619
1619
  },
1620
1620
  {
1621
1621
  "path": "package.json",
1622
- "sha256": "42de8c1332266cae7209808646f51e3b97f3c8e2dc2e4775e0e0ab9daa52bfd1",
1622
+ "sha256": "9c67dfff676ecd8d7597146398ab5304c6ecac12d870b1ff1924478060614acc",
1623
1623
  "executable": false
1624
1624
  }
1625
1625
  ],
1626
1626
  "digest": {
1627
1627
  "algorithm": "sha256",
1628
- "value": "cac9f8a9d305a77ecff9139fe06bad8a9932a47dc1f800c20520c5a79b969070"
1628
+ "value": "de2c9dba7a92d6c9844f3434fbdb21c8236e58b5e64e5f475fcca0dfb4b11c3f"
1629
1629
  }
1630
1630
  }