@ngocsangairvds/vsaf 5.0.2 → 5.1.1

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.1",
4
4
  "description": "logging step",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAG1G,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,kBAAkB,EAAE,eA6DhC,CAAC"}
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAG1G,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,kBAAkB,EAAE,eAmHhC,CAAC"}
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  // packages/cli/src/adapters/antigravity.ts
3
- // Antigravity (Google `agy`) adapter. Antigravity has no skill object — it reads
4
- // rules + workflows from .agents/ (project) and MCP from the GLOBAL file
5
- // ~/.gemini/antigravity/mcp_config.json (Claude-Desktop JSON; local bins need
6
- // absolute paths). Each VSAF skill becomes a /name workflow.
3
+ // Antigravity (Google `agy`) adapter. Antigravity natively discovers skills in
4
+ // .agents/skills/ and slash commands (workflows) in .agents/workflows/. MCP is
5
+ // written to the GLOBAL file ~/.gemini/antigravity/mcp_config.json.
7
6
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
8
  };
@@ -13,7 +12,7 @@ exports.antigravityMcpPath = antigravityMcpPath;
13
12
  const fs_1 = require("fs");
14
13
  const path_1 = require("path");
15
14
  const os_1 = require("os");
16
- const gray_matter_1 = __importDefault(require("gray-matter"));
15
+ const js_yaml_1 = __importDefault(require("js-yaml"));
17
16
  const adapter_js_1 = require("./adapter.js");
18
17
  const shared_js_1 = require("./shared.js");
19
18
  /** Global Antigravity MCP config path (home-level only). */
