@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.
|
|
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.
|
|
53
|
-
"@f5xc-salesdemos/pi-agent-core": "18.
|
|
54
|
-
"@f5xc-salesdemos/pi-ai": "18.
|
|
55
|
-
"@f5xc-salesdemos/pi-natives": "18.
|
|
56
|
-
"@f5xc-salesdemos/pi-tui": "18.
|
|
57
|
-
"@f5xc-salesdemos/pi-utils": "18.
|
|
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.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "18.84.0",
|
|
21
|
+
"commit": "adc9c7ecdfd945419187e4bea5c9b442b53ad257",
|
|
22
|
+
"shortCommit": "adc9c7e",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v18.
|
|
25
|
-
"commitDate": "2026-05-
|
|
26
|
-
"buildDate": "2026-05-
|
|
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/
|
|
32
|
-
"releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v18.
|
|
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.
|
package/src/tools/xcsh-api.ts
CHANGED
|
@@ -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} ${
|
|
849
|
+
text: `${statusLine}\n\n${bodyText}\n\n${verb} ${resourceLabel} successfully. ${resourceHint}`,
|
|
827
850
|
},
|
|
828
851
|
],
|
|
829
852
|
details: detail,
|