@aipper/aiws 0.0.11 → 0.0.12
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/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aipper/aiws",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "AI Workspace CLI (init/update/validate) for Claude Code / OpenCode / Codex / iFlow.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"aiws": "./bin/aiws.js"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@aipper/aiws-spec": "0.0.
|
|
10
|
+
"@aipper/aiws-spec": "0.0.12"
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"bin",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import { loadTemplate } from "../spec.js";
|
|
3
4
|
import { UserError } from "../errors.js";
|
|
@@ -16,6 +17,11 @@ export async function codexInstallSkillsCommand(options) {
|
|
|
16
17
|
const skillsDir = resolveCodexSkillsDir(options.skillsDir);
|
|
17
18
|
const dryRun = options.dryRun === true;
|
|
18
19
|
if (!dryRun) await ensureDir(skillsDir);
|
|
20
|
+
const skillsDirIsSymlink = await fs
|
|
21
|
+
.lstat(skillsDir)
|
|
22
|
+
.then((st) => st.isSymbolicLink())
|
|
23
|
+
.catch(() => false);
|
|
24
|
+
const skillsDirReal = skillsDirIsSymlink ? await fs.realpath(skillsDir).catch(() => skillsDir) : skillsDir;
|
|
19
25
|
|
|
20
26
|
const skillFiles = await listTemplateCodexSkills(tpl);
|
|
21
27
|
|
|
@@ -60,9 +66,9 @@ export async function codexInstallSkillsCommand(options) {
|
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
|
|
63
|
-
|
|
69
|
+
const header = skillsDirIsSymlink && skillsDirReal !== skillsDir ? `${skillsDir} -> ${skillsDirReal}` : skillsDir;
|
|
70
|
+
console.log(`${dryRun ? "✓ (dry-run)" : "✓"} aiws codex install-skills: ${header}`);
|
|
64
71
|
if (created.length > 0) console.log(`created: ${created.join(", ")}`);
|
|
65
72
|
if (updated.length > 0) console.log(`updated: ${updated.join(", ")}`);
|
|
66
73
|
if (overwritten.length > 0) console.log(`overwritten: ${overwritten.join(", ")}`);
|
|
67
74
|
}
|
|
68
|
-
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import { loadTemplate } from "../spec.js";
|
|
3
4
|
import { normalizeNewlines } from "../hash.js";
|
|
@@ -13,6 +14,11 @@ export async function codexStatusSkillsCommand(options) {
|
|
|
13
14
|
const tpl = await loadTemplate(templateId);
|
|
14
15
|
|
|
15
16
|
const skillsDir = resolveCodexSkillsDir(options.skillsDir);
|
|
17
|
+
const skillsDirIsSymlink = await fs
|
|
18
|
+
.lstat(skillsDir)
|
|
19
|
+
.then((st) => st.isSymbolicLink())
|
|
20
|
+
.catch(() => false);
|
|
21
|
+
const skillsDirReal = skillsDirIsSymlink ? await fs.realpath(skillsDir).catch(() => skillsDir) : skillsDir;
|
|
16
22
|
const skillFiles = await listTemplateCodexSkills(tpl);
|
|
17
23
|
|
|
18
24
|
/** @type {Array<{ name: string, status: "ok" | "missing" | "unmanaged" | "outdated" }>} */
|
|
@@ -42,13 +48,16 @@ export async function codexStatusSkillsCommand(options) {
|
|
|
42
48
|
/** @type {{ ok: number, missing: number, unmanaged: number, outdated: number }} */ ({ ok: 0, missing: 0, unmanaged: 0, outdated: 0 }),
|
|
43
49
|
);
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
const header = skillsDirIsSymlink && skillsDirReal !== skillsDir ? `${skillsDir} -> ${skillsDirReal}` : skillsDir;
|
|
52
|
+
console.log(`✓ aiws codex status-skills: ${header}`);
|
|
46
53
|
console.log(`ok=${counts.ok} missing=${counts.missing} unmanaged=${counts.unmanaged} outdated=${counts.outdated}`);
|
|
47
54
|
for (const r of rows) {
|
|
48
55
|
console.log(`${r.status}\t${r.name}`);
|
|
49
56
|
}
|
|
57
|
+
if (counts.ok === 0 && counts.missing === rows.length && skillsDirIsSymlink) {
|
|
58
|
+
console.log("Note: skills dir is a symlink; if you installed to a different dir, pass --dir (or set CODEX_HOME).");
|
|
59
|
+
}
|
|
50
60
|
if (counts.missing > 0 || counts.outdated > 0) {
|
|
51
61
|
console.log("Next: aiws codex install-skills");
|
|
52
62
|
}
|
|
53
63
|
}
|
|
54
|
-
|