gaoding-cli 1.0.0-alpha.10 → 1.0.0-alpha.11
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/README.md
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
需要 Node.js 24 或更高版本。使用 npm 或 pnpm 全局安装:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install --global gaoding-cli
|
|
10
|
+
npm install --global --allow-scripts=gaoding-cli gaoding-cli
|
|
11
11
|
# 或
|
|
12
12
|
pnpm add --global --allow-build=gaoding-cli gaoding-cli
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
全局安装和后续包升级会自动同步随包 `gd-cli` Agent Skill 到 canonical 目录,并连接已检测到的 Agent 宿主。pnpm 的 `--allow-build=gaoding-cli`
|
|
15
|
+
全局安装和后续包升级会自动同步随包 `gd-cli` Agent Skill 到 canonical 目录,并连接已检测到的 Agent 宿主。npm 的 `--allow-scripts=gaoding-cli` 与 pnpm 的 `--allow-build=gaoding-cli` 分别只允许本包执行安装脚本。若安装时使用了 `--ignore-scripts`,执行以下命令补齐:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
gd-cli update
|
|
@@ -116,11 +116,11 @@ async function inspectTarget(target, skill, canonical, platform) {
|
|
|
116
116
|
if (!stat.isDirectory()) {
|
|
117
117
|
return targetResult(target, "conflict", undefined, "canonical 路径不是目录");
|
|
118
118
|
}
|
|
119
|
-
const marker = await readMarker(target.path);
|
|
119
|
+
const marker = await readMarker(target.path, skill.skill);
|
|
120
120
|
if (!marker || marker.skill !== skill.skill) {
|
|
121
121
|
return targetResult(target, "conflict", undefined, "canonical 缺少合法 marker");
|
|
122
122
|
}
|
|
123
|
-
return targetResult(target, marker.version
|
|
123
|
+
return targetResult(target, marker.legacy || marker.version !== skill.version ? "outdated" : "installed", "canonical");
|
|
124
124
|
}
|
|
125
125
|
if (stat.isSymbolicLink()) {
|
|
126
126
|
let resolved;
|
|
@@ -141,11 +141,11 @@ async function inspectTarget(target, skill, canonical, platform) {
|
|
|
141
141
|
if (!stat.isDirectory()) {
|
|
142
142
|
return targetResult(target, "conflict", undefined, "宿主路径不是目录或链接");
|
|
143
143
|
}
|
|
144
|
-
const marker = await readMarker(target.path);
|
|
144
|
+
const marker = await readMarker(target.path, skill.skill);
|
|
145
145
|
if (!marker || marker.skill !== skill.skill) {
|
|
146
146
|
return targetResult(target, "conflict", undefined, "宿主目录缺少合法 marker");
|
|
147
147
|
}
|
|
148
|
-
return targetResult(target, marker.version
|
|
148
|
+
return targetResult(target, marker.legacy || marker.version !== skill.version ? "outdated" : "installed", "copy");
|
|
149
149
|
}
|
|
150
150
|
async function createLinkOrCopy(skill, target, canonical, options) {
|
|
151
151
|
await mkdir(dirname(target.path), { recursive: true });
|
|
@@ -192,19 +192,25 @@ async function replaceManagedDirectory(skill, destination, replace) {
|
|
|
192
192
|
await rm(stagingRoot, { recursive: true, force: true });
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
async function readMarker(directory) {
|
|
195
|
+
async function readMarker(directory, expectedSkill) {
|
|
196
196
|
try {
|
|
197
197
|
const parsed = JSON.parse(await readFile(join(directory, ".gd-cli.json"), "utf8"));
|
|
198
198
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
199
199
|
return undefined;
|
|
200
200
|
const marker = parsed;
|
|
201
|
-
|
|
201
|
+
const keys = Object.keys(marker).sort().join(",");
|
|
202
|
+
if (keys === "version" && expectedSkill === "gd-cli") {
|
|
203
|
+
if (typeof marker.version !== "string" || !marker.version.trim())
|
|
204
|
+
return undefined;
|
|
205
|
+
return { skill: expectedSkill, version: marker.version, legacy: true };
|
|
206
|
+
}
|
|
207
|
+
if (keys !== "skill,version")
|
|
202
208
|
return undefined;
|
|
203
209
|
if (typeof marker.skill !== "string" || !marker.skill.trim())
|
|
204
210
|
return undefined;
|
|
205
211
|
if (typeof marker.version !== "string" || !marker.version.trim())
|
|
206
212
|
return undefined;
|
|
207
|
-
return { skill: marker.skill, version: marker.version };
|
|
213
|
+
return { skill: marker.skill, version: marker.version, legacy: false };
|
|
208
214
|
}
|
|
209
215
|
catch (error) {
|
|
210
216
|
const code = error.code;
|
|
@@ -87,7 +87,7 @@ export function createUpdateService(options) {
|
|
|
87
87
|
}
|
|
88
88
|
const command = source.manager;
|
|
89
89
|
const args = source.manager === "npm"
|
|
90
|
-
? ["install", "--global", `gaoding-cli@${latest}`]
|
|
90
|
+
? ["install", "--global", "--allow-scripts=gaoding-cli", `gaoding-cli@${latest}`]
|
|
91
91
|
: ["add", "--global", "--allow-build=gaoding-cli", `gaoding-cli@${latest}`];
|
|
92
92
|
try {
|
|
93
93
|
await runProcess(command, args, signal);
|
|
@@ -162,7 +162,7 @@ function spawnProcess(command, args, signal) {
|
|
|
162
162
|
}
|
|
163
163
|
function manualCommands(version) {
|
|
164
164
|
return [
|
|
165
|
-
`npm install --global gaoding-cli@${version}`,
|
|
165
|
+
`npm install --global --allow-scripts=gaoding-cli gaoding-cli@${version}`,
|
|
166
166
|
`pnpm add --global --allow-build=gaoding-cli gaoding-cli@${version}`
|
|
167
167
|
];
|
|
168
168
|
}
|