@f5xc-salesdemos/xcsh 18.80.0 → 18.81.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.80.0",
4
+ "version": "18.81.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",
@@ -48,12 +48,12 @@
48
48
  "dependencies": {
49
49
  "@agentclientprotocol/sdk": "0.16.1",
50
50
  "@mozilla/readability": "^0.6",
51
- "@f5xc-salesdemos/xcsh-stats": "18.80.0",
52
- "@f5xc-salesdemos/pi-agent-core": "18.80.0",
53
- "@f5xc-salesdemos/pi-ai": "18.80.0",
54
- "@f5xc-salesdemos/pi-natives": "18.80.0",
55
- "@f5xc-salesdemos/pi-tui": "18.80.0",
56
- "@f5xc-salesdemos/pi-utils": "18.80.0",
51
+ "@f5xc-salesdemos/xcsh-stats": "18.81.0",
52
+ "@f5xc-salesdemos/pi-agent-core": "18.81.0",
53
+ "@f5xc-salesdemos/pi-ai": "18.81.0",
54
+ "@f5xc-salesdemos/pi-natives": "18.81.0",
55
+ "@f5xc-salesdemos/pi-tui": "18.81.0",
56
+ "@f5xc-salesdemos/pi-utils": "18.81.0",
57
57
  "@sinclair/typebox": "^0.34",
58
58
  "@xterm/headless": "^6.0",
59
59
  "ajv": "^8.18",
@@ -17,17 +17,17 @@ export interface BuildInfo {
17
17
  }
18
18
 
19
19
  export const BUILD_INFO: BuildInfo = {
20
- "version": "18.80.0",
21
- "commit": "7c19c50d50c5dacf1cb9e16ec599044ee32e1645",
22
- "shortCommit": "7c19c50",
20
+ "version": "18.81.0",
21
+ "commit": "042ddfbad1fad8132b3dc9a1eb0190ac17b2d22d",
22
+ "shortCommit": "042ddfb",
23
23
  "branch": "main",
24
- "tag": "v18.80.0",
25
- "commitDate": "2026-05-25T05:57:39Z",
26
- "buildDate": "2026-05-25T06:19:42.244Z",
24
+ "tag": "v18.81.0",
25
+ "commitDate": "2026-05-25T15:40:42Z",
26
+ "buildDate": "2026-05-25T16:05:58.171Z",
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/7c19c50d50c5dacf1cb9e16ec599044ee32e1645",
32
- "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.80.0"
31
+ "commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/042ddfbad1fad8132b3dc9a1eb0190ac17b2d22d",
32
+ "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.81.0"
33
33
  };
@@ -427,7 +427,7 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
427
427
  // Only fetch specs for types that carry relationship data (LBs, pools, firewalls,
428
428
  // healthchecks). Excludes system-generated objects (routes, virtual_hosts, etc.)
429
429
  // that inflate the item count and don't add relationship info.
430
- const SPEC_TYPES = /loadbalancer|origin_pool|app_firewall|healthcheck/i;
430
+ const SPEC_TYPES = /loadbalancer|origin_pool|app_firewall|healthcheck|rate_limiter/i;
431
431
  for (const r of relevantData) {
432
432
  const typeName = r.path.split("/").pop() ?? "";
433
433
  if (!SPEC_TYPES.test(typeName)) continue;
@@ -472,6 +472,7 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
472
472
  const humanizeType = (raw: string): string =>
473
473
  raw
474
474
  .replace(/^http_/, "")
475
+ .replace(/^tcp_/, "TCP ")
475
476
  .replace(/_/g, " ")
476
477
  .replace(/([a-z])([A-Z])/g, "$1 $2")
477
478
  .replace(/([a-z])(balancer|checker)/gi, "$1 $2");
@@ -531,7 +532,13 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
531
532
  const rName = parts.at(-1) ?? "";
532
533
  const rType = parts.at(-2) ?? "";
533
534
  const labels: string[] = [];
534
- if (/loadbalancer/i.test(rType)) {
535
+ if (/tcp_loadbalancer/i.test(rType)) {
536
+ const pools = extractPoolRefs(spec.origin_pools_weights);
537
+ if (pools.length > 0) labels.push(`pools=[${pools.join(",")}]`);
538
+ if (typeof spec.listen_port === "number") labels.push(`port=${spec.listen_port}`);
539
+ const domains = Array.isArray(spec.domains) ? (spec.domains as string[]) : [];
540
+ if (domains.length > 0) labels.push(`domains=[${domains.join(",")}]`);
541
+ } else if (/loadbalancer/i.test(rType)) {
535
542
  const waf = extractRef(spec.app_firewall);
536
543
  labels.push(waf ? `WAF=${waf}` : "no-WAF");
537
544
  const pools = extractPoolRefs(spec.default_route_pools);
@@ -564,6 +571,13 @@ export class XcshApiTool implements AgentTool<typeof xcshApiSchema, XcshApiToolD
564
571
  labels.push("tcp");
565
572
  }
566
573
  }
574
+ if (/rate_limiter/i.test(rType)) {
575
+ if (typeof spec.total_number === "number") labels.push(`threshold=${spec.total_number}`);
576
+ if (typeof spec.burst_size === "number") labels.push(`burst=${spec.burst_size}`);
577
+ if (typeof spec.committed_information_rate === "number")
578
+ labels.push(`rate=${spec.committed_information_rate}`);
579
+ if (typeof spec.unit === "string") labels.push(`unit=${spec.unit}`);
580
+ }
567
581
  if (labels.length > 0) {
568
582
  summaryLines.push(`${rName}: ${labels.join(", ")}`);
569
583
  }