@vivantel/virage-cli 0.1.49 → 0.1.51
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/dist/bin/virage.js +83 -64
- package/dist/bin/virage.js.map +1 -1
- package/dist/cli/dashboard.d.ts +1 -0
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +40 -9
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/query-cmd.d.ts.map +1 -1
- package/dist/cli/query-cmd.js +2 -1
- package/dist/cli/query-cmd.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +110 -58
- package/dist/cli/update.js.map +1 -1
- package/dist/dashboard-ui/assets/index-CiRJKgxZ.js +13 -0
- package/dist/dashboard-ui/assets/index-CzLlIPEZ.css +1 -0
- package/dist/dashboard-ui/index.html +13 -0
- package/package.json +1 -2
package/dist/cli/update.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { checkbox
|
|
1
|
+
import { checkbox } from "@inquirer/prompts";
|
|
2
2
|
import { readFile } from "fs/promises";
|
|
3
3
|
import { existsSync } from "fs";
|
|
4
4
|
import { join } from "path";
|
|
@@ -6,8 +6,14 @@ import { execFile } from "child_process";
|
|
|
6
6
|
import { promisify } from "util";
|
|
7
7
|
import { discoverAgentPlugins, runAgentPlugin } from "./agent-plugin.js";
|
|
8
8
|
import { resolveSkillsPackagePath, syncSkills } from "./skills.js";
|
|
9
|
-
import { detectPackageManager, buildInstallCommand, runInstall, } from "./pkg-manager.js";
|
|
9
|
+
import { detectPackageManager, buildInstallCommand, buildGlobalInstallCommand, runInstall, } from "./pkg-manager.js";
|
|
10
10
|
const execFileAsync = promisify(execFile);
|
|
11
|
+
const AGENT_PACKAGES = {
|
|
12
|
+
"claude-code": "@vivantel/virage-agent-claude",
|
|
13
|
+
copilot: "@vivantel/virage-agent-copilot",
|
|
14
|
+
codex: "@vivantel/virage-agent-codex",
|
|
15
|
+
antigravity: "@vivantel/virage-agent-antigravity",
|
|
16
|
+
};
|
|
11
17
|
async function readProjectPackageJson(cwd) {
|
|
12
18
|
const pkgPath = join(cwd, "package.json");
|
|
13
19
|
if (!existsSync(pkgPath))
|
|
@@ -32,37 +38,67 @@ async function readNodeModulePackageJson(cwd, packageName) {
|
|
|
32
38
|
return null;
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
|
-
async function
|
|
36
|
-
const
|
|
37
|
-
if (!
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
41
|
+
async function readVirageConfig(cwd) {
|
|
42
|
+
const configPath = join(cwd, "virage.config.json");
|
|
43
|
+
if (!existsSync(configPath))
|
|
44
|
+
return null;
|
|
45
|
+
try {
|
|
46
|
+
const raw = await readFile(configPath, "utf-8");
|
|
47
|
+
return JSON.parse(raw);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function discoverViragePackages(cwd, isGlobal) {
|
|
43
54
|
const candidates = new Set();
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
55
|
+
// Always include virage-core and virage-skills — required by every project
|
|
56
|
+
candidates.add("@vivantel/virage-core");
|
|
57
|
+
candidates.add("@vivantel/virage-skills");
|
|
58
|
+
// Config-first: read virage.config.json to discover required packages
|
|
59
|
+
const virageConfig = await readVirageConfig(cwd);
|
|
60
|
+
if (virageConfig) {
|
|
61
|
+
if (virageConfig.embedder?.package) {
|
|
62
|
+
candidates.add(virageConfig.embedder.package);
|
|
49
63
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
if (virageConfig.vectorStore?.package) {
|
|
65
|
+
candidates.add(virageConfig.vectorStore.package);
|
|
66
|
+
}
|
|
67
|
+
if (virageConfig.search?.reranker?.package) {
|
|
68
|
+
candidates.add(virageConfig.search.reranker.package);
|
|
69
|
+
}
|
|
70
|
+
for (const agent of virageConfig.agents ?? []) {
|
|
71
|
+
const pkg = AGENT_PACKAGES[agent];
|
|
72
|
+
if (pkg)
|
|
73
|
+
candidates.add(pkg);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Supplement: if package.json exists, also scan it for any @vivantel/* or
|
|
77
|
+
// rag-plugin/virage-agent packages not already covered by config
|
|
78
|
+
if (!isGlobal) {
|
|
79
|
+
const projectPkg = await readProjectPackageJson(cwd);
|
|
80
|
+
if (projectPkg) {
|
|
81
|
+
const allDeps = {
|
|
82
|
+
...projectPkg.dependencies,
|
|
83
|
+
...projectPkg.devDependencies,
|
|
84
|
+
};
|
|
85
|
+
for (const pkgName of Object.keys(allDeps)) {
|
|
86
|
+
if (pkgName.startsWith("@vivantel/")) {
|
|
87
|
+
candidates.add(pkgName);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const depPkg = await readNodeModulePackageJson(cwd, pkgName);
|
|
91
|
+
if (depPkg && (depPkg["rag-plugin"] || depPkg["virage-agent"])) {
|
|
92
|
+
candidates.add(pkgName);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
54
95
|
}
|
|
55
96
|
}
|
|
56
97
|
return Array.from(candidates);
|
|
57
98
|
}
|
|
58
99
|
async function getLatestVersion(packageName) {
|
|
59
100
|
try {
|
|
60
|
-
const { stdout } = await execFileAsync("npm", [
|
|
61
|
-
"view",
|
|
62
|
-
packageName,
|
|
63
|
-
"version",
|
|
64
|
-
"--json",
|
|
65
|
-
]);
|
|
101
|
+
const { stdout } = await execFileAsync("npm", ["view", packageName, "version", "--json", "--prefer-online"], { timeout: 10_000 });
|
|
66
102
|
return JSON.parse(stdout.trim()).trim();
|
|
67
103
|
}
|
|
68
104
|
catch {
|
|
@@ -70,18 +106,37 @@ async function getLatestVersion(packageName) {
|
|
|
70
106
|
}
|
|
71
107
|
}
|
|
72
108
|
async function getCurrentVersion(cwd, packageName) {
|
|
109
|
+
// Try local node_modules first
|
|
73
110
|
const pkg = await readNodeModulePackageJson(cwd, packageName);
|
|
74
|
-
|
|
111
|
+
if (pkg?.version)
|
|
112
|
+
return pkg.version;
|
|
113
|
+
// Fallback: query npm for the installed version (works for global installs)
|
|
114
|
+
try {
|
|
115
|
+
const { stdout } = await execFileAsync("npm", ["list", packageName, "--json", "--depth=0"], { timeout: 10_000 });
|
|
116
|
+
const parsed = JSON.parse(stdout);
|
|
117
|
+
const version = parsed.dependencies?.[packageName]?.version;
|
|
118
|
+
return version ?? null;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
75
123
|
}
|
|
76
124
|
export async function runUpdate() {
|
|
77
125
|
const cwd = process.cwd();
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
126
|
+
const hasPackageJson = existsSync(join(cwd, "package.json"));
|
|
127
|
+
const hasVirageConfig = existsSync(join(cwd, "virage.config.json"));
|
|
128
|
+
if (!hasPackageJson && !hasVirageConfig) {
|
|
129
|
+
console.log("\nNo virage.config.json found in current directory.\n" +
|
|
130
|
+
"Run `virage init` first to configure your project.\n");
|
|
83
131
|
return;
|
|
84
132
|
}
|
|
133
|
+
const isGlobal = !hasPackageJson;
|
|
134
|
+
if (isGlobal) {
|
|
135
|
+
console.log("\n(No package.json found — treating as standalone project, will install globally.)\n");
|
|
136
|
+
}
|
|
137
|
+
console.log("\nVirage Update\n");
|
|
138
|
+
console.log("Discovering virage ecosystem packages...");
|
|
139
|
+
const packageNames = await discoverViragePackages(cwd, isGlobal);
|
|
85
140
|
// Fetch current and latest versions in parallel
|
|
86
141
|
const statuses = await Promise.all(packageNames.map(async (name) => {
|
|
87
142
|
const [current, latest] = await Promise.all([
|
|
@@ -102,6 +157,10 @@ export async function runUpdate() {
|
|
|
102
157
|
console.log(` ${s.name}: ${s.current} → ${s.latest}`);
|
|
103
158
|
}
|
|
104
159
|
}
|
|
160
|
+
if (statuses.length === 0) {
|
|
161
|
+
console.log("\nNo virage packages to update.\n");
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
105
164
|
// Let user pick which packages to update
|
|
106
165
|
const toUpdate = await checkbox({
|
|
107
166
|
message: "Select packages to update:",
|
|
@@ -115,9 +174,10 @@ export async function runUpdate() {
|
|
|
115
174
|
});
|
|
116
175
|
if (toUpdate.length > 0) {
|
|
117
176
|
const pm = await detectPackageManager(cwd);
|
|
118
|
-
// Build install@latest commands
|
|
119
177
|
const latestPackages = toUpdate.map((n) => `${n}@latest`);
|
|
120
|
-
const { cmd, args } =
|
|
178
|
+
const { cmd, args } = isGlobal
|
|
179
|
+
? buildGlobalInstallCommand(pm, latestPackages)
|
|
180
|
+
: buildInstallCommand(pm, latestPackages);
|
|
121
181
|
console.log(`\nRunning: ${cmd} ${args.join(" ")}`);
|
|
122
182
|
try {
|
|
123
183
|
await runInstall(cmd, args);
|
|
@@ -150,33 +210,25 @@ export async function runUpdate() {
|
|
|
150
210
|
}
|
|
151
211
|
}
|
|
152
212
|
}
|
|
153
|
-
//
|
|
213
|
+
// Auto-sync skills if available — no interactive prompt needed
|
|
154
214
|
const skillsPkgPath = resolveSkillsPackagePath();
|
|
155
215
|
if (skillsPkgPath !== null) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (result.created.length === 0 &&
|
|
173
|
-
result.updated.length === 0 &&
|
|
174
|
-
result.deleted.length === 0)
|
|
175
|
-
console.log("\nSkills already up to date.");
|
|
176
|
-
}
|
|
177
|
-
catch (err) {
|
|
178
|
-
console.log(`\nSkills sync failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
179
|
-
}
|
|
216
|
+
console.log("\nSyncing Virage AI agent skills...");
|
|
217
|
+
try {
|
|
218
|
+
const result = await syncSkills(skillsPkgPath, cwd);
|
|
219
|
+
if (result.created.length > 0)
|
|
220
|
+
console.log(` Skills installed: ${result.created.length} new`);
|
|
221
|
+
if (result.updated.length > 0)
|
|
222
|
+
console.log(` Skills updated: ${result.updated.length}`);
|
|
223
|
+
if (result.deleted.length > 0)
|
|
224
|
+
console.log(` Skills removed: ${result.deleted.length}`);
|
|
225
|
+
if (result.created.length === 0 &&
|
|
226
|
+
result.updated.length === 0 &&
|
|
227
|
+
result.deleted.length === 0)
|
|
228
|
+
console.log(" Already up to date.");
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
console.log(` Skills sync failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
180
232
|
}
|
|
181
233
|
}
|
|
182
234
|
console.log("\nDone.\n");
|
package/dist/cli/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|