@f5xc-salesdemos/xcsh 19.18.4 → 19.18.5

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@f5xc-salesdemos/xcsh",
4
- "version": "19.18.4",
4
+ "version": "19.18.5",
5
5
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://github.com/f5xc-salesdemos/xcsh",
7
7
  "author": "Can Boluk",
@@ -50,12 +50,12 @@
50
50
  "dependencies": {
51
51
  "@agentclientprotocol/sdk": "0.16.1",
52
52
  "@mozilla/readability": "^0.6",
53
- "@f5xc-salesdemos/xcsh-stats": "19.18.4",
54
- "@f5xc-salesdemos/pi-agent-core": "19.18.4",
55
- "@f5xc-salesdemos/pi-ai": "19.18.4",
56
- "@f5xc-salesdemos/pi-natives": "19.18.4",
57
- "@f5xc-salesdemos/pi-tui": "19.18.4",
58
- "@f5xc-salesdemos/pi-utils": "19.18.4",
53
+ "@f5xc-salesdemos/xcsh-stats": "19.18.5",
54
+ "@f5xc-salesdemos/pi-agent-core": "19.18.5",
55
+ "@f5xc-salesdemos/pi-ai": "19.18.5",
56
+ "@f5xc-salesdemos/pi-natives": "19.18.5",
57
+ "@f5xc-salesdemos/pi-tui": "19.18.5",
58
+ "@f5xc-salesdemos/pi-utils": "19.18.5",
59
59
  "@sinclair/typebox": "^0.34",
60
60
  "@xterm/headless": "^6.0",
61
61
  "ajv": "^8.20",
@@ -17,17 +17,17 @@ export interface BuildInfo {
17
17
  }
18
18
 
19
19
  export const BUILD_INFO: BuildInfo = {
20
- "version": "19.18.4",
21
- "commit": "0e39fbbd305b6c593414fbb58ff68b254d684b7f",
22
- "shortCommit": "0e39fbb",
20
+ "version": "19.18.5",
21
+ "commit": "be83ca7a8faaed15b82af6f598128140d616d505",
22
+ "shortCommit": "be83ca7",
23
23
  "branch": "main",
24
- "tag": "v19.18.4",
25
- "commitDate": "2026-06-08T20:37:16Z",
26
- "buildDate": "2026-06-08T21:02:45.916Z",
24
+ "tag": "v19.18.5",
25
+ "commitDate": "2026-06-08T21:03:00Z",
26
+ "buildDate": "2026-06-08T21:30:30.897Z",
27
27
  "dirty": true,
28
28
  "prNumber": "",
29
29
  "repoUrl": "https://github.com/f5xc-salesdemos/xcsh",
30
30
  "repoSlug": "f5xc-salesdemos/xcsh",
31
- "commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/0e39fbbd305b6c593414fbb58ff68b254d684b7f",
32
- "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.18.4"
31
+ "commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/be83ca7a8faaed15b82af6f598128140d616d505",
32
+ "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.18.5"
33
33
  };
package/src/main.ts CHANGED
@@ -716,6 +716,36 @@ export async function runRootCommand(parsed: Args, rawArgs: string[]): Promise<v
716
716
  sessionManager = await SessionManager.open(selectedPath);
717
717
  }
718
718
 
719
+ // Refresh stale marketplace clones before loading plugins so extensions run latest code.
720
+ const autoUpdate = settings.get("marketplace.autoUpdate");
721
+ if (autoUpdate !== "off") {
722
+ try {
723
+ const startupMgr = new MarketplaceManager({
724
+ marketplacesRegistryPath: getMarketplacesRegistryPath(),
725
+ installedRegistryPath: getInstalledPluginsRegistryPath(),
726
+ projectInstalledRegistryPath: (await resolveActiveProjectRegistryPath(getProjectDir())) ?? undefined,
727
+ marketplacesCacheDir: getMarketplacesCacheDir(),
728
+ pluginsCacheDir: getPluginsCacheDir(),
729
+ clearPluginRootsCache: (extraPaths?: readonly string[]) => {
730
+ const h = os.homedir();
731
+ invalidateFsCache(path.join(h, getConfigDirName(), "plugins", "installed_plugins.json"));
732
+ for (const p of extraPaths ?? []) invalidateFsCache(p);
733
+ clearXcshPluginRootsCache();
734
+ },
735
+ });
736
+ await startupMgr.refreshStaleMarketplaces();
737
+ if (autoUpdate === "auto") {
738
+ const updates = await startupMgr.checkForUpdates();
739
+ if (updates.length > 0) {
740
+ await startupMgr.upgradeAllPlugins();
741
+ logger.debug(`Auto-upgraded ${updates.length} marketplace plugin(s) at startup`);
742
+ }
743
+ }
744
+ } catch {
745
+ // Network failure, corrupt data, offline — proceed with cached plugins.
746
+ }
747
+ }
748
+
719
749
  // Wire --plugin-dir and preload plugin roots for sync consumers (LSP config)
720
750
  const home = os.homedir();
721
751
  if (parsedArgs.pluginDirs && parsedArgs.pluginDirs.length > 0) {
@@ -724,9 +754,8 @@ export async function runRootCommand(parsed: Args, rawArgs: string[]): Promise<v
724
754
  await logger.time("preloadPluginRoots", preloadPluginRoots, home, getProjectDir());
725
755
  }
726
756
 
727
- // Background marketplace auto-update never blocks startup.
728
- const autoUpdate = settings.get("marketplace.autoUpdate");
729
- if (autoUpdate !== "off") {
757
+ // Background marketplace update notification (non-blocking).
758
+ if (autoUpdate === "notify") {
730
759
  void (async () => {
731
760
  try {
732
761
  const mgr = new MarketplaceManager({
@@ -742,13 +771,8 @@ export async function runRootCommand(parsed: Args, rawArgs: string[]): Promise<v
742
771
  clearXcshPluginRootsCache();
743
772
  },
744
773
  });
745
- await mgr.refreshStaleMarketplaces();
746
774
  const updates = await mgr.checkForUpdates();
747
- if (updates.length === 0) return;
748
- if (autoUpdate === "auto") {
749
- await mgr.upgradeAllPlugins();
750
- logger.debug(`Auto-upgraded ${updates.length} marketplace plugin(s)`);
751
- } else {
775
+ if (updates.length > 0) {
752
776
  logger.debug(`${updates.length} marketplace plugin update(s) available \u2014 /plugin upgrade`);
753
777
  }
754
778
  } catch {