@christang/keel 5.77.0 → 5.78.0
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/assets/bootstrap/AGENTS.md +1 -1
- package/bin/keel.js +62 -16
- package/npm-shrinkwrap.json +194 -320
- package/package.json +1 -1
- package/plugins/keel/.claude-plugin/plugin.json +1 -1
- package/plugins/keel/.codex-plugin/plugin.json +1 -1
- package/scripts/validate_plugin.py +45 -27
- package/src/core/context.js +4 -3
package/bin/keel.js
CHANGED
|
@@ -1277,9 +1277,34 @@ function skillRootForTarget(target) {
|
|
|
1277
1277
|
return path.join(".opencode", "skills");
|
|
1278
1278
|
}
|
|
1279
1279
|
|
|
1280
|
-
|
|
1280
|
+
// Which OpenSpec layout a Codex repository carries (#169). OpenSpec 1.6 wrote
|
|
1281
|
+
// Codex's skills under `.codex/skills` and its commands as prompts in
|
|
1282
|
+
// CODEX_HOME; 1.13, which Keel pins, writes skills under `.agents/skills` and
|
|
1283
|
+
// no command files. A repository set up under 1.6 keeps its layout, and every
|
|
1284
|
+
// other one — a fresh repository included — gets the one the pin writes.
|
|
1285
|
+
function codexOpenSpecLayout(repo) {
|
|
1286
|
+
const holdsOpenSpec = (root) => {
|
|
1287
|
+
try {
|
|
1288
|
+
return fs
|
|
1289
|
+
.readdirSync(path.join(repo, root))
|
|
1290
|
+
.some((entry) => entry.startsWith("openspec-"));
|
|
1291
|
+
} catch {
|
|
1292
|
+
return false;
|
|
1293
|
+
}
|
|
1294
|
+
};
|
|
1295
|
+
return holdsOpenSpec(path.join(".codex", "skills"))
|
|
1296
|
+
&& !holdsOpenSpec(path.join(".agents", "skills"))
|
|
1297
|
+
? "legacy"
|
|
1298
|
+
: "agents";
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
function openspecSkillRootForTarget(target, repo) {
|
|
1281
1302
|
if (target === "claude") return path.join(".claude", "skills");
|
|
1282
|
-
if (target === "codex")
|
|
1303
|
+
if (target === "codex") {
|
|
1304
|
+
return codexOpenSpecLayout(repo) === "legacy"
|
|
1305
|
+
? path.join(".codex", "skills")
|
|
1306
|
+
: path.join(".agents", "skills");
|
|
1307
|
+
}
|
|
1283
1308
|
return path.join(".opencode", "skills");
|
|
1284
1309
|
}
|
|
1285
1310
|
|
|
@@ -1294,6 +1319,16 @@ function commandSurfaceForTarget(target, repo) {
|
|
|
1294
1319
|
remediation: "run keel --init --target claude or openspec update --force",
|
|
1295
1320
|
};
|
|
1296
1321
|
}
|
|
1322
|
+
if (target === "codex" && codexOpenSpecLayout(repo) === "agents") {
|
|
1323
|
+
// OpenSpec 1.13 surfaces Codex's workflows as the skills counted on the
|
|
1324
|
+
// line above and writes no command file, so there is nothing to count here.
|
|
1325
|
+
return {
|
|
1326
|
+
location: path.join(".agents", "skills"),
|
|
1327
|
+
paths: [],
|
|
1328
|
+
remediation: "run keel --init --target codex or openspec update --force",
|
|
1329
|
+
skillsOnly: true,
|
|
1330
|
+
};
|
|
1331
|
+
}
|
|
1297
1332
|
if (target === "codex") {
|
|
1298
1333
|
const home = codexHome();
|
|
1299
1334
|
const location = path.join(home, "prompts");
|
|
@@ -1320,13 +1355,15 @@ function commandPathForAction(target, repo, action) {
|
|
|
1320
1355
|
return path.join(repo, ".claude", "commands", "opsx", `${action}.md`);
|
|
1321
1356
|
}
|
|
1322
1357
|
if (target === "codex") {
|
|
1323
|
-
return
|
|
1358
|
+
return codexOpenSpecLayout(repo) === "legacy"
|
|
1359
|
+
? path.join(codexHome(), "prompts", `opsx-${action}.md`)
|
|
1360
|
+
: null;
|
|
1324
1361
|
}
|
|
1325
1362
|
return path.join(repo, ".opencode", "commands", `opsx-${action}.md`);
|
|
1326
1363
|
}
|
|
1327
1364
|
|
|
1328
1365
|
function openspecOverlaySurfacesForTarget(target, repo) {
|
|
1329
|
-
const skillRoot = openspecSkillRootForTarget(target);
|
|
1366
|
+
const skillRoot = openspecSkillRootForTarget(target, repo);
|
|
1330
1367
|
return OPENSPEC_OVERLAY_ACTIONS.flatMap((action) => {
|
|
1331
1368
|
if (action === "propose" && target === "opencode") {
|
|
1332
1369
|
return [];
|
|
@@ -1346,7 +1383,7 @@ function openspecOverlaySurfacesForTarget(target, repo) {
|
|
|
1346
1383
|
action,
|
|
1347
1384
|
path: commandPathForAction(target, repo, action),
|
|
1348
1385
|
},
|
|
1349
|
-
];
|
|
1386
|
+
].filter((surface) => surface.path !== null);
|
|
1350
1387
|
});
|
|
1351
1388
|
}
|
|
1352
1389
|
|
|
@@ -1699,7 +1736,7 @@ function printTargetSurface(repo, target) {
|
|
|
1699
1736
|
}
|
|
1700
1737
|
}
|
|
1701
1738
|
|
|
1702
|
-
const openspecSkillRoot = openspecSkillRootForTarget(target);
|
|
1739
|
+
const openspecSkillRoot = openspecSkillRootForTarget(target, repo);
|
|
1703
1740
|
const openspecSkillPaths = OPENSPEC_SKILLS.map((skill) =>
|
|
1704
1741
|
path.join(repo, openspecSkillRoot, skill, "SKILL.md")
|
|
1705
1742
|
);
|
|
@@ -1722,16 +1759,25 @@ function printTargetSurface(repo, target) {
|
|
|
1722
1759
|
);
|
|
1723
1760
|
|
|
1724
1761
|
const commands = commandSurfaceForTarget(target, repo);
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1762
|
+
if (commands.skillsOnly) {
|
|
1763
|
+
printDoctorLine(
|
|
1764
|
+
"OpenSpec commands",
|
|
1765
|
+
"ok",
|
|
1766
|
+
`none; OpenSpec 1.13 surfaces Codex's workflows as the skills under `
|
|
1767
|
+
+ `${commands.location}`
|
|
1768
|
+
);
|
|
1769
|
+
} else {
|
|
1770
|
+
const commandCounts = countExisting(commands.paths);
|
|
1771
|
+
const commandDetail =
|
|
1772
|
+
surfaceStatus(commandCounts) === "ok"
|
|
1773
|
+
? formatCount(commandCounts, commands.location)
|
|
1774
|
+
: `${formatCount(commandCounts, commands.location)}; ${commands.remediation}`;
|
|
1775
|
+
printDoctorLine(
|
|
1776
|
+
"OpenSpec commands",
|
|
1777
|
+
surfaceStatus(commandCounts),
|
|
1778
|
+
commandDetail
|
|
1779
|
+
);
|
|
1780
|
+
}
|
|
1735
1781
|
|
|
1736
1782
|
const overlayPaths = openspecOverlaySurfacesForTarget(target, repo).map(
|
|
1737
1783
|
(surface) => surface.path
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@christang/keel",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.78.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@christang/keel",
|
|
9
|
-
"version": "5.
|
|
9
|
+
"version": "5.78.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@fission-ai/openspec": "^1.4.1"
|
|
@@ -19,22 +19,21 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"node_modules/@fission-ai/openspec": {
|
|
22
|
-
"version": "1.
|
|
23
|
-
"resolved": "https://registry.npmjs.org/@fission-ai/openspec/-/openspec-1.
|
|
24
|
-
"integrity": "sha512-
|
|
25
|
-
"hasInstallScript": true,
|
|
22
|
+
"version": "1.13.2",
|
|
23
|
+
"resolved": "https://registry.npmjs.org/@fission-ai/openspec/-/openspec-1.13.2.tgz",
|
|
24
|
+
"integrity": "sha512-HzBaN9C1/ET+tgm/pxbWQYY4Kf+X9/1MSVEGQ8ZT3g4ZpdHn6v82CHkN+zmt9qv98Ghw0MDpmURasjJD2f90bg==",
|
|
26
25
|
"license": "MIT",
|
|
27
26
|
"dependencies": {
|
|
28
|
-
"@inquirer/core": "^
|
|
29
|
-
"@inquirer/prompts": "^
|
|
30
|
-
"chalk": "^5.
|
|
27
|
+
"@inquirer/core": "^12.0.0",
|
|
28
|
+
"@inquirer/prompts": "^8.5.2",
|
|
29
|
+
"chalk": "^5.6.2",
|
|
31
30
|
"commander": "^14.0.0",
|
|
32
31
|
"cross-spawn": "7.0.6",
|
|
32
|
+
"diff": "^9.0.0",
|
|
33
33
|
"fast-glob": "^3.3.3",
|
|
34
|
-
"ora": "^
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"zod": "^4.0.17"
|
|
34
|
+
"ora": "^9.4.1",
|
|
35
|
+
"yaml": "^2.8.3",
|
|
36
|
+
"zod": "^4.4.3"
|
|
38
37
|
},
|
|
39
38
|
"bin": {
|
|
40
39
|
"openspec": "bin/openspec.js"
|
|
@@ -44,28 +43,27 @@
|
|
|
44
43
|
}
|
|
45
44
|
},
|
|
46
45
|
"node_modules/@inquirer/ansi": {
|
|
47
|
-
"version": "
|
|
48
|
-
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-
|
|
49
|
-
"integrity": "sha512-
|
|
46
|
+
"version": "2.0.8",
|
|
47
|
+
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.8.tgz",
|
|
48
|
+
"integrity": "sha512-WpQM+Ti6Z40EFwwt+uL2p4UabT+W179zHp6HhLVOzfbwnVn05IPO/eXIZXGNqcT1jbQ15SujNLzQ39k4QPPxBQ==",
|
|
50
49
|
"license": "MIT",
|
|
51
50
|
"engines": {
|
|
52
|
-
"node": ">=
|
|
51
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
53
52
|
}
|
|
54
53
|
},
|
|
55
54
|
"node_modules/@inquirer/checkbox": {
|
|
56
|
-
"version": "
|
|
57
|
-
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-
|
|
58
|
-
"integrity": "sha512-
|
|
55
|
+
"version": "5.2.5",
|
|
56
|
+
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.5.tgz",
|
|
57
|
+
"integrity": "sha512-bRt8J8m+Fot9CXv+zNQGXUq2ET0MggR1fPz7v6edN6MFYmsbfGnMmkmWZJEegMKqrAC8ej/o1sqisHZXZJMAfQ==",
|
|
59
58
|
"license": "MIT",
|
|
60
59
|
"dependencies": {
|
|
61
|
-
"@inquirer/ansi": "^
|
|
62
|
-
"@inquirer/core": "^
|
|
63
|
-
"@inquirer/figures": "^
|
|
64
|
-
"@inquirer/type": "
|
|
65
|
-
"yoctocolors-cjs": "^2.1.3"
|
|
60
|
+
"@inquirer/ansi": "^2.0.8",
|
|
61
|
+
"@inquirer/core": "^12.0.3",
|
|
62
|
+
"@inquirer/figures": "^2.0.9",
|
|
63
|
+
"@inquirer/type": "4.1.1"
|
|
66
64
|
},
|
|
67
65
|
"engines": {
|
|
68
|
-
"node": ">=
|
|
66
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
69
67
|
},
|
|
70
68
|
"peerDependencies": {
|
|
71
69
|
"@types/node": ">=18"
|
|
@@ -77,16 +75,16 @@
|
|
|
77
75
|
}
|
|
78
76
|
},
|
|
79
77
|
"node_modules/@inquirer/confirm": {
|
|
80
|
-
"version": "
|
|
81
|
-
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-
|
|
82
|
-
"integrity": "sha512-
|
|
78
|
+
"version": "6.3.2",
|
|
79
|
+
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.3.2.tgz",
|
|
80
|
+
"integrity": "sha512-Xvr/0HggjddPtGppuqVmxhTw+Hr8PvsZ/k0HmOEaAqQEt80OITNkFWnsdNmyT0/eM4Ab+iJLx2R8rctlEyfSVg==",
|
|
83
81
|
"license": "MIT",
|
|
84
82
|
"dependencies": {
|
|
85
|
-
"@inquirer/core": "^
|
|
86
|
-
"@inquirer/type": "
|
|
83
|
+
"@inquirer/core": "^12.0.3",
|
|
84
|
+
"@inquirer/type": "4.1.1"
|
|
87
85
|
},
|
|
88
86
|
"engines": {
|
|
89
|
-
"node": ">=
|
|
87
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
90
88
|
},
|
|
91
89
|
"peerDependencies": {
|
|
92
90
|
"@types/node": ">=18"
|
|
@@ -98,22 +96,21 @@
|
|
|
98
96
|
}
|
|
99
97
|
},
|
|
100
98
|
"node_modules/@inquirer/core": {
|
|
101
|
-
"version": "
|
|
102
|
-
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-
|
|
103
|
-
"integrity": "sha512-
|
|
99
|
+
"version": "12.0.3",
|
|
100
|
+
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-12.0.3.tgz",
|
|
101
|
+
"integrity": "sha512-wsSy0sznmXwkty+2PzZwx00Cazc/E0r0B7mAzdGROz2Ct+DFZXaK7WDjGZvgjRldxH5ZhFVfF2lgkYrqgOw2KA==",
|
|
104
102
|
"license": "MIT",
|
|
105
103
|
"dependencies": {
|
|
106
|
-
"@inquirer/ansi": "^
|
|
107
|
-
"@inquirer/figures": "^
|
|
108
|
-
"@inquirer/type": "
|
|
104
|
+
"@inquirer/ansi": "^2.0.8",
|
|
105
|
+
"@inquirer/figures": "^2.0.9",
|
|
106
|
+
"@inquirer/type": "4.1.1",
|
|
109
107
|
"cli-width": "^4.1.0",
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"yoctocolors-cjs": "^2.1.3"
|
|
108
|
+
"fast-wrap-ansi": "^0.2.0",
|
|
109
|
+
"mute-stream": "^3.0.0",
|
|
110
|
+
"signal-exit": "^4.1.0"
|
|
114
111
|
},
|
|
115
112
|
"engines": {
|
|
116
|
-
"node": ">=
|
|
113
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
117
114
|
},
|
|
118
115
|
"peerDependencies": {
|
|
119
116
|
"@types/node": ">=18"
|
|
@@ -125,17 +122,17 @@
|
|
|
125
122
|
}
|
|
126
123
|
},
|
|
127
124
|
"node_modules/@inquirer/editor": {
|
|
128
|
-
"version": "
|
|
129
|
-
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-
|
|
130
|
-
"integrity": "sha512-
|
|
125
|
+
"version": "5.3.3",
|
|
126
|
+
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.3.3.tgz",
|
|
127
|
+
"integrity": "sha512-YsKkS2q63IiLtaDK/9nqzdComN97SDQrmKiyNggN+ceP4ty+Z6VwyTz3FpjeUWeW1Efss2xHFKCC9sx7hnrsxg==",
|
|
131
128
|
"license": "MIT",
|
|
132
129
|
"dependencies": {
|
|
133
|
-
"@inquirer/core": "^
|
|
134
|
-
"@inquirer/external-editor": "^
|
|
135
|
-
"@inquirer/type": "
|
|
130
|
+
"@inquirer/core": "^12.0.3",
|
|
131
|
+
"@inquirer/external-editor": "^3.0.5",
|
|
132
|
+
"@inquirer/type": "4.1.1"
|
|
136
133
|
},
|
|
137
134
|
"engines": {
|
|
138
|
-
"node": ">=
|
|
135
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
139
136
|
},
|
|
140
137
|
"peerDependencies": {
|
|
141
138
|
"@types/node": ">=18"
|
|
@@ -147,17 +144,16 @@
|
|
|
147
144
|
}
|
|
148
145
|
},
|
|
149
146
|
"node_modules/@inquirer/expand": {
|
|
150
|
-
"version": "
|
|
151
|
-
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-
|
|
152
|
-
"integrity": "sha512-
|
|
147
|
+
"version": "5.1.5",
|
|
148
|
+
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.5.tgz",
|
|
149
|
+
"integrity": "sha512-uHuXLmXW+TtIfT/9vSBotypAkqn1n34Ul+CLGPos/xANyO4Ff5xZzkYhbKR4NEcfVK4a9mHQOpwVZzluSHFRGw==",
|
|
153
150
|
"license": "MIT",
|
|
154
151
|
"dependencies": {
|
|
155
|
-
"@inquirer/core": "^
|
|
156
|
-
"@inquirer/type": "
|
|
157
|
-
"yoctocolors-cjs": "^2.1.3"
|
|
152
|
+
"@inquirer/core": "^12.0.3",
|
|
153
|
+
"@inquirer/type": "4.1.1"
|
|
158
154
|
},
|
|
159
155
|
"engines": {
|
|
160
|
-
"node": ">=
|
|
156
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
161
157
|
},
|
|
162
158
|
"peerDependencies": {
|
|
163
159
|
"@types/node": ">=18"
|
|
@@ -169,16 +165,16 @@
|
|
|
169
165
|
}
|
|
170
166
|
},
|
|
171
167
|
"node_modules/@inquirer/external-editor": {
|
|
172
|
-
"version": "
|
|
173
|
-
"resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-
|
|
174
|
-
"integrity": "sha512-
|
|
168
|
+
"version": "3.0.5",
|
|
169
|
+
"resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.5.tgz",
|
|
170
|
+
"integrity": "sha512-f3QQJRIX5ZEneBHNUIuPjmbdzHnmRFJA8r2dkcb8q+OM5Uv5KtnuAttQumnrjcBVBM3mcTX1CkmtAkU58VRZxg==",
|
|
175
171
|
"license": "MIT",
|
|
176
172
|
"dependencies": {
|
|
177
173
|
"chardet": "^2.1.1",
|
|
178
|
-
"iconv-lite": "^0.7.
|
|
174
|
+
"iconv-lite": "^0.7.2"
|
|
179
175
|
},
|
|
180
176
|
"engines": {
|
|
181
|
-
"node": ">=
|
|
177
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
182
178
|
},
|
|
183
179
|
"peerDependencies": {
|
|
184
180
|
"@types/node": ">=18"
|
|
@@ -190,25 +186,25 @@
|
|
|
190
186
|
}
|
|
191
187
|
},
|
|
192
188
|
"node_modules/@inquirer/figures": {
|
|
193
|
-
"version": "
|
|
194
|
-
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-
|
|
195
|
-
"integrity": "sha512-
|
|
189
|
+
"version": "2.0.9",
|
|
190
|
+
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.9.tgz",
|
|
191
|
+
"integrity": "sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==",
|
|
196
192
|
"license": "MIT",
|
|
197
193
|
"engines": {
|
|
198
|
-
"node": ">=
|
|
194
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
199
195
|
}
|
|
200
196
|
},
|
|
201
197
|
"node_modules/@inquirer/input": {
|
|
202
|
-
"version": "
|
|
203
|
-
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-
|
|
204
|
-
"integrity": "sha512-
|
|
198
|
+
"version": "5.1.6",
|
|
199
|
+
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.6.tgz",
|
|
200
|
+
"integrity": "sha512-HtcJhB2QFVXbLuJ5S3syhNbTUVxYvwqV4VRBDkQceBloC9bmTViUoRFP5PbSaDZb3HzfPmpuU/gG4ybVBz4FHA==",
|
|
205
201
|
"license": "MIT",
|
|
206
202
|
"dependencies": {
|
|
207
|
-
"@inquirer/core": "^
|
|
208
|
-
"@inquirer/type": "
|
|
203
|
+
"@inquirer/core": "^12.0.3",
|
|
204
|
+
"@inquirer/type": "4.1.1"
|
|
209
205
|
},
|
|
210
206
|
"engines": {
|
|
211
|
-
"node": ">=
|
|
207
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
212
208
|
},
|
|
213
209
|
"peerDependencies": {
|
|
214
210
|
"@types/node": ">=18"
|
|
@@ -220,16 +216,16 @@
|
|
|
220
216
|
}
|
|
221
217
|
},
|
|
222
218
|
"node_modules/@inquirer/number": {
|
|
223
|
-
"version": "
|
|
224
|
-
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-
|
|
225
|
-
"integrity": "sha512-
|
|
219
|
+
"version": "4.2.3",
|
|
220
|
+
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.2.3.tgz",
|
|
221
|
+
"integrity": "sha512-6Yuwh1NGSbu1Lo4N1EWjXs1jKRntLg/ZCwhmeorEHde90v1XxAozdbd4Iu30eOQLW+6h1hp2O9ujNfLSbTPJnA==",
|
|
226
222
|
"license": "MIT",
|
|
227
223
|
"dependencies": {
|
|
228
|
-
"@inquirer/core": "^
|
|
229
|
-
"@inquirer/type": "
|
|
224
|
+
"@inquirer/core": "^12.0.3",
|
|
225
|
+
"@inquirer/type": "4.1.1"
|
|
230
226
|
},
|
|
231
227
|
"engines": {
|
|
232
|
-
"node": ">=
|
|
228
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
233
229
|
},
|
|
234
230
|
"peerDependencies": {
|
|
235
231
|
"@types/node": ">=18"
|
|
@@ -241,17 +237,17 @@
|
|
|
241
237
|
}
|
|
242
238
|
},
|
|
243
239
|
"node_modules/@inquirer/password": {
|
|
244
|
-
"version": "
|
|
245
|
-
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-
|
|
246
|
-
"integrity": "sha512-
|
|
240
|
+
"version": "5.2.2",
|
|
241
|
+
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.2.2.tgz",
|
|
242
|
+
"integrity": "sha512-W9zYdyzogK+6110mqwaSJWCBu2yA5Q/OfnGSjjZB1bNpHlmUozXxTl0+QOZBNeVd6Qo81/qT75gW05gLAtITxw==",
|
|
247
243
|
"license": "MIT",
|
|
248
244
|
"dependencies": {
|
|
249
|
-
"@inquirer/ansi": "^
|
|
250
|
-
"@inquirer/core": "^
|
|
251
|
-
"@inquirer/type": "
|
|
245
|
+
"@inquirer/ansi": "^2.0.8",
|
|
246
|
+
"@inquirer/core": "^12.0.3",
|
|
247
|
+
"@inquirer/type": "4.1.1"
|
|
252
248
|
},
|
|
253
249
|
"engines": {
|
|
254
|
-
"node": ">=
|
|
250
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
255
251
|
},
|
|
256
252
|
"peerDependencies": {
|
|
257
253
|
"@types/node": ">=18"
|
|
@@ -263,24 +259,24 @@
|
|
|
263
259
|
}
|
|
264
260
|
},
|
|
265
261
|
"node_modules/@inquirer/prompts": {
|
|
266
|
-
"version": "7.
|
|
267
|
-
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.
|
|
268
|
-
"integrity": "sha512-
|
|
262
|
+
"version": "8.7.2",
|
|
263
|
+
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.7.2.tgz",
|
|
264
|
+
"integrity": "sha512-QoRB4wFIjgH5iOhSjoIKMkTvSHDuV+O3OITlIqAYO0oK5x364GJILXiMBvlPiE+klg7Xx9tq5XVqQHcGUDYYPA==",
|
|
269
265
|
"license": "MIT",
|
|
270
266
|
"dependencies": {
|
|
271
|
-
"@inquirer/checkbox": "^
|
|
272
|
-
"@inquirer/confirm": "^
|
|
273
|
-
"@inquirer/editor": "^
|
|
274
|
-
"@inquirer/expand": "^
|
|
275
|
-
"@inquirer/input": "^
|
|
276
|
-
"@inquirer/number": "^
|
|
277
|
-
"@inquirer/password": "^
|
|
278
|
-
"@inquirer/rawlist": "^
|
|
279
|
-
"@inquirer/search": "^3.
|
|
280
|
-
"@inquirer/select": "^
|
|
267
|
+
"@inquirer/checkbox": "^5.2.5",
|
|
268
|
+
"@inquirer/confirm": "^6.3.2",
|
|
269
|
+
"@inquirer/editor": "^5.3.3",
|
|
270
|
+
"@inquirer/expand": "^5.1.5",
|
|
271
|
+
"@inquirer/input": "^5.1.6",
|
|
272
|
+
"@inquirer/number": "^4.2.3",
|
|
273
|
+
"@inquirer/password": "^5.2.2",
|
|
274
|
+
"@inquirer/rawlist": "^5.3.5",
|
|
275
|
+
"@inquirer/search": "^4.3.3",
|
|
276
|
+
"@inquirer/select": "^5.2.5"
|
|
281
277
|
},
|
|
282
278
|
"engines": {
|
|
283
|
-
"node": ">=
|
|
279
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
284
280
|
},
|
|
285
281
|
"peerDependencies": {
|
|
286
282
|
"@types/node": ">=18"
|
|
@@ -292,17 +288,16 @@
|
|
|
292
288
|
}
|
|
293
289
|
},
|
|
294
290
|
"node_modules/@inquirer/rawlist": {
|
|
295
|
-
"version": "
|
|
296
|
-
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-
|
|
297
|
-
"integrity": "sha512
|
|
291
|
+
"version": "5.3.5",
|
|
292
|
+
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.5.tgz",
|
|
293
|
+
"integrity": "sha512-1oHky1ONfCOwNrnkQGDE1oaSij/3fI6HFMSf2H/WsGO2lEyDX9My82iggITSy9ddSZ8yk8j9v41OI0fVoSIoaA==",
|
|
298
294
|
"license": "MIT",
|
|
299
295
|
"dependencies": {
|
|
300
|
-
"@inquirer/core": "^
|
|
301
|
-
"@inquirer/type": "
|
|
302
|
-
"yoctocolors-cjs": "^2.1.3"
|
|
296
|
+
"@inquirer/core": "^12.0.3",
|
|
297
|
+
"@inquirer/type": "4.1.1"
|
|
303
298
|
},
|
|
304
299
|
"engines": {
|
|
305
|
-
"node": ">=
|
|
300
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
306
301
|
},
|
|
307
302
|
"peerDependencies": {
|
|
308
303
|
"@types/node": ">=18"
|
|
@@ -314,18 +309,17 @@
|
|
|
314
309
|
}
|
|
315
310
|
},
|
|
316
311
|
"node_modules/@inquirer/search": {
|
|
317
|
-
"version": "3.
|
|
318
|
-
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.
|
|
319
|
-
"integrity": "sha512-
|
|
312
|
+
"version": "4.3.3",
|
|
313
|
+
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.3.3.tgz",
|
|
314
|
+
"integrity": "sha512-fyuIU1Nbpvwlikjg3gXwJFDI11+EFjqQ7P+iByfmivIKQ1vmaykNrD/vy5unHuUqUpsOsnvJ25//tPF7E/RBRA==",
|
|
320
315
|
"license": "MIT",
|
|
321
316
|
"dependencies": {
|
|
322
|
-
"@inquirer/core": "^
|
|
323
|
-
"@inquirer/figures": "^
|
|
324
|
-
"@inquirer/type": "
|
|
325
|
-
"yoctocolors-cjs": "^2.1.3"
|
|
317
|
+
"@inquirer/core": "^12.0.3",
|
|
318
|
+
"@inquirer/figures": "^2.0.9",
|
|
319
|
+
"@inquirer/type": "4.1.1"
|
|
326
320
|
},
|
|
327
321
|
"engines": {
|
|
328
|
-
"node": ">=
|
|
322
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
329
323
|
},
|
|
330
324
|
"peerDependencies": {
|
|
331
325
|
"@types/node": ">=18"
|
|
@@ -337,19 +331,18 @@
|
|
|
337
331
|
}
|
|
338
332
|
},
|
|
339
333
|
"node_modules/@inquirer/select": {
|
|
340
|
-
"version": "
|
|
341
|
-
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-
|
|
342
|
-
"integrity": "sha512-
|
|
334
|
+
"version": "5.2.5",
|
|
335
|
+
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.5.tgz",
|
|
336
|
+
"integrity": "sha512-9kc15hr8r/kI+3DO/xLog5nOzTz1jqsHXa6JBFzmQKhkoJ8Slda1I1L/uD8ZSZ9tF1yp79wwXe7mclvX1rqR2Q==",
|
|
343
337
|
"license": "MIT",
|
|
344
338
|
"dependencies": {
|
|
345
|
-
"@inquirer/ansi": "^
|
|
346
|
-
"@inquirer/core": "^
|
|
347
|
-
"@inquirer/figures": "^
|
|
348
|
-
"@inquirer/type": "
|
|
349
|
-
"yoctocolors-cjs": "^2.1.3"
|
|
339
|
+
"@inquirer/ansi": "^2.0.8",
|
|
340
|
+
"@inquirer/core": "^12.0.3",
|
|
341
|
+
"@inquirer/figures": "^2.0.9",
|
|
342
|
+
"@inquirer/type": "4.1.1"
|
|
350
343
|
},
|
|
351
344
|
"engines": {
|
|
352
|
-
"node": ">=
|
|
345
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
353
346
|
},
|
|
354
347
|
"peerDependencies": {
|
|
355
348
|
"@types/node": ">=18"
|
|
@@ -361,12 +354,12 @@
|
|
|
361
354
|
}
|
|
362
355
|
},
|
|
363
356
|
"node_modules/@inquirer/type": {
|
|
364
|
-
"version": "
|
|
365
|
-
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-
|
|
366
|
-
"integrity": "sha512-
|
|
357
|
+
"version": "4.1.1",
|
|
358
|
+
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.1.1.tgz",
|
|
359
|
+
"integrity": "sha512-yJoHYrMnxIsJZCY+0Vb66Dy3he3kL3e2wOBKhoSwWWAzZAY82emlxwgprCtp6yRixvNRNq9ztfRWQYPNr3Go7A==",
|
|
367
360
|
"license": "MIT",
|
|
368
361
|
"engines": {
|
|
369
|
-
"node": ">=
|
|
362
|
+
"node": ">=23.5.0 || ^22.13.0 || ^20.17.0"
|
|
370
363
|
},
|
|
371
364
|
"peerDependencies": {
|
|
372
365
|
"@types/node": ">=18"
|
|
@@ -412,25 +405,10 @@
|
|
|
412
405
|
"node": ">= 8"
|
|
413
406
|
}
|
|
414
407
|
},
|
|
415
|
-
"node_modules/@posthog/core": {
|
|
416
|
-
"version": "1.43.1",
|
|
417
|
-
"resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.43.1.tgz",
|
|
418
|
-
"integrity": "sha512-hGM8f5sp3we6Em/RQHXbmyYm554hUx9+9jhf92ZQgDS4/xW72KHyZiO9wcFye+qAx2cJAOhOCDIznmO1FV8IbA==",
|
|
419
|
-
"license": "MIT",
|
|
420
|
-
"dependencies": {
|
|
421
|
-
"@posthog/types": "^1.396.0"
|
|
422
|
-
}
|
|
423
|
-
},
|
|
424
|
-
"node_modules/@posthog/types": {
|
|
425
|
-
"version": "1.397.0",
|
|
426
|
-
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.397.0.tgz",
|
|
427
|
-
"integrity": "sha512-Pa7FtsBo3V0XrhY4y8Xquwp8U07syuZ2IGQdlsRyxhz0yejQLceFjI58UssCXE5zDCDj3km5l7H3ufD6rHChCg==",
|
|
428
|
-
"license": "MIT"
|
|
429
|
-
},
|
|
430
408
|
"node_modules/ansi-regex": {
|
|
431
|
-
"version": "6.
|
|
432
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.
|
|
433
|
-
"integrity": "sha512-
|
|
409
|
+
"version": "6.4.0",
|
|
410
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz",
|
|
411
|
+
"integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==",
|
|
434
412
|
"license": "MIT",
|
|
435
413
|
"engines": {
|
|
436
414
|
"node": ">=12"
|
|
@@ -439,21 +417,6 @@
|
|
|
439
417
|
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
|
440
418
|
}
|
|
441
419
|
},
|
|
442
|
-
"node_modules/ansi-styles": {
|
|
443
|
-
"version": "4.3.0",
|
|
444
|
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
|
445
|
-
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
|
446
|
-
"license": "MIT",
|
|
447
|
-
"dependencies": {
|
|
448
|
-
"color-convert": "^2.0.1"
|
|
449
|
-
},
|
|
450
|
-
"engines": {
|
|
451
|
-
"node": ">=8"
|
|
452
|
-
},
|
|
453
|
-
"funding": {
|
|
454
|
-
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
|
455
|
-
}
|
|
456
|
-
},
|
|
457
420
|
"node_modules/braces": {
|
|
458
421
|
"version": "3.0.3",
|
|
459
422
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
|
@@ -500,12 +463,12 @@
|
|
|
500
463
|
}
|
|
501
464
|
},
|
|
502
465
|
"node_modules/cli-spinners": {
|
|
503
|
-
"version": "
|
|
504
|
-
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-
|
|
505
|
-
"integrity": "sha512-
|
|
466
|
+
"version": "3.4.0",
|
|
467
|
+
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz",
|
|
468
|
+
"integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==",
|
|
506
469
|
"license": "MIT",
|
|
507
470
|
"engines": {
|
|
508
|
-
"node": ">=
|
|
471
|
+
"node": ">=18.20"
|
|
509
472
|
},
|
|
510
473
|
"funding": {
|
|
511
474
|
"url": "https://github.com/sponsors/sindresorhus"
|
|
@@ -520,24 +483,6 @@
|
|
|
520
483
|
"node": ">= 12"
|
|
521
484
|
}
|
|
522
485
|
},
|
|
523
|
-
"node_modules/color-convert": {
|
|
524
|
-
"version": "2.0.1",
|
|
525
|
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
526
|
-
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
527
|
-
"license": "MIT",
|
|
528
|
-
"dependencies": {
|
|
529
|
-
"color-name": "~1.1.4"
|
|
530
|
-
},
|
|
531
|
-
"engines": {
|
|
532
|
-
"node": ">=7.0.0"
|
|
533
|
-
}
|
|
534
|
-
},
|
|
535
|
-
"node_modules/color-name": {
|
|
536
|
-
"version": "1.1.4",
|
|
537
|
-
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
538
|
-
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
|
539
|
-
"license": "MIT"
|
|
540
|
-
},
|
|
541
486
|
"node_modules/commander": {
|
|
542
487
|
"version": "14.0.3",
|
|
543
488
|
"resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
|
|
@@ -561,11 +506,14 @@
|
|
|
561
506
|
"node": ">= 8"
|
|
562
507
|
}
|
|
563
508
|
},
|
|
564
|
-
"node_modules/
|
|
565
|
-
"version": "
|
|
566
|
-
"resolved": "https://registry.npmjs.org/
|
|
567
|
-
"integrity": "sha512-
|
|
568
|
-
"license": "
|
|
509
|
+
"node_modules/diff": {
|
|
510
|
+
"version": "9.0.0",
|
|
511
|
+
"resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz",
|
|
512
|
+
"integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==",
|
|
513
|
+
"license": "BSD-3-Clause",
|
|
514
|
+
"engines": {
|
|
515
|
+
"node": ">=0.3.1"
|
|
516
|
+
}
|
|
569
517
|
},
|
|
570
518
|
"node_modules/fast-glob": {
|
|
571
519
|
"version": "3.3.3",
|
|
@@ -583,6 +531,30 @@
|
|
|
583
531
|
"node": ">=8.6.0"
|
|
584
532
|
}
|
|
585
533
|
},
|
|
534
|
+
"node_modules/fast-string-truncated-width": {
|
|
535
|
+
"version": "3.0.3",
|
|
536
|
+
"resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
|
|
537
|
+
"integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
|
|
538
|
+
"license": "MIT"
|
|
539
|
+
},
|
|
540
|
+
"node_modules/fast-string-width": {
|
|
541
|
+
"version": "3.0.2",
|
|
542
|
+
"resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz",
|
|
543
|
+
"integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
|
|
544
|
+
"license": "MIT",
|
|
545
|
+
"dependencies": {
|
|
546
|
+
"fast-string-truncated-width": "^3.0.2"
|
|
547
|
+
}
|
|
548
|
+
},
|
|
549
|
+
"node_modules/fast-wrap-ansi": {
|
|
550
|
+
"version": "0.2.2",
|
|
551
|
+
"resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz",
|
|
552
|
+
"integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==",
|
|
553
|
+
"license": "MIT",
|
|
554
|
+
"dependencies": {
|
|
555
|
+
"fast-string-width": "^3.0.2"
|
|
556
|
+
}
|
|
557
|
+
},
|
|
586
558
|
"node_modules/fastq": {
|
|
587
559
|
"version": "1.20.1",
|
|
588
560
|
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
|
|
@@ -605,9 +577,9 @@
|
|
|
605
577
|
}
|
|
606
578
|
},
|
|
607
579
|
"node_modules/get-east-asian-width": {
|
|
608
|
-
"version": "1.
|
|
609
|
-
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.
|
|
610
|
-
"integrity": "sha512-
|
|
580
|
+
"version": "1.7.0",
|
|
581
|
+
"resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz",
|
|
582
|
+
"integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==",
|
|
611
583
|
"license": "MIT",
|
|
612
584
|
"engines": {
|
|
613
585
|
"node": ">=18"
|
|
@@ -653,15 +625,6 @@
|
|
|
653
625
|
"node": ">=0.10.0"
|
|
654
626
|
}
|
|
655
627
|
},
|
|
656
|
-
"node_modules/is-fullwidth-code-point": {
|
|
657
|
-
"version": "3.0.0",
|
|
658
|
-
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
|
659
|
-
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
|
660
|
-
"license": "MIT",
|
|
661
|
-
"engines": {
|
|
662
|
-
"node": ">=8"
|
|
663
|
-
}
|
|
664
|
-
},
|
|
665
628
|
"node_modules/is-glob": {
|
|
666
629
|
"version": "4.0.3",
|
|
667
630
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
|
@@ -714,13 +677,13 @@
|
|
|
714
677
|
"license": "ISC"
|
|
715
678
|
},
|
|
716
679
|
"node_modules/log-symbols": {
|
|
717
|
-
"version": "
|
|
718
|
-
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-
|
|
719
|
-
"integrity": "sha512-
|
|
680
|
+
"version": "7.0.1",
|
|
681
|
+
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz",
|
|
682
|
+
"integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==",
|
|
720
683
|
"license": "MIT",
|
|
721
684
|
"dependencies": {
|
|
722
|
-
"
|
|
723
|
-
"
|
|
685
|
+
"is-unicode-supported": "^2.0.0",
|
|
686
|
+
"yoctocolors": "^2.1.1"
|
|
724
687
|
},
|
|
725
688
|
"engines": {
|
|
726
689
|
"node": ">=18"
|
|
@@ -729,18 +692,6 @@
|
|
|
729
692
|
"url": "https://github.com/sponsors/sindresorhus"
|
|
730
693
|
}
|
|
731
694
|
},
|
|
732
|
-
"node_modules/log-symbols/node_modules/is-unicode-supported": {
|
|
733
|
-
"version": "1.3.0",
|
|
734
|
-
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
|
|
735
|
-
"integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
|
|
736
|
-
"license": "MIT",
|
|
737
|
-
"engines": {
|
|
738
|
-
"node": ">=12"
|
|
739
|
-
},
|
|
740
|
-
"funding": {
|
|
741
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
742
|
-
}
|
|
743
|
-
},
|
|
744
695
|
"node_modules/merge2": {
|
|
745
696
|
"version": "1.4.1",
|
|
746
697
|
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
|
@@ -776,12 +727,12 @@
|
|
|
776
727
|
}
|
|
777
728
|
},
|
|
778
729
|
"node_modules/mute-stream": {
|
|
779
|
-
"version": "
|
|
780
|
-
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-
|
|
781
|
-
"integrity": "sha512-
|
|
730
|
+
"version": "3.0.0",
|
|
731
|
+
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz",
|
|
732
|
+
"integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
|
|
782
733
|
"license": "ISC",
|
|
783
734
|
"engines": {
|
|
784
|
-
"node": "^
|
|
735
|
+
"node": "^20.17.0 || >=22.9.0"
|
|
785
736
|
}
|
|
786
737
|
},
|
|
787
738
|
"node_modules/onetime": {
|
|
@@ -800,23 +751,22 @@
|
|
|
800
751
|
}
|
|
801
752
|
},
|
|
802
753
|
"node_modules/ora": {
|
|
803
|
-
"version": "
|
|
804
|
-
"resolved": "https://registry.npmjs.org/ora/-/ora-
|
|
805
|
-
"integrity": "sha512-
|
|
754
|
+
"version": "9.4.1",
|
|
755
|
+
"resolved": "https://registry.npmjs.org/ora/-/ora-9.4.1.tgz",
|
|
756
|
+
"integrity": "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==",
|
|
806
757
|
"license": "MIT",
|
|
807
758
|
"dependencies": {
|
|
808
|
-
"chalk": "^5.
|
|
759
|
+
"chalk": "^5.6.2",
|
|
809
760
|
"cli-cursor": "^5.0.0",
|
|
810
|
-
"cli-spinners": "^2.
|
|
761
|
+
"cli-spinners": "^3.2.0",
|
|
811
762
|
"is-interactive": "^2.0.0",
|
|
812
|
-
"is-unicode-supported": "^2.
|
|
813
|
-
"log-symbols": "^
|
|
814
|
-
"stdin-discarder": "^0.
|
|
815
|
-
"string-width": "^
|
|
816
|
-
"strip-ansi": "^7.1.0"
|
|
763
|
+
"is-unicode-supported": "^2.1.0",
|
|
764
|
+
"log-symbols": "^7.0.1",
|
|
765
|
+
"stdin-discarder": "^0.3.2",
|
|
766
|
+
"string-width": "^8.1.0"
|
|
817
767
|
},
|
|
818
768
|
"engines": {
|
|
819
|
-
"node": ">=
|
|
769
|
+
"node": ">=20"
|
|
820
770
|
},
|
|
821
771
|
"funding": {
|
|
822
772
|
"url": "https://github.com/sponsors/sindresorhus"
|
|
@@ -843,26 +793,6 @@
|
|
|
843
793
|
"url": "https://github.com/sponsors/jonschlinkert"
|
|
844
794
|
}
|
|
845
795
|
},
|
|
846
|
-
"node_modules/posthog-node": {
|
|
847
|
-
"version": "5.45.2",
|
|
848
|
-
"resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-5.45.2.tgz",
|
|
849
|
-
"integrity": "sha512-QhHw/xL0ntMG/DzqA/qdiKu8JY8ChK5Obm8m1nMJor5sjJ7+pfVJSx1yAynC7iUAJfJ9V+OhBNhDCyi5IFWC0Q==",
|
|
850
|
-
"license": "MIT",
|
|
851
|
-
"dependencies": {
|
|
852
|
-
"@posthog/core": "^1.43.1"
|
|
853
|
-
},
|
|
854
|
-
"engines": {
|
|
855
|
-
"node": "^20.20.0 || >=22.22.0"
|
|
856
|
-
},
|
|
857
|
-
"peerDependencies": {
|
|
858
|
-
"rxjs": "^7.0.0"
|
|
859
|
-
},
|
|
860
|
-
"peerDependenciesMeta": {
|
|
861
|
-
"rxjs": {
|
|
862
|
-
"optional": true
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
},
|
|
866
796
|
"node_modules/queue-microtask": {
|
|
867
797
|
"version": "1.2.3",
|
|
868
798
|
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
|
@@ -972,9 +902,9 @@
|
|
|
972
902
|
}
|
|
973
903
|
},
|
|
974
904
|
"node_modules/stdin-discarder": {
|
|
975
|
-
"version": "0.
|
|
976
|
-
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.
|
|
977
|
-
"integrity": "sha512-
|
|
905
|
+
"version": "0.3.2",
|
|
906
|
+
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.2.tgz",
|
|
907
|
+
"integrity": "sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==",
|
|
978
908
|
"license": "MIT",
|
|
979
909
|
"engines": {
|
|
980
910
|
"node": ">=18"
|
|
@@ -984,17 +914,16 @@
|
|
|
984
914
|
}
|
|
985
915
|
},
|
|
986
916
|
"node_modules/string-width": {
|
|
987
|
-
"version": "
|
|
988
|
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-
|
|
989
|
-
"integrity": "sha512-
|
|
917
|
+
"version": "8.3.0",
|
|
918
|
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
|
|
919
|
+
"integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
|
|
990
920
|
"license": "MIT",
|
|
991
921
|
"dependencies": {
|
|
992
|
-
"
|
|
993
|
-
"
|
|
994
|
-
"strip-ansi": "^7.1.0"
|
|
922
|
+
"get-east-asian-width": "^1.5.0",
|
|
923
|
+
"strip-ansi": "^7.1.2"
|
|
995
924
|
},
|
|
996
925
|
"engines": {
|
|
997
|
-
"node": ">=
|
|
926
|
+
"node": ">=20"
|
|
998
927
|
},
|
|
999
928
|
"funding": {
|
|
1000
929
|
"url": "https://github.com/sponsors/sindresorhus"
|
|
@@ -1042,61 +971,6 @@
|
|
|
1042
971
|
"node": ">= 8"
|
|
1043
972
|
}
|
|
1044
973
|
},
|
|
1045
|
-
"node_modules/wrap-ansi": {
|
|
1046
|
-
"version": "6.2.0",
|
|
1047
|
-
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
|
1048
|
-
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
|
|
1049
|
-
"license": "MIT",
|
|
1050
|
-
"dependencies": {
|
|
1051
|
-
"ansi-styles": "^4.0.0",
|
|
1052
|
-
"string-width": "^4.1.0",
|
|
1053
|
-
"strip-ansi": "^6.0.0"
|
|
1054
|
-
},
|
|
1055
|
-
"engines": {
|
|
1056
|
-
"node": ">=8"
|
|
1057
|
-
}
|
|
1058
|
-
},
|
|
1059
|
-
"node_modules/wrap-ansi/node_modules/ansi-regex": {
|
|
1060
|
-
"version": "5.0.1",
|
|
1061
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
|
1062
|
-
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
|
1063
|
-
"license": "MIT",
|
|
1064
|
-
"engines": {
|
|
1065
|
-
"node": ">=8"
|
|
1066
|
-
}
|
|
1067
|
-
},
|
|
1068
|
-
"node_modules/wrap-ansi/node_modules/emoji-regex": {
|
|
1069
|
-
"version": "8.0.0",
|
|
1070
|
-
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
|
1071
|
-
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
|
1072
|
-
"license": "MIT"
|
|
1073
|
-
},
|
|
1074
|
-
"node_modules/wrap-ansi/node_modules/string-width": {
|
|
1075
|
-
"version": "4.2.3",
|
|
1076
|
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
|
1077
|
-
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
1078
|
-
"license": "MIT",
|
|
1079
|
-
"dependencies": {
|
|
1080
|
-
"emoji-regex": "^8.0.0",
|
|
1081
|
-
"is-fullwidth-code-point": "^3.0.0",
|
|
1082
|
-
"strip-ansi": "^6.0.1"
|
|
1083
|
-
},
|
|
1084
|
-
"engines": {
|
|
1085
|
-
"node": ">=8"
|
|
1086
|
-
}
|
|
1087
|
-
},
|
|
1088
|
-
"node_modules/wrap-ansi/node_modules/strip-ansi": {
|
|
1089
|
-
"version": "6.0.1",
|
|
1090
|
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
1091
|
-
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
1092
|
-
"license": "MIT",
|
|
1093
|
-
"dependencies": {
|
|
1094
|
-
"ansi-regex": "^5.0.1"
|
|
1095
|
-
},
|
|
1096
|
-
"engines": {
|
|
1097
|
-
"node": ">=8"
|
|
1098
|
-
}
|
|
1099
|
-
},
|
|
1100
974
|
"node_modules/yaml": {
|
|
1101
975
|
"version": "2.9.0",
|
|
1102
976
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
|
|
@@ -1112,10 +986,10 @@
|
|
|
1112
986
|
"url": "https://github.com/sponsors/eemeli"
|
|
1113
987
|
}
|
|
1114
988
|
},
|
|
1115
|
-
"node_modules/yoctocolors
|
|
1116
|
-
"version": "2.
|
|
1117
|
-
"resolved": "https://registry.npmjs.org/yoctocolors
|
|
1118
|
-
"integrity": "sha512-
|
|
989
|
+
"node_modules/yoctocolors": {
|
|
990
|
+
"version": "2.2.0",
|
|
991
|
+
"resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz",
|
|
992
|
+
"integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==",
|
|
1119
993
|
"license": "MIT",
|
|
1120
994
|
"engines": {
|
|
1121
995
|
"node": ">=18"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keel",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.78.0",
|
|
4
4
|
"description": "Keel OpenSpec execution discipline: stateless continuity, task capsules, deterministic gates, and expectation alignment for Codex and Claude Code.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "TanglmChris",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keel",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.78.0",
|
|
4
4
|
"description": "Keel OpenSpec execution discipline: stateless continuity, task capsules, deterministic gates, and expectation alignment for Codex and Claude Code.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "TanglmChris",
|
|
@@ -38,8 +38,8 @@ REQUIRED_SCRIPTS = [
|
|
|
38
38
|
"scripts/validate_plugin.py",
|
|
39
39
|
]
|
|
40
40
|
|
|
41
|
-
PACKAGE_VERSION = "5.
|
|
42
|
-
PROTOCOL_VERSION = "5.
|
|
41
|
+
PACKAGE_VERSION = "5.78.0"
|
|
42
|
+
PROTOCOL_VERSION = "5.78.0"
|
|
43
43
|
LEGACY_MANAGED_START = "<!-- keel:start version=2.1 -->"
|
|
44
44
|
OPENSPEC_SCHEMA_NAME = "keel-spec-driven"
|
|
45
45
|
# Mirrors KEEL_PACKAGE_NAME in scripts/install_to_repo.py, one of the two
|
|
@@ -1242,13 +1242,12 @@ def validate_target_surface_scenario() -> int:
|
|
|
1242
1242
|
report((codex_init.stderr or codex_init.stdout).strip())
|
|
1243
1243
|
return 1
|
|
1244
1244
|
codex_doctor = run_keel(codex_repo, "--doctor", "--target", "codex", env=env)
|
|
1245
|
-
codex_prompt_dir = str(codex_home / "prompts")
|
|
1246
1245
|
if (
|
|
1247
1246
|
codex_doctor.returncode != 0
|
|
1248
1247
|
or "OpenSpec commands: ok" not in codex_doctor.stdout
|
|
1249
|
-
or
|
|
1248
|
+
or "OpenSpec 1.13 surfaces Codex's workflows" not in codex_doctor.stdout
|
|
1250
1249
|
or "OpenSpec action skills: ok" not in codex_doctor.stdout
|
|
1251
|
-
or ".
|
|
1250
|
+
or ".agents/skills" not in posix_paths(codex_doctor.stdout)
|
|
1252
1251
|
or "bootstrap: ok" not in codex_doctor.stdout
|
|
1253
1252
|
or "native plugin runtime: manual" not in codex_doctor.stdout
|
|
1254
1253
|
or "Target capabilities (codex):" not in codex_doctor.stdout
|
|
@@ -1265,16 +1264,15 @@ def validate_target_surface_scenario() -> int:
|
|
|
1265
1264
|
report("target-surface scenario Codex init created Claude-only paths.")
|
|
1266
1265
|
return 1
|
|
1267
1266
|
|
|
1268
|
-
|
|
1269
|
-
|
|
1267
|
+
# OpenSpec 1.13 writes Codex's workflows as skills only (#169), so the
|
|
1268
|
+
# surface that can go missing is a skill.
|
|
1269
|
+
shutil.rmtree(codex_repo / ".agents/skills/openspec-propose")
|
|
1270
1270
|
codex_missing = run_keel(codex_repo, "--doctor", "--target", "codex", env=env)
|
|
1271
1271
|
if (
|
|
1272
1272
|
codex_missing.returncode != 0
|
|
1273
|
-
or "OpenSpec
|
|
1274
|
-
or "keel --init --target codex" not in codex_missing.stdout
|
|
1275
|
-
or "openspec update --force" not in codex_missing.stdout
|
|
1273
|
+
or "OpenSpec action skills: missing" not in codex_missing.stdout
|
|
1276
1274
|
):
|
|
1277
|
-
report("target-surface scenario Codex doctor did not report missing
|
|
1275
|
+
report("target-surface scenario Codex doctor did not report a missing skill.")
|
|
1278
1276
|
report((codex_missing.stderr or codex_missing.stdout).strip())
|
|
1279
1277
|
return 1
|
|
1280
1278
|
|
|
@@ -2649,15 +2647,11 @@ def openspec_overlay_files(
|
|
|
2649
2647
|
}
|
|
2650
2648
|
if target == "codex":
|
|
2651
2649
|
assert codex_home is not None
|
|
2650
|
+
# OpenSpec 1.13, which Keel pins, writes Codex's workflows as skills
|
|
2651
|
+
# under `.agents/skills` and no command files (#169).
|
|
2652
2652
|
return {
|
|
2653
|
-
"apply": [
|
|
2654
|
-
|
|
2655
|
-
codex_home / "prompts/opsx-apply.md",
|
|
2656
|
-
],
|
|
2657
|
-
"archive": [
|
|
2658
|
-
repo / ".codex/skills/openspec-archive-change/SKILL.md",
|
|
2659
|
-
codex_home / "prompts/opsx-archive.md",
|
|
2660
|
-
],
|
|
2653
|
+
"apply": [repo / ".agents/skills/openspec-apply-change/SKILL.md"],
|
|
2654
|
+
"archive": [repo / ".agents/skills/openspec-archive-change/SKILL.md"],
|
|
2661
2655
|
}
|
|
2662
2656
|
return {
|
|
2663
2657
|
"apply": [
|
|
@@ -2777,8 +2771,7 @@ def expected_overlay_surfaces(
|
|
|
2777
2771
|
surfaces.append(repo / f".claude/commands/opsx/{action}.md")
|
|
2778
2772
|
elif target == "codex":
|
|
2779
2773
|
assert codex_home is not None
|
|
2780
|
-
surfaces.append(repo / f".
|
|
2781
|
-
surfaces.append(codex_home / f"prompts/opsx-{action}.md")
|
|
2774
|
+
surfaces.append(repo / f".agents/skills/{skill}/SKILL.md")
|
|
2782
2775
|
else:
|
|
2783
2776
|
surfaces.append(repo / f".opencode/skills/{skill}/SKILL.md")
|
|
2784
2777
|
surfaces.append(repo / f".opencode/commands/opsx-{action}.md")
|
|
@@ -3022,7 +3015,7 @@ def validate_sync_surface_overlay_scenario() -> int:
|
|
|
3022
3015
|
".claude/skills/openspec-sync-specs/SKILL.md",
|
|
3023
3016
|
],
|
|
3024
3017
|
"codex": [
|
|
3025
|
-
".
|
|
3018
|
+
".agents/skills/openspec-sync-specs/SKILL.md",
|
|
3026
3019
|
],
|
|
3027
3020
|
}
|
|
3028
3021
|
|
|
@@ -3236,13 +3229,12 @@ def validate_openspec_surface_overlay_scenario() -> int:
|
|
|
3236
3229
|
if (
|
|
3237
3230
|
codex_doctor.returncode != 0
|
|
3238
3231
|
or "Keel apply/archive/sync overlay: ok" not in codex_doctor.stdout
|
|
3239
|
-
or str(codex_home / "prompts") not in codex_doctor.stdout
|
|
3240
3232
|
):
|
|
3241
3233
|
report("openspec-surface-overlay scenario Codex doctor missed overlay health.")
|
|
3242
3234
|
report((codex_doctor.stderr or codex_doctor.stdout).strip())
|
|
3243
3235
|
return 1
|
|
3244
3236
|
|
|
3245
|
-
codex_apply_prompt =
|
|
3237
|
+
codex_apply_prompt = codex_repo / ".agents/skills/openspec-apply-change/SKILL.md"
|
|
3246
3238
|
original_prompt = codex_apply_prompt.read_text(encoding="utf-8")
|
|
3247
3239
|
outdated_prompt = re.sub(
|
|
3248
3240
|
r"<!--\s*keel:openspec-surface-overlay(?:\s+[^>]*)?\s*-->"
|
|
@@ -3269,6 +3261,33 @@ def validate_openspec_surface_overlay_scenario() -> int:
|
|
|
3269
3261
|
report("openspec-surface-overlay scenario Codex install did not refresh overlay idempotently.")
|
|
3270
3262
|
return 1
|
|
3271
3263
|
|
|
3264
|
+
# M6 — a repository set up under OpenSpec 1.6 keeps its layout: skills
|
|
3265
|
+
# under `.codex/skills` and commands as CODEX_HOME prompts (#169).
|
|
3266
|
+
legacy_repo = tmp / "codex-legacy"
|
|
3267
|
+
legacy_home = tmp / "codex-legacy-home"
|
|
3268
|
+
legacy_env = os.environ.copy()
|
|
3269
|
+
legacy_env["CODEX_HOME"] = str(legacy_home)
|
|
3270
|
+
legacy_surfaces = []
|
|
3271
|
+
for action, skill in OVERLAY_ACTION_SKILLS.items():
|
|
3272
|
+
for surface in (
|
|
3273
|
+
legacy_repo / f".codex/skills/{skill}/SKILL.md",
|
|
3274
|
+
legacy_home / f"prompts/opsx-{action}.md",
|
|
3275
|
+
):
|
|
3276
|
+
write_text(surface, f"---\nname: {skill}\n---\n\n# {action}\n")
|
|
3277
|
+
legacy_surfaces.append(surface)
|
|
3278
|
+
run_keel(legacy_repo, "--install", "--target", "codex", env=legacy_env)
|
|
3279
|
+
lost = [
|
|
3280
|
+
str(surface)
|
|
3281
|
+
for surface in legacy_surfaces
|
|
3282
|
+
if surface.read_text(encoding="utf-8").count(OPENSPEC_SURFACE_OVERLAY_START) != 1
|
|
3283
|
+
]
|
|
3284
|
+
if lost:
|
|
3285
|
+
report(
|
|
3286
|
+
"openspec-surface-overlay scenario 1.6-layout Codex surfaces lost "
|
|
3287
|
+
f"their overlay: {lost!r}"
|
|
3288
|
+
)
|
|
3289
|
+
return 1
|
|
3290
|
+
|
|
3272
3291
|
opencode_repo = tmp / "opencode"
|
|
3273
3292
|
opencode_repo.mkdir()
|
|
3274
3293
|
opencode_init = run_keel(opencode_repo, "--init", "--target", "opencode")
|
|
@@ -16617,8 +16636,7 @@ def validate_authoring_alignment_overlay_scenario() -> int:
|
|
|
16617
16636
|
report((codex_init.stderr or codex_init.stdout).strip())
|
|
16618
16637
|
return 1
|
|
16619
16638
|
codex_surfaces = (
|
|
16620
|
-
codex_repo / ".
|
|
16621
|
-
codex_home / "prompts/opsx-propose.md",
|
|
16639
|
+
codex_repo / ".agents/skills/openspec-propose/SKILL.md",
|
|
16622
16640
|
)
|
|
16623
16641
|
for surface in codex_surfaces:
|
|
16624
16642
|
content = surface.read_text(encoding="utf-8")
|
|
@@ -16648,7 +16666,7 @@ def validate_authoring_alignment_overlay_scenario() -> int:
|
|
|
16648
16666
|
return 1
|
|
16649
16667
|
|
|
16650
16668
|
apply_skill = (
|
|
16651
|
-
codex_repo / ".
|
|
16669
|
+
codex_repo / ".agents/skills/openspec-apply-change/SKILL.md"
|
|
16652
16670
|
).read_text(encoding="utf-8")
|
|
16653
16671
|
if (
|
|
16654
16672
|
"rerun `keel-align-expectations`" not in apply_skill
|
package/src/core/context.js
CHANGED
|
@@ -741,9 +741,10 @@ function stampedProtocol(repo) {
|
|
|
741
741
|
|
|
742
742
|
// The target the installer left behind. `CLAUDE.md` carries the managed
|
|
743
743
|
// import only on the Claude target, and only OpenCode writes project commands
|
|
744
|
-
// under `.opencode/`. A Codex install writes neither
|
|
745
|
-
//
|
|
746
|
-
// surface beside it is what a Codex install
|
|
744
|
+
// under `.opencode/`. A Codex install writes neither: OpenSpec 1.13 puts its
|
|
745
|
+
// skills under `.agents/skills`, and 1.6 put its commands in CODEX_HOME, so a
|
|
746
|
+
// managed `AGENTS.md` with neither surface beside it is what a Codex install
|
|
747
|
+
// leaves.
|
|
747
748
|
function installedTarget(repo) {
|
|
748
749
|
try {
|
|
749
750
|
if (/<!--\s*keel:start/.test(fs.readFileSync(path.join(repo, "CLAUDE.md"), "utf8"))) {
|