@f5-sales-demo/xcsh 20.5.0 → 20.6.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 +9 -8
- package/src/browser/chat-handler.ts +4 -4
- package/src/browser/headless-bridge.ts +11 -0
- package/src/internal-urls/build-info.generated.ts +8 -8
- package/src/internal-urls/terraform-index.generated.ts +98 -128
- package/src/modes/components/login-prompt-input.ts +9 -0
- package/src/modes/components/oauth-selector.ts +107 -9
- package/src/modes/controllers/enterprise-oauth-login-flow.ts +94 -0
- package/src/modes/controllers/enterprise-oauth-login-transaction.ts +103 -0
- package/src/modes/controllers/litellm-login-flow.ts +109 -0
- package/src/modes/controllers/litellm-login-transaction.ts +132 -0
- package/src/modes/controllers/login-model.ts +9 -9
- package/src/modes/controllers/selector-controller.ts +235 -184
- package/src/modes/rpc/rpc-client.ts +5 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@f5-sales-demo/xcsh",
|
|
4
|
-
"version": "20.
|
|
4
|
+
"version": "20.6.0",
|
|
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",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"fmt": "biome format --write . && bun run format-prompts",
|
|
45
45
|
"format-prompts": "bun scripts/format-prompts.ts",
|
|
46
46
|
"mermaid:gallery": "bun scripts/mermaid-gallery.ts",
|
|
47
|
+
"uat:auth-profiles": "bun scripts/auth-profile-rpc-uat.ts",
|
|
47
48
|
"generate-docs-index": "bun scripts/generate-docs-index.ts",
|
|
48
49
|
"generate-api-spec-index": "bun scripts/generate-api-spec-index.ts",
|
|
49
50
|
"generate-branding-index": "bun scripts/generate-branding-index.ts",
|
|
@@ -60,13 +61,13 @@
|
|
|
60
61
|
"dependencies": {
|
|
61
62
|
"@agentclientprotocol/sdk": "1.3.0",
|
|
62
63
|
"@mozilla/readability": "^0.6",
|
|
63
|
-
"@f5-sales-demo/xcsh-stats": "20.
|
|
64
|
-
"@f5-sales-demo/pi-agent-core": "20.
|
|
65
|
-
"@f5-sales-demo/pi-ai": "20.
|
|
66
|
-
"@f5-sales-demo/pi-natives": "20.
|
|
67
|
-
"@f5-sales-demo/pi-resource-management": "20.
|
|
68
|
-
"@f5-sales-demo/pi-tui": "20.
|
|
69
|
-
"@f5-sales-demo/pi-utils": "20.
|
|
64
|
+
"@f5-sales-demo/xcsh-stats": "20.6.0",
|
|
65
|
+
"@f5-sales-demo/pi-agent-core": "20.6.0",
|
|
66
|
+
"@f5-sales-demo/pi-ai": "20.6.0",
|
|
67
|
+
"@f5-sales-demo/pi-natives": "20.6.0",
|
|
68
|
+
"@f5-sales-demo/pi-resource-management": "20.6.0",
|
|
69
|
+
"@f5-sales-demo/pi-tui": "20.6.0",
|
|
70
|
+
"@f5-sales-demo/pi-utils": "20.6.0",
|
|
70
71
|
"@sinclair/typebox": "^0.34",
|
|
71
72
|
"@xterm/headless": "^6.0",
|
|
72
73
|
"ajv": "^8.20",
|
|
@@ -436,10 +436,10 @@ export class ChatHandler {
|
|
|
436
436
|
if (!defaultModel) {
|
|
437
437
|
throw new Error("Invalid baked default model selector");
|
|
438
438
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
const modelId = msg.model ??
|
|
439
|
+
// An omitted model means the baked Office default, never whichever model a
|
|
440
|
+
// previous CLI/global session happened to leave active. An explicit pane
|
|
441
|
+
// selection still wins through msg.model.
|
|
442
|
+
const modelId = msg.model ?? defaultModel.id;
|
|
443
443
|
const choice = LITELLM_LOGIN_MODEL_CHOICES.find(candidate => candidate.modelId === modelId);
|
|
444
444
|
const matchingProviders = (["anthropic", "litellm"] as const).filter(candidate =>
|
|
445
445
|
registry.find(candidate, modelId),
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
* NOT browser-safe (node/bun): runs inside the full xcsh binary, never the pane.
|
|
16
16
|
*/
|
|
17
17
|
import { getProjectDir, getXCSHConfigDir } from "@f5-sales-demo/pi-utils";
|
|
18
|
+
import { parseModelString } from "../config/model-resolver";
|
|
19
|
+
import { DEFAULT_MODEL_ROLE } from "../config/settings-schema";
|
|
18
20
|
import { createAgentSession } from "../sdk";
|
|
19
21
|
import { ContextService } from "../services/xcsh-context";
|
|
20
22
|
import { deriveTenantEnv } from "../services/xcsh-env";
|
|
@@ -141,6 +143,10 @@ export async function startHeadlessChatBridge(deps: HeadlessBridgeDeps = default
|
|
|
141
143
|
// selectProvider() reuses a dead bridge. The caller (startOfficeServe) treats
|
|
142
144
|
// the rethrow as a non-fatal "pane only" fallback.
|
|
143
145
|
try {
|
|
146
|
+
const officeDefault = parseModelString(DEFAULT_MODEL_ROLE);
|
|
147
|
+
if (!officeDefault) {
|
|
148
|
+
throw new Error("Invalid baked Office default model selector");
|
|
149
|
+
}
|
|
144
150
|
// Create ONE headless Office session with the full CLI-parity builtin set
|
|
145
151
|
// (OFFICE_TOOL_NAMES: bash/read/write/edit/grep/inspect_image/… — NO browser tools, which
|
|
146
152
|
// would be hallucinated in a document task pane). The document's own tools
|
|
@@ -148,6 +154,11 @@ export async function startHeadlessChatBridge(deps: HeadlessBridgeDeps = default
|
|
|
148
154
|
const { session } = await deps.createAgentSession({
|
|
149
155
|
cwd,
|
|
150
156
|
hasUI: false,
|
|
157
|
+
// Office must open on the production GPT profile regardless of a stale
|
|
158
|
+
// global/default role or resumable session. A saved pane model is applied
|
|
159
|
+
// afterward by its explicit configure frame and remains authoritative.
|
|
160
|
+
modelPattern: DEFAULT_MODEL_ROLE,
|
|
161
|
+
thinkingLevel: officeDefault.thinkingLevel,
|
|
151
162
|
// Office conversations can contain private workbook and working-directory
|
|
152
163
|
// data. Keep the entire headless session ephemeral instead of inheriting
|
|
153
164
|
// createAgentSession's file-backed default.
|
|
@@ -17,17 +17,17 @@ export interface BuildInfo {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export const BUILD_INFO: BuildInfo = {
|
|
20
|
-
"version": "20.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "20.6.0",
|
|
21
|
+
"commit": "fda51f1e37f9202c495558b6e33c0067e822967e",
|
|
22
|
+
"shortCommit": "fda51f1",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v20.
|
|
25
|
-
"commitDate": "2026-08-
|
|
26
|
-
"buildDate": "2026-08-
|
|
24
|
+
"tag": "v20.6.0",
|
|
25
|
+
"commitDate": "2026-08-06T11:20:36Z",
|
|
26
|
+
"buildDate": "2026-08-06T11:58:39.606Z",
|
|
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/v20.
|
|
31
|
+
"commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/fda51f1e37f9202c495558b6e33c0067e822967e",
|
|
32
|
+
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v20.6.0"
|
|
33
33
|
};
|
|
@@ -116,7 +116,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
116
116
|
name: "Sites",
|
|
117
117
|
slug: "sites",
|
|
118
118
|
description: "AWS/Azure/GCP VPC sites, SecureMesh, VoltStack, and site mesh groups",
|
|
119
|
-
resource_count:
|
|
119
|
+
resource_count: 11,
|
|
120
120
|
resources: [
|
|
121
121
|
"aws_tgw_site",
|
|
122
122
|
"aws_vpc_site",
|
|
@@ -126,7 +126,6 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
126
126
|
"registration",
|
|
127
127
|
"securemesh_site",
|
|
128
128
|
"securemesh_site_v2",
|
|
129
|
-
"site",
|
|
130
129
|
"site_mesh_group",
|
|
131
130
|
"virtual_site",
|
|
132
131
|
"voltstack_site",
|
|
@@ -148,22 +147,6 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
148
147
|
"workload_flavor",
|
|
149
148
|
],
|
|
150
149
|
},
|
|
151
|
-
{
|
|
152
|
-
name: "Uncategorized",
|
|
153
|
-
slug: "uncategorized",
|
|
154
|
-
description: "Resources pending categorization",
|
|
155
|
-
resource_count: 8,
|
|
156
|
-
resources: [
|
|
157
|
-
"application_profiles",
|
|
158
|
-
"authorization_server",
|
|
159
|
-
"bot_infrastructure",
|
|
160
|
-
"domain",
|
|
161
|
-
"mitigated_domain",
|
|
162
|
-
"protected_application",
|
|
163
|
-
"protected_domain",
|
|
164
|
-
"registration_approval",
|
|
165
|
-
],
|
|
166
|
-
},
|
|
167
150
|
{
|
|
168
151
|
name: "DNS",
|
|
169
152
|
slug: "dns",
|
|
@@ -179,6 +162,21 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
179
162
|
"dns_zone",
|
|
180
163
|
],
|
|
181
164
|
},
|
|
165
|
+
{
|
|
166
|
+
name: "Uncategorized",
|
|
167
|
+
slug: "uncategorized",
|
|
168
|
+
description: "Resources pending categorization",
|
|
169
|
+
resource_count: 7,
|
|
170
|
+
resources: [
|
|
171
|
+
"application_profiles",
|
|
172
|
+
"authorization_server",
|
|
173
|
+
"bot_infrastructure",
|
|
174
|
+
"mitigated_domain",
|
|
175
|
+
"protected_application",
|
|
176
|
+
"protected_domain",
|
|
177
|
+
"registration_approval",
|
|
178
|
+
],
|
|
179
|
+
},
|
|
182
180
|
{
|
|
183
181
|
name: "API Security",
|
|
184
182
|
slug: "api-security",
|
|
@@ -1358,20 +1356,6 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1358
1356
|
},
|
|
1359
1357
|
import_syntax: "terraform import xcsh_securemesh_site_v2.example namespace/name",
|
|
1360
1358
|
},
|
|
1361
|
-
{
|
|
1362
|
-
name: "site",
|
|
1363
|
-
category: "sites",
|
|
1364
|
-
description: "Virtual site object in given namespace",
|
|
1365
|
-
required: ["name", "namespace", "site_type"],
|
|
1366
|
-
minimal_config: {
|
|
1367
|
-
format: "terraform",
|
|
1368
|
-
source: "_llms-txt/resources/site.txt#minimal-valid-config",
|
|
1369
|
-
},
|
|
1370
|
-
dependencies: {
|
|
1371
|
-
requires: [],
|
|
1372
|
-
},
|
|
1373
|
-
import_syntax: "terraform import xcsh_site.example namespace/name",
|
|
1374
|
-
},
|
|
1375
1359
|
{
|
|
1376
1360
|
name: "site_mesh_group",
|
|
1377
1361
|
category: "sites",
|
|
@@ -1539,215 +1523,201 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1539
1523
|
import_syntax: "terraform import xcsh_workload_flavor.example namespace/name",
|
|
1540
1524
|
},
|
|
1541
1525
|
{
|
|
1542
|
-
name: "
|
|
1543
|
-
category: "
|
|
1544
|
-
description:
|
|
1526
|
+
name: "dns_compliance_checks",
|
|
1527
|
+
category: "dns",
|
|
1528
|
+
description:
|
|
1529
|
+
"DNS Compliance Checks Specification in a given namespace. If one already exists it will give an error",
|
|
1545
1530
|
required: ["name", "namespace"],
|
|
1546
1531
|
minimal_config: {
|
|
1547
1532
|
format: "terraform",
|
|
1548
|
-
source: "_llms-txt/resources/
|
|
1533
|
+
source: "_llms-txt/resources/dns_compliance_checks.txt#minimal-valid-config",
|
|
1549
1534
|
},
|
|
1550
1535
|
dependencies: {
|
|
1551
1536
|
requires: [],
|
|
1552
1537
|
},
|
|
1553
|
-
import_syntax: "terraform import
|
|
1538
|
+
import_syntax: "terraform import xcsh_dns_compliance_checks.example namespace/name",
|
|
1554
1539
|
},
|
|
1555
1540
|
{
|
|
1556
|
-
name: "
|
|
1557
|
-
category: "
|
|
1558
|
-
description: "
|
|
1559
|
-
required: ["name", "
|
|
1541
|
+
name: "dns_domain",
|
|
1542
|
+
category: "dns",
|
|
1543
|
+
description: "DNS Domain in a given namespace. If one already exist it will give a error",
|
|
1544
|
+
required: ["name", "dnssec_mode"],
|
|
1560
1545
|
minimal_config: {
|
|
1561
1546
|
format: "terraform",
|
|
1562
|
-
source: "_llms-txt/resources/
|
|
1547
|
+
source: "_llms-txt/resources/dns_domain.txt#minimal-valid-config",
|
|
1563
1548
|
},
|
|
1564
1549
|
dependencies: {
|
|
1565
1550
|
requires: [],
|
|
1566
1551
|
},
|
|
1567
|
-
import_syntax: "terraform import
|
|
1552
|
+
import_syntax: "terraform import xcsh_dns_domain.example namespace/name",
|
|
1568
1553
|
},
|
|
1569
1554
|
{
|
|
1570
|
-
name: "
|
|
1571
|
-
category: "
|
|
1572
|
-
description: "
|
|
1573
|
-
required: ["name"
|
|
1555
|
+
name: "dns_lb_health_check",
|
|
1556
|
+
category: "dns",
|
|
1557
|
+
description: "DNS Load Balancer Health Check in a given namespace. If one already exist it will give a error",
|
|
1558
|
+
required: ["name"],
|
|
1574
1559
|
minimal_config: {
|
|
1575
1560
|
format: "terraform",
|
|
1576
|
-
source: "_llms-txt/resources/
|
|
1561
|
+
source: "_llms-txt/resources/dns_lb_health_check.txt#minimal-valid-config",
|
|
1577
1562
|
},
|
|
1578
1563
|
dependencies: {
|
|
1579
1564
|
requires: [],
|
|
1580
1565
|
},
|
|
1581
|
-
import_syntax: "terraform import
|
|
1566
|
+
import_syntax: "terraform import xcsh_dns_lb_health_check.example namespace/name",
|
|
1582
1567
|
},
|
|
1583
1568
|
{
|
|
1584
|
-
name: "
|
|
1585
|
-
category: "
|
|
1586
|
-
description: "
|
|
1587
|
-
required: ["name", "
|
|
1569
|
+
name: "dns_lb_pool",
|
|
1570
|
+
category: "dns",
|
|
1571
|
+
description: "DNS Load Balancer Pool in a given namespace. If one already exist it will give a error",
|
|
1572
|
+
required: ["name", "load_balancing_mode"],
|
|
1588
1573
|
minimal_config: {
|
|
1589
1574
|
format: "terraform",
|
|
1590
|
-
source: "_llms-txt/resources/
|
|
1575
|
+
source: "_llms-txt/resources/dns_lb_pool.txt#minimal-valid-config",
|
|
1591
1576
|
},
|
|
1592
1577
|
dependencies: {
|
|
1593
1578
|
requires: [],
|
|
1594
1579
|
},
|
|
1595
|
-
import_syntax: "terraform import
|
|
1580
|
+
import_syntax: "terraform import xcsh_dns_lb_pool.example namespace/name",
|
|
1596
1581
|
},
|
|
1597
1582
|
{
|
|
1598
|
-
name: "
|
|
1599
|
-
category: "
|
|
1600
|
-
description: "
|
|
1601
|
-
required: ["name"
|
|
1583
|
+
name: "dns_load_balancer",
|
|
1584
|
+
category: "dns",
|
|
1585
|
+
description: "DNS Load Balancer in a given namespace. If one already exist it will give a error",
|
|
1586
|
+
required: ["name"],
|
|
1602
1587
|
minimal_config: {
|
|
1603
1588
|
format: "terraform",
|
|
1604
|
-
source: "_llms-txt/resources/
|
|
1589
|
+
source: "_llms-txt/resources/dns_load_balancer.txt#minimal-valid-config",
|
|
1605
1590
|
},
|
|
1606
1591
|
dependencies: {
|
|
1607
1592
|
requires: [],
|
|
1608
1593
|
},
|
|
1609
|
-
import_syntax: "terraform import
|
|
1594
|
+
import_syntax: "terraform import xcsh_dns_load_balancer.example namespace/name",
|
|
1610
1595
|
},
|
|
1611
1596
|
{
|
|
1612
|
-
name: "
|
|
1613
|
-
category: "
|
|
1614
|
-
description: "
|
|
1615
|
-
required: ["name", "
|
|
1597
|
+
name: "dns_proxy",
|
|
1598
|
+
category: "dns",
|
|
1599
|
+
description: "DNS Proxy in a given namespace. If one already exists it will give an error",
|
|
1600
|
+
required: ["name", "transport_type"],
|
|
1616
1601
|
minimal_config: {
|
|
1617
1602
|
format: "terraform",
|
|
1618
|
-
source: "_llms-txt/resources/
|
|
1603
|
+
source: "_llms-txt/resources/dns_proxy.txt#minimal-valid-config",
|
|
1619
1604
|
},
|
|
1620
1605
|
dependencies: {
|
|
1621
1606
|
requires: [],
|
|
1622
1607
|
},
|
|
1623
|
-
import_syntax: "terraform import
|
|
1608
|
+
import_syntax: "terraform import xcsh_dns_proxy.example namespace/name",
|
|
1624
1609
|
},
|
|
1625
1610
|
{
|
|
1626
|
-
name: "
|
|
1627
|
-
category: "
|
|
1628
|
-
description: "
|
|
1629
|
-
required: ["name"
|
|
1611
|
+
name: "dns_zone",
|
|
1612
|
+
category: "dns",
|
|
1613
|
+
description: "DNS Zone in a given namespace. If one already exist it will give a error",
|
|
1614
|
+
required: ["name"],
|
|
1630
1615
|
minimal_config: {
|
|
1631
1616
|
format: "terraform",
|
|
1632
|
-
source: "_llms-txt/resources/
|
|
1617
|
+
source: "_llms-txt/resources/dns_zone.txt#minimal-valid-config",
|
|
1633
1618
|
},
|
|
1634
1619
|
dependencies: {
|
|
1635
1620
|
requires: [],
|
|
1636
1621
|
},
|
|
1637
|
-
import_syntax: "terraform import
|
|
1622
|
+
import_syntax: "terraform import xcsh_dns_zone.example namespace/name",
|
|
1638
1623
|
},
|
|
1639
1624
|
{
|
|
1640
|
-
name: "
|
|
1625
|
+
name: "application_profiles",
|
|
1641
1626
|
category: "uncategorized",
|
|
1642
|
-
description: "
|
|
1643
|
-
required: ["name", "namespace"],
|
|
1644
|
-
minimal_config: {
|
|
1645
|
-
format: "terraform",
|
|
1646
|
-
source: "_llms-txt/resources/registration_approval.txt#minimal-valid-config",
|
|
1647
|
-
},
|
|
1648
|
-
dependencies: {
|
|
1649
|
-
requires: [],
|
|
1650
|
-
},
|
|
1651
|
-
import_syntax: "terraform import xcsh_registration_approval.example namespace/name",
|
|
1652
|
-
},
|
|
1653
|
-
{
|
|
1654
|
-
name: "dns_compliance_checks",
|
|
1655
|
-
category: "dns",
|
|
1656
|
-
description:
|
|
1657
|
-
"DNS Compliance Checks Specification in a given namespace. If one already exists it will give an error",
|
|
1627
|
+
description: "Application Profiles in a given namespace. If one already exists it will give an error",
|
|
1658
1628
|
required: ["name", "namespace"],
|
|
1659
1629
|
minimal_config: {
|
|
1660
1630
|
format: "terraform",
|
|
1661
|
-
source: "_llms-txt/resources/
|
|
1631
|
+
source: "_llms-txt/resources/application_profiles.txt#minimal-valid-config",
|
|
1662
1632
|
},
|
|
1663
1633
|
dependencies: {
|
|
1664
1634
|
requires: [],
|
|
1665
1635
|
},
|
|
1666
|
-
import_syntax: "terraform import
|
|
1636
|
+
import_syntax: "terraform import xcsh_application_profiles.example namespace/name",
|
|
1667
1637
|
},
|
|
1668
1638
|
{
|
|
1669
|
-
name: "
|
|
1670
|
-
category: "
|
|
1671
|
-
description: "
|
|
1672
|
-
required: ["name", "
|
|
1639
|
+
name: "authorization_server",
|
|
1640
|
+
category: "uncategorized",
|
|
1641
|
+
description: "Authorization_server creates a new object in the storage backend for metadata.namespace",
|
|
1642
|
+
required: ["name", "namespace", "jwks_uri"],
|
|
1673
1643
|
minimal_config: {
|
|
1674
1644
|
format: "terraform",
|
|
1675
|
-
source: "_llms-txt/resources/
|
|
1645
|
+
source: "_llms-txt/resources/authorization_server.txt#minimal-valid-config",
|
|
1676
1646
|
},
|
|
1677
1647
|
dependencies: {
|
|
1678
1648
|
requires: [],
|
|
1679
1649
|
},
|
|
1680
|
-
import_syntax: "terraform import
|
|
1650
|
+
import_syntax: "terraform import xcsh_authorization_server.example namespace/name",
|
|
1681
1651
|
},
|
|
1682
1652
|
{
|
|
1683
|
-
name: "
|
|
1684
|
-
category: "
|
|
1685
|
-
description: "
|
|
1686
|
-
required: ["name"],
|
|
1653
|
+
name: "bot_infrastructure",
|
|
1654
|
+
category: "uncategorized",
|
|
1655
|
+
description: "Bot Infrastructure",
|
|
1656
|
+
required: ["name", "namespace", "traffic_type"],
|
|
1687
1657
|
minimal_config: {
|
|
1688
1658
|
format: "terraform",
|
|
1689
|
-
source: "_llms-txt/resources/
|
|
1659
|
+
source: "_llms-txt/resources/bot_infrastructure.txt#minimal-valid-config",
|
|
1690
1660
|
},
|
|
1691
1661
|
dependencies: {
|
|
1692
1662
|
requires: [],
|
|
1693
1663
|
},
|
|
1694
|
-
import_syntax: "terraform import
|
|
1664
|
+
import_syntax: "terraform import xcsh_bot_infrastructure.example namespace/name",
|
|
1695
1665
|
},
|
|
1696
1666
|
{
|
|
1697
|
-
name: "
|
|
1698
|
-
category: "
|
|
1699
|
-
description: "
|
|
1700
|
-
required: ["name", "
|
|
1667
|
+
name: "mitigated_domain",
|
|
1668
|
+
category: "uncategorized",
|
|
1669
|
+
description: "Mitigated Domain",
|
|
1670
|
+
required: ["name", "namespace", "mitigated_domain"],
|
|
1701
1671
|
minimal_config: {
|
|
1702
1672
|
format: "terraform",
|
|
1703
|
-
source: "_llms-txt/resources/
|
|
1673
|
+
source: "_llms-txt/resources/mitigated_domain.txt#minimal-valid-config",
|
|
1704
1674
|
},
|
|
1705
1675
|
dependencies: {
|
|
1706
1676
|
requires: [],
|
|
1707
1677
|
},
|
|
1708
|
-
import_syntax: "terraform import
|
|
1678
|
+
import_syntax: "terraform import xcsh_mitigated_domain.example namespace/name",
|
|
1709
1679
|
},
|
|
1710
1680
|
{
|
|
1711
|
-
name: "
|
|
1712
|
-
category: "
|
|
1713
|
-
description: "
|
|
1714
|
-
required: ["name"],
|
|
1681
|
+
name: "protected_application",
|
|
1682
|
+
category: "uncategorized",
|
|
1683
|
+
description: "Applications protected by Bot Defense",
|
|
1684
|
+
required: ["name", "namespace", "region"],
|
|
1715
1685
|
minimal_config: {
|
|
1716
1686
|
format: "terraform",
|
|
1717
|
-
source: "_llms-txt/resources/
|
|
1687
|
+
source: "_llms-txt/resources/protected_application.txt#minimal-valid-config",
|
|
1718
1688
|
},
|
|
1719
1689
|
dependencies: {
|
|
1720
1690
|
requires: [],
|
|
1721
1691
|
},
|
|
1722
|
-
import_syntax: "terraform import
|
|
1692
|
+
import_syntax: "terraform import xcsh_protected_application.example namespace/name",
|
|
1723
1693
|
},
|
|
1724
1694
|
{
|
|
1725
|
-
name: "
|
|
1726
|
-
category: "
|
|
1727
|
-
description: "
|
|
1728
|
-
required: ["name", "
|
|
1695
|
+
name: "protected_domain",
|
|
1696
|
+
category: "uncategorized",
|
|
1697
|
+
description: "Domain to protect",
|
|
1698
|
+
required: ["name", "namespace", "protected_domain"],
|
|
1729
1699
|
minimal_config: {
|
|
1730
1700
|
format: "terraform",
|
|
1731
|
-
source: "_llms-txt/resources/
|
|
1701
|
+
source: "_llms-txt/resources/protected_domain.txt#minimal-valid-config",
|
|
1732
1702
|
},
|
|
1733
1703
|
dependencies: {
|
|
1734
1704
|
requires: [],
|
|
1735
1705
|
},
|
|
1736
|
-
import_syntax: "terraform import
|
|
1706
|
+
import_syntax: "terraform import xcsh_protected_domain.example namespace/name",
|
|
1737
1707
|
},
|
|
1738
1708
|
{
|
|
1739
|
-
name: "
|
|
1740
|
-
category: "
|
|
1741
|
-
description: "
|
|
1742
|
-
required: ["name"],
|
|
1709
|
+
name: "registration_approval",
|
|
1710
|
+
category: "uncategorized",
|
|
1711
|
+
description: "Request for admission approval. configuration",
|
|
1712
|
+
required: ["name", "namespace"],
|
|
1743
1713
|
minimal_config: {
|
|
1744
1714
|
format: "terraform",
|
|
1745
|
-
source: "_llms-txt/resources/
|
|
1715
|
+
source: "_llms-txt/resources/registration_approval.txt#minimal-valid-config",
|
|
1746
1716
|
},
|
|
1747
1717
|
dependencies: {
|
|
1748
1718
|
requires: [],
|
|
1749
1719
|
},
|
|
1750
|
-
import_syntax: "terraform import
|
|
1720
|
+
import_syntax: "terraform import xcsh_registration_approval.example namespace/name",
|
|
1751
1721
|
},
|
|
1752
1722
|
{
|
|
1753
1723
|
name: "api_crawler",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OAuthPrompt } from "@f5-sales-demo/pi-ai";
|
|
2
|
+
import { Input } from "@f5-sales-demo/pi-tui";
|
|
3
|
+
|
|
4
|
+
/** Build a login input with the display policy declared by its prompt contract. */
|
|
5
|
+
export function createLoginPromptInput(prompt: Partial<OAuthPrompt>): Input {
|
|
6
|
+
const input = new Input();
|
|
7
|
+
input.setMasked(prompt.secret === true);
|
|
8
|
+
return input;
|
|
9
|
+
}
|