@@ -33,38 +32,81 @@ exports.antigravityAdapter = {
33
32
  install(ctx) {
34
33
  const result = (0, adapter_js_1.emptyResult)('antigravity');
35
34
  const agentsDir = (0, path_1.join)(ctx.projectPath, '.agents');
35
+ const skillsDir = (0, path_1.join)(agentsDir, 'skills');
36
36
  const workflowsDir = (0, path_1.join)(agentsDir, 'workflows');
37
37
  const rulesDir = (0, path_1.join)(agentsDir, 'rules');
38
38
  (0, fs_1.mkdirSync)(workflowsDir, { recursive: true });
39
39
  (0, fs_1.mkdirSync)(rulesDir, { recursive: true });
40
- // 1. Each skilla /name workflow (frontmatter + body). No native skill concept.
40
+ // 1. Deploy Skills.agents/skills/ (Antigravity natively discovers skills here).
41
+ const deploy = (0, shared_js_1.deploySkills)(ctx.packDir, ctx.packName, ctx.deployedSkillNames, skillsDir, { force: ctx.options.force });
42
+ if (ctx.packInfo.bundledNames.length > 0) {
43
+ const bundled = (0, shared_js_1.deploySkills)(ctx.packDir, ctx.packName, ctx.packInfo.bundledNames, skillsDir, { force: ctx.options.force, noPrefix: true });
44
+ deploy.deployed.push(...bundled.deployed);
45
+ deploy.skipped.push(...bundled.skipped);
46
+ }
47
+ // Deploy _shared/ helper folder if pack has it
48
+ const sharedSrc = (0, path_1.join)(ctx.packDir, '_shared');
49
+ if ((0, fs_1.existsSync)(sharedSrc)) {
50
+ const sharedTarget = (0, path_1.join)(skillsDir, '_shared', ctx.packName);
51
+ if ((0, fs_1.existsSync)(sharedTarget)) {
52
+ (0, fs_1.rmSync)(sharedTarget, { recursive: true, force: true });
53
+ }
54
+ (0, fs_1.mkdirSync)((0, path_1.join)(skillsDir, '_shared'), { recursive: true });
55
+ (0, fs_1.cpSync)(sharedSrc, sharedTarget, { recursive: true });
56
+ deploy.deployed.push(`_shared/${ctx.packName}`);
57
+ }
58
+ result.skills = deploy;
59
+ // 2. Workflows (Slash Commands) → .agents/workflows/<name>.md
41
60
  const workflowNames = [];
42
- for (const name of ctx.deployedSkillNames) {
43
- if (shared_js_1.SKIP_SKILLS.includes(name))
44
- continue; // parity with deploySkills (e.g. 'setup')
45
- const srcSkill = (0, path_1.join)(ctx.packDir, name, 'SKILL.md');
46
- if (!(0, fs_1.existsSync)(srcSkill))
47
- continue;
48
- const raw = (0, fs_1.readFileSync)(srcSkill, 'utf-8');
49
- const { data, content } = (0, gray_matter_1.default)(raw);
50
- const description = typeof data.description === 'string' ? data.description : name;
51
- const wfName = `${ctx.packName}-${name}`;
52
- const wf = `---\nname: ${wfName}\ndescription: ${description}\n---\n\n${content}`;
53
- (0, fs_1.writeFileSync)((0, path_1.join)(workflowsDir, `${wfName}.md`), wf, 'utf-8');
54
- workflowNames.push(wfName);
61
+ if (ctx.packInfo.workflows && Object.keys(ctx.packInfo.workflows).length > 0) {
62
+ for (const [filename, yamlContent] of Object.entries(ctx.packInfo.workflows)) {
63
+ const wfName = (0, path_1.basename)(filename, '.yaml');
64
+ let desc = `Run the VSAF ${wfName} workflow`;
65
+ try {
66
+ const parsed = js_yaml_1.default.load(yamlContent);
67
+ if (parsed?.description)
68
+ desc = parsed.description;
69
+ }
70
+ catch { /* use fallback description */ }
71
+ const wfTarget = (0, path_1.join)(workflowsDir, `${wfName}.md`);
72
+ if (!(0, fs_1.existsSync)(wfTarget) || ctx.options.force) {
73
+ const wfBody = `---\ndescription: ${desc}\n---\n\n`
74
+ + `# /${wfName} — VSAF Workflow\n\n`
75
+ + `You are invoked via the \`/${wfName}\` slash command to execute the VSAF workflow \`${ctx.packName}/${wfName}\`.\n\n`
76
+ + `## Execution Steps\n\n`
77
+ + `1. **Start Workflow**:\n`
78
+ + ` Call \`mcp_vsaf_vsaf_start\`:\n`
79
+ + ` - \`workflow\`: \`"${ctx.packName}/${wfName}"\`\n`
80
+ + ` - \`args\`: \`$ARGUMENTS\`\n`
81
+ + ` - \`projectPath\`: \`"${ctx.projectPath}"\`\n\n`
82
+ + `2. **Execute AI Nodes**:\n`
83
+ + ` For each returned node:\n`
84
+ + ` - Read \`.vsaf/commands/<node.command>.md\` and \`.vsaf/skills/<node.command>/SKILL.md\`\n`
85
+ + ` - Execute node requirements completely\n\n`
86
+ + `3. **Advance Workflow**:\n`
87
+ + ` Call \`mcp_vsaf_vsaf_next\`:\n`
88
+ + ` - \`runId\`: \`<runId>\`\n`
89
+ + ` - \`results\`: \`[{ nodeId: "<id>", output: "<output>" }]\`\n\n`
90
+ + `4. **Finish**:\n`
91
+ + ` Repeat until \`done: true\`. Verify with \`mcp_vsaf_vsaf_status\`.\n`;
92
+ (0, fs_1.writeFileSync)(wfTarget, wfBody, 'utf-8');
93
+ }
94
+ workflowNames.push(wfName);
95
+ }
55
96
  }
56
97
  result.commands = workflowNames;
57
- // 2. Rules summary listing the workflows.
58
- const ruleBody = `---\nname: vsaf-${ctx.packName}\ndescription: VSAF ${ctx.packName} workflows for Antigravity\n---\n\n`
59
- + `# VSAF ${ctx.packName}\n\nWorkflows (invoke with \`/name\`):\n`
60
- + workflowNames.map(w => `- \`/${w}\``).join('\n') + '\n';
98
+ // 3. Rules summary listing the workflows and skills.
99
+ const ruleBody = `---\nname: vsaf-${ctx.packName}\ndescription: VSAF ${ctx.packName} workflows and skills for Antigravity\n---\n\n`
100
+ + `# VSAF ${ctx.packName}\n\n`
101
+ + (workflowNames.length > 0 ? `Workflows (invoke with \`/name\`):\n` + workflowNames.map(w => `- \`/${w}\``).join('\n') + '\n\n' : '')
102
+ + `Skills: Loaded from \`.agents/skills/\`.\n`;
61
103
  (0, fs_1.writeFileSync)((0, path_1.join)(rulesDir, `vsaf-${ctx.packName}.md`), ruleBody, 'utf-8');
62
- // 3. MCP → GLOBAL ~/.gemini/antigravity/mcp_config.json (absolute bin via getGitnexusMcpEntry).
104
+ // 4. MCP → GLOBAL ~/.gemini/antigravity/mcp_config.json (absolute bin via getGitnexusMcpEntry).
63
105
  const home = ctx.options._homeDir ?? (0, os_1.homedir)();
64
106
  result.mcp = (0, shared_js_1.writeJsonMcp)(antigravityMcpPath(home), { vsaf: (0, shared_js_1.getVsafMcpEntry)(), gitnexus: (0, shared_js_1.getGitnexusMcpEntry)() });
65
- // 4. Instruction marker block in AGENTS.md.
66
- (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=antigravity`, `## VSAF \`${ctx.packName}\` (Antigravity)\n\nWorkflows: \`.agents/workflows/\` (\`/name\`) · Rules: \`.agents/rules/\` · MCP: \`~/.gemini/antigravity/mcp_config.json\` (vsaf + gitnexus, global).`);
67
- // 5. Binaries.
107
+ // 5. Instruction marker block in AGENTS.md.
108
+ (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=antigravity`, `## VSAF \`${ctx.packName}\` (Antigravity)\n\nWorkflows: \`.agents/workflows/\` (\`/name\`) · Skills: \`.agents/skills/\` · Rules: \`.agents/rules/\` · MCP: \`~/.gemini/antigravity/mcp_config.json\` (vsaf + gitnexus, global).`);
109
+ // 6. Binaries.
68
110
  if (!ctx.options._skipGraphify && !(0, shared_js_1.installGraphifyPlatform)('antigravity')) {
69
111
  result.warnings.push('graphify antigravity install failed — run: graphify install --platform antigravity');
70
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,iFAAiF;AACjF,yEAAyE;AACzE,8EAA8E;AAC9E,6DAA6D;;;;;;AAU7D,gDAEC;AAVD,2BAAwE;AACxE,+BAA4B;AAC5B,2BAA6B;AAC7B,8DAAiC;AACjC,6CAA0G;AAC1G,2CAAwI;AAExI,4DAA4D;AAC5D,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAEY,QAAA,kBAAkB,GAAoB;IACjD,EAAE,EAAE,aAAa;IACjB,gBAAgB,EAAE,aAAa;IAE/B,MAAM,CAAC,WAAmB;QACxB,KAAK,WAAW,CAAC;QACjB,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAA,cAAS,EAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAA,cAAS,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,kFAAkF;QAClF,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,uBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,0CAA0C;YACpF,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;gBAAE,SAAS;YACpC,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,qBAAM,EAAC,GAAG,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACzC,MAAM,EAAE,GAAG,cAAc,MAAM,kBAAkB,WAAW,YAAY,OAAO,EAAE,CAAC;YAClF,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/D,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC;QAEhC,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,mBAAmB,GAAG,CAAC,QAAQ,uBAAuB,GAAG,CAAC,QAAQ,qCAAqC;cACpH,UAAU,GAAG,CAAC,QAAQ,0CAA0C;cAChE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5D,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE5E,gGAAgG;QAChG,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAA,YAAO,GAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,GAAG,IAAA,wBAAY,EAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,2BAAe,GAAE,EAAE,QAAQ,EAAE,IAAA,+BAAmB,GAAE,EAAE,CAAC,CAAC;QAElH,4CAA4C;QAC5C,IAAA,2BAAe,EACb,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAClC,QAAQ,GAAG,CAAC,QAAQ,kBAAkB,EACtC,aAAa,GAAG,CAAC,QAAQ,2KAA2K,CACrM,CAAC;QAEF,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,IAAA,mCAAuB,EAAC,aAAa,CAAC,EAAE,CAAC;YAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;QAC7G,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"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"}
@@ -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,CAyEpB;AAgBD;;;;;;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,28 @@ 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
+ // and deploys skills to .agents/skills.
69
+ const VERBATIM_SKILL_DIRS = {
70
+ claude: '.claude/skills',
71
+ cursor: '.cursor/skills',
72
+ codex: '.agents/skills',
73
+ antigravity: '.agents/skills',
74
+ };
75
+ for (const ide of okIdes) {
76
+ const rel = VERBATIM_SKILL_DIRS[ide];
77
+ if (rel)
78
+ linkIdeSkillsToCanonical(projectPath, rel);
79
+ }
64
80
  }
65
81
  catch (err) {
66
82
  console.warn(` ⚠ engine substrate deploy failed: ${err.message}`);
@@ -73,9 +89,8 @@ function printSummary(results) {
73
89
  console.log('\n[vsaf] Multi-IDE install summary:');
74
90
  for (const r of results) {
75
91
  const mark = r.errors.length > 0 ? '✗' : r.warnings.length > 0 ? '⚠' : '✓';
76
- // Antigravity deploys workflows (no skills); avoid the misleading "0 skills" (F3b).
77
92
  const units = r.ide === 'antigravity'
78
- ? `${r.commands.length} workflows`
93
+ ? `${r.skills.deployed.length} skills, ${r.commands.length} workflows`
79
94
  : `${r.skills.deployed.length} skills, ${r.commands.length} commands`;
80
95
  console.log(` ${mark} ${r.ide}: ${units}` +
81
96
  (r.mcp ? `, MCP[${r.mcp.servers.join('+')}]` : '') +
@@ -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"}