@f5-sales-demo/xcsh 19.102.7 → 19.102.8

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.102.7",
4
+ "version": "19.102.8",
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",
@@ -57,13 +57,13 @@
57
57
  "dependencies": {
58
58
  "@agentclientprotocol/sdk": "1.3.0",
59
59
  "@mozilla/readability": "^0.6",
60
- "@f5-sales-demo/xcsh-stats": "19.102.7",
61
- "@f5-sales-demo/pi-agent-core": "19.102.7",
62
- "@f5-sales-demo/pi-ai": "19.102.7",
63
- "@f5-sales-demo/pi-natives": "19.102.7",
64
- "@f5-sales-demo/pi-resource-management": "19.102.7",
65
- "@f5-sales-demo/pi-tui": "19.102.7",
66
- "@f5-sales-demo/pi-utils": "19.102.7",
60
+ "@f5-sales-demo/xcsh-stats": "19.102.8",
61
+ "@f5-sales-demo/pi-agent-core": "19.102.8",
62
+ "@f5-sales-demo/pi-ai": "19.102.8",
63
+ "@f5-sales-demo/pi-natives": "19.102.8",
64
+ "@f5-sales-demo/pi-resource-management": "19.102.8",
65
+ "@f5-sales-demo/pi-tui": "19.102.8",
66
+ "@f5-sales-demo/pi-utils": "19.102.8",
67
67
  "@sinclair/typebox": "^0.34",
68
68
  "@xterm/headless": "^6.0",
69
69
  "ajv": "^8.20",
@@ -97,6 +97,25 @@ const REPO = "f5-sales-demo/api-specs-enriched";
97
97
  const outputPath = path.resolve(import.meta.dir, "../src/internal-urls/api-spec-index.generated.ts");
98
98
  const catalogOutputPath = path.resolve(import.meta.dir, "../src/internal-urls/api-catalog-index.generated.ts");
99
99
 
100
+ /**
101
+ * Upstream specs use ACME as a placeholder tenant, company and hostname. STYLE_GUIDE.md bans it:
102
+ * it is not trademark-cleared, and in TLS content the name already belongs to RFC 8555. Rewrite it
103
+ * to the `Example` pattern here rather than in the emitted file, so a regeneration cannot bring it
104
+ * back (#2650).
105
+ *
106
+ * `_acme-challenge` is the RFC 8555 DNS-01 record label, not the placeholder, and must survive.
107
+ */
108
+ function sanitizePlaceholders(text: string): string {
109
+ // The sentinel must contain no form of the word being rewritten, or the rewrite eats it.
110
+ const CHALLENGE = " RFC8555_DNS01 ";
111
+ return text
112
+ .replace(/_acme-challenge/gi, CHALLENGE)
113
+ .replace(/ACME/g, "Example")
114
+ .replace(/Acme/g, "Example")
115
+ .replace(/acme/g, "example")
116
+ .replaceAll(CHALLENGE, "_acme-challenge");
117
+ }
118
+
100
119
  const MAX_RETRIES = 3;
101
120
  const INITIAL_BACKOFF_MS = 2000;
102
121
 
@@ -552,7 +571,7 @@ const output = [
552
571
  .filter(l => l !== undefined)
553
572
  .join("\n");
554
573
 
555
- await Bun.write(outputPath, output);
574
+ await Bun.write(outputPath, sanitizePlaceholders(output));
556
575
 
557
576
  const outputSize = (Buffer.byteLength(output) / 1024 / 1024).toFixed(1);
558
577
  console.log(
@@ -596,7 +615,7 @@ if (catalog) {
596
615
  "",
597
616
  ].join("\n");
598
617
 
599
- await Bun.write(catalogOutputPath, catalogOutput);
618
+ await Bun.write(catalogOutputPath, sanitizePlaceholders(catalogOutput));
600
619
  const catalogSize = (Buffer.byteLength(catalogOutput) / 1024 / 1024).toFixed(1);
601
620
  console.log(
602
621
  `Generated ${path.relative(process.cwd(), catalogOutputPath)} (${categories.length} categories, ${catalogSize} MB)`,
@@ -669,7 +669,7 @@
669
669
  "v": 1,
670
670
  "capturedAt": 1719000000000,
671
671
  "tabId": 7,
672
- "url": "https://acme.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
672
+ "url": "https://example.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
673
673
  "path": "/web/namespaces/default/http_loadbalancers/lb1",
674
674
  "title": "lb1 — Distributed Cloud",
675
675
  "ax": {
@@ -707,7 +707,7 @@
707
707
  "v": 1,
708
708
  "capturedAt": 1719000000000,
709
709
  "tabId": 7,
710
- "url": "https://acme.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
710
+ "url": "https://example.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
711
711
  "path": "/web/namespaces/default/http_loadbalancers/lb1",
712
712
  "title": "lb1 — Distributed Cloud",
713
713
  "ax": {
@@ -922,7 +922,7 @@
922
922
  "v": 1,
923
923
  "capturedAt": 1719000000000,
924
924
  "tabId": 7,
925
- "url": "https://acme.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
925
+ "url": "https://example.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
926
926
  "path": "/web/namespaces/default/http_loadbalancers/lb1",
927
927
  "title": "lb1 — Distributed Cloud",
928
928
  "ax": {
@@ -967,7 +967,7 @@
967
967
  "v": 1,
968
968
  "capturedAt": 1719000000000,
969
969
  "tabId": 7,
970
- "url": "https://acme.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
970
+ "url": "https://example.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
971
971
  "path": "/web/namespaces/default/http_loadbalancers/lb1",
972
972
  "title": "lb1 — Distributed Cloud",
973
973
  "ax": {
@@ -1027,7 +1027,7 @@
1027
1027
  "v": 2,
1028
1028
  "capturedAt": 1719000000000,
1029
1029
  "tabId": 7,
1030
- "url": "https://acme.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
1030
+ "url": "https://example.console.ves.volterra.io/web/namespaces/default/http_loadbalancers/lb1",
1031
1031
  "path": "/web/namespaces/default/http_loadbalancers/lb1",
1032
1032
  "title": "lb1 — Distributed Cloud",
1033
1033
  "ax": {
@@ -6,7 +6,7 @@
6
6
  * override `XCSH_MANAGER_SOCK`) for NDJSON control frames — one JSON object per
7
7
  * line — validated by the pure `manager-core` protocol:
8
8
  *
9
- * {"type":"provision","sessionId":"tab-7","tenant":"acme|staging"}
9
+ * {"type":"provision","sessionId":"tab-7","tenant":"example|staging"}
10
10
  * → spawn a worker for that sessionId (idempotent). The registry is keyed
11
11
  * on sessionId, so two tabs of the SAME tenant get two workers.
12
12
  * {"type":"release","sessionId":"tab-7"} → kill + forget that session's worker
@@ -17,17 +17,17 @@ export interface BuildInfo {
17
17
  }
18
18
 
19
19
  export const BUILD_INFO: BuildInfo = {
20
- "version": "19.102.7",
21
- "commit": "a955a498f6c995dae2640639ce70c4c5ec1e62b1",
22
- "shortCommit": "a955a49",
20
+ "version": "19.102.8",
21
+ "commit": "363172ba93be331f8cf37550641fec189d0f978b",
22
+ "shortCommit": "363172b",
23
23
  "branch": "main",
24
- "tag": "v19.102.7",
25
- "commitDate": "2026-07-31T02:16:15Z",
26
- "buildDate": "2026-07-31T02:41:44.450Z",
24
+ "tag": "v19.102.8",
25
+ "commitDate": "2026-07-31T03:19:52Z",
26
+ "buildDate": "2026-07-31T03:47:55.218Z",
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/a955a498f6c995dae2640639ce70c4c5ec1e62b1",
32
- "releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.102.7"
31
+ "commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/363172ba93be331f8cf37550641fec189d0f978b",
32
+ "releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.102.8"
33
33
  };