@ngocsangairvds/vsaf 5.0.2 → 5.1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngocsangairvds/vsaf",
3
- "version": "5.0.2",
3
+ "version": "5.1.0",
4
4
  "description": "logging step",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -7,6 +7,14 @@ export interface MultiInstallResult {
7
7
  results: AdapterResult[];
8
8
  }
9
9
  export declare function runMultiIdeInstall(pack: string, projectPath: string, options: MultiInstallOptions): MultiInstallResult;
10
+ /**
11
+ * Replace an IDE's verbatim skill-dir copies with symlinks into the canonical
12
+ * `.vsaf/skills/<name>` so there is a single source of truth on disk. Posix
13
+ * only — on Windows the copies are left in place (symlinks need privilege and
14
+ * the engine reads `.vsaf/skills` as primary regardless, so correctness holds).
15
+ * Best-effort: any failure leaves the existing copy untouched.
16
+ */
17
+ export declare function linkIdeSkillsToCanonical(projectPath: string, ideSkillsRelDir: string): void;
10
18
  /** True if any IDE hit a hard error — lets the CLI set a non-zero exit code. */
11
19
  export declare function hasHardError(result: MultiInstallResult): boolean;
12
20
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/install/orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAE,KAAK,KAAK,EAAuB,KAAK,aAAa,EAAe,MAAM,wBAAwB,CAAC;AAI1G,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,IAAI,EAAE,KAAK,EAAE,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CA6DpB;AAiBD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEhE"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/install/orchestrator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAE,KAAK,KAAK,EAAuB,KAAK,aAAa,EAAe,MAAM,wBAAwB,CAAC;AAI1G,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,IAAI,EAAE,KAAK,EAAE,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAwEpB;AAiBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAmB3F;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEhE"}
@@ -5,7 +5,10 @@
5
5
  // summary. The Claude path delegates to execInstall (unchanged) for 0-regression.
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.runMultiIdeInstall = runMultiIdeInstall;
8
+ exports.linkIdeSkillsToCanonical = linkIdeSkillsToCanonical;
8
9
  exports.hasHardError = hasHardError;
10
+ const fs_1 = require("fs");
11
+ const path_1 = require("path");
9
12
  const skill_js_1 = require("../commands/skill.js");
10
13
  const install_js_1 = require("../commands/install.js");
11
14
  const registry_js_1 = require("../adapters/registry.js");
@@ -52,15 +55,27 @@ function runMultiIdeInstall(pack, projectPath, options) {
52
55
  const merged = (0, config_js_1.mergeConfig)(base, { ides: okIdes, packs: [pack], vsafVersion: (0, version_js_1.getVersion)() });
53
56
  (0, config_js_1.writeConfig)(projectPath, merged);
54
57
  }
