@guandata/guanskill 0.1.14 → 0.1.15
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/CHANGELOG.md +5 -0
- package/README.md +13 -6
- package/bin/postinstall.js +60 -0
- package/bin/run.js +12 -2
- package/package.json +8 -7
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -25,21 +25,28 @@ guanmetric
|
|
|
25
25
|
guanskill install-skill
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
> `npm install -g` / `npm link` 全局安装时会通过 postinstall 自动执行一次 skill 安装/刷新;上述命令用于手动重装或排查。CI 等无需 skill 的环境可设 `GUAN_SKIP_INSTALL_SKILL=1` 跳过。
|
|
29
|
+
|
|
28
30
|
该命令还会安装 `guandata-cli-suite`。它负责识别观远数据任务并路由到下列正式组件。
|
|
29
31
|
|
|
30
32
|
## 包含组件
|
|
31
33
|
|
|
32
34
|
| 组件 | 版本 | 用途 |
|
|
33
35
|
|---|---:|---|
|
|
34
|
-
| `@guandata/guancli` | `1.0.
|
|
35
|
-
| `@guandata/guands` | `0.1.
|
|
36
|
-
| `@guandata/guanetl` | `0.1.
|
|
37
|
-
| `@guandata/guanwf` | `0.1.
|
|
38
|
-
| `@guandata/guanvis` | `0.1.
|
|
39
|
-
| `@guandata/guanmetric` | `0.1.
|
|
36
|
+
| `@guandata/guancli` | `1.0.41` | 观远 BI 基础命令行工具 |
|
|
37
|
+
| `@guandata/guands` | `0.1.22` | 数据源和数据集管理 |
|
|
38
|
+
| `@guandata/guanetl` | `0.1.20` | ETL 编辑、预览和执行 |
|
|
39
|
+
| `@guandata/guanwf` | `0.1.821` | 工作流数据流管理 |
|
|
40
|
+
| `@guandata/guanvis` | `0.1.32` | 图表、卡片和仪表板构建 |
|
|
41
|
+
| `@guandata/guanmetric` | `0.1.2` | 指标创建、编辑和模板标准化 |
|
|
40
42
|
|
|
41
43
|
## 版本更新
|
|
42
44
|
|
|
45
|
+
### @guandata/guanskill 0.1.15
|
|
46
|
+
|
|
47
|
+
- 同步聚合包中的六个组件依赖到本次发布版本。
|
|
48
|
+
- 调整安装后 Skill 刷新流程,由各组件维护自身 Skill,聚合包负责统一套件入口。
|
|
49
|
+
|
|
43
50
|
### @guandata/guanskill 0.1.14
|
|
44
51
|
|
|
45
52
|
- 同步聚合包中的 guands 依赖到 0.1.21。
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Best-effort post-install hook: refresh the installed AI skill right after
|
|
5
|
+
* a global npm install/upgrade, so users cannot forget to run
|
|
6
|
+
* `guanskill install-skill` and end up with a stale SKILL.md.
|
|
7
|
+
*
|
|
8
|
+
* Constraints:
|
|
9
|
+
* - MUST never fail the npm install: every failure path still exits 0.
|
|
10
|
+
* - Only runs for global installs (`npm install -g` / `npm link`); a local
|
|
11
|
+
* `npm install` inside a project never touches the user's home dirs.
|
|
12
|
+
* - Escape hatch: GUAN_SKIP_INSTALL_SKILL=1 skips entirely (e.g. CI images
|
|
13
|
+
* that install the CLI but never run an AI agent are skipped by default).
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
"use strict";
|
|
17
|
+
|
|
18
|
+
const { spawnSync } = require("child_process");
|
|
19
|
+
const path = require("path");
|
|
20
|
+
|
|
21
|
+
const CLI_NAME = "guanskill";
|
|
22
|
+
|
|
23
|
+
function skipReason() {
|
|
24
|
+
if (process.env.GUAN_SKIP_INSTALL_SKILL === "1") return "GUAN_SKIP_INSTALL_SKILL=1";
|
|
25
|
+
if (process.env.npm_config_global !== "true") return "not a global install";
|
|
26
|
+
if (process.env.CI) return "CI environment";
|
|
27
|
+
return "";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function main() {
|
|
31
|
+
const reason = skipReason();
|
|
32
|
+
if (reason) {
|
|
33
|
+
console.log(`[${CLI_NAME}] postinstall: skipping automatic install-skill (${reason}).`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// 只装 suite skill:六个组件依赖各自的 postinstall 已经安装了自己的
|
|
37
|
+
// skill,聚合包再跑 install-skill(全量)会把它们重复装一遍。
|
|
38
|
+
console.log(`[${CLI_NAME}] postinstall: refreshing suite AI skill (${CLI_NAME} install-suite-skill)...`);
|
|
39
|
+
const result = spawnSync(
|
|
40
|
+
process.execPath,
|
|
41
|
+
[path.join(__dirname, "run.js"), "install-suite-skill"],
|
|
42
|
+
{ stdio: "inherit", env: process.env, timeout: 180000 }
|
|
43
|
+
);
|
|
44
|
+
if (result.error || result.status !== 0) {
|
|
45
|
+
console.warn(
|
|
46
|
+
`[${CLI_NAME}] postinstall: automatic skill install did not complete` +
|
|
47
|
+
(result.error ? ` (${result.error.message})` : ` (exit ${result.status})`) +
|
|
48
|
+
`; run \`${CLI_NAME} install-skill\` manually to refresh SKILL.md.`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
try {
|
|
54
|
+
main();
|
|
55
|
+
} catch (err) {
|
|
56
|
+
console.warn(
|
|
57
|
+
`[${CLI_NAME}] postinstall: ${err.message}; run \`${CLI_NAME} install-skill\` manually.`
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
process.exit(0);
|
package/bin/run.js
CHANGED
|
@@ -189,7 +189,8 @@ function installPackageSkill(pkgRoot, skill, extraArgs, options = {}) {
|
|
|
189
189
|
const installBuddy = options.installBuddy || installBuddySkill;
|
|
190
190
|
const exit = options.exit || process.exit;
|
|
191
191
|
const npxInvocation = options.npxInvocation || resolveNpxInvocation();
|
|
192
|
-
|
|
192
|
+
// --yes: postinstall 等非交互环境下 npx 需要免确认下载 skills CLI
|
|
193
|
+
const args = ["--yes", "skills", "add", pkgRoot, "--skill", skill, "-g", "-y", ...extraArgs];
|
|
193
194
|
const result = spawn(npxInvocation.command, [...npxInvocation.argsPrefix, ...args], {
|
|
194
195
|
stdio: "inherit",
|
|
195
196
|
env: process.env,
|
|
@@ -270,7 +271,8 @@ function printHelp() {
|
|
|
270
271
|
|
|
271
272
|
Usage:
|
|
272
273
|
guanskill version
|
|
273
|
-
guanskill install-skill
|
|
274
|
+
guanskill install-skill # 安装全部 skill(六个组件 + suite)
|
|
275
|
+
guanskill install-suite-skill # 仅安装 suite skill(postinstall hook 使用)
|
|
274
276
|
guancli <args>
|
|
275
277
|
guands <args>
|
|
276
278
|
guanetl <args>
|
|
@@ -301,6 +303,14 @@ function main() {
|
|
|
301
303
|
installAllSkills(args.slice(1));
|
|
302
304
|
return;
|
|
303
305
|
}
|
|
306
|
+
// postinstall hook 专用:聚合包全局安装时,六个组件依赖各自的
|
|
307
|
+
// postinstall 已经安装了自己的 skill,这里只补 suite skill 本身,
|
|
308
|
+
// 避免 installAllSkills 把组件 skill 重复安装一遍(重复网络请求
|
|
309
|
+
// 与共享目录写入)。手动修复/重装请用 install-skill(全量)。
|
|
310
|
+
if (command === "install-suite-skill") {
|
|
311
|
+
installSuiteSkill(args.slice(1));
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
304
314
|
|
|
305
315
|
console.error(`Unknown guanskill command: ${command}`);
|
|
306
316
|
printHelp();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guandata/guanskill",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15",
|
|
4
4
|
"description": "Guandata BI Skills 聚合安装包 - 一次性安装和更新 guancli、guands、guanetl、guanwf、guanvis、guanmetric",
|
|
5
5
|
"bin": {
|
|
6
6
|
"guanskill": "bin/run.js",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"guanmetric": "bin/run.js"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
+
"postinstall": "node bin/postinstall.js",
|
|
15
16
|
"build": "node scripts/sync-skill.js",
|
|
16
17
|
"test": "npm run build && node scripts/sync-skill.test.js && node scripts/install-skill.test.js && node scripts/preflight.test.js && node scripts/pack.test.js",
|
|
17
18
|
"prepack": "npm run build",
|
|
@@ -28,12 +29,12 @@
|
|
|
28
29
|
"README.md"
|
|
29
30
|
],
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@guandata/guancli": "1.0.
|
|
32
|
-
"@guandata/guands": "0.1.
|
|
33
|
-
"@guandata/guanetl": "0.1.
|
|
34
|
-
"@guandata/guanwf": "0.1.
|
|
35
|
-
"@guandata/guanvis": "0.1.
|
|
36
|
-
"@guandata/guanmetric": "0.1.
|
|
32
|
+
"@guandata/guancli": "1.0.41",
|
|
33
|
+
"@guandata/guands": "0.1.22",
|
|
34
|
+
"@guandata/guanetl": "0.1.20",
|
|
35
|
+
"@guandata/guanwf": "0.1.821",
|
|
36
|
+
"@guandata/guanvis": "0.1.32",
|
|
37
|
+
"@guandata/guanmetric": "0.1.2"
|
|
37
38
|
},
|
|
38
39
|
"keywords": [
|
|
39
40
|
"guandata",
|