@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.0",
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.0",
54
- "@f5xc-salesdemos/pi-agent-core": "19.29.0",
55
- "@f5xc-salesdemos/pi-ai": "19.29.0",
56
- "@f5xc-salesdemos/pi-natives": "19.29.0",
57
- "@f5xc-salesdemos/pi-tui": "19.29.0",
58
- "@f5xc-salesdemos/pi-utils": "19.29.0",
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.0",
21
- "commit": "7fa5eedd8b420a253446f200bd667bb2e09f7320",
22
- "shortCommit": "7fa5eed",
20
+ "version": "19.29.1",
21
+ "commit": "87b69f04b6efe97f6f5d1f849b61ee0f01e448e0",
22
+ "shortCommit": "87b69f0",
23
23
  "branch": "main",
24
- "tag": "v19.29.0",
25
- "commitDate": "2026-06-12T16:42:15Z",
26
- "buildDate": "2026-06-12T17:15:16.199Z",
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/7fa5eedd8b420a253446f200bd667bb2e09f7320",
32
- "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.29.0"
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 successIcon = uiTheme.styledSymbol("status.success", "success");
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("error", errorLabel)}`);
361
- if (guidance) resultLines.push(` ${uiTheme.fg("warning", `Try: ${guidance}`)}`);
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(`${successIcon} ${uiTheme.fg("success", `${items.length} ${plural}`)}`);
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(`${successIcon} ${uiTheme.fg("success", `Loaded ${label}`)}`);
375
+ resultLines.push(`${infoIcon} Loaded ${label}`);
378
376
  }
379
377
  } else if (status >= 200 && status < 300) {
380
- resultLines.push(`${successIcon} ${uiTheme.fg("success", "OK")}`);
378
+ resultLines.push(`${infoIcon} OK`);
381
379
  }
382
380
 
383
381
  if (resultLines.length > 0) addSection("Result", resultLines);
@@ -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: