@paparats/cli 1.7.2 → 1.7.4
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.
|
@@ -18,6 +18,10 @@ export interface UpdateDeps {
|
|
|
18
18
|
readInstallState?: typeof readInstallState;
|
|
19
19
|
regenerateCompose?: (opts: RegenerateOptions) => RegenerateResult;
|
|
20
20
|
setupNativeEmbed?: () => Promise<void>;
|
|
21
|
+
commandExists?: (cmd: string) => boolean;
|
|
22
|
+
platform?: () => NodeJS.Platform;
|
|
23
|
+
readInstalledCliVersion?: () => string | null;
|
|
24
|
+
readNpmLatestVersion?: () => string | null;
|
|
21
25
|
}
|
|
22
26
|
export declare function runUpdate(opts: UpdateOptions, deps?: UpdateDeps): Promise<void>;
|
|
23
27
|
export declare const updateCommand: Command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,OAAO,EACL,gBAAgB,EAEhB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAoD5B,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/E,uBAAuB,CAAC,EAAE,MAAM,MAAM,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,MAAM,CAAC;IAClE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,gBAAgB,CAAC;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9C,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC5C;AA6GD,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyKrF;AAED,eAAO,MAAM,aAAa,SAetB,CAAC"}
|
package/dist/commands/update.js
CHANGED
|
@@ -2,21 +2,156 @@ import { Command } from 'commander';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import os from 'os';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
5
6
|
import { execSync } from 'child_process';
|
|
6
7
|
import chalk from 'chalk';
|
|
7
8
|
import ora from 'ora';
|
|
8
9
|
import { getDockerComposeCommand } from './install.js';
|
|
9
10
|
import { waitForHealth } from './install.js';
|
|
10
11
|
import { setupNativeEmbed } from './install.js';
|
|
12
|
+
import { commandExists as realCommandExists } from './install.js';
|
|
11
13
|
import { readInstallState, regenerateCompose, } from '../projects-yml.js';
|
|
12
14
|
const PAPARATS_HOME = path.join(os.homedir(), '.paparats');
|
|
13
15
|
const COMPOSE_FILE = path.join(PAPARATS_HOME, 'docker-compose.yml');
|
|
16
|
+
const EMBED_CONFIG_FILE = path.join(PAPARATS_HOME, 'llama-swap.yaml');
|
|
14
17
|
const NPM_PACKAGE = '@paparats/cli';
|
|
15
|
-
/**
|
|
18
|
+
/** Version of the *currently running* CLI, read from its own on-disk
|
|
19
|
+
* package.json by walking up from this module's location until a package.json
|
|
20
|
+
* named `@paparats/cli` is found.
|
|
21
|
+
*
|
|
22
|
+
* Deliberately NOT `npm ls -g`: that resolves `npm` from PATH — the same npm
|
|
23
|
+
* the preceding `npm install -g` used — so in the exact failure this guard
|
|
24
|
+
* targets (the running `paparats` from one node/nvm prefix, `npm` in PATH from
|
|
25
|
+
* another), install lands in prefix B and `npm ls -g` cheerfully reports B as
|
|
26
|
+
* up-to-date while the running binary (prefix A) stays stale. Reading the
|
|
27
|
+
* running module's own package.json reflects the binary actually executing.
|
|
28
|
+
* Returns null if it can't be determined. */
|
|
29
|
+
function readInstalledCliVersion() {
|
|
30
|
+
try {
|
|
31
|
+
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
32
|
+
while (dir !== path.parse(dir).root) {
|
|
33
|
+
const pkgPath = path.join(dir, 'package.json');
|
|
34
|
+
if (fs.existsSync(pkgPath)) {
|
|
35
|
+
const parsed = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
36
|
+
if (parsed.name === NPM_PACKAGE)
|
|
37
|
+
return parsed.version ?? null;
|
|
38
|
+
}
|
|
39
|
+
dir = path.dirname(dir);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/** Latest version published to npm. Null if the registry can't be reached. */
|
|
48
|
+
function readNpmLatestVersion() {
|
|
49
|
+
try {
|
|
50
|
+
return execSync(`npm view ${NPM_PACKAGE} version`, {
|
|
51
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
52
|
+
timeout: 30_000,
|
|
53
|
+
})
|
|
54
|
+
.toString()
|
|
55
|
+
.trim();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Check whether a service is declared under the top-level `services:` block.
|
|
62
|
+
*
|
|
63
|
+
* Scoped to `services:` on purpose: a naive `^ <name>:` match on the whole
|
|
64
|
+
* file would also hit a same-name key under `volumes:`/`networks:` (both
|
|
65
|
+
* indented two spaces). We enter the block on `services:` and leave it at the
|
|
66
|
+
* next column-0 key (`/^\S/`, which also stops on a comment at column 0). */
|
|
16
67
|
function composeHasService(composeContent, service) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
68
|
+
const servicePattern = new RegExp(`^ ${service}:`);
|
|
69
|
+
let inServices = false;
|
|
70
|
+
for (const raw of composeContent.split('\n')) {
|
|
71
|
+
const line = raw.replace(/\r$/, '');
|
|
72
|
+
if (/^services:\s*(?:#.*)?$/.test(line)) {
|
|
73
|
+
inServices = true;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (inServices) {
|
|
77
|
+
if (/^\S/.test(line))
|
|
78
|
+
break; // next top-level key → out of services
|
|
79
|
+
if (servicePattern.test(line))
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
/** Decide whether `update` should (re)install the native embed server.
|
|
86
|
+
*
|
|
87
|
+
* The clean signal is install.json's embedMode — but only when it is actually
|
|
88
|
+
* set. Installs from before that field existed have an install.json with no
|
|
89
|
+
* embedMode (undefined); hand-rolled installs have no install.json at all. In
|
|
90
|
+
* both cases the old code silently skipped the embed step, leaving the host
|
|
91
|
+
* with no running embed backend after the Ollama→llama-server migration.
|
|
92
|
+
*
|
|
93
|
+
* So embedMode decides ONLY when it is a known value:
|
|
94
|
+
* - `native` → refresh
|
|
95
|
+
* - `docker`/`external` → skip
|
|
96
|
+
* Otherwise (embedMode undefined, or no install.json) we fall through to
|
|
97
|
+
* detection by artifacts + compose contents:
|
|
98
|
+
* - llama-swap or llama-server already on PATH → native embed in use
|
|
99
|
+
* - ~/.paparats/llama-swap.yaml present → native embed configured
|
|
100
|
+
* - docker-compose.yml exists WITHOUT an `embed`
|
|
101
|
+
* service (Qdrant+server in Docker, embed on
|
|
102
|
+
* the host) → native embed is in use → refresh
|
|
103
|
+
* - no compose at all on macOS → native is the default there
|
|
104
|
+
*
|
|
105
|
+
* The compose-contents check is the key signal for hosts that upgraded from
|
|
106
|
+
* the Ollama era: those developer installs always wrote a docker-compose.yml
|
|
107
|
+
* (Qdrant + server) but ran embeddings natively — so "compose present" alone
|
|
108
|
+
* never meant "embed is Dockerised". We must look at whether the compose file
|
|
109
|
+
* actually declares an `embed` service. */
|
|
110
|
+
function decideEmbedRefresh(deps) {
|
|
111
|
+
const { state, commandExists, existsSync, readFileSync, platform } = deps;
|
|
112
|
+
// Explicit embedMode wins — but only when it is actually set. A truthy
|
|
113
|
+
// `state` with `embedMode === undefined` (pre-embedMode install.json) must
|
|
114
|
+
// NOT short-circuit to skip; it falls through to artifact/compose detection.
|
|
115
|
+
if (state?.embedMode === 'native') {
|
|
116
|
+
return { refresh: true, reason: 'install.json embedMode=native' };
|
|
117
|
+
}
|
|
118
|
+
if (state?.embedMode === 'docker' || state?.embedMode === 'external') {
|
|
119
|
+
return { refresh: false, reason: `install.json embedMode=${state.embedMode}` };
|
|
120
|
+
}
|
|
121
|
+
// No decisive embedMode — detect by artifacts + compose contents.
|
|
122
|
+
if (commandExists('llama-swap') || commandExists('llama-server')) {
|
|
123
|
+
return { refresh: true, reason: 'no embedMode; llama-swap/llama-server on PATH' };
|
|
124
|
+
}
|
|
125
|
+
if (existsSync(EMBED_CONFIG_FILE)) {
|
|
126
|
+
return { refresh: true, reason: 'no embedMode; llama-swap.yaml present' };
|
|
127
|
+
}
|
|
128
|
+
if (existsSync(COMPOSE_FILE)) {
|
|
129
|
+
// A Dockerised embed (`embed` service present) is self-updated by
|
|
130
|
+
// `docker compose pull` above, so never run native setup for it —
|
|
131
|
+
// regardless of platform.
|
|
132
|
+
let composeHasEmbed = false;
|
|
133
|
+
try {
|
|
134
|
+
composeHasEmbed = composeHasService(readFileSync(COMPOSE_FILE, 'utf8'), 'embed');
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Unreadable compose — fall through to the platform default below.
|
|
138
|
+
}
|
|
139
|
+
if (composeHasEmbed) {
|
|
140
|
+
return { refresh: false, reason: 'no embedMode; docker-compose.yml runs an embed service' };
|
|
141
|
+
}
|
|
142
|
+
// Compose without an embed service means the embed runs natively — but
|
|
143
|
+
// native embed is only supported on macOS (Homebrew llama.cpp/llama-swap).
|
|
144
|
+
// On Linux/Windows this configuration is external/manual, so don't try to
|
|
145
|
+
// brew-install; fall through to the non-macOS default (refresh: false).
|
|
146
|
+
if (platform() === 'darwin') {
|
|
147
|
+
return { refresh: true, reason: 'no embedMode; docker-compose.yml has no embed service' };
|
|
148
|
+
}
|
|
149
|
+
return { refresh: false, reason: 'no embedMode; non-macOS compose without embed service' };
|
|
150
|
+
}
|
|
151
|
+
if (platform() === 'darwin') {
|
|
152
|
+
return { refresh: true, reason: 'no embedMode; macOS host without docker-compose.yml' };
|
|
153
|
+
}
|
|
154
|
+
return { refresh: false, reason: 'no embedMode; no native-embed signals detected' };
|
|
20
155
|
}
|
|
21
156
|
export async function runUpdate(opts, deps) {
|
|
22
157
|
const exec = deps?.execSync ?? execSync;
|
|
@@ -27,6 +162,10 @@ export async function runUpdate(opts, deps) {
|
|
|
27
162
|
const readInstall = deps?.readInstallState ?? readInstallState;
|
|
28
163
|
const regenerate = deps?.regenerateCompose ?? regenerateCompose;
|
|
29
164
|
const setupEmbed = deps?.setupNativeEmbed ?? setupNativeEmbed;
|
|
165
|
+
const commandExists = deps?.commandExists ?? realCommandExists;
|
|
166
|
+
const platform = deps?.platform ?? (() => process.platform);
|
|
167
|
+
const installedVersion = deps?.readInstalledCliVersion ?? readInstalledCliVersion;
|
|
168
|
+
const npmLatest = deps?.readNpmLatestVersion ?? readNpmLatestVersion;
|
|
30
169
|
console.log(chalk.bold('\npaparats update\n'));
|
|
31
170
|
if (!opts.skipCli) {
|
|
32
171
|
const spinner = ora(`Updating CLI from npm (${NPM_PACKAGE}@latest)...`).start();
|
|
@@ -47,6 +186,21 @@ export async function runUpdate(opts, deps) {
|
|
|
47
186
|
throw err;
|
|
48
187
|
}
|
|
49
188
|
}
|
|
189
|
+
// Verify the install actually took. `npm install -g` can exit 0 without
|
|
190
|
+
// upgrading (a stale/parallel node context, a `paparats` on PATH from a
|
|
191
|
+
// different node/nvm install, or missing global-write perms), leaving the
|
|
192
|
+
// running process on old code — every step below then silently runs the old
|
|
193
|
+
// logic. Fail loudly instead of reporting a false "Update complete".
|
|
194
|
+
const latest = npmLatest();
|
|
195
|
+
const installed = installedVersion();
|
|
196
|
+
if (latest && installed && installed !== latest) {
|
|
197
|
+
throw new Error(`CLI did not update: the running ${NPM_PACKAGE} is ${installed}, but npm latest is ${latest}.\n` +
|
|
198
|
+
` \`npm install -g\` likely wrote to a different node/nvm prefix than the one this ` +
|
|
199
|
+
`\`paparats\` runs from, so the upgrade landed elsewhere.\n` +
|
|
200
|
+
` Fix: run \`which -a paparats\` and \`npm root -g\` to find the mismatch, then ` +
|
|
201
|
+
`\`npm install -g ${NPM_PACKAGE}@latest\` with the node that owns your PATH \`paparats\`.\n` +
|
|
202
|
+
` Re-run \`paparats update\` afterward so the new native-embed / compose logic runs.`);
|
|
203
|
+
}
|
|
50
204
|
}
|
|
51
205
|
if (!opts.skipDocker) {
|
|
52
206
|
if (!exists(COMPOSE_FILE)) {
|
|
@@ -131,17 +285,27 @@ export async function runUpdate(opts, deps) {
|
|
|
131
285
|
}
|
|
132
286
|
}
|
|
133
287
|
// Native embed server lives on the host (not Docker), so `docker compose
|
|
134
|
-
// pull/up` above never touches it.
|
|
135
|
-
//
|
|
136
|
-
//
|
|
288
|
+
// pull/up` above never touches it. Re-run the embed setup here so a single
|
|
289
|
+
// `paparats update` also installs/refreshes/starts llama-server + llama-swap.
|
|
290
|
+
// Idempotent — no-ops when everything is current.
|
|
137
291
|
if (!opts.skipEmbed) {
|
|
138
|
-
const
|
|
139
|
-
|
|
292
|
+
const decision = decideEmbedRefresh({
|
|
293
|
+
state: readInstall(PAPARATS_HOME),
|
|
294
|
+
commandExists,
|
|
295
|
+
existsSync: exists,
|
|
296
|
+
readFileSync: readFile,
|
|
297
|
+
platform,
|
|
298
|
+
});
|
|
299
|
+
if (decision.refresh) {
|
|
140
300
|
// setupNativeEmbed prints its own spinners for each step (brew, download,
|
|
141
301
|
// start), so just announce the section rather than wrapping in a spinner.
|
|
142
|
-
console.log(chalk.dim(
|
|
302
|
+
console.log(chalk.dim(`\nEnsuring native embedding server (llama-server + llama-swap) — ${decision.reason}...`));
|
|
143
303
|
await setupEmbed();
|
|
144
304
|
}
|
|
305
|
+
else {
|
|
306
|
+
// Say why we skipped so a missing embed server isn't a silent surprise.
|
|
307
|
+
console.log(chalk.dim(`\nSkipping native embed refresh (${decision.reason}).`));
|
|
308
|
+
}
|
|
145
309
|
}
|
|
146
310
|
console.log(chalk.bold.green('\n✓ Update complete!\n'));
|
|
147
311
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAGlB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;AACpE,MAAM,WAAW,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paparats/cli",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.4",
|
|
4
4
|
"mcpName": "io.github.IBazylchuk/paparats-mcp",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "CLI for Paparats MCP - semantic code search with AST chunking, symbol graph, and vector search for AI coding assistants",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@inquirer/prompts": "^8.5.2",
|
|
74
|
-
"@paparats/shared": "^1.7.
|
|
74
|
+
"@paparats/shared": "^1.7.4",
|
|
75
75
|
"chalk": "^5.6.2",
|
|
76
76
|
"chokidar": "^5.0.0",
|
|
77
77
|
"commander": "^15.0.0",
|