mister-wolf 2.1.0 → 2.2.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/README.md CHANGED
@@ -40,6 +40,7 @@ wolf bootstrap # 3) память: стартовое наполн
40
40
  After `wolf init` **restart your agent platform** — the Wolf MCP server connects at startup. Claude Code will ask you to approve the project-scope MCP server on first start — that is expected.
41
41
 
42
42
  - **Try it without installing:** `npx mister-wolf init` — creates project memory but never writes MCP configs (try-out mode). Like it? `npm install -g mister-wolf` and run `wolf init` again.
43
+ - **Updating:** `wolf upgrade` — compares the installed version with the npm registry and runs `npm install -g mister-wolf@latest` (`--check` only reports, dev/linked installs are refused honestly). Manual path: `npm i -g mister-wolf@latest`.
43
44
  - **Platforms v1:** opencode, Claude Code. Detection is automatic; explicit: `wolf init --platform opencode,claude` (the list replaces the current set). If no platform markers are found, init warns you honestly and suggests `--platform`.
44
45
  - **OS/runtime:** macOS and Linux (glibc) on Node 22/24. Alpine/musl is not supported in v1; Windows is best-effort, not claimed. The native dependency better-sqlite3 installs from prebuilds — that is the dependency's own behavior; mister-wolf ships no install scripts of its own.
45
46
  - **If installation fails on better-sqlite3 — two different situations:**
package/README.ru.md CHANGED
@@ -44,6 +44,9 @@ Claude Code при первом старте попросит approve project-sc
44
44
 
45
45
  - **Попробовать без установки:** `npx mister-wolf init` — создаст память проекта, но никогда
46
46
  не пишет MCP-конфиги (try-out). Понравилось — `npm install -g mister-wolf` и повтори `wolf init`.
47
+ - **Обновление:** `wolf upgrade` — сравнит установленную версию с npm registry и выполнит
48
+ `npm install -g mister-wolf@latest` (`--check` только сообщает; dev/linked-установке откажет честно).
49
+ Вручную: `npm i -g mister-wolf@latest`.
47
50
  - **Платформы v1:** opencode, Claude Code. Детект автоматический; явно:
48
51
  `wolf init --platform opencode,claude` (список заменяет текущий набор). Нет маркеров платформы —
49
52
  init честно предупредит и подскажет `--platform`.
@@ -1 +1 @@
1
- {"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,wBAAgB,SAAS,IAAI,OAAO,CA6CnC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAQhC;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB1D"}
1
+ {"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDpC,wBAAgB,SAAS,IAAI,OAAO,CA8CnC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAQhC;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB1D"}
@@ -41,6 +41,7 @@ import { memoryLearnCommand as learnCommand } from './commands/memory-learn.js';
41
41
  import { memoryEffectivenessCommand as effectivenessCommand } from './commands/memory-effectiveness.js';
42
42
  import { memoryRunCommand as runCommand } from './commands/memory-run.js';
43
43
  import { memoryBootstrapCommand as bootstrapCommand } from './commands/memory-bootstrap.js';
44
+ import { memoryUpgradeCommand as upgradeCommand } from './commands/memory-upgrade.js';
44
45
  import { UserFacingError } from '../../domain/errors.js';
