@f5-sales-demo/xcsh 20.8.3 → 20.8.5
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": "20.8.
|
|
4
|
+
"version": "20.8.5",
|
|
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",
|
|
@@ -61,13 +61,13 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@agentclientprotocol/sdk": "1.3.0",
|
|
63
63
|
"@mozilla/readability": "^0.6",
|
|
64
|
-
"@f5-sales-demo/xcsh-stats": "20.8.
|
|
65
|
-
"@f5-sales-demo/pi-agent-core": "20.8.
|
|
66
|
-
"@f5-sales-demo/pi-ai": "20.8.
|
|
67
|
-
"@f5-sales-demo/pi-natives": "20.8.
|
|
68
|
-
"@f5-sales-demo/pi-resource-management": "20.8.
|
|
69
|
-
"@f5-sales-demo/pi-tui": "20.8.
|
|
70
|
-
"@f5-sales-demo/pi-utils": "20.8.
|
|
64
|
+
"@f5-sales-demo/xcsh-stats": "20.8.5",
|
|
65
|
+
"@f5-sales-demo/pi-agent-core": "20.8.5",
|
|
66
|
+
"@f5-sales-demo/pi-ai": "20.8.5",
|
|
67
|
+
"@f5-sales-demo/pi-natives": "20.8.5",
|
|
68
|
+
"@f5-sales-demo/pi-resource-management": "20.8.5",
|
|
69
|
+
"@f5-sales-demo/pi-tui": "20.8.5",
|
|
70
|
+
"@f5-sales-demo/pi-utils": "20.8.5",
|
|
71
71
|
"@sinclair/typebox": "^0.34",
|
|
72
72
|
"@xterm/headless": "^6.0",
|
|
73
73
|
"ajv": "^8.20",
|
|
@@ -17,17 +17,17 @@ export interface BuildInfo {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export const BUILD_INFO: BuildInfo = {
|
|
20
|
-
"version": "20.8.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "20.8.5",
|
|
21
|
+
"commit": "ed354637dc7586f58ebedbea98dea65b304e7122",
|
|
22
|
+
"shortCommit": "ed35463",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v20.8.
|
|
25
|
-
"commitDate": "2026-08-
|
|
26
|
-
"buildDate": "2026-08-
|
|
24
|
+
"tag": "v20.8.5",
|
|
25
|
+
"commitDate": "2026-08-09T13:04:40Z",
|
|
26
|
+
"buildDate": "2026-08-09T13:30:24.105Z",
|
|
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.8.
|
|
31
|
+
"commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/ed354637dc7586f58ebedbea98dea65b304e7122",
|
|
32
|
+
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v20.8.5"
|
|
33
33
|
};
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ConsoleCatalogData } from "./console-catalog-types";
|
|
4
4
|
|
|
5
|
-
export const CONSOLE_CATALOG_VERSION = "
|
|
5
|
+
export const CONSOLE_CATALOG_VERSION = "aa04ae2c206de5bfef275a7ea628d204f6f31d1c";
|
|
6
6
|
|
|
7
7
|
export const CONSOLE_CATALOG_DATA: ConsoleCatalogData = {
|
|
8
|
-
version: "
|
|
8
|
+
version: "aa04ae2c206de5bfef275a7ea628d204f6f31d1c",
|
|
9
9
|
workflows: {
|
|
10
10
|
"address-allocator/create":
|
|
11
11
|
'---\nschema: urn:xcsh:console:workflow:v1\nid: address-allocator-create\nlabel: Create IP Address Allocators\nresource: address-allocator\noperation: create\npreconditions:\n - user_logged_in\n - "role_minimum: admin"\nparams:\n name:\n required: true\n description: IP Address Allocators name (lowercase alphanumeric and hyphens)\n example: example-address-allocator\n address_allocator_mode:\n required: true\n description: Address Allocator Mode\n allocation_unit:\n required: false\n description: Allocation Unit\n default: 0\n address_pool:\n required: false\n description: Address Pool\n default: value\n address_allocation_scheme:\n required: false\n description: "Server-required: Field should be not nil"\n default: value\nsteps:\n - id: navigate-to-list\n action: navigate\n url: /web/workspaces/multi-cloud-network-connect/manage/networking/legacy_network_configuration/address_allocators\n wait_for: text(\'IP Address Allocators\')\n description: Navigate to IP Address Allocators list page\n - id: click-add-tab\n action: click\n selector: text(\'Add IP Address Allocator\')\n wait_for: textbox[name=\'Name\']\n description: Click Add IP Address Allocator to open the create form\n - id: fill-name\n action: fill\n selector: textbox[name=\'Name\']\n value: "{name}"\n description: Enter Name\n - id: select-address_allocator_mode\n action: select\n selector: listbox\n context: Address Allocator Mode section\n value: "{address_allocator_mode}"\n description: Select Address Allocator Mode\n - id: fill-allocation_unit\n action: fill\n selector: spinbutton[name=\'Allocation Unit\']\n value: "{allocation_unit}"\n description: Set Allocation Unit\n - id: fill-address_pool\n action: fill\n selector: ngx-datatable input.form-control\n context: Address Pool table\n value: "{address_pool}"\n description: Enter Address Pool in the existing table row (no Add Item needed — the table ships one empty row)\n - id: select-address_allocation_scheme\n action: select\n selector: listbox\n context: Address Allocation Scheme section\n value: "{address_allocation_scheme}"\n description: Select Address Allocation Scheme\n - id: save\n action: click\n selector: "[class*=\'save-bt\'],[class*=\'submit-button\']"\n context: footer\n wait_for: text(\'{name}\')\n wait_timeout_ms: 30000\n description: Save/submit the form (union selector matches save-bt OR submit-button)\npostconditions:\n - resource_list_page_visible\n - "resource_name_in_list: {name}"\nmetadata:\n confidence: inferred\n discovered_at: 2026-06-24\n console_version: "2025.06"\n notes: Auto-generated by scripts/generate-workflows.ts from api-specs-enriched field metadata.\n',
|
|
@@ -1347,39 +1347,51 @@ export class AgentSession {
|
|
|
1347
1347
|
return;
|
|
1348
1348
|
}
|
|
1349
1349
|
|
|
1350
|
-
if (outcome.safeToContinue) {
|
|
1351
|
-
this.
|
|
1350
|
+
if (!outcome.safeToContinue) {
|
|
1351
|
+
this.#routingCoordinator.getStateMachine().setEscalationFloor(targetTier);
|
|
1352
|
+
return;
|
|
1352
1353
|
}
|
|
1353
1354
|
|
|
1354
|
-
this.#routingCoordinator.
|
|
1355
|
-
|
|
1355
|
+
const previousTier = this.#routingCoordinator.getState().currentTier;
|
|
1356
|
+
const previousFloor = this.#routingCoordinator.getState().escalationFloor;
|
|
1357
|
+
|
|
1358
|
+
try {
|
|
1359
|
+
this.agent.abort();
|
|
1360
|
+
|
|
1361
|
+
this.#routingCoordinator.getStateMachine().setEscalationFloor(targetTier);
|
|
1356
1362
|
this.#routingCoordinator.restoreState({ currentTier: targetTier });
|
|
1357
|
-
}
|
|
1358
1363
|
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1364
|
+
await this.setModelRoutingSwitch(targetModel);
|
|
1365
|
+
const effortMap = this.settings.get("routing.tierEffort") as Record<string, string> | undefined;
|
|
1366
|
+
const { mapTierToEffort } = await import("../routing/effort");
|
|
1367
|
+
const effort = mapTierToEffort(targetTier, effortMap);
|
|
1368
|
+
this.setThinkingLevel(effort as any);
|
|
1369
|
+
|
|
1370
|
+
this.#emitSessionEvent(
|
|
1371
|
+
sanitizeRoutingEvent({
|
|
1372
|
+
type: "routing_escalated",
|
|
1373
|
+
epochId: `route-${Date.now()}-esc`,
|
|
1374
|
+
reasons: reasons,
|
|
1375
|
+
mode: routingMode,
|
|
1376
|
+
effectiveTier: targetTier,
|
|
1377
|
+
state: this.#routingCoordinator.getState(),
|
|
1378
|
+
selectedModel: this.model ? `${this.model.provider}/${this.model.id}` : undefined,
|
|
1379
|
+
escalated: true,
|
|
1380
|
+
}),
|
|
1381
|
+
).catch(() => {});
|
|
1382
|
+
} catch (err) {
|
|
1383
|
+
console.error("Escalation model swap failed", err);
|
|
1384
|
+
this.#routingCoordinator.restoreState({ currentTier: previousTier });
|
|
1385
|
+
if (previousFloor) {
|
|
1386
|
+
this.#routingCoordinator.getStateMachine().setEscalationFloor(previousFloor);
|
|
1387
|
+
} else {
|
|
1388
|
+
this.#routingCoordinator.getStateMachine().clearEscalationFloor();
|
|
1389
|
+
}
|
|
1390
|
+
} finally {
|
|
1379
1391
|
this.#scheduleAgentContinue({ delayMs: 10 });
|
|
1380
1392
|
}
|
|
1381
1393
|
} catch (err) {
|
|
1382
|
-
console.error("Escalation
|
|
1394
|
+
console.error("Escalation setup failed", err);
|
|
1383
1395
|
}
|
|
1384
1396
|
};
|
|
1385
1397
|
this.#trackPostPromptTask(performEscalationModelSwap());
|