@f5xc-salesdemos/xcsh 18.83.2 → 18.84.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@f5xc-salesdemos/xcsh",
4
- "version": "18.83.2",
4
+ "version": "18.84.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",
@@ -49,12 +49,12 @@
49
49
  "dependencies": {
50
50
  "@agentclientprotocol/sdk": "0.16.1",
51
51
  "@mozilla/readability": "^0.6",
52
- "@f5xc-salesdemos/xcsh-stats": "18.83.2",
53
- "@f5xc-salesdemos/pi-agent-core": "18.83.2",
54
- "@f5xc-salesdemos/pi-ai": "18.83.2",
55
- "@f5xc-salesdemos/pi-natives": "18.83.2",
56
- "@f5xc-salesdemos/pi-tui": "18.83.2",
57
- "@f5xc-salesdemos/pi-utils": "18.83.2",
52
+ "@f5xc-salesdemos/xcsh-stats": "18.84.0",
53
+ "@f5xc-salesdemos/pi-agent-core": "18.84.0",
54
+ "@f5xc-salesdemos/pi-ai": "18.84.0",
55
+ "@f5xc-salesdemos/pi-natives": "18.84.0",
56
+ "@f5xc-salesdemos/pi-tui": "18.84.0",
57
+ "@f5xc-salesdemos/pi-utils": "18.84.0",
58
58
  "@sinclair/typebox": "^0.34",
59
59
  "@xterm/headless": "^6.0",
60
60
  "ajv": "^8.18",
@@ -17,17 +17,17 @@ export interface BuildInfo {
17
17
  }
18
18
 
19
19
  export const BUILD_INFO: BuildInfo = {
20
- "version": "18.83.2",
21
- "commit": "eacd7c8423fea2f500040cc43d684efdbeb2c8b1",
22
- "shortCommit": "eacd7c8",
20
+ "version": "18.84.0",
21
+ "commit": "adc9c7ecdfd945419187e4bea5c9b442b53ad257",
22
+ "shortCommit": "adc9c7e",
23
23
  "branch": "main",
24
- "tag": "v18.83.2",
25
- "commitDate": "2026-05-27T04:27:56Z",
26
- "buildDate": "2026-05-27T04:46:58.363Z",
24
+ "tag": "v18.84.0",
25
+ "commitDate": "2026-05-27T11:47:14Z",
26
+ "buildDate": "2026-05-27T12:19:38.302Z",
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/eacd7c8423fea2f500040cc43d684efdbeb2c8b1",
32
- "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.83.2"
31
+ "commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/adc9c7ecdfd945419187e4bea5c9b442b53ad257",
32
+ "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.84.0"
33
33
  };
@@ -272,6 +272,7 @@ Most tools resolve custom protocol URLs to internal resources (not web URLs):
272
272
  you **MUST** call `xcsh_api` with `method: "GET"`, `paths: ["*"]`.
273
273
  The `*` wildcard auto-discovers all namespace resource types and batches them in one call.
274
274
  Do **NOT** enumerate resource types individually — that is **PROHIBITED**.
275
+ When reporting batch inventory results, name each resource found rather than giving only counts.
275
276
 
276
277
  If the resource name is unknown, search first:
277
278
  `xcsh://api-catalog/?search={term}` → find the matching category, then read it.
@@ -535,6 +535,7 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
535
535
  const rType = parts.at(-2) ?? "";
536
536
  const labels: string[] = [];
537
537
  if (/tcp_loadbalancer/i.test(rType)) {
538
+ labels.push("TCP");
538
539
  const pools = extractPoolRefs(spec.origin_pools_weights);
539
540
  if (pools.length > 0) labels.push(`pools=[${pools.join(",")}]`);
540
541
  if (typeof spec.listen_port === "number") labels.push(`port=${spec.listen_port}`);
@@ -812,6 +813,28 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
812
813
  }
813
814
  // Append stop signal to prevent unnecessary verification GETs
814
815
  const verb = params.method === "DELETE" ? "Deleted" : params.method === "POST" ? "Created" : "Updated";
816
+ // Human-readable resource label: "load balancer ar-lb-01" instead of raw API path.
817
+ // Label changes help the model echo type names in its response (Finding 13).
818
+ // INTERACTION EFFECT: this change + TCP protocol label are synergistic (Finding 31).
819
+ const pathSegs = resolvedPath.split("/").filter(Boolean);
820
+ const humanizeResourceType = (raw: string): string =>
821
+ raw
822
+ .replace(/^http_/, "")
823
+ .replace(/^tcp_/, "TCP ")
824
+ .replace(/_/g, " ")
825
+ .replace(/([a-z])(balancer|checker)/gi, "$1 $2")
826
+ .replace(/s$/, "");
827
+ let resourceLabel: string;
828
+ if (params.method === "POST") {
829
+ const rawType = pathSegs.at(-1) ?? "";
830
+ const meta = parsedBody?.metadata as Record<string, unknown> | undefined;
831
+ const name = typeof meta?.name === "string" ? meta.name : null;
832
+ resourceLabel = name ? `${humanizeResourceType(rawType)} ${name}` : resolvedPath;
833
+ } else {
834
+ const name = pathSegs.at(-1) ?? "";
835
+ const rawType = pathSegs.at(-2) ?? "";
836
+ resourceLabel = name && rawType ? `${humanizeResourceType(rawType)} ${name}` : resolvedPath;
837
+ }
815
838
  // POST returns the full resource; PUT/DELETE return {}.
816
839
  // Only claim response contains the resource for POST to avoid misleading the model.
817
840
  const resourceHint =
@@ -823,7 +846,7 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
823
846
  content: [
824
847
  {
825
848
  type: "text",
826
- text: `${statusLine}\n\n${bodyText}\n\n${verb} ${resolvedPath} successfully. ${resourceHint}`,
849
+ text: `${statusLine}\n\n${bodyText}\n\n${verb} ${resourceLabel} successfully. ${resourceHint}`,
827
850
  },
828
851
  ],
829
852
  details: detail,