@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.
|
|
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.
|
|
55
|
-
"@f5xc-salesdemos/pi-agent-core": "19.
|
|
56
|
-
"@f5xc-salesdemos/pi-ai": "19.
|
|
57
|
-
"@f5xc-salesdemos/pi-natives": "19.
|
|
58
|
-
"@f5xc-salesdemos/pi-resource-management": "19.
|
|
59
|
-
"@f5xc-salesdemos/pi-tui": "19.
|
|
60
|
-
"@f5xc-salesdemos/pi-utils": "19.
|
|
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.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "19.40.0",
|
|
21
|
+
"commit": "e25f0c5f25c2bc47d8e50a69b4ad6ac4edc7c3e5",
|
|
22
|
+
"shortCommit": "e25f0c5",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v19.
|
|
25
|
-
"commitDate": "2026-06-
|
|
26
|
-
"buildDate": "2026-06-
|
|
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/
|
|
32
|
-
"releaseUrl": "https://github.com/f5xc-salesdemos/xcsh/releases/tag/v19.
|
|
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
|
|
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":{"
|
|
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
|
|