devlyn-cli 4.3.24 → 4.3.25
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/bin/engines.js +14 -12
- package/bin/harness-activation.js +4 -2
- package/bin/skill-history.json +1 -0
- package/native/claude/.claude-plugin/plugin.json +1 -1
- package/native/codex/.agents/plugins/marketplace.json +1 -1
- package/native/codex/plugins/devlyn/.codex-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/release.json +9 -9
package/bin/engines.js
CHANGED
|
@@ -4,10 +4,11 @@ const ENGINE_IDS = Object.freeze([
|
|
|
4
4
|
'claude', 'codex', 'grok', 'omp', 'antigravity', 'cursor', 'opencode', 'kimi', 'copilot', 'qwen',
|
|
5
5
|
]);
|
|
6
6
|
|
|
7
|
-
// The versions each channel was examined on.
|
|
8
|
-
// compatible:
|
|
9
|
-
//
|
|
10
|
-
// is refused
|
|
7
|
+
// The versions each channel was examined on. Any newer release, a new major included, is taken as
|
|
8
|
+
// compatible: a version number is not evidence that a channel broke (omp 18 kept both flags devlyn
|
|
9
|
+
// uses), and refusing unexamined majors turned working engines off. Only a version below the examined
|
|
10
|
+
// floor (or a Cursor build older than the examined one) is refused; an unreadable version is refused
|
|
11
|
+
// with its own reason.
|
|
11
12
|
const ENGINE_CAPABILITIES = Object.freeze({
|
|
12
13
|
claude: { minimum: '2.1.307', executor: true },
|
|
13
14
|
codex: { minimum: '0.163.0', executor: true },
|
|
@@ -21,20 +22,21 @@ const ENGINE_CAPABILITIES = Object.freeze({
|
|
|
21
22
|
qwen: { minimum: '0.26.0', executor: false },
|
|
22
23
|
});
|
|
23
24
|
|
|
25
|
+
function readableVersion(engine, version) {
|
|
26
|
+
return typeof version === 'string'
|
|
27
|
+
&& (engine === 'cursor' ? /^\d{4}\.\d{2}\.\d{2}-[0-9a-f]+$/ : /^\d+\.\d+\.\d+$/).test(version);
|
|
28
|
+
}
|
|
29
|
+
|
|
24
30
|
function supportedVersion(engine, version) {
|
|
31
|
+
if (!readableVersion(engine, version)) return false;
|
|
25
32
|
const capability = ENGINE_CAPABILITIES[engine];
|
|
26
|
-
if (engine === 'cursor')
|
|
27
|
-
const build = typeof version === 'string' && version.match(/^(\d{4})\.(\d{2})\.(\d{2})-[0-9a-f]+$/);
|
|
28
|
-
return Boolean(build) && build.slice(1).join('') >= capability.minimum.slice(0, 10).replace(/\./g, '');
|
|
29
|
-
}
|
|
30
|
-
if (typeof version !== 'string' || !/^\d+\.\d+\.\d+$/.test(version)) return false;
|
|
33
|
+
if (engine === 'cursor') return version.slice(0, 10).replace(/\./g, '') >= capability.minimum.slice(0, 10).replace(/\./g, '');
|
|
31
34
|
const actual = version.split('.').map(Number);
|
|
32
35
|
const floor = capability.minimum.split('.').map(Number);
|
|
33
|
-
|
|
34
|
-
for (let i = 1; i < 3; i++) {
|
|
36
|
+
for (let i = 0; i < 3; i++) {
|
|
35
37
|
if (actual[i] !== floor[i]) return actual[i] > floor[i];
|
|
36
38
|
}
|
|
37
39
|
return true;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
module.exports = { ENGINE_IDS, ENGINE_CAPABILITIES, supportedVersion };
|
|
42
|
+
module.exports = { ENGINE_IDS, ENGINE_CAPABILITIES, readableVersion, supportedVersion };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const os = require('os');
|
|
3
3
|
const path = require('path');
|
|
4
|
-
const { ENGINE_IDS, ENGINE_CAPABILITIES, supportedVersion } = require('./engines');
|
|
4
|
+
const { ENGINE_IDS, ENGINE_CAPABILITIES, readableVersion, supportedVersion } = require('./engines');
|
|
5
5
|
const { verifyRelease, sha256, fail, options, HarnessError } = require('./release');
|
|
6
6
|
const { fingerprint } = require('./skill-ownership');
|
|
7
7
|
const history = require('./skill-history.json');
|
|
@@ -301,7 +301,9 @@ function planActivation(releaseRoot, input, env = process.env) {
|
|
|
301
301
|
if (off) return finish(plan);
|
|
302
302
|
plan.release = release;
|
|
303
303
|
if (!supported) {
|
|
304
|
-
const reasons = [
|
|
304
|
+
const reasons = [readableVersion(context.engine, context.version)
|
|
305
|
+
? reason('engine-version-unsupported', { minimum: ENGINE_CAPABILITIES[context.engine].minimum })
|
|
306
|
+
: reason('engine-version-unreadable')];
|
|
305
307
|
status.principles = channel('unavailable', null, reasons);
|
|
306
308
|
status.skills = channel('unavailable', null, reasons);
|
|
307
309
|
return finish(plan);
|
package/bin/skill-history.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devlyn-cli",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.25",
|
|
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.
|
|
4
|
+
"version": "4.3.25",
|
|
5
5
|
"principles": {
|
|
6
6
|
"defaults": "config/skills/_shared/runtime-principles.md",
|
|
7
7
|
"memory": {
|
|
@@ -134,12 +134,12 @@
|
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
"path": "bin/engines.js",
|
|
137
|
-
"sha256": "
|
|
137
|
+
"sha256": "f36fe59473e050a6d53fde7642058c67b4f3353816d62042f0fe6c1004715bfa",
|
|
138
138
|
"executable": false
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
"path": "bin/harness-activation.js",
|
|
142
|
-
"sha256": "
|
|
142
|
+
"sha256": "b864c9e325e3e7bd6f800e51d456cb00d40925d6f0713a0c692cff207a9c6183",
|
|
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": "
|
|
167
|
+
"sha256": "c137de72e6ca67b53800f1a5f777f44b00dcbdfa1e036ccf38174177f5fed69e",
|
|
168
168
|
"executable": false
|
|
169
169
|
},
|
|
170
170
|
{
|
|
@@ -334,7 +334,7 @@
|
|
|
334
334
|
},
|
|
335
335
|
{
|
|
336
336
|
"path": "native/claude/.claude-plugin/plugin.json",
|
|
337
|
-
"sha256": "
|
|
337
|
+
"sha256": "f2d0eb5a6bccfe88a6e5b8a5117f309f41f724d00acdeff4eac8a1b310ca907b",
|
|
338
338
|
"executable": false
|
|
339
339
|
},
|
|
340
340
|
{
|
|
@@ -484,12 +484,12 @@
|
|
|
484
484
|
},
|
|
485
485
|
{
|
|
486
486
|
"path": "native/codex/.agents/plugins/marketplace.json",
|
|
487
|
-
"sha256": "
|
|
487
|
+
"sha256": "3fcaa2f62b36f4aab8475d2ab10910ba0d6a55045a152399d358e2abbf2f5934",
|
|
488
488
|
"executable": false
|
|
489
489
|
},
|
|
490
490
|
{
|
|
491
491
|
"path": "native/codex/plugins/devlyn/.codex-plugin/plugin.json",
|
|
492
|
-
"sha256": "
|
|
492
|
+
"sha256": "f2d0eb5a6bccfe88a6e5b8a5117f309f41f724d00acdeff4eac8a1b310ca907b",
|
|
493
493
|
"executable": false
|
|
494
494
|
},
|
|
495
495
|
{
|
|
@@ -1779,12 +1779,12 @@
|
|
|
1779
1779
|
},
|
|
1780
1780
|
{
|
|
1781
1781
|
"path": "package.json",
|
|
1782
|
-
"sha256": "
|
|
1782
|
+
"sha256": "2448478a5c2d95bc1cddde475d3d091942f4685c982ca5e52a7d1a267636fd4c",
|
|
1783
1783
|
"executable": false
|
|
1784
1784
|
}
|
|
1785
1785
|
],
|
|
1786
1786
|
"digest": {
|
|
1787
1787
|
"algorithm": "sha256",
|
|
1788
|
-
"value": "
|
|
1788
|
+
"value": "2a0d645e703b3aa32324d5890cbb83d6bf9174074e12dbf3f16e00c2f1ba7cb1"
|
|
1789
1789
|
}
|
|
1790
1790
|
}
|