45
46
  function readPackageVersion() {
46
47
  const baseDir = dirname(fileURLToPath(import.meta.url));
@@ -88,6 +89,7 @@ export function createCli() {
88
89
  program.addCommand(effectivenessCommand());
89
90
  program.addCommand(runCommand());
90
91
  program.addCommand(bootstrapCommand());
92
+ program.addCommand(upgradeCommand());
91
93
  program.addCommand(doctorCommand());
92
94
  return program;
93
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function memoryUpgradeCommand(): Command;
3
+ //# sourceMappingURL=memory-upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-upgrade.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-upgrade.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqGpC,wBAAgB,oBAAoB,IAAI,OAAO,CAiB9C"}
@@ -0,0 +1,104 @@
1
+ import { spawn } from 'child_process';
2
+ import { realpathSync, readFileSync } from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname, join } from 'path';
5
+ import { Command } from 'commander';
6
+ import { runUpgrade } from '../../../app/use-cases/upgrade.js';
7
+ import { UserFacingError } from '../../../domain/errors.js';
8
+ // wolf upgrade (бриф 2026-09-02): npm-самообновление глобальной установки.
9
+ // spawn npm идёт через PATH — e2e подменяет npm фейком первой записью PATH,
10
+ // реальный registry в тестах не дёргается.
11
+ function readInstalledVersion() {
12
+ // dist/adapters/cli/commands/ → корень пакета (package.json в tarball-е рядом с dist/)
13
+ const baseDir = dirname(fileURLToPath(import.meta.url));
14
+ const pkg = JSON.parse(readFileSync(join(baseDir, '../../../../package.json'), 'utf-8'));
15
+ return pkg.version;
16
+ }
17
+ function realPathOrNull(p) {
18
+ try {
19
+ return realpathSync(p);
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ function npmBin() {
26
+ return process.platform === 'win32' ? 'npm.cmd' : 'npm';
27
+ }
28
+ function runNpm(args, inheritStdio = false) {
29
+ return new Promise((resolve, reject) => {
30
+ // ветвление вместо условных опций: TS не выводит перегрузку spawn по union-stdio
31
+ const child = inheritStdio
32
+ ? spawn(npmBin(), args, { stdio: ['ignore', 'inherit', 'inherit'] })
33
+ : spawn(npmBin(), args);
34
+ let stdout = '';
35
+ let stderr = '';
36
+ if (child.stdout)
37
+ child.stdout.on('data', (d) => (stdout += d));
38
+ if (child.stderr)
39
+ child.stderr.on('data', (d) => (stderr += d));
40
+ child.on('error', reject); // npm не найден и пр.
41
+ child.on('close', (code) => resolve({ stdout, stderr, code }));
42
+ });
43
+ }
44
+ async function registryVersion() {
45
+ const res = await runNpm(['view', 'mister-wolf', 'version']);
46
+ const version = res.stdout.trim();
47
+ if (res.code !== 0 || version === '') {
48
+ const detail = res.stderr.trim() !== '' ? `: ${res.stderr.trim()}` : '';
49
+ throw new UserFacingError(`не удалось получить версию из npm registry${detail}`);
50
+ }
51
+ return version;
52
+ }
53
+ async function npmGlobalPrefix() {
54
+ try {
55
+ const res = await runNpm(['prefix', '-g']);
56
+ const p = res.stdout.trim();
57
+ return res.code === 0 && p !== '' ? realPathOrNull(p) : null;
58
+ }
59
+ catch {
60
+ return null; // npm недоступен — тип установки не проверить (фолбэк = отказ)
61
+ }
62
+ }
63
+ async function installLatest(from, to) {
64
+ console.log(`${from} → ${to}`);
65
+ const res = await runNpm(['install', '-g', 'mister-wolf@latest'], true);
66
+ if (res.code !== 0) {
67
+ throw new UserFacingError('npm install -g mister-wolf@latest завершился с ошибкой (вывод npm выше)');
68
+ }
69
+ }
70
+ function printOutcome(outcome) {
71
+ switch (outcome.kind) {
72
+ case 'up-to-date':
73
+ console.log(`уже последняя версия (${outcome.current})`);
74
+ return;
75
+ case 'local-newer':
76
+ console.log(`установленная ${outcome.current} новее версии в registry (${outcome.latest}) — обновление не требуется`);
77
+ return;
78
+ case 'available':
79
+ console.log(`доступна ${outcome.latest} (установлена ${outcome.current}) — запустите wolf upgrade`);
80
+ return;
81
+ case 'updated':
82
+ console.log('обновлено; новая версия wolf вступит в силу при следующем запуске');
83
+ return;
84
+ case 'linked-refusal':
85
+ throw new UserFacingError(`установлена dev/linked-копия (${outcome.binaryPath ?? 'путь неизвестен'}) — upgrade неприменим; для обновления: npm rm -g mister-wolf && npm i -g mister-wolf`);
86
+ }
87
+ }
88
+ export function memoryUpgradeCommand() {
89
+ return new Command('upgrade')
90
+ .description('Upgrade the global wolf installation to the latest npm version (runs npm install -g mister-wolf@latest); --check only compares versions, no install')
91
+ .option('--check', 'Only check for a newer version, do not install anything')
92
+ .action(async (options) => {
93
+ const checkOnly = options.check === true;
94
+ const deps = {
95
+ currentVersion: readInstalledVersion(),
96
+ binaryPath: process.argv[1] ? realPathOrNull(process.argv[1]) : null,
97
+ npmPrefix: checkOnly ? null : await npmGlobalPrefix(), // --check тип установки не проверяет
98
+ registryVersion,
99
+ installLatest,
100
+ };
101
+ printOutcome(await runUpgrade(deps, checkOnly));
102
+ });
103
+ }
104
+ //# sourceMappingURL=memory-upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-upgrade.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-upgrade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface UpgradeDeps {
2
+ /** Версия установленного бинаря (package.json). */
3
+ currentVersion: string;
4
+ /** realpath запущенного скрипта (process.argv[1]); null = не резолвится. */
5
+ binaryPath: string | null;
6
+ /** realpath `npm prefix -g`; null = npm недоступен/ошибка → тип установки не проверить. */
7
+ npmPrefix: string | null;
8
+ /** `npm view mister-wolf version` — кидает при ошибке registry. */
9
+ registryVersion: () => Promise<string>;
10
+ /** `npm install -g mister-wolf@latest` (стримит вывод); кидает при сбое npm. */
11
+ installLatest: (from: string, to: string) => Promise<void>;
12
+ }
13
+ export type UpgradeOutcome = {
14
+ kind: 'up-to-date';
15
+ current: string;
16
+ } | {
17
+ kind: 'available';
18
+ current: string;
19
+ latest: string;
20
+ } | {
21
+ kind: 'local-newer';
22
+ current: string;
23
+ latest: string;
24
+ } | {
25
+ kind: 'updated';
26
+ from: string;
27
+ to: string;
28
+ } | {
29
+ kind: 'linked-refusal';
30
+ binaryPath: string | null;
31
+ };
32
+ /** Семвер-сравнение X.Y.Z[-pre]: -1 (a<b) | 0 | 1 (a>b). Непарсибл-токен = 0. */
33
+ export declare function compareVersions(a: string, b: string): number;
34
+ /** Глобальная npm-установка = realpath бинаря внутри realpath-префикса.
35
+ * null на любом конце = проверка невозможна → false (безопасный отказ, tested-фолбэк). */
36
+ export declare function isUnderGlobalPrefix(binaryPath: string | null, npmPrefix: string | null): boolean;
37
+ export declare function runUpgrade(deps: UpgradeDeps, checkOnly: boolean): Promise<UpgradeOutcome>;
38
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/upgrade.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2FAA2F;IAC3F,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mEAAmE;IACnE,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,gFAAgF;IAChF,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE1D,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AAcD;2FAC2F;AAC3F,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAGhG;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAc/F"}
@@ -0,0 +1,48 @@
1
+ import { sep } from 'path';
2
+ /** Семвер-сравнение X.Y.Z[-pre]: -1 (a<b) | 0 | 1 (a>b). Непарсибл-токен = 0. */
3
+ export function compareVersions(a, b) {
4
+ const pa = parseVersion(a);
5
+ const pb = parseVersion(b);
6
+ for (let i = 0; i < 3; i++) {
7
+ if (pa[i] !== pb[i])
8
+ return pa[i] < pb[i] ? -1 : 1;
9
+ }
10
+ return 0;
11
+ }
12
+ function parseVersion(v) {
13
+ // npm view может вернуть с 'v'-префиксом; пре-релижную часть игнорируем:
14
+ // пре-релиз ниже релиза того же триплета — достаточно вычесть 1 с патча не выйдет,
15
+ // поэтому трактуем пре-релиз как тот же триплет (консервативно: не «новее»)
16
+ const m = v.trim().replace(/^v/, '').split('-')[0].split('.');
17
+ const n = (i) => {
18
+ const x = Number.parseInt(m[i] ?? '0', 10);
19
+ return Number.isNaN(x) ? 0 : x;
20
+ };
21
+ return [n(0), n(1), n(2)];
22
+ }
23
+ /** Глобальная npm-установка = realpath бинаря внутри realpath-префикса.
24
+ * null на любом конце = проверка невозможна → false (безопасный отказ, tested-фолбэк). */
25
+ export function isUnderGlobalPrefix(binaryPath, npmPrefix) {
26
+ if (!binaryPath || !npmPrefix)
27
+ return false;
28
+ return binaryPath === npmPrefix || binaryPath.startsWith(npmPrefix + sep);
29
+ }
30
+ export async function runUpgrade(deps, checkOnly) {
31
+ // install-путь применим только к глобальной установке: dev/linked-копия
32
+ // (npm link, запуск из репо) — честный отказ; `--check` read-only, работает всегда
33
+ if (!checkOnly && !isUnderGlobalPrefix(deps.binaryPath, deps.npmPrefix)) {
34
+ return { kind: 'linked-refusal', binaryPath: deps.binaryPath };
35
+ }
36
+ const latest = await deps.registryVersion();
37
+ const current = deps.currentVersion;
38
+ const cmp = compareVersions(latest, current);
39
+ if (cmp === 0)
40
+ return { kind: 'up-to-date', current };
41
+ if (cmp < 0)
42
+ return { kind: 'local-newer', current, latest };
43
+ if (checkOnly)
44
+ return { kind: 'available', current, latest };
45
+ await deps.installLatest(current, latest);
46
+ return { kind: 'updated', from: current, to: latest };
47
+ }
48
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/app/use-cases/upgrade.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mister-wolf",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Local-first project memory for AI coding agents: decisions, lessons, tools and processes that outlive the session",
5
5
  "keywords": [
6
6
  "ai-agents",