55
- // vsaf run-harness substrate: the Claude path (execInstall) provisions
56
- // .claude/skills + .vsaf/{commands,workflows}, which the engine resolves. For
57
- // a non-Claude install none of that exists, so vsaf_start can't run any
58
- // workflow — deploy the IDE-agnostic substrate to .vsaf/ so the harness works
59
- // on antigravity/cursor/codex too.
60
- if (okIdes.length > 0 && !okIdes.includes('claude')) {
58
+ // Canonical run-harness substrate: .vsaf/skills (the single source the engine
59
+ // reads, primary) + .vsaf/{commands,workflows}. Deployed for EVERY install so
60
+ // the harness (vsaf_start) is IDE-agnostic and never depends on an IDE dir.
61
+ if (okIdes.length > 0) {
61
62
  try {
62
63
  const sub = (0, install_js_1.deployEngineSubstrate)(pack, projectPath, options);
63
64
  console.log(` ✓ vsaf run-harness substrate: ${sub.skillsDeployed.length} skills, ${sub.workflowsCreated.length} workflows -> .vsaf/`);
65
+ // Thin IDE views: replace verbatim skill-dir copies with symlinks into the
66
+ // canonical .vsaf/skills (posix only — Windows keeps copies; the engine
67
+ // reads .vsaf/skills primary either way). Antigravity renders workflows
68
+ // (different format) and is left untouched.
69
+ const VERBATIM_SKILL_DIRS = {
70
+ claude: '.claude/skills',
71
+ cursor: '.cursor/skills',
72
+ codex: '.agents/skills',
73
+ };
74
+ for (const ide of okIdes) {
75
+ const rel = VERBATIM_SKILL_DIRS[ide];
76
+ if (rel)
77
+ linkIdeSkillsToCanonical(projectPath, rel);
78
+ }
64
79
  }
65
80
  catch (err) {
66
81
  console.warn(` ⚠ engine substrate deploy failed: ${err.message}`);
@@ -83,6 +98,38 @@ function printSummary(results) {
83
98
  (r.errors.length ? ` — error: ${r.errors.join('; ')}` : ''));
84
99
  }
85
100
  }
101
+ /**
102
+ * Replace an IDE's verbatim skill-dir copies with symlinks into the canonical
103
+ * `.vsaf/skills/<name>` so there is a single source of truth on disk. Posix
104
+ * only — on Windows the copies are left in place (symlinks need privilege and
105
+ * the engine reads `.vsaf/skills` as primary regardless, so correctness holds).
106
+ * Best-effort: any failure leaves the existing copy untouched.
107
+ */
108
+ function linkIdeSkillsToCanonical(projectPath, ideSkillsRelDir) {
109
+ if (process.platform === 'win32')
110
+ return;
111
+ const canonicalBase = (0, path_1.join)(projectPath, '.vsaf', 'skills');
112
+ const ideBase = (0, path_1.join)(projectPath, ideSkillsRelDir);
113
+ if (!(0, fs_1.existsSync)(canonicalBase) || !(0, fs_1.existsSync)(ideBase))
114
+ return;
115
+ for (const name of (0, fs_1.readdirSync)(canonicalBase)) {
116
+ const canonical = (0, path_1.join)(canonicalBase, name);
117
+ const ideDir = (0, path_1.join)(ideBase, name);
118
+ if (!(0, fs_1.existsSync)((0, path_1.join)(canonical, 'SKILL.md')))
119
+ continue; // only real skills
120
+ if (!(0, fs_1.existsSync)(ideDir))
121
+ continue; // IDE didn't deploy this one
122
+ try {
123
+ if ((0, fs_1.lstatSync)(ideDir).isSymbolicLink())
124
+ continue; // already linked
125
+ (0, fs_1.rmSync)(ideDir, { recursive: true, force: true });
126
+ (0, fs_1.symlinkSync)(canonical, ideDir, 'dir');
127
+ }
128
+ catch {
129
+ /* leave the copy — engine still resolves via .vsaf/skills primary */
130
+ }
131
+ }
132
+ }
86
133
  /** True if any IDE hit a hard error — lets the CLI set a non-zero exit code. */
87
134
  function hasHardError(result) {
88
135
  return result.results.some(r => r.errors.length > 0);
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/install/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/install/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../src/skills/skill-loader.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CA6BlE"}
1
+ {"version":3,"file":"skill-loader.d.ts","sourceRoot":"","sources":["../../src/skills/skill-loader.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,CA+BlE"}
@@ -12,9 +12,11 @@ function loadSkill(name, projectPath) {
12
12
  if (name.includes('..')) {
13
13
  throw new Error(`Invalid skill name: "${name}" — path traversal blocked`);
14
14
  }
15
- // Primary: .claude/skills/, Fallback: .vsaf/skills/ (backward compat)
16
- const primaryDir = (0, path_1.join)(projectPath, '.claude', 'skills', name);
17
- const fallbackDir = (0, path_1.join)(projectPath, '.vsaf', 'skills', name);
15
+ // Primary: .vsaf/skills/ (canonical harness source, IDE-agnostic).
16
+ // Fallback: .claude/skills/ (back-compat with pre-5.1 installs that deployed
17
+ // skills only under the Claude dir).
18
+ const primaryDir = (0, path_1.join)(projectPath, '.vsaf', 'skills', name);
19
+ const fallbackDir = (0, path_1.join)(projectPath, '.claude', 'skills', name);
18
20
  const skillDir = (0, fs_1.existsSync)((0, path_1.join)(primaryDir, 'SKILL.md')) ? primaryDir
19
21
  : (0, fs_1.existsSync)((0, path_1.join)(fallbackDir, 'SKILL.md')) ? fallbackDir
20
22
  : null;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/skills/skill-loader.ts"],"names":[],"mappings":";;;;;AAaA,8BA6BC;AA1CD,2CAA2C;AAC3C,2BAA8C;AAC9C,+BAA0C;AAC1C,8DAAiC;AAUjC,SAAgB,SAAS,CAAC,IAAY,EAAE,WAAmB;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,4BAA4B,CAAC,CAAC;IAC5E,CAAC;IACD,sEAAsE;IACtE,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACpE,CAAC,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;YACzD,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,qBAAM,EAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACxD,OAAO,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,YAAoB,EAAE,EAAE;QAC9E,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,GAAG,UAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,2BAA2B,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,iBAAiB,QAAQ,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/skills/skill-loader.ts"],"names":[],"mappings":";;;;;AAaA,8BA+BC;AA5CD,2CAA2C;AAC3C,2BAA8C;AAC9C,+BAA0C;AAC1C,8DAAiC;AAUjC,SAAgB,SAAS,CAAC,IAAY,EAAE,WAAmB;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,4BAA4B,CAAC,CAAC;IAC5E,CAAC;IACD,mEAAmE;IACnE,6EAA6E;IAC7E,qCAAqC;IACrC,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACpE,CAAC,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;YACzD,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,kBAAkB,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,qBAAM,EAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACxD,OAAO,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,YAAoB,EAAE,EAAE;QAC9E,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,GAAG,UAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,2BAA2B,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,iBAAiB,QAAQ,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC"}