@f5xc-salesdemos/xcsh 19.39.0 → 19.40.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": "19.39.0",
4
+ "version": "19.40.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",
@@ -51,13 +51,13 @@
51
51
  "dependencies": {
52
52
  "@agentclientprotocol/sdk": "0.16.1",
53
53
  "@mozilla/readability": "^0.6",
54
- "@f5xc-salesdemos/xcsh-stats": "19.39.0",
55
- "@f5xc-salesdemos/pi-agent-core": "19.39.0",
56
- "@f5xc-salesdemos/pi-ai": "19.39.0",
57
- "@f5xc-salesdemos/pi-natives": "19.39.0",
58
- "@f5xc-salesdemos/pi-resource-management": "19.39.0",
59
- "@f5xc-salesdemos/pi-tui": "19.39.0",
60
- "@f5xc-salesdemos/pi-utils": "19.39.0",
54
+ "@f5xc-salesdemos/xcsh-stats": "19.40.0",
55
+ "@f5xc-salesdemos/pi-agent-core": "19.40.0",
56
+ "@f5xc-salesdemos/pi-ai": "19.40.0",
57
+ "@f5xc-salesdemos/pi-natives": "19.40.0",
58
+ "@f5xc-salesdemos/pi-resource-management": "19.40.0",
59
+ "@f5xc-salesdemos/pi-tui": "19.40.0",
60
+ "@f5xc-salesdemos/pi-utils": "19.40.0",
61
61
  "@sinclair/typebox": "^0.34",
62
62
  "@xterm/headless": "^6.0",
63
63
  "ajv": "^8.20",
@@ -17,17 +17,17 @@ export interface BuildInfo {
17
17
  }
18
18
 
19
19
  export const BUILD_INFO: BuildInfo = {
20
- "version": "19.39.0",
21
- "commit": "00fa51ea150526f7b5c80e5f8a271510f1e1129d",
22
- "shortCommit": "00fa51e",
20
+ "version": "19.40.0",
21
+ "commit": "e25f0c5f25c2bc47d8e50a69b4ad6ac4edc7c3e5",
22
+ "shortCommit": "e25f0c5",
23
23
  "branch": "main",
24
- "tag": "v19.39.0",
25
- "commitDate": "2026-06-22T17:19:19Z",
26
- "buildDate": "2026-06-22T17:42:34.834Z",
24
+ "tag": "v19.40.0",
25
+ "commitDate": "2026-06-22T20:09:25Z",
26
+ "buildDate": "2026-06-22T20:31:47.773Z",
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/00fa51ea150526f7b5c80e5f8a271510f1e1129d",
32
- "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.39.0"
31
+ "commitUrl": "https://github.com/f5xc-salesdemos/xcsh/commit/e25f0c5f25c2bc47d8e50a69b4ad6ac4edc7c3e5",
32
+ "releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.40.0"
33
33
  };
@@ -211,6 +211,28 @@ When a user asks you to write, export, or save a resource manifest, produce a cl
211
211
 
212
212
  When fetching a resource from the API, strip the server-added metadata fields and inject the `kind` field (which the API response does not include). The `/manifest` slash command does this automatically.
213
213
 
214
+ <schema-first-generation>
215
+ Before generating any F5 XC JSON configuration — whether:
216
+ - A manifest for `/apply`
217
+ - An API payload for `xcsh_api`
218
+ - A script, converter, or exporter that produces `{kind, metadata, spec}` objects
219
+
220
+ You **MUST** read `xcsh://api-catalog/?resource={resource_name}&compact=true` to get:
221
+ - The exact API path
222
+ - Minimum required fields
223
+ - OneOf group constraints
224
+ - Correct field names (do NOT guess — e.g. `ip_endpoint` not `address`)
225
+
226
+ You **MUST NOT** generate spec bodies from memory or generic conventions when the catalog is available.
227
+ You **MUST NOT** use field names from one resource type on another.
228
+
229
+ The minimum-settings principle (see Terraform Provider Override) applies equally:
230
+ emit only required fields and user-requested values. Omit server-default fields.
231
+
232
+ For bulk generation (converters, exporters), read the API spec ONCE per resource type,
233
+ then apply the schema consistently across all generated objects.
234
+ </schema-first-generation>
235
+
214
236
  {{#if userProfile}}
215
237
  ## Primary Human
216
238
 
@@ -311,7 +333,7 @@ Most tools resolve custom protocol URLs to internal resources (not web URLs):
311
333
  1. `xcsh://api-spec/{domain}?resource={name}` → full OpenAPI specification
312
334
  If the domain is unknown, read `xcsh://api-spec/` first to identify it.
313
335
 
314
- **MUST NOT** read proactively.
336
+ `xcsh://api-spec/` **MUST NOT** be read proactively.
315
337
  Never start at `xcsh://api-spec/` for CRUD operations — the catalog is faster.
316
338
  Never guess API paths or request schemas.
317
339
  Also available: `xcsh://api-spec/workflows/` (step-by-step guides),
@@ -10,6 +10,9 @@ Pass all path `{placeholder}` values via `params`, e.g. `{ namespace: "default",
10
10
  Body is sent for all methods except GET when `payload` is provided — including DELETE operations that require a body.
11
11
  Payload values like `$F5XC_NAMESPACE` are auto-expanded from the active context.
12
12
  Use this tool after reading the API catalog to get the endpoint path and payload structure.
13
+ The payload templates below are reference examples. When the API catalog is available,
14
+ prefer `xcsh://api-catalog/?resource={resource_name}&compact=true` for the current minimum payload
15
+ over these static templates.
13
16
  Response format:
14
17
  - **List**: `{"items": […], "errors": []}` — each item has `name`, `namespace`, `uid`.
15
18
  - **Single resource**: `{"metadata": {"name", "namespace"}, "system_metadata": {"uid", "creation_timestamp"}, "spec": {…}}` — noise-reduced in TUI (nulls/empties stripped).
@@ -80,7 +83,7 @@ Port choices (orthogonal): `"use_default_port": {}` (default) | `"port": <int>`
80
83
 
81
84
  Example — port 8443 in advertise_where: `{"virtual_site": {…, "network": "SITE_NETWORK_INSIDE_AND_OUTSIDE"}, "port": 8443}`
82
85
 
83
- **CRITICAL — all 7 SiteNetwork values work with BOTH `virtual_site` AND `site`**. "IP fabric network" = `SITE_NETWORK_IP_FABRIC` valid for `virtual_site` too. Do NOT ask for alternatives; immediately use the matching enum.
86
+ **CRITICAL — all 6 LB-valid SiteNetwork values work with BOTH `virtual_site` AND `site`**. Do NOT ask for alternatives; immediately use the matching enum. `SITE_NETWORK_IP_FABRIC` works with both reference types but is **NOT valid for HTTP LB advertising** (see above) — use it only in non-LB contexts.
84
87
 
85
88
  Example — advertise on a Customer Edge virtual site, inside and outside:
86
89
  ```json
@@ -154,7 +157,7 @@ Each of the 12 oneOf groups has two or three mutually exclusive choices — pick
154
157
  |url_categorization|`"disable_url_categorization":{}` OR `"enable_url_categorization":{}`||
155
158
  |management_network|`"disable_management_network":{}` OR `"enable_management_network":{}`||
156
159
 
157
- **SMSv2 routing rule**: When asked to create a SecureMesh site v2 that *uses* or *applies* a policy (forward proxy, firewall, log receiver, cluster group), the target resource is always `securemesh_site_v2s` — POST the site payload with the policy reference in the appropriate spec field. Do NOT create the policy resource as the action; the policy already exists as a prerequisite. For example, "Create a SecureMesh site v2 with forward proxy policy X" → POST to `securemesh_site_v2s` with `"active_forward_proxy_policies":{"active_forward_proxy_policies":[{"name":"X","namespace":"<ns>"}]}` in the spec.
160
+ **SMSv2 routing rule**: When asked to create a SecureMesh site v2 that *uses* or *applies* a policy (forward proxy, firewall, log receiver, cluster group), the target resource is always `securemesh_site_v2s` — POST the site payload with the policy reference in the appropriate spec field. Do NOT create the policy resource as the action; the policy already exists as a prerequisite. For example, "Create a SecureMesh site v2 with forward proxy policy X" → POST to `securemesh_site_v2s` with `"active_forward_proxy_policies":{"forward_proxy_policies":[{"name":"X","namespace":"system"}]}` in the spec.
158
161
 
159
162
  **SecureMesh Site v2 Terraform HCL (`f5xc_securemesh_site_v2`)** — When asked to write Terraform for f5xc_securemesh_site_v2, use `resource "f5xc_securemesh_site_v2"` in system namespace. Each of the 12 oneOf groups maps directly to a Terraform block. Base HCL:
160
163