@f5xc-salesdemos/xcsh 18.90.0 → 18.91.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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [18.91.0] - 2026-06-01
6
+
7
+ ### Changed
8
+
9
+ - Welcome screen fully plugin-driven: removed all hardcoded cloud service stubs (`getFixableServices` empty stub, `checkProfileStatus` dead code). Only F5 XC Context remains as a built-in service. All cloud connector status checks now come exclusively from the Extension API `registerServiceStatus()`. ([#1076](https://github.com/f5xc-salesdemos/xcsh/issues/1076))
10
+
5
11
  ## [18.90.0] - 2026-06-01
6
12
 
7
13
  ### Added
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@f5xc-salesdemos/xcsh",
4
- "version": "18.90.0",
4
+ "version": "18.91.0",
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": "18.90.0",
54
- "@f5xc-salesdemos/pi-agent-core": "18.90.0",
55
- "@f5xc-salesdemos/pi-ai": "18.90.0",
56
- "@f5xc-salesdemos/pi-natives": "18.90.0",
57
- "@f5xc-salesdemos/pi-tui": "18.90.0",
58
- "@f5xc-salesdemos/pi-utils": "18.90.0",
53
+ "@f5xc-salesdemos/xcsh-stats": "18.91.0",
54
+ "@f5xc-salesdemos/pi-agent-core": "18.91.0",
55
+ "@f5xc-salesdemos/pi-ai": "18.91.0",
56
+ "@f5xc-salesdemos/pi-natives": "18.91.0",
57
+ "@f5xc-salesdemos/pi-tui": "18.91.0",
58
+ "@f5xc-salesdemos/pi-utils": "18.91.0",
59
59
  "@sinclair/typebox": "^0.34",
60
60
  "@xterm/headless": "^6.0",
61
61
  "ajv": "^8.18",
@@ -17,17 +17,17 @@ export interface BuildInfo {
17
17
  }
18
18
 
19
19
  export const BUILD_INFO: BuildInfo = {
20
- "version": "18.90.0",
21
- "commit": "b39669e1b23f62c71f7feb98e1881444f415a783",
22
- "shortCommit": "b39669e",
20
+ "version": "18.91.0",
21
+ "commit": "27b9dd3302fa2c9bed4786f6136d8e015c2168c1",
22
+ "shortCommit": "27b9dd3",
23
23
  "branch": "main",
24
- "tag": "v18.90.0",
25
- "commitDate": "2026-06-01T02:24:32Z",
26
- "buildDate": "2026-06-01T02:46:05.746Z",
24
+ "tag": "v18.91.0",
25
+ "commitDate": "2026-06-01T20:30:58Z",
26
+ "buildDate": "2026-06-01T21:06:28.583Z",
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/b39669e1b23f62c71f7feb98e1881444f415a783",
32
- "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.90.0"
31
+ "commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/27b9dd3302fa2c9bed4786f6136d8e015c2168c1",
32
+ "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.91.0"
33
33
  };
@@ -1,7 +1,6 @@
1
1
  import type { Model } from "@f5xc-salesdemos/pi-ai";
2
2
  import { validateApiKeyAgainstModelsEndpoint } from "@f5xc-salesdemos/pi-ai/utils/oauth/api-key-validation";
3
3
  import { logger } from "@f5xc-salesdemos/pi-utils";
4
- import { loadProfile } from "../../internal-urls/user-profile";
5
4
  import { type AuthStatus, ContextService } from "../../services/f5xc-context";
6
5
  import { deriveTenantFromUrl } from "../../services/f5xc-env";
7
6
  import type { AuthStorage } from "../../session/auth-storage";
@@ -207,54 +206,9 @@ export function mapContextStatus(status: WelcomeContextStatus): ServiceStatus {
207
206
  }
208
207
  }
209
208
 
210
- export type ProfileCheckState = "current" | "stale" | "missing";
211
-
212
- export interface WelcomeProfileStatus {
213
- state: ProfileCheckState;
214
- name?: string;
215
- updatedAt?: string;
216
- staleDays?: number;
217
- }
218
-
219
- const PROFILE_STALE_HOURS = 24;
220
-
221
- /** Check user profile freshness. Returns undefined only on unexpected error. */
222
- export async function checkProfileStatus(): Promise<WelcomeProfileStatus | undefined> {
223
- try {
224
- const profile = await loadProfile();
225
- if (!profile.givenName && !profile.familyName) {
226
- return { state: "missing" };
227
- }
228
- const name = [profile.givenName, profile.familyName].filter(Boolean).join(" ");
229
- const updatedAt = profile.updatedAt;
230
-
231
- if (!updatedAt) {
232
- return { state: "stale", name };
233
- }
234
-
235
- const ageHours = (Date.now() - new Date(updatedAt).getTime()) / (1000 * 60 * 60);
236
- if (ageHours > PROFILE_STALE_HOURS) {
237
- return {
238
- state: "stale",
239
- name,
240
- updatedAt,
241
- staleDays: Math.floor(ageHours / 24),
242
- };
243
- }
244
-
245
- return { state: "current", name, updatedAt };
246
- } catch {
247
- return { state: "missing" };
248
- }
249
- }
250
-
251
209
  export interface FixableService {
252
210
  name: string;
253
211
  prompt: string;
254
212
  command: string[];
255
213
  recheck: () => Promise<ServiceStatus>;
256
214
  }
257
-
258
- export function getFixableServices(): FixableService[] {
259
- return [];
260
- }
@@ -54,7 +54,6 @@ import type { ToolExecutionHandle } from "./components/tool-execution";
54
54
  import { type UpdateStatus, WelcomeComponent } from "./components/welcome";
55
55
  import {
56
56
  type FixableService,
57
- getFixableServices,
58
57
  mapContextStatus,
59
58
  runWelcomeChecks,
60
59
  type ServiceStatus,
@@ -353,8 +352,7 @@ export class InteractiveMode implements InteractiveModeContext {
353
352
  }
354
353
  }
355
354
 
356
- const fixableServices: FixableService[] =
357
- !startupQuiet && welcomeResult.model.state === "connected" ? getFixableServices() : [];
355
+ const fixableServices: FixableService[] = [];
358
356
 
359
357
  // Add fixable services from plugins
360
358
  if (this.session.extensionRunner) {