@pulsemcp/air-sdk 0.0.26 → 0.0.27
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/update.d.ts +26 -2
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +266 -20
- package/dist/update.js.map +1 -1
- package/package.json +2 -2
package/dist/update.d.ts
CHANGED
|
@@ -2,11 +2,30 @@ import { type CacheRefreshResult } from "@pulsemcp/air-core";
|
|
|
2
2
|
export interface UpdateProviderCachesOptions {
|
|
3
3
|
/** Path to air.json. Uses AIR_CONFIG env or ~/.air/air.json if not set. */
|
|
4
4
|
config?: string;
|
|
5
|
+
/**
|
|
6
|
+
* When true (default), automatically upgrade provider extensions that
|
|
7
|
+
* are installed at a version too old to expose `refreshCache()` before
|
|
8
|
+
* loading them. Disable in tests or when running offline.
|
|
9
|
+
*/
|
|
10
|
+
autoHeal?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Override for the npm install command used by auto-heal. Tests pass a
|
|
13
|
+
* stub here to simulate upgrade outcomes without touching the network.
|
|
14
|
+
*/
|
|
15
|
+
runNpmInstallLatest?: NpmInstallLatest;
|
|
5
16
|
}
|
|
6
17
|
export interface UpdateProviderCachesResult {
|
|
7
18
|
/** Results from each provider, keyed by provider scheme. */
|
|
8
19
|
results: Record<string, CacheRefreshResult[]>;
|
|
9
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Hook used by tests to stub out the real `npm install` invocation.
|
|
23
|
+
* The default implementation shells out to `npm install <pkg>@latest`.
|
|
24
|
+
*/
|
|
25
|
+
export type NpmInstallLatest = (packageName: string, prefix: string) => Promise<{
|
|
26
|
+
ok: boolean;
|
|
27
|
+
stderr: string;
|
|
28
|
+
}>;
|
|
10
29
|
/**
|
|
11
30
|
* Refresh all provider caches.
|
|
12
31
|
*
|
|
@@ -14,8 +33,13 @@ export interface UpdateProviderCachesResult {
|
|
|
14
33
|
* 1. From air.json extensions (if air.json exists)
|
|
15
34
|
* 2. By scanning ~/.air/cache/ for known provider cache directories
|
|
16
35
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
36
|
+
* Before loading any provider modules, runs a pre-flight check that
|
|
37
|
+
* compares the installed version of each known provider package against
|
|
38
|
+
* the minimum required for `refreshCache()` support. Outdated packages
|
|
39
|
+
* are upgraded with `npm install <pkg>@latest` so the freshly loaded
|
|
40
|
+
* module exposes cache refresh — making `air update` self-healing
|
|
41
|
+
* across CLI upgrades that outpace the extension packages installed
|
|
42
|
+
* under `~/.air/`.
|
|
19
43
|
*/
|
|
20
44
|
export declare function updateProviderCaches(options?: UpdateProviderCachesOptions): Promise<UpdateProviderCachesResult>;
|
|
21
45
|
//# sourceMappingURL=update.d.ts.map
|
package/dist/update.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,kBAAkB,EAGxB,MAAM,oBAAoB,CAAC;AA0B5B,MAAM,WAAW,2BAA2B;IAC1C,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AA8R9C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,0BAA0B,CAAC,CA4GrC"}
|
package/dist/update.js
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { existsSync, readdirSync } from "fs";
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import { existsSync, readFileSync, readdirSync } from "fs";
|
|
3
3
|
import { dirname, join, resolve } from "path";
|
|
4
4
|
import { pathToFileURL } from "url";
|
|
5
|
+
import { createRequire } from "module";
|
|
5
6
|
import { loadAirConfig, getAirJsonPath, getDefaultAirJsonPath, } from "@pulsemcp/air-core";
|
|
6
7
|
import { loadExtensions } from "./extension-loader.js";
|
|
7
8
|
import { resolveEsmEntry } from "./esm-resolve.js";
|
|
8
9
|
/**
|
|
9
10
|
* Known provider packages, keyed by their cache directory name (scheme).
|
|
10
|
-
* Used to auto-discover providers when air.json doesn't list them
|
|
11
|
+
* Used to auto-discover providers when air.json doesn't list them and to
|
|
12
|
+
* auto-upgrade providers that are too old to support cache refresh.
|
|
11
13
|
*/
|
|
12
14
|
const KNOWN_PROVIDERS = {
|
|
13
15
|
github: "@pulsemcp/air-provider-github",
|
|
14
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Minimum version of each known provider package required to support
|
|
19
|
+
* `refreshCache()`. When the installed version is older than this, the
|
|
20
|
+
* pre-flight upgrade step in {@link updateProviderCaches} will run
|
|
21
|
+
* `npm install <pkg>@latest` so the freshly loaded module exposes
|
|
22
|
+
* cache refresh.
|
|
23
|
+
*
|
|
24
|
+
* Bump these when raising the SDK's expectations of providers.
|
|
25
|
+
*/
|
|
26
|
+
const PROVIDER_MIN_VERSIONS = {
|
|
27
|
+
"@pulsemcp/air-provider-github": "0.0.21",
|
|
28
|
+
};
|
|
15
29
|
/**
|
|
16
30
|
* Get the AIR cache root directory (~/.air/cache).
|
|
17
31
|
* Derived from getDefaultAirJsonPath() to stay in sync with core's
|
|
@@ -37,6 +51,91 @@ function discoverCachedSchemes() {
|
|
|
37
51
|
return [];
|
|
38
52
|
}
|
|
39
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Read the installed version of an npm package from its package.json,
|
|
56
|
+
* looking under `<prefix>/node_modules/<packageName>`.
|
|
57
|
+
*/
|
|
58
|
+
function readInstalledVersion(packageName, prefix) {
|
|
59
|
+
try {
|
|
60
|
+
const pkgPath = join(prefix, "node_modules", packageName, "package.json");
|
|
61
|
+
if (!existsSync(pkgPath))
|
|
62
|
+
return null;
|
|
63
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
64
|
+
return typeof pkg.version === "string" ? pkg.version : null;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Compare two semver-ish version strings of the form `MAJOR.MINOR.PATCH`.
|
|
72
|
+
* Returns a negative number if `a < b`, 0 if equal, positive if `a > b`.
|
|
73
|
+
* Pre-release suffixes are ignored — we only need ordering for known
|
|
74
|
+
* provider versions like `0.0.13` vs `0.0.21`.
|
|
75
|
+
*/
|
|
76
|
+
function compareVersions(a, b) {
|
|
77
|
+
const parse = (v) => v
|
|
78
|
+
.split("-")[0]
|
|
79
|
+
.split(".")
|
|
80
|
+
.map((n) => Number.parseInt(n, 10) || 0);
|
|
81
|
+
const av = parse(a);
|
|
82
|
+
const bv = parse(b);
|
|
83
|
+
const len = Math.max(av.length, bv.length);
|
|
84
|
+
for (let i = 0; i < len; i++) {
|
|
85
|
+
const diff = (av[i] ?? 0) - (bv[i] ?? 0);
|
|
86
|
+
if (diff !== 0)
|
|
87
|
+
return diff;
|
|
88
|
+
}
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Strip a version suffix from an npm specifier so we can compare against
|
|
93
|
+
* known package names. Mirrors the helper in `install.ts`.
|
|
94
|
+
*/
|
|
95
|
+
function stripVersion(specifier) {
|
|
96
|
+
if (specifier.startsWith("@")) {
|
|
97
|
+
const slashIdx = specifier.indexOf("/");
|
|
98
|
+
if (slashIdx !== -1) {
|
|
99
|
+
const afterSlash = specifier.slice(slashIdx + 1);
|
|
100
|
+
const atIdx = afterSlash.indexOf("@");
|
|
101
|
+
if (atIdx !== -1) {
|
|
102
|
+
return specifier.slice(0, slashIdx + 1 + atIdx);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return specifier;
|
|
106
|
+
}
|
|
107
|
+
const atIdx = specifier.indexOf("@");
|
|
108
|
+
if (atIdx > 0) {
|
|
109
|
+
return specifier.slice(0, atIdx);
|
|
110
|
+
}
|
|
111
|
+
return specifier;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Default implementation of {@link NpmInstallLatest} — runs
|
|
115
|
+
* `npm install --prefix <prefix> --prefer-offline <pkg>@latest`.
|
|
116
|
+
*/
|
|
117
|
+
const defaultNpmInstallLatest = (packageName, prefix) => new Promise((resolveResult) => {
|
|
118
|
+
execFile("npm", [
|
|
119
|
+
"install",
|
|
120
|
+
"--prefix",
|
|
121
|
+
prefix,
|
|
122
|
+
"--prefer-offline",
|
|
123
|
+
"--no-audit",
|
|
124
|
+
"--no-fund",
|
|
125
|
+
"--silent",
|
|
126
|
+
`${packageName}@latest`,
|
|
127
|
+
], { stdio: "pipe" }, (err, _stdout, stderr) => {
|
|
128
|
+
if (err) {
|
|
129
|
+
resolveResult({
|
|
130
|
+
ok: false,
|
|
131
|
+
stderr: stderr?.toString() ?? String(err),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
resolveResult({ ok: true, stderr: "" });
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
40
139
|
/**
|
|
41
140
|
* Try to load a provider extension by package name, searching the given
|
|
42
141
|
* directories for the installed package. Handles CJS, ESM-only, and
|
|
@@ -76,6 +175,101 @@ async function tryLoadProvider(packageName, searchDirs) {
|
|
|
76
175
|
return null;
|
|
77
176
|
}
|
|
78
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Build the list of directories to search when resolving a provider
|
|
180
|
+
* package by name.
|
|
181
|
+
*/
|
|
182
|
+
function buildSearchDirs(airJsonDir) {
|
|
183
|
+
const dirs = [];
|
|
184
|
+
if (airJsonDir)
|
|
185
|
+
dirs.push(airJsonDir);
|
|
186
|
+
const defaultAirDir = dirname(getDefaultAirJsonPath());
|
|
187
|
+
if (defaultAirDir !== airJsonDir)
|
|
188
|
+
dirs.push(defaultAirDir);
|
|
189
|
+
return dirs;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Pre-flight: walk the extensions array in air.json and any cached
|
|
193
|
+
* provider schemes on disk, and `npm install <pkg>@latest` for any
|
|
194
|
+
* known provider whose installed version is below the minimum required
|
|
195
|
+
* for `refreshCache()` support.
|
|
196
|
+
*
|
|
197
|
+
* Runs BEFORE any provider modules are imported so the freshly
|
|
198
|
+
* installed package is what gets loaded — Node caches modules by URL
|
|
199
|
+
* and there is no reliable way to bust the transitive import cache once
|
|
200
|
+
* a stale version has been imported in-process.
|
|
201
|
+
*/
|
|
202
|
+
async function preflightUpgradeProviders(extensionSpecs, cachedSchemes, installPrefix, runNpmInstallLatest) {
|
|
203
|
+
// Collect the set of provider package names we should consider, drawn
|
|
204
|
+
// from both the air.json extensions list and any cached scheme that
|
|
205
|
+
// maps to a known provider package. We dedupe by package name.
|
|
206
|
+
const candidates = new Set();
|
|
207
|
+
for (const spec of extensionSpecs) {
|
|
208
|
+
if (typeof spec !== "string")
|
|
209
|
+
continue;
|
|
210
|
+
const name = stripVersion(spec);
|
|
211
|
+
// Only consider known providers — we won't auto-install arbitrary
|
|
212
|
+
// packages on the user's behalf.
|
|
213
|
+
if (Object.values(KNOWN_PROVIDERS).includes(name)) {
|
|
214
|
+
candidates.add(name);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
for (const scheme of cachedSchemes) {
|
|
218
|
+
const name = KNOWN_PROVIDERS[scheme];
|
|
219
|
+
if (name)
|
|
220
|
+
candidates.add(name);
|
|
221
|
+
}
|
|
222
|
+
const outcomes = [];
|
|
223
|
+
for (const packageName of candidates) {
|
|
224
|
+
const minVersion = PROVIDER_MIN_VERSIONS[packageName];
|
|
225
|
+
if (!minVersion)
|
|
226
|
+
continue;
|
|
227
|
+
const installed = readInstalledVersion(packageName, installPrefix);
|
|
228
|
+
// Not installed at all under this prefix — leave alone. The
|
|
229
|
+
// extension loader will handle missing packages with its own
|
|
230
|
+
// error path; auto-installing absent packages goes beyond what
|
|
231
|
+
// `air update` is supposed to do.
|
|
232
|
+
if (!installed)
|
|
233
|
+
continue;
|
|
234
|
+
if (compareVersions(installed, minVersion) >= 0)
|
|
235
|
+
continue;
|
|
236
|
+
const scheme = Object.entries(KNOWN_PROVIDERS).find(([, n]) => n === packageName)?.[0] ??
|
|
237
|
+
"";
|
|
238
|
+
const installResult = await runNpmInstallLatest(packageName, installPrefix);
|
|
239
|
+
const after = readInstalledVersion(packageName, installPrefix);
|
|
240
|
+
outcomes.push({
|
|
241
|
+
packageName,
|
|
242
|
+
scheme,
|
|
243
|
+
attempted: true,
|
|
244
|
+
ok: installResult.ok,
|
|
245
|
+
beforeVersion: installed,
|
|
246
|
+
afterVersion: after,
|
|
247
|
+
stderr: installResult.stderr || undefined,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return outcomes;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Build a {@link CacheRefreshResult} describing a single upgrade outcome,
|
|
254
|
+
* suitable for prepending to the per-scheme results array.
|
|
255
|
+
*/
|
|
256
|
+
function upgradeNotice(outcome) {
|
|
257
|
+
if (outcome.ok) {
|
|
258
|
+
const before = outcome.beforeVersion ?? "(none)";
|
|
259
|
+
const after = outcome.afterVersion ?? "latest";
|
|
260
|
+
return {
|
|
261
|
+
label: outcome.packageName,
|
|
262
|
+
updated: true,
|
|
263
|
+
message: `upgraded provider package ${before} → ${after}`,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
label: outcome.packageName,
|
|
268
|
+
updated: false,
|
|
269
|
+
message: `failed to auto-upgrade provider package` +
|
|
270
|
+
(outcome.stderr ? `: ${outcome.stderr.trim().split("\n")[0]}` : ""),
|
|
271
|
+
};
|
|
272
|
+
}
|
|
79
273
|
/**
|
|
80
274
|
* Refresh all provider caches.
|
|
81
275
|
*
|
|
@@ -83,47 +277,99 @@ async function tryLoadProvider(packageName, searchDirs) {
|
|
|
83
277
|
* 1. From air.json extensions (if air.json exists)
|
|
84
278
|
* 2. By scanning ~/.air/cache/ for known provider cache directories
|
|
85
279
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
280
|
+
* Before loading any provider modules, runs a pre-flight check that
|
|
281
|
+
* compares the installed version of each known provider package against
|
|
282
|
+
* the minimum required for `refreshCache()` support. Outdated packages
|
|
283
|
+
* are upgraded with `npm install <pkg>@latest` so the freshly loaded
|
|
284
|
+
* module exposes cache refresh — making `air update` self-healing
|
|
285
|
+
* across CLI upgrades that outpace the extension packages installed
|
|
286
|
+
* under `~/.air/`.
|
|
88
287
|
*/
|
|
89
288
|
export async function updateProviderCaches(options) {
|
|
90
289
|
const airJsonPath = options?.config ?? getAirJsonPath();
|
|
91
|
-
const
|
|
290
|
+
const autoHeal = options?.autoHeal ?? true;
|
|
291
|
+
const runNpmInstallLatest = options?.runNpmInstallLatest ?? defaultNpmInstallLatest;
|
|
92
292
|
let airJsonDir = null;
|
|
93
|
-
|
|
293
|
+
let extensionSpecs = [];
|
|
94
294
|
if (airJsonPath) {
|
|
95
295
|
airJsonDir = dirname(resolve(airJsonPath));
|
|
96
296
|
const airConfig = loadAirConfig(airJsonPath);
|
|
97
|
-
|
|
297
|
+
extensionSpecs = airConfig.extensions ?? [];
|
|
298
|
+
}
|
|
299
|
+
const installPrefix = airJsonDir ?? dirname(getDefaultAirJsonPath());
|
|
300
|
+
const cachedSchemes = discoverCachedSchemes();
|
|
301
|
+
const cachedSchemeSet = new Set(cachedSchemes);
|
|
302
|
+
// Pre-flight: upgrade any stale provider packages BEFORE loading
|
|
303
|
+
// them. We must do this before any import() of the provider runs
|
|
304
|
+
// because Node caches modules by URL and there is no reliable way to
|
|
305
|
+
// bust the transitive import cache once a stale module is loaded.
|
|
306
|
+
const upgradeOutcomes = autoHeal
|
|
307
|
+
? await preflightUpgradeProviders(extensionSpecs, cachedSchemes, installPrefix, runNpmInstallLatest)
|
|
308
|
+
: [];
|
|
309
|
+
// Load providers from air.json extensions if available
|
|
310
|
+
const providers = new Map();
|
|
311
|
+
if (airJsonPath) {
|
|
312
|
+
const loaded = await loadExtensions(extensionSpecs, airJsonDir);
|
|
98
313
|
for (const ext of loaded.providers) {
|
|
99
314
|
const provider = ext.provider;
|
|
100
315
|
providers.set(provider.scheme, provider);
|
|
101
316
|
}
|
|
102
317
|
}
|
|
103
318
|
// Discover additional providers from cache directory
|
|
104
|
-
const cachedSchemes = discoverCachedSchemes();
|
|
105
319
|
for (const scheme of cachedSchemes) {
|
|
106
320
|
if (providers.has(scheme))
|
|
107
321
|
continue;
|
|
108
322
|
const packageName = KNOWN_PROVIDERS[scheme];
|
|
109
323
|
if (!packageName)
|
|
110
324
|
continue;
|
|
111
|
-
const
|
|
112
|
-
if
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const provider = await tryLoadProvider(packageName, searchDirs);
|
|
118
|
-
if (provider?.refreshCache) {
|
|
325
|
+
const provider = await tryLoadProvider(packageName, buildSearchDirs(airJsonDir));
|
|
326
|
+
// Add the provider even if it lacks refreshCache — the main loop
|
|
327
|
+
// below will surface a diagnostic so the user understands why the
|
|
328
|
+
// refresh did not run, instead of the command silently reporting
|
|
329
|
+
// "no providers with cached data found".
|
|
330
|
+
if (provider) {
|
|
119
331
|
providers.set(scheme, provider);
|
|
120
332
|
}
|
|
121
333
|
}
|
|
334
|
+
// Index pre-flight outcomes by scheme so we can prepend the upgrade
|
|
335
|
+
// notice to that scheme's per-call results.
|
|
336
|
+
const upgradeByScheme = new Map();
|
|
337
|
+
for (const outcome of upgradeOutcomes) {
|
|
338
|
+
if (outcome.scheme)
|
|
339
|
+
upgradeByScheme.set(outcome.scheme, outcome);
|
|
340
|
+
}
|
|
341
|
+
// Only schemes with actual cached data on disk are worth reporting.
|
|
342
|
+
// A provider may be listed in air.json extensions without having been
|
|
343
|
+
// used yet, in which case there is nothing to refresh.
|
|
122
344
|
const results = {};
|
|
123
|
-
for (const
|
|
124
|
-
|
|
345
|
+
for (const scheme of cachedSchemeSet) {
|
|
346
|
+
const provider = providers.get(scheme);
|
|
347
|
+
// Schemes with no loaded provider AND no known package mapping
|
|
348
|
+
// can't be helped — preserve the historical "silently ignore
|
|
349
|
+
// unknown schemes" behavior.
|
|
350
|
+
if (!provider && !KNOWN_PROVIDERS[scheme])
|
|
351
|
+
continue;
|
|
352
|
+
const outcome = upgradeByScheme.get(scheme);
|
|
353
|
+
const notice = outcome ? upgradeNotice(outcome) : null;
|
|
354
|
+
const packageName = KNOWN_PROVIDERS[scheme] ?? `@pulsemcp/air-provider-${scheme}`;
|
|
355
|
+
if (!provider?.refreshCache) {
|
|
356
|
+
// Either no provider exists for this scheme, or auto-heal could
|
|
357
|
+
// not produce one with refreshCache support. Surface a single
|
|
358
|
+
// diagnostic entry so the user knows what to do next.
|
|
359
|
+
const diagnostic = {
|
|
360
|
+
label: scheme,
|
|
361
|
+
updated: false,
|
|
362
|
+
message: provider
|
|
363
|
+
? `installed provider does not support cache refresh. ` +
|
|
364
|
+
`Try manually: npm install --prefix ${installPrefix} ${packageName}@latest`
|
|
365
|
+
: `no provider installed for "${scheme}://" cached data. ` +
|
|
366
|
+
`Try manually: npm install --prefix ${installPrefix} ${packageName}@latest`,
|
|
367
|
+
};
|
|
368
|
+
results[scheme] = notice ? [notice, diagnostic] : [diagnostic];
|
|
125
369
|
continue;
|
|
126
|
-
|
|
370
|
+
}
|
|
371
|
+
const refreshResults = await provider.refreshCache();
|
|
372
|
+
results[scheme] = notice ? [notice, ...refreshResults] : refreshResults;
|
|
127
373
|
}
|
|
128
374
|
return { results };
|
|
129
375
|
}
|
package/dist/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulsemcp/air-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"lint": "tsc --noEmit"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@pulsemcp/air-core": "0.0.
|
|
32
|
+
"@pulsemcp/air-core": "0.0.27"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.0",
|