@pcircle/memesh 4.2.4 → 4.2.6
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +20 -0
- package/dashboard/dist/index.html +7 -7
- package/dist/core/doctor.d.ts +6 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +34 -1
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/install-channel.d.ts +1 -1
- package/dist/core/install-channel.d.ts.map +1 -1
- package/dist/core/install-channel.js +15 -0
- package/dist/core/install-channel.js.map +1 -1
- package/dist/skills-manifest.json +6 -6
- package/package.json +2 -1
- package/scripts/hooks/_shared.js +105 -0
- package/scripts/hooks/session-start.js +131 -6
- package/scripts/upgrade-plugin.sh +170 -0
package/dist/core/doctor.d.ts
CHANGED
|
@@ -34,6 +34,12 @@ interface DoctorOptions {
|
|
|
34
34
|
readFileSyncImpl?: typeof fs.readFileSync;
|
|
35
35
|
statSyncImpl?: typeof fs.statSync;
|
|
36
36
|
fetchImpl?: typeof fetch;
|
|
37
|
+
nativeBindingProbeImpl?: (packageRoot: string) => {
|
|
38
|
+
ok: true;
|
|
39
|
+
} | {
|
|
40
|
+
ok: false;
|
|
41
|
+
message: string;
|
|
42
|
+
};
|
|
37
43
|
}
|
|
38
44
|
export declare function runDoctor(options: DoctorOptions): Promise<DoctorResult>;
|
|
39
45
|
export declare function formatDoctorReport(result: DoctorResult, packageVersion: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAyB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAI1F,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAUD,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,YAAY,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,cAAc,CAAC;IAC3C,sBAAsB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACnD,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,cAAc,CAAC;IAC3C,4BAA4B,CAAC,EAAE,OAAO,wBAAwB,CAAC;IAC/D,4BAA4B,CAAC,EAAE,OAAO,wBAAwB,CAAC;IAC/D,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IACtC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;IAC1C,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAMzB,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjG;AAm8BD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoM7E;AAaD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAazF"}
|
package/dist/core/doctor.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { createHash } from 'crypto';
|
|
4
|
+
import { createRequire } from 'module';
|
|
5
|
+
import { pathToFileURL } from 'url';
|
|
4
6
|
import { detectCapabilities, getConfigPath } from './config.js';
|
|
5
7
|
import { openDatabase, closeDatabase, getPendingReindexInfo, isDatabaseOpen } from '../db.js';
|
|
6
8
|
import { getUpdateCheck } from './version-check.js';
|
|
@@ -277,6 +279,36 @@ function inspectHookActivity(openDatabaseImpl, closeDatabaseImpl, existsSyncImpl
|
|
|
277
279
|
catch { }
|
|
278
280
|
}
|
|
279
281
|
}
|
|
282
|
+
function defaultNativeBindingProbe(packageRoot) {
|
|
283
|
+
try {
|
|
284
|
+
const localRequire = createRequire(pathToFileURL(path.join(packageRoot, 'package.json')).href);
|
|
285
|
+
const Database = localRequire('better-sqlite3');
|
|
286
|
+
const probe = new Database(':memory:');
|
|
287
|
+
probe.close();
|
|
288
|
+
return { ok: true };
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
return { ok: false, message: err instanceof Error ? err.message : String(err) };
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function inspectNativeBinding(packageRoot, _existsSyncImpl, probeImpl = defaultNativeBindingProbe) {
|
|
295
|
+
const result = probeImpl(packageRoot);
|
|
296
|
+
if (result.ok) {
|
|
297
|
+
return createCheck('native-binding', 'Native SQLite binding', 'pass', 'better-sqlite3 native binding loads cleanly (Database probe succeeded).');
|
|
298
|
+
}
|
|
299
|
+
const isMissingBinding = /bindings file|locate the bindings/i.test(result.message);
|
|
300
|
+
const isMissingPackage = /MODULE_NOT_FOUND|Cannot find module/i.test(result.message);
|
|
301
|
+
if (isMissingPackage) {
|
|
302
|
+
return createCheck('native-binding', 'Native SQLite binding', 'fail', 'better-sqlite3 is not installed (Node could not resolve the module from any '
|
|
303
|
+
+ 'parent node_modules). Memesh hooks and database operations will not work.', `Run: npm install (in the directory that depends on @pcircle/memesh)`);
|
|
304
|
+
}
|
|
305
|
+
if (isMissingBinding) {
|
|
306
|
+
return createCheck('native-binding', 'Native SQLite binding', 'fail', 'better-sqlite3 is installed but the native binding (.node file) is missing. '
|
|
307
|
+
+ 'Hooks will silently skip-and-exit, and auto-capture will NOT write any entities. '
|
|
308
|
+
+ 'This is the plugin-marketplace silent-dropout class of bug.', `Run: cd "${packageRoot}" && npm rebuild better-sqlite3 (or "npm install --omit=dev" for a clean reinstall)`);
|
|
309
|
+
}
|
|
310
|
+
return createCheck('native-binding', 'Native SQLite binding', 'fail', `better-sqlite3 failed to load: ${result.message}`, `Run: cd "${packageRoot}" && npm rebuild better-sqlite3`);
|
|
311
|
+
}
|
|
280
312
|
function inspectDashboardArtifact(packageRoot, existsSyncImpl) {
|
|
281
313
|
const dashboardPath = path.join(packageRoot, 'dashboard', 'dist', 'index.html');
|
|
282
314
|
if (!existsSyncImpl(dashboardPath)) {
|
|
@@ -414,7 +446,7 @@ function summarizeOverallStatus(checks) {
|
|
|
414
446
|
return 'PASS';
|
|
415
447
|
}
|
|
416
448
|
export async function runDoctor(options) {
|
|
417
|
-
const { packageRoot, packageVersion, probeHttp = false, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, detectCapabilitiesImpl = detectCapabilities, getConfigPathImpl = getConfigPath, getUpdateCheckImpl = getUpdateCheck, getCurrentInstallChannelImpl = getCurrentInstallChannel, getInstallChannelSupportImpl = getInstallChannelSupport, existsSyncImpl = fs.existsSync, readFileSyncImpl = fs.readFileSync, statSyncImpl = fs.statSync, fetchImpl = fetch, } = options;
|
|
449
|
+
const { packageRoot, packageVersion, probeHttp = false, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, detectCapabilitiesImpl = detectCapabilities, getConfigPathImpl = getConfigPath, getUpdateCheckImpl = getUpdateCheck, getCurrentInstallChannelImpl = getCurrentInstallChannel, getInstallChannelSupportImpl = getInstallChannelSupport, existsSyncImpl = fs.existsSync, readFileSyncImpl = fs.readFileSync, statSyncImpl = fs.statSync, fetchImpl = fetch, nativeBindingProbeImpl, } = options;
|
|
418
450
|
const wasDbOpenBeforeUs = isDatabaseOpenImpl();
|
|
419
451
|
const safeCloseDatabaseImpl = wasDbOpenBeforeUs
|
|
420
452
|
? () => undefined
|
|
@@ -502,6 +534,7 @@ export async function runDoctor(options) {
|
|
|
502
534
|
checks.push(inspectHookWiring(existsSyncImpl, readFileSyncImpl, memeshDir(), packageRoot));
|
|
503
535
|
checks.push(inspectHookActivity(openDatabaseImpl, safeCloseDatabaseImpl, existsSyncImpl, statSyncImpl));
|
|
504
536
|
checks.push(inspectDashboardArtifact(packageRoot, existsSyncImpl));
|
|
537
|
+
checks.push(inspectNativeBinding(packageRoot, existsSyncImpl, nativeBindingProbeImpl));
|
|
505
538
|
checks.push(verifySkillsManifest(packageRoot, existsSyncImpl, readFileSyncImpl));
|
|
506
539
|
const capabilities = detectCapabilitiesImpl();
|
|
507
540
|
checks.push(createCheck('capabilities', 'Capabilities', 'pass', `Search level ${capabilities.searchLevel} (${capabilities.searchLevel === 1 ? 'Smart Mode' : 'Core'}); embeddings: ${capabilities.embeddings}; LLM: ${capabilities.llm ? `${capabilities.llm.provider} (${capabilities.llm.model ?? 'default'})` : 'not configured'}.`));
|
package/dist/core/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import { execFileSync } from 'child_process';
|
|
3
|
-
export type InstallChannel = 'npm-global' | 'npm-local' | 'source-checkout' | 'unknown';
|
|
3
|
+
export type InstallChannel = 'npm-global' | 'npm-local' | 'source-checkout' | 'plugin-marketplace' | 'unknown';
|
|
4
4
|
type ExistsSyncLike = typeof fs.existsSync;
|
|
5
5
|
type ExecFileSyncLike = typeof execFileSync;
|
|
6
6
|
interface DetectInstallChannelOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-channel.d.ts","sourceRoot":"","sources":["../../src/core/install-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"install-channel.d.ts","sourceRoot":"","sources":["../../src/core/install-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAE/G,KAAK,cAAc,GAAG,OAAO,EAAE,CAAC,UAAU,CAAC;AAC3C,KAAK,gBAAgB,GAAG,OAAO,YAAY,CAAC;AAE5C,UAAU,2BAA2B;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,UAAU,+BAA+B;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAuBD,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CAAO,GACpD,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,cAAc,CAgCzF;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,cAAc,CAYhB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,qBAAqB,CAiDvF"}
|
|
@@ -12,6 +12,10 @@ function getRootBeforeNodeModules(packageRoot) {
|
|
|
12
12
|
return null;
|
|
13
13
|
return packageRoot.slice(0, index);
|
|
14
14
|
}
|
|
15
|
+
function isPluginMarketplacePath(packageRoot) {
|
|
16
|
+
const segment = `${path.sep}.claude${path.sep}plugins${path.sep}cache${path.sep}`;
|
|
17
|
+
return packageRoot.includes(segment);
|
|
18
|
+
}
|
|
15
19
|
export function getGlobalNpmRoot(options = {}) {
|
|
16
20
|
const { execFileSyncImpl = execFileSync } = options;
|
|
17
21
|
try {
|
|
@@ -24,6 +28,9 @@ export function getGlobalNpmRoot(options = {}) {
|
|
|
24
28
|
export function detectInstallChannel(options) {
|
|
25
29
|
const { packageRoot, globalNpmRoot, existsSyncImpl = fs.existsSync, } = options;
|
|
26
30
|
const normalizedPackageRoot = path.resolve(packageRoot);
|
|
31
|
+
if (isPluginMarketplacePath(normalizedPackageRoot)) {
|
|
32
|
+
return 'plugin-marketplace';
|
|
33
|
+
}
|
|
27
34
|
if (existsSyncImpl(path.join(normalizedPackageRoot, '.git'))) {
|
|
28
35
|
return 'source-checkout';
|
|
29
36
|
}
|
|
@@ -70,6 +77,14 @@ export function getInstallChannelSupport(channel) {
|
|
|
70
77
|
recommendedCommand: null,
|
|
71
78
|
guidance: 'Update this source checkout from its repository and rebuild it.',
|
|
72
79
|
};
|
|
80
|
+
case 'plugin-marketplace':
|
|
81
|
+
return {
|
|
82
|
+
channel,
|
|
83
|
+
label: 'Claude Code plugin marketplace',
|
|
84
|
+
canSelfUpdate: false,
|
|
85
|
+
recommendedCommand: 'bash scripts/upgrade-plugin.sh',
|
|
86
|
+
guidance: 'Run `bash <plugin-root>/scripts/upgrade-plugin.sh` (or reinstall the plugin from the Claude Code /plugin UI). The plugin marketplace pins versions, so a new release does not auto-update.',
|
|
87
|
+
};
|
|
73
88
|
default:
|
|
74
89
|
return {
|
|
75
90
|
channel: 'unknown',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-channel.js","sourceRoot":"","sources":["../../src/core/install-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA2B7C,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAmB;IACnD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,UAAmD,EAAE;IAErD,MAAM,EAAE,gBAAgB,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAEpD,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,EACJ,WAAW,EACX,aAAa,EACb,cAAc,GAAG,EAAE,CAAC,UAAU,GAC/B,GAAG,OAAO,CAAC;IAEZ,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"install-channel.js","sourceRoot":"","sources":["../../src/core/install-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA2B7C,SAAS,SAAS,CAAC,MAAc,EAAE,KAAa;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAmB;IACnD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAMD,SAAS,uBAAuB,CAAC,WAAmB;IAClD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;IAClF,OAAO,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,UAAmD,EAAE;IAErD,MAAM,EAAE,gBAAgB,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAEpD,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,EACJ,WAAW,EACX,aAAa,EACb,cAAc,GAAG,EAAE,CAAC,UAAU,GAC/B,GAAG,OAAO,CAAC;IAEZ,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAOxD,IAAI,uBAAuB,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACnD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAC,EAAE,CAAC;QACnF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IAC9E,IAAI,qBAAqB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAwC;IAExC,MAAM,EACJ,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,GAAG,OAAO,CAAC;IAEZ,OAAO,oBAAoB,CAAC;QAC1B,WAAW;QACX,aAAa,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;QACrD,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAuB;IAC9D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,YAAY;YACf,OAAO;gBACL,OAAO;gBACP,KAAK,EAAE,YAAY;gBACnB,aAAa,EAAE,IAAI;gBACnB,kBAAkB,EAAE,eAAe;gBACnC,QAAQ,EAAE,wDAAwD;aACnE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,OAAO;gBACP,KAAK,EAAE,+BAA+B;gBACtC,aAAa,EAAE,KAAK;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,QAAQ,EAAE,kFAAkF;aAC7F,CAAC;QACJ,KAAK,iBAAiB;YACpB,OAAO;gBACL,OAAO;gBACP,KAAK,EAAE,iBAAiB;gBACxB,aAAa,EAAE,KAAK;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,QAAQ,EAAE,iEAAiE;aAC5E,CAAC;QACJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,OAAO;gBACP,KAAK,EAAE,gCAAgC;gBACvC,aAAa,EAAE,KAAK;gBAMpB,kBAAkB,EAAE,gCAAgC;gBACpD,QAAQ,EACN,4LAA4L;aAC/L,CAAC;QACJ;YACE,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,KAAK;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,QAAQ,EAAE,2EAA2E;aACtF,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "memesh.skills-manifest/v1",
|
|
3
|
-
"generated_at": "2026-05-
|
|
3
|
+
"generated_at": "2026-05-13T05:56:04.852Z",
|
|
4
4
|
"entries": [
|
|
5
5
|
{
|
|
6
6
|
"path": ".claude-plugin/plugin.json",
|
|
7
|
-
"sha256": "
|
|
7
|
+
"sha256": "34a93efe40e01daa689670b91ce9937c9cf018b6cf60de15bab89534625d215f",
|
|
8
8
|
"bytes": 441
|
|
9
9
|
},
|
|
10
10
|
{
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"path": "scripts/hooks/_shared.js",
|
|
22
|
-
"sha256": "
|
|
23
|
-
"bytes":
|
|
22
|
+
"sha256": "392c1ea45952197d1c65ce92c5e5d80623b635322fb3f446a0b58a055abbac25",
|
|
23
|
+
"bytes": 33970
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"path": "scripts/hooks/post-commit.js",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"path": "scripts/hooks/session-start.js",
|
|
47
|
-
"sha256": "
|
|
48
|
-
"bytes":
|
|
47
|
+
"sha256": "337710fd43dbb39afe66da2c30d2a8084bbb6c1f8d6e07528f809fe016a94d4b",
|
|
48
|
+
"bytes": 36885
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"path": "scripts/hooks/session-summary.js",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pcircle/memesh",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.6",
|
|
4
4
|
"description": "MeMesh — Local memory for Claude Code and MCP coding agents. One SQLite file, zero cloud required.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"hooks/hooks.json",
|
|
18
18
|
"scripts/hooks/",
|
|
19
19
|
"scripts/postinstall-rebuild.mjs",
|
|
20
|
+
"scripts/upgrade-plugin.sh",
|
|
20
21
|
"skills/",
|
|
21
22
|
".claude-plugin/",
|
|
22
23
|
"README.md",
|
package/scripts/hooks/_shared.js
CHANGED
|
@@ -362,11 +362,116 @@ export function tryRequireBetterSqlite() {
|
|
|
362
362
|
} catch {
|
|
363
363
|
// stderr write itself failed (closed pipe, etc.) — give up silently.
|
|
364
364
|
}
|
|
365
|
+
// Self-heal for the plugin-marketplace silent-dropout class of bug.
|
|
366
|
+
// When Claude Code's `/plugin install` runs `npm install --ignore-scripts`
|
|
367
|
+
// (security default), better-sqlite3's `install` script never fetches
|
|
368
|
+
// / builds the native binding. Result: `require()` returns a JS
|
|
369
|
+
// wrapper but `new Database()` throws "Could not locate the bindings
|
|
370
|
+
// file" — and every hook silently exits without writing entities.
|
|
371
|
+
// Without this self-heal, the user has no signal that auto-capture
|
|
372
|
+
// is broken; the DB just stays empty forever.
|
|
373
|
+
//
|
|
374
|
+
// Strategy: spawn a detached `npm rebuild better-sqlite3` in the
|
|
375
|
+
// package root so the *next* hook invocation succeeds. Cap to one
|
|
376
|
+
// attempt per hour per package root via an exclusive-create marker
|
|
377
|
+
// so a crash-loop can't drive a rebuild storm. Skipped under test
|
|
378
|
+
// env (tests deliberately exercise the failure path).
|
|
379
|
+
if (!_inTestEnv()) {
|
|
380
|
+
_attemptBetterSqliteRebuild();
|
|
381
|
+
}
|
|
365
382
|
_cachedDatabaseCtor = null;
|
|
366
383
|
}
|
|
367
384
|
return _cachedDatabaseCtor;
|
|
368
385
|
}
|
|
369
386
|
|
|
387
|
+
function _attemptBetterSqliteRebuild() {
|
|
388
|
+
try {
|
|
389
|
+
// Package root = parent of the scripts/hooks/ directory that contains
|
|
390
|
+
// this file. That's where memesh's own `package.json` lives.
|
|
391
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
392
|
+
const pkgRoot = dirname(dirname(here));
|
|
393
|
+
if (!existsSync(join(pkgRoot, 'package.json'))) return;
|
|
394
|
+
// Resolve better-sqlite3's actual install location via Node's normal
|
|
395
|
+
// resolution algorithm, which follows hoisting (the consumer's
|
|
396
|
+
// top-level node_modules holds the package when memesh is installed
|
|
397
|
+
// as a dependency). Looking at `<pkgRoot>/node_modules/better-sqlite3`
|
|
398
|
+
// directly would false-negative on every hoisted install.
|
|
399
|
+
let bsqliteDir;
|
|
400
|
+
try {
|
|
401
|
+
// `require.resolve` returns the path to `lib/index.js` inside the
|
|
402
|
+
// package. Walk up to the package directory.
|
|
403
|
+
const entry = require.resolve('better-sqlite3', { paths: [pkgRoot] });
|
|
404
|
+
// `<bsqliteDir>/lib/index.js` → walk back twice to the package root.
|
|
405
|
+
bsqliteDir = dirname(dirname(entry));
|
|
406
|
+
} catch {
|
|
407
|
+
// Genuinely not installed anywhere on the resolution path. `npm
|
|
408
|
+
// rebuild` cannot help; the user needs a full install.
|
|
409
|
+
try {
|
|
410
|
+
process.stderr.write(
|
|
411
|
+
`[memesh hook] better-sqlite3 is not installed (Node could not resolve from ${pkgRoot}). `
|
|
412
|
+
+ `Run: cd to the project that depends on @pcircle/memesh and run \`npm install\`.\n`,
|
|
413
|
+
);
|
|
414
|
+
} catch {}
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
// The hoisted install location's package root — npm rebuild needs to
|
|
418
|
+
// be run from a project that owns this node_modules tree. Walking
|
|
419
|
+
// up to the nearest directory that has its own package.json gives
|
|
420
|
+
// us the right cwd.
|
|
421
|
+
let rebuildCwd = dirname(bsqliteDir);
|
|
422
|
+
while (rebuildCwd !== dirname(rebuildCwd)) {
|
|
423
|
+
if (existsSync(join(rebuildCwd, 'package.json')) && !rebuildCwd.endsWith('node_modules')) break;
|
|
424
|
+
rebuildCwd = dirname(rebuildCwd);
|
|
425
|
+
}
|
|
426
|
+
const memesh = join(homedir(), '.memesh');
|
|
427
|
+
try { mkdirSync(memesh, { recursive: true, mode: 0o700 }); } catch {}
|
|
428
|
+
const markerPath = join(memesh, 'last-rebuild-attempt.lock');
|
|
429
|
+
// Atomic one-shot claim via O_EXCL. Once the marker exists, every
|
|
430
|
+
// future hook bails — no stale-cleanup-then-recreate dance, which
|
|
431
|
+
// would open a TOCTOU window (stat → unlink → open is racy: a peer
|
|
432
|
+
// can insert between any two steps and the result is either a
|
|
433
|
+
// double-spawn of `npm rebuild` or one peer's fresh marker being
|
|
434
|
+
// stomped by another peer's stale-cleanup).
|
|
435
|
+
//
|
|
436
|
+
// Trade-off: if the rebuild fails, the marker blocks retries until
|
|
437
|
+
// the user removes it manually. That's acceptable because the
|
|
438
|
+
// stderr breadcrumb below tells the user the exact manual command,
|
|
439
|
+
// and `memesh doctor` will also surface the failure. A retry-loop
|
|
440
|
+
// here would either re-introduce the race or burn CPU on a broken
|
|
441
|
+
// npm config.
|
|
442
|
+
try {
|
|
443
|
+
const fd = openSync(markerPath, 'wx', 0o600);
|
|
444
|
+
try { writeFileSync(fd, String(Date.now())); } finally { closeSync(fd); }
|
|
445
|
+
} catch (err) {
|
|
446
|
+
if (err && err.code === 'EEXIST') return; // peer / prior attempt owns it
|
|
447
|
+
return; // any other write failure — bail silently
|
|
448
|
+
}
|
|
449
|
+
process.stderr.write(
|
|
450
|
+
`[memesh hook] Attempting to rebuild better-sqlite3 in background — `
|
|
451
|
+
+ `next session should capture normally. (rebuildCwd: ${rebuildCwd})\n`
|
|
452
|
+
+ `[memesh hook] To retry later, manually: rm "${markerPath}" && `
|
|
453
|
+
+ `cd "${rebuildCwd}" && npm rebuild better-sqlite3\n`,
|
|
454
|
+
);
|
|
455
|
+
const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
456
|
+
const child = spawn(npm, ['rebuild', 'better-sqlite3'], {
|
|
457
|
+
cwd: rebuildCwd,
|
|
458
|
+
detached: true,
|
|
459
|
+
stdio: 'ignore',
|
|
460
|
+
windowsHide: true,
|
|
461
|
+
});
|
|
462
|
+
// 'error' is emitted asynchronously (e.g. npm not on PATH). Without a
|
|
463
|
+
// listener it becomes an uncaught exception that the outer sync
|
|
464
|
+
// try/catch cannot catch — and a hook crash here would turn a silent
|
|
465
|
+
// dropout into a louder broken-hook story. Swallow it: self-heal is
|
|
466
|
+
// best-effort by design, and the binding probe already left a stderr
|
|
467
|
+
// breadcrumb explaining the manual fix.
|
|
468
|
+
child.on('error', () => {});
|
|
469
|
+
child.unref();
|
|
470
|
+
} catch {
|
|
471
|
+
// Best-effort — never let self-heal failures crash the hook.
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
370
475
|
export function openHookDb(env = process.env, opts = {}) {
|
|
371
476
|
const Database = tryRequireBetterSqlite();
|
|
372
477
|
if (!Database) return null;
|
|
@@ -150,6 +150,109 @@ function buildDeprecationBanner(currentVersion, cache) {
|
|
|
150
150
|
return lines;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Build the softer "update available" banner that fires when the
|
|
155
|
+
* installed version is NOT deprecated but a newer version exists on
|
|
156
|
+
* npm. Lighter than the deprecation banner (single info line, no
|
|
157
|
+
* security framing), and throttled to once per 24h so the user isn't
|
|
158
|
+
* nagged on every session.
|
|
159
|
+
*
|
|
160
|
+
* Throttle marker lives at ~/.memesh/last-update-banner.<version>.lock.
|
|
161
|
+
* Scoped by version so an upgrade from 4.2.3 → 4.2.4 immediately allows
|
|
162
|
+
* the next "4.2.5 available" banner to fire instead of waiting out the
|
|
163
|
+
* old version's TTL.
|
|
164
|
+
*/
|
|
165
|
+
const UPDATE_BANNER_THROTTLE_MS = 24 * 60 * 60 * 1000;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Return true iff `a` is strictly older than `b` under semver-ish
|
|
169
|
+
* ordering. Compares the dot-separated numeric portion of each version
|
|
170
|
+
* componentwise (so 4.2.10 > 4.2.9, unlike string compare). Anything
|
|
171
|
+
* after the first non-numeric char falls back to lex compare on the
|
|
172
|
+
* trailing fragment — fine for the prerelease / 4-segment build tags
|
|
173
|
+
* memesh uses (e.g. 4.2.5-rc.1).
|
|
174
|
+
*/
|
|
175
|
+
function isStrictlyOlder(a, b) {
|
|
176
|
+
const parse = (v) => {
|
|
177
|
+
const [main, ...rest] = String(v).split(/[-+]/);
|
|
178
|
+
const nums = main.split('.').map((s) => Number.parseInt(s, 10));
|
|
179
|
+
return { nums, tail: rest.join('-') };
|
|
180
|
+
};
|
|
181
|
+
const pa = parse(a);
|
|
182
|
+
const pb = parse(b);
|
|
183
|
+
const len = Math.max(pa.nums.length, pb.nums.length);
|
|
184
|
+
for (let i = 0; i < len; i++) {
|
|
185
|
+
const ai = Number.isFinite(pa.nums[i]) ? pa.nums[i] : 0;
|
|
186
|
+
const bi = Number.isFinite(pb.nums[i]) ? pb.nums[i] : 0;
|
|
187
|
+
if (ai !== bi) return ai < bi;
|
|
188
|
+
}
|
|
189
|
+
// Numeric prefix tied. A prerelease tail counts as OLDER than no
|
|
190
|
+
// tail (semver: 1.0.0-rc.1 < 1.0.0); otherwise lex on tail.
|
|
191
|
+
if (pa.tail && !pb.tail) return true;
|
|
192
|
+
if (!pa.tail && pb.tail) return false;
|
|
193
|
+
return pa.tail < pb.tail;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function buildUpdateAvailableBanner(currentVersion, cache, channel) {
|
|
197
|
+
if (!cache || cache.currentVersion !== currentVersion) return [];
|
|
198
|
+
// Deprecation banner takes precedence — when set, it owns the
|
|
199
|
+
// session-start real estate. Skip the soft banner so the user sees
|
|
200
|
+
// one message, not two.
|
|
201
|
+
if (typeof cache.currentVersionDeprecation === 'string'
|
|
202
|
+
&& cache.currentVersionDeprecation.length > 0) {
|
|
203
|
+
return [];
|
|
204
|
+
}
|
|
205
|
+
if (!cache.latestVersion || cache.latestVersion === currentVersion) return [];
|
|
206
|
+
// Numeric semver compare. Lexicographic compare (`'4.2.10' < '4.2.9'`
|
|
207
|
+
// is true) would silently suppress the banner once patches hit two
|
|
208
|
+
// digits. Split on `.`, compare each component as integer, prerelease
|
|
209
|
+
// / build metadata after `-` or `+` falls back to lex compare. Keeps
|
|
210
|
+
// the hook dep-free; full semver lives in version-check.ts.
|
|
211
|
+
if (!isStrictlyOlder(currentVersion, cache.latestVersion)) return [];
|
|
212
|
+
|
|
213
|
+
// Throttle. We use file mtime instead of a stored timestamp because
|
|
214
|
+
// the operation is atomic on POSIX (`touch` / open-with-CREAT) and
|
|
215
|
+
// we don't care about exact wall-clock — just "did we already show
|
|
216
|
+
// this user a banner today?"
|
|
217
|
+
try {
|
|
218
|
+
const fs = require('fs');
|
|
219
|
+
const dir = join(homedir(), '.memesh');
|
|
220
|
+
try { ensurePrivateDir(dir); } catch { /* best-effort */ }
|
|
221
|
+
const versionTag = /^[0-9A-Za-z.+-]+$/.test(currentVersion) ? currentVersion : 'unknown';
|
|
222
|
+
const markerPath = join(dir, `last-update-banner.${versionTag}.lock`);
|
|
223
|
+
let stat;
|
|
224
|
+
try { stat = fs.statSync(markerPath); } catch { stat = null; }
|
|
225
|
+
if (stat && Date.now() - stat.mtimeMs < UPDATE_BANNER_THROTTLE_MS) {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
// Touch the marker BEFORE printing so a concurrent session that
|
|
229
|
+
// races us doesn't both print the banner. Best-effort — failure
|
|
230
|
+
// here just means the banner may show twice, which is annoying
|
|
231
|
+
// but not broken.
|
|
232
|
+
try {
|
|
233
|
+
fs.writeFileSync(markerPath, String(Date.now()));
|
|
234
|
+
try { fs.chmodSync(markerPath, 0o600); } catch { /* non-POSIX */ }
|
|
235
|
+
} catch { /* best-effort */ }
|
|
236
|
+
} catch { /* best-effort */ }
|
|
237
|
+
|
|
238
|
+
const lines = [
|
|
239
|
+
'',
|
|
240
|
+
`ℹ️ MeMesh update available: ${cache.latestVersion} (you're on ${currentVersion}).`,
|
|
241
|
+
];
|
|
242
|
+
if (channel === 'npm-global') {
|
|
243
|
+
lines.push(` Run: memesh update`);
|
|
244
|
+
} else if (channel === 'plugin-marketplace') {
|
|
245
|
+
lines.push(` Run: bash <plugin-root>/scripts/upgrade-plugin.sh (or reinstall from /plugin UI)`);
|
|
246
|
+
} else if (channel === 'source-checkout') {
|
|
247
|
+
lines.push(` Source checkout: \`git pull && npm install && npm run build\`.`);
|
|
248
|
+
} else if (channel === 'npm-local') {
|
|
249
|
+
lines.push(` Project-local install: run \`npm install @pcircle/memesh@latest\` in this project.`);
|
|
250
|
+
} else {
|
|
251
|
+
lines.push(` Upgrade via your install method (fetch @pcircle/memesh@latest from npm).`);
|
|
252
|
+
}
|
|
253
|
+
return lines;
|
|
254
|
+
}
|
|
255
|
+
|
|
153
256
|
/**
|
|
154
257
|
* Detect the install channel of the running memesh binary by
|
|
155
258
|
* delegating to src/core/install-channel.ts via the dist build. The
|
|
@@ -335,7 +438,18 @@ function combineWithBanner(baseMessage) {
|
|
|
335
438
|
const pkg = JSON.parse(readFileSync(join(pluginRoot, 'package.json'), 'utf8'));
|
|
336
439
|
const installedVersion = typeof pkg.version === 'string' ? pkg.version : null;
|
|
337
440
|
const cache = readUpdateCheckCache(installedVersion);
|
|
338
|
-
|
|
441
|
+
if (installedVersion) {
|
|
442
|
+
const deprecation = buildDeprecationBanner(installedVersion, cache);
|
|
443
|
+
// Deprecation owns the spot when present; the update-available
|
|
444
|
+
// banner is the fallback for the much more common "not flagged,
|
|
445
|
+
// just out of date" case.
|
|
446
|
+
if (deprecation.length > 0) {
|
|
447
|
+
lines = deprecation;
|
|
448
|
+
} else {
|
|
449
|
+
const channel = detectInstallChannelHook(pluginRoot);
|
|
450
|
+
lines = buildUpdateAvailableBanner(installedVersion, cache, channel);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
339
453
|
} catch {
|
|
340
454
|
// Best-effort — fall through to base message only.
|
|
341
455
|
}
|
|
@@ -636,11 +750,22 @@ process.stdin.on('end', async () => {
|
|
|
636
750
|
// Best-effort — without the version we can't compare to cache.
|
|
637
751
|
}
|
|
638
752
|
const updateCache = readUpdateCheckCache(installedVersion);
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
753
|
+
let bannerLines = [];
|
|
754
|
+
if (installedVersion) {
|
|
755
|
+
const deprecation = buildDeprecationBanner(installedVersion, updateCache);
|
|
756
|
+
if (deprecation.length > 0) {
|
|
757
|
+
bannerLines = deprecation;
|
|
758
|
+
} else {
|
|
759
|
+
let channel = 'unknown';
|
|
760
|
+
try {
|
|
761
|
+
const pluginRoot = resolvePluginRoot(import.meta.url);
|
|
762
|
+
channel = detectInstallChannelHook(pluginRoot);
|
|
763
|
+
} catch { /* best-effort */ }
|
|
764
|
+
bannerLines = buildUpdateAvailableBanner(installedVersion, updateCache, channel);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
const finalMessage = bannerLines.length > 0
|
|
768
|
+
? [...bannerLines.filter(l => l.length > 0), '', summary].join('\n')
|
|
644
769
|
: summary;
|
|
645
770
|
|
|
646
771
|
output(finalMessage);
|