@f5xc-salesdemos/xcsh 19.29.0 → 19.29.1
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.29.
|
|
4
|
+
"version": "19.29.1",
|
|
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.29.
|
|
54
|
-
"@f5xc-salesdemos/pi-agent-core": "19.29.
|
|
55
|
-
"@f5xc-salesdemos/pi-ai": "19.29.
|
|
56
|
-
"@f5xc-salesdemos/pi-natives": "19.29.
|
|
57
|
-
"@f5xc-salesdemos/pi-tui": "19.29.
|
|
58
|
-
"@f5xc-salesdemos/pi-utils": "19.29.
|
|
53
|
+
"@f5xc-salesdemos/xcsh-stats": "19.29.1",
|
|
54
|
+
"@f5xc-salesdemos/pi-agent-core": "19.29.1",
|
|
55
|
+
"@f5xc-salesdemos/pi-ai": "19.29.1",
|
|
56
|
+
"@f5xc-salesdemos/pi-natives": "19.29.1",
|
|
57
|
+
"@f5xc-salesdemos/pi-tui": "19.29.1",
|
|
58
|
+
"@f5xc-salesdemos/pi-utils": "19.29.1",
|
|
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.29.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "19.29.1",
|
|
21
|
+
"commit": "87b69f04b6efe97f6f5d1f849b61ee0f01e448e0",
|
|
22
|
+
"shortCommit": "87b69f0",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v19.29.
|
|
25
|
-
"commitDate": "2026-06-
|
|
26
|
-
"buildDate": "2026-06-
|
|
24
|
+
"tag": "v19.29.1",
|
|
25
|
+
"commitDate": "2026-06-12T18:13:55Z",
|
|
26
|
+
"buildDate": "2026-06-12T18:33:56.944Z",
|
|
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.29.
|
|
31
|
+
"commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/87b69f04b6efe97f6f5d1f849b61ee0f01e448e0",
|
|
32
|
+
"releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.29.1"
|
|
33
33
|
};
|
|
@@ -350,34 +350,32 @@ export const xcshApiToolRenderer = {
|
|
|
350
350
|
// Section: Result — human-readable glyph status at the bottom of the panel
|
|
351
351
|
{
|
|
352
352
|
const resultLines: string[] = [];
|
|
353
|
-
const
|
|
353
|
+
const infoIcon = uiTheme.styledSymbol("status.success", "chromeAccent");
|
|
354
354
|
const errorIcon = uiTheme.styledSymbol("status.error", "error");
|
|
355
355
|
|
|
356
356
|
if (isError) {
|
|
357
357
|
const apiMessage =
|
|
358
358
|
parsed && typeof parsed.message === "string" ? stripProtobufPrefix(parsed.message) : undefined;
|
|
359
359
|
const errorLabel = apiMessage ?? (status > 0 ? `Request failed (${status})` : "Request failed");
|
|
360
|
-
resultLines.push(`${errorIcon} ${uiTheme.fg("
|
|
361
|
-
if (guidance) resultLines.push(` ${uiTheme.fg("
|
|
360
|
+
resultLines.push(`${errorIcon} ${uiTheme.fg("warning", errorLabel)}`);
|
|
361
|
+
if (guidance) resultLines.push(` ${uiTheme.fg("dim", `Try: ${guidance}`)}`);
|
|
362
362
|
} else if (details?.mutationVerb && details?.resourceLabel) {
|
|
363
|
-
resultLines.push(
|
|
364
|
-
`${successIcon} ${uiTheme.fg("success", `${details.mutationVerb} ${details.resourceLabel}`)}`,
|
|
365
|
-
);
|
|
363
|
+
resultLines.push(`${infoIcon} ${details.mutationVerb} ${details.resourceLabel}`);
|
|
366
364
|
} else if (method === "GET" && parsed) {
|
|
367
365
|
const items = parsed.items;
|
|
368
366
|
if (Array.isArray(items)) {
|
|
369
367
|
const rawType = pathParts.at(-1) ?? "items";
|
|
370
368
|
const typeLabel = humanizeResourceType(rawType);
|
|
371
369
|
const plural = items.length === 1 ? typeLabel : `${typeLabel}s`;
|
|
372
|
-
resultLines.push(`${
|
|
370
|
+
resultLines.push(`${infoIcon} ${items.length} ${plural}`);
|
|
373
371
|
} else {
|
|
374
372
|
const rawType = pathParts.at(-2) ?? "";
|
|
375
373
|
const name = resourceName ?? "";
|
|
376
374
|
const label = rawType && name ? `${humanizeResourceType(rawType)} '${name}'` : displayPath;
|
|
377
|
-
resultLines.push(`${
|
|
375
|
+
resultLines.push(`${infoIcon} Loaded ${label}`);
|
|
378
376
|
}
|
|
379
377
|
} else if (status >= 200 && status < 300) {
|
|
380
|
-
resultLines.push(`${
|
|
378
|
+
resultLines.push(`${infoIcon} OK`);
|
|
381
379
|
}
|
|
382
380
|
|
|
383
381
|
if (resultLines.length > 0) addSection("Result", resultLines);
|
package/src/tools/xcsh-api.ts
CHANGED
|
@@ -643,6 +643,10 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
|
|
|
643
643
|
}
|
|
644
644
|
case 409:
|
|
645
645
|
return `Resource already exists${ctxHint}. Use PUT to replace the existing resource, or DELETE it first before creating a new one.`;
|
|
646
|
+
case 400:
|
|
647
|
+
return `Bad request${ctxHint}. Check the payload for missing required fields or invalid values.`;
|
|
648
|
+
case 422:
|
|
649
|
+
return `Validation failed${ctxHint}. The request payload has field-level errors — check the message above.`;
|
|
646
650
|
case 429:
|
|
647
651
|
return `API rate limit exceeded${ctxHint}. Wait briefly and retry the request.`;
|
|
648
652
|
default:
|