@f5xc-salesdemos/xcsh 19.20.0 → 19.20.2
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.20.
|
|
4
|
+
"version": "19.20.2",
|
|
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.20.
|
|
54
|
-
"@f5xc-salesdemos/pi-agent-core": "19.20.
|
|
55
|
-
"@f5xc-salesdemos/pi-ai": "19.20.
|
|
56
|
-
"@f5xc-salesdemos/pi-natives": "19.20.
|
|
57
|
-
"@f5xc-salesdemos/pi-tui": "19.20.
|
|
58
|
-
"@f5xc-salesdemos/pi-utils": "19.20.
|
|
53
|
+
"@f5xc-salesdemos/xcsh-stats": "19.20.2",
|
|
54
|
+
"@f5xc-salesdemos/pi-agent-core": "19.20.2",
|
|
55
|
+
"@f5xc-salesdemos/pi-ai": "19.20.2",
|
|
56
|
+
"@f5xc-salesdemos/pi-natives": "19.20.2",
|
|
57
|
+
"@f5xc-salesdemos/pi-tui": "19.20.2",
|
|
58
|
+
"@f5xc-salesdemos/pi-utils": "19.20.2",
|
|
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.20.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "19.20.2",
|
|
21
|
+
"commit": "1309c9e3c66b4478206dbc6c442e027bf52ed6a4",
|
|
22
|
+
"shortCommit": "1309c9e",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v19.20.
|
|
25
|
-
"commitDate": "2026-06-
|
|
26
|
-
"buildDate": "2026-06-
|
|
24
|
+
"tag": "v19.20.2",
|
|
25
|
+
"commitDate": "2026-06-09T15:15:43Z",
|
|
26
|
+
"buildDate": "2026-06-09T15:53:34.008Z",
|
|
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/v19.20.
|
|
31
|
+
"commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/1309c9e3c66b4478206dbc6c442e027bf52ed6a4",
|
|
32
|
+
"releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.20.2"
|
|
33
33
|
};
|
|
@@ -328,12 +328,26 @@ export class InternalDocsProtocolHandler implements ProtocolHandler {
|
|
|
328
328
|
const profile = shouldSeed ? await seedProfile() : await loadProfile();
|
|
329
329
|
const content = renderProfileMarkdown(profile);
|
|
330
330
|
|
|
331
|
+
const hasOwnership = profile._fieldOwnership && Object.keys(profile._fieldOwnership).length > 0;
|
|
332
|
+
const notes: string[] = [
|
|
333
|
+
"This profile is the authoritative source for person data (manager, partner, territories, role).",
|
|
334
|
+
"Do NOT query Salesforce or other services for fields that are already populated here.",
|
|
335
|
+
];
|
|
336
|
+
if (hasOwnership) {
|
|
337
|
+
notes.push(
|
|
338
|
+
`Fields owned by external sources: ${Object.entries(profile._fieldOwnership!)
|
|
339
|
+
.map(([k, v]) => `${k} (${v})`)
|
|
340
|
+
.join(", ")}. These are automatically kept in sync.`,
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
|
|
331
344
|
return {
|
|
332
345
|
url: url.href,
|
|
333
346
|
content,
|
|
334
347
|
contentType: "text/markdown",
|
|
335
348
|
size: Buffer.byteLength(content, "utf-8"),
|
|
336
349
|
sourcePath: `xcsh://${USER_ROUTE}`,
|
|
350
|
+
notes,
|
|
337
351
|
};
|
|
338
352
|
}
|
|
339
353
|
|
|
@@ -196,6 +196,7 @@ export class InteractiveMode implements InteractiveModeContext {
|
|
|
196
196
|
#eventBus?: EventBus;
|
|
197
197
|
#eventBusUnsubscribers: Array<() => void> = [];
|
|
198
198
|
#welcomeComponent?: WelcomeComponent;
|
|
199
|
+
#currentPlugins: import("./components/welcome-checks").UnifiedPluginStatus[] = [];
|
|
199
200
|
|
|
200
201
|
constructor(
|
|
201
202
|
session: AgentSession,
|
|
@@ -343,6 +344,7 @@ export class InteractiveMode implements InteractiveModeContext {
|
|
|
343
344
|
// Build unified plugin list from service status contributions + marketplace
|
|
344
345
|
const pluginContributions = this.session.extensionRunner?.getAllRegisteredServiceStatuses() ?? [];
|
|
345
346
|
const plugins = !startupQuiet ? await buildUnifiedPluginList(pluginContributions).catch(() => []) : [];
|
|
347
|
+
this.#currentPlugins = plugins;
|
|
346
348
|
|
|
347
349
|
const fixableServices: FixableService[] = [];
|
|
348
350
|
for (const contribution of pluginContributions) {
|
|
@@ -953,8 +955,17 @@ export class InteractiveMode implements InteractiveModeContext {
|
|
|
953
955
|
if (idx !== -1) {
|
|
954
956
|
currentServices[idx] = updated;
|
|
955
957
|
this.#welcomeComponent?.setServices([...currentServices]);
|
|
956
|
-
this.ui.requestRender();
|
|
957
958
|
}
|
|
959
|
+
const pluginIdx = this.#currentPlugins.findIndex(p => p.name.toLowerCase() === service.name.toLowerCase());
|
|
960
|
+
if (pluginIdx !== -1) {
|
|
961
|
+
this.#currentPlugins[pluginIdx] = {
|
|
962
|
+
...this.#currentPlugins[pluginIdx],
|
|
963
|
+
state: updated.state,
|
|
964
|
+
hint: updated.hint,
|
|
965
|
+
};
|
|
966
|
+
this.#welcomeComponent?.setPlugins([...this.#currentPlugins]);
|
|
967
|
+
}
|
|
968
|
+
this.ui.requestRender();
|
|
958
969
|
}
|
|
959
970
|
}
|
|
960
971
|
|