@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.0",
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.0",
60
- "@f5-sales-demo/pi-agent-core": "19.63.0",
61
- "@f5-sales-demo/pi-ai": "19.63.0",
62
- "@f5-sales-demo/pi-natives": "19.63.0",
63
- "@f5-sales-demo/pi-resource-management": "19.63.0",
64
- "@f5-sales-demo/pi-tui": "19.63.0",
65
- "@f5-sales-demo/pi-utils": "19.63.0",
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",
@@ -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}\`. The canonical API reference is \`${enrichedUrl}\`, and the enriched specs are already embedded in this binary prefer \`xcsh://api-catalog/\` and \`xcsh://api-spec/\` before fetching anything.`,
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, index, { compact }));
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, index, { compact }));
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, index: ApiCatalogIndex, options?: { compact?: boolean }): string {
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
- if (mc.example_curl) {
480
- sections.push("### curl Example", "", "```bash", mc.example_curl, "```", "");
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.0",
21
- "commit": "d363d9f8ae94d36d0088aab8932d1952d7f2c4d5",
22
- "shortCommit": "d363d9f",
20
+ "version": "19.63.2",
21
+ "commit": "288f30031280d9e84a4c4d49249ab2d261913496",
22
+ "shortCommit": "288f300",
23
23
  "branch": "main",
24
- "tag": "v19.63.0",
25
- "commitDate": "2026-07-14T14:23:41Z",
26
- "buildDate": "2026-07-14T14:50:44.521Z",
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/d363d9f8ae94d36d0088aab8932d1952d7f2c4d5",
32
- "releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.63.0"
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
  };