@f5-sales-demo/xcsh 19.63.0 → 19.63.2
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": "@f5-sales-demo/xcsh",
|
|
4
|
-
"version": "19.63.
|
|
4
|
+
"version": "19.63.2",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://github.com/f5-sales-demo/xcsh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -56,13 +56,13 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@agentclientprotocol/sdk": "0.16.1",
|
|
58
58
|
"@mozilla/readability": "^0.6",
|
|
59
|
-
"@f5-sales-demo/xcsh-stats": "19.63.
|
|
60
|
-
"@f5-sales-demo/pi-agent-core": "19.63.
|
|
61
|
-
"@f5-sales-demo/pi-ai": "19.63.
|
|
62
|
-
"@f5-sales-demo/pi-natives": "19.63.
|
|
63
|
-
"@f5-sales-demo/pi-resource-management": "19.63.
|
|
64
|
-
"@f5-sales-demo/pi-tui": "19.63.
|
|
65
|
-
"@f5-sales-demo/pi-utils": "19.63.
|
|
59
|
+
"@f5-sales-demo/xcsh-stats": "19.63.2",
|
|
60
|
+
"@f5-sales-demo/pi-agent-core": "19.63.2",
|
|
61
|
+
"@f5-sales-demo/pi-ai": "19.63.2",
|
|
62
|
+
"@f5-sales-demo/pi-natives": "19.63.2",
|
|
63
|
+
"@f5-sales-demo/pi-resource-management": "19.63.2",
|
|
64
|
+
"@f5-sales-demo/pi-tui": "19.63.2",
|
|
65
|
+
"@f5-sales-demo/pi-utils": "19.63.2",
|
|
66
66
|
"@sinclair/typebox": "^0.34",
|
|
67
67
|
"@xterm/headless": "^6.0",
|
|
68
68
|
"ajv": "^8.20",
|
package/src/deprecations.ts
CHANGED
|
@@ -81,7 +81,7 @@ export function renderDeprecationGuardrails(): string {
|
|
|
81
81
|
"These deprecations are non-negotiable. Full detail lives at `xcsh://branding` and `xcsh://branding/volterra`, but the rules below apply even when that protocol is never consulted.",
|
|
82
82
|
"",
|
|
83
83
|
`- **Never use \`${vesctl}\`.** It is the abandoned, unsupported legacy CLI; \`${xcshCmd}\` is its modern replacement. Never propose, generate, or run \`${vesctl}\`. For F5 XC API calls use the \`xcsh_api\` tool (never raw \`curl\`); for console automation use \`catalog_workflow_runner\`.`,
|
|
84
|
-
`- **The legacy API docs are deprecated.** Never link or fetch \`${legacyApiUrl}
|
|
84
|
+
`- **The legacy API docs are deprecated.** Never link or fetch \`${legacyApiUrl}\`; the canonical human-facing API documentation site is \`${enrichedUrl}\`. For your own API work you rarely need either — the enriched OpenAPI specs ship embedded in this binary: use \`xcsh://api-catalog/\` (operations/CRUD) and \`xcsh://api-spec/\` (schemas) per the routing rules above.`,
|
|
85
85
|
`- **"${deadBrand}" is a retired brand name.** The product is **${currentBrand}**; never write "${deadBrand}" as a product name or recommend ${deadBrand}-labeled tooling. BUT \`volterra_*\` API keys, \`*.volterra.io\`/\`*.volterra.us\` hostnames, and schema identifiers are **required functional identifiers** — use them verbatim, exactly as the API expects. Only the brand name is dead, not the identifiers.`,
|
|
86
86
|
].join("\n");
|
|
87
87
|
}
|
|
@@ -44,7 +44,7 @@ export function createApiCatalogResolver(
|
|
|
44
44
|
if (categorySummaries.some(c => c.name === catName)) {
|
|
45
45
|
try {
|
|
46
46
|
const cat = lookup(catName);
|
|
47
|
-
return makeResource(url, renderCatalogDetail(cat,
|
|
47
|
+
return makeResource(url, renderCatalogDetail(cat, { compact }));
|
|
48
48
|
} catch {
|
|
49
49
|
break;
|
|
50
50
|
}
|
|
@@ -77,7 +77,7 @@ export function createApiCatalogResolver(
|
|
|
77
77
|
|
|
78
78
|
try {
|
|
79
79
|
const cat = lookup(category);
|
|
80
|
-
return makeResource(url, renderCatalogDetail(cat,
|
|
80
|
+
return makeResource(url, renderCatalogDetail(cat, { compact }));
|
|
81
81
|
} catch (err) {
|
|
82
82
|
const message = err instanceof Error ? err.message : String(err);
|
|
83
83
|
return makeResource(url, `# Error loading ${category}\n\n${message}\n`);
|
|
@@ -200,7 +200,7 @@ function formatDefault(defaultVal: unknown, serverDefault: boolean | undefined):
|
|
|
200
200
|
return serverDefault ? `${val} (server)` : val;
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
function renderCatalogDetail(cat: ApiCatalogCategory,
|
|
203
|
+
function renderCatalogDetail(cat: ApiCatalogCategory, options?: { compact?: boolean }): string {
|
|
204
204
|
const sections: string[] = [`# ${cat.displayName}`, "", `${cat.operations.length} operations.`];
|
|
205
205
|
let fieldConstraintsRenderedForOp: string | null = null;
|
|
206
206
|
let fieldConstraintsFingerprint: string | null = null;
|
|
@@ -229,20 +229,6 @@ function renderCatalogDetail(cat: ApiCatalogCategory, index: ApiCatalogIndex, op
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
sections.push("", "### Curl Example", "", "```bash");
|
|
233
|
-
const tokenVar = `$${index.auth.tokenSource}`;
|
|
234
|
-
const authHeader = `${index.auth.headerName}: ${index.auth.headerTemplate.replace("$TOKEN", tokenVar).replace("{token}", tokenVar)}`;
|
|
235
|
-
sections.push(`curl -X ${op.method.toUpperCase()} "$${index.auth.baseUrlSource}${op.path}" \\`);
|
|
236
|
-
sections.push(` -H "${authHeader}" \\`);
|
|
237
|
-
if (op.method.toUpperCase() !== "GET" && op.method.toUpperCase() !== "DELETE") {
|
|
238
|
-
sections.push(' -H "Content-Type: application/json" \\');
|
|
239
|
-
sections.push(" -d @payload.json");
|
|
240
|
-
} else {
|
|
241
|
-
const lastLine = sections[sections.length - 1];
|
|
242
|
-
sections[sections.length - 1] = lastLine.replace(/ \\$/, "");
|
|
243
|
-
}
|
|
244
|
-
sections.push("```");
|
|
245
|
-
|
|
246
232
|
// Minimum Configuration (Tier 1)
|
|
247
233
|
if (op.minimumPayload) {
|
|
248
234
|
sections.push("", "### Minimum Configuration", "");
|
|
@@ -476,9 +476,8 @@ function renderMinimumConfigSection(mc: ApiSpecMinimumConfiguration): string {
|
|
|
476
476
|
sections.push("### YAML Example", "", "```yaml", mc.example_yaml, "```", "");
|
|
477
477
|
}
|
|
478
478
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
}
|
|
479
|
+
// Deliberately no curl example — the agent uses the xcsh_api tool for F5 XC API
|
|
480
|
+
// calls and can synthesize a curl from method/path/payload on explicit human request.
|
|
482
481
|
|
|
483
482
|
return sections.join("\n");
|
|
484
483
|
}
|
|
@@ -17,17 +17,17 @@ export interface BuildInfo {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export const BUILD_INFO: BuildInfo = {
|
|
20
|
-
"version": "19.63.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "19.63.2",
|
|
21
|
+
"commit": "288f30031280d9e84a4c4d49249ab2d261913496",
|
|
22
|
+
"shortCommit": "288f300",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v19.63.
|
|
25
|
-
"commitDate": "2026-07-
|
|
26
|
-
"buildDate": "2026-07-
|
|
24
|
+
"tag": "v19.63.2",
|
|
25
|
+
"commitDate": "2026-07-14T23:50:19Z",
|
|
26
|
+
"buildDate": "2026-07-15T00:16:51.926Z",
|
|
27
27
|
"dirty": true,
|
|
28
28
|
"prNumber": "",
|
|
29
29
|
"repoUrl": "https://github.com/f5-sales-demo/xcsh",
|
|
30
30
|
"repoSlug": "f5-sales-demo/xcsh",
|
|
31
|
-
"commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/
|
|
32
|
-
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.63.
|
|
31
|
+
"commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/288f30031280d9e84a4c4d49249ab2d261913496",
|
|
32
|
+
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.63.2"
|
|
33
33
|
};
|