@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.
|
|
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.
|
|
54
|
-
"@f5xc-salesdemos/pi-agent-core": "18.
|
|
55
|
-
"@f5xc-salesdemos/pi-ai": "18.
|
|
56
|
-
"@f5xc-salesdemos/pi-natives": "18.
|
|
57
|
-
"@f5xc-salesdemos/pi-tui": "18.
|
|
58
|
-
"@f5xc-salesdemos/pi-utils": "18.
|
|
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.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "18.91.0",
|
|
21
|
+
"commit": "27b9dd3302fa2c9bed4786f6136d8e015c2168c1",
|
|
22
|
+
"shortCommit": "27b9dd3",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v18.
|
|
25
|
-
"commitDate": "2026-06-
|
|
26
|
-
"buildDate": "2026-06-
|
|
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/
|
|
32
|
-
"releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.
|
|
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) {
|