@f5-sales-demo/xcsh 20.8.1 → 20.8.3
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 +8 -8
- package/src/cli/office-cli.ts +1 -1
- package/src/config/settings-schema.ts +98 -0
- package/src/index.ts +7 -0
- package/src/internal-urls/build-info.generated.ts +8 -8
- package/src/internal-urls/docs-index.generated.ts +74 -73
- package/src/routing/classifier.ts +95 -0
- package/src/routing/commands.ts +61 -0
- package/src/routing/context-filter.ts +15 -0
- package/src/routing/coordinator.ts +196 -0
- package/src/routing/delegation.ts +83 -0
- package/src/routing/effort.ts +14 -0
- package/src/routing/events.ts +80 -0
- package/src/routing/index.ts +13 -0
- package/src/routing/presets.ts +180 -0
- package/src/routing/profiler.ts +111 -0
- package/src/routing/resolver.ts +117 -0
- package/src/routing/state-machine.ts +107 -0
- package/src/routing/types.ts +110 -0
- package/src/session/agent-session.ts +516 -5
- package/src/session/session-manager.ts +5 -0
- package/src/slash-commands/builtin-registry.ts +30 -0
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.3",
|
|
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.3",
|
|
65
|
+
"@f5-sales-demo/pi-agent-core": "20.8.3",
|
|
66
|
+
"@f5-sales-demo/pi-ai": "20.8.3",
|
|
67
|
+
"@f5-sales-demo/pi-natives": "20.8.3",
|
|
68
|
+
"@f5-sales-demo/pi-resource-management": "20.8.3",
|
|
69
|
+
"@f5-sales-demo/pi-tui": "20.8.3",
|
|
70
|
+
"@f5-sales-demo/pi-utils": "20.8.3",
|
|
71
71
|
"@sinclair/typebox": "^0.34",
|
|
72
72
|
"@xterm/headless": "^6.0",
|
|
73
73
|
"ajv": "^8.20",
|
package/src/cli/office-cli.ts
CHANGED
|
@@ -260,7 +260,7 @@ export async function runOfficeCommand(
|
|
|
260
260
|
// with its stack intact, because swallowing a real failure here is how the original silent
|
|
261
261
|
// 404 survived.
|
|
262
262
|
if (!(err instanceof OfficePaneUnavailableError)) throw err;
|
|
263
|
-
console.error(err.message);
|
|
263
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
264
264
|
process.exitCode = 1;
|
|
265
265
|
}
|
|
266
266
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { THINKING_EFFORTS } from "@f5-sales-demo/pi-ai";
|
|
2
|
+
import type { RoutingSettings } from "../routing/types";
|
|
2
3
|
|
|
3
4
|
/** Unified settings schema - single source of truth for all settings.
|
|
4
5
|
* Unified settings schema - single source of truth for all settings.
|
|
@@ -530,6 +531,102 @@ export const SETTINGS_SCHEMA = {
|
|
|
530
531
|
},
|
|
531
532
|
},
|
|
532
533
|
|
|
534
|
+
// Dynamic routing
|
|
535
|
+
"routing.mode": {
|
|
536
|
+
type: "enum",
|
|
537
|
+
values: ["off", "shadow", "auto"] as const,
|
|
538
|
+
default: "off",
|
|
539
|
+
ui: {
|
|
540
|
+
tab: "model",
|
|
541
|
+
label: "Routing Mode",
|
|
542
|
+
description: "Dynamic model routing mode (off, shadow, auto)",
|
|
543
|
+
submenu: true,
|
|
544
|
+
},
|
|
545
|
+
},
|
|
546
|
+
|
|
547
|
+
"routing.profiler": {
|
|
548
|
+
type: "enum",
|
|
549
|
+
values: ["rules", "hybrid"] as const,
|
|
550
|
+
default: "hybrid",
|
|
551
|
+
ui: {
|
|
552
|
+
tab: "model",
|
|
553
|
+
label: "Routing Profiler",
|
|
554
|
+
description: "Task complexity profiling method (rules or hybrid)",
|
|
555
|
+
submenu: true,
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
|
+
|
|
559
|
+
"routing.familyPolicy": {
|
|
560
|
+
type: "enum",
|
|
561
|
+
values: ["sticky", "configured-mixed"] as const,
|
|
562
|
+
default: "sticky",
|
|
563
|
+
ui: {
|
|
564
|
+
tab: "model",
|
|
565
|
+
label: "Family Policy",
|
|
566
|
+
description: "Provider family policy (sticky or configured-mixed)",
|
|
567
|
+
submenu: true,
|
|
568
|
+
},
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
"routing.delegation": {
|
|
572
|
+
type: "enum",
|
|
573
|
+
values: ["off", "read-only"] as const,
|
|
574
|
+
default: "read-only",
|
|
575
|
+
ui: {
|
|
576
|
+
tab: "model",
|
|
577
|
+
label: "Autonomous Delegation",
|
|
578
|
+
description: "Autonomous delegation mode for subtasks",
|
|
579
|
+
submenu: true,
|
|
580
|
+
},
|
|
581
|
+
},
|
|
582
|
+
|
|
583
|
+
"routing.delegationMaxTasks": {
|
|
584
|
+
type: "number",
|
|
585
|
+
default: 3,
|
|
586
|
+
ui: {
|
|
587
|
+
tab: "model",
|
|
588
|
+
label: "Delegation Max Subtasks",
|
|
589
|
+
description: "Maximum subtasks for autonomous delegation (1-3)",
|
|
590
|
+
submenu: true,
|
|
591
|
+
},
|
|
592
|
+
},
|
|
593
|
+
|
|
594
|
+
"routing.downshiftAfterTurns": {
|
|
595
|
+
type: "number",
|
|
596
|
+
default: 2,
|
|
597
|
+
ui: {
|
|
598
|
+
tab: "model",
|
|
599
|
+
label: "Downshift Hysteresis Turns",
|
|
600
|
+
description: "Consecutive turns required before downshifting model tier",
|
|
601
|
+
submenu: true,
|
|
602
|
+
},
|
|
603
|
+
},
|
|
604
|
+
|
|
605
|
+
"routing.tierEffort": {
|
|
606
|
+
type: "record",
|
|
607
|
+
default: {
|
|
608
|
+
utility: "low",
|
|
609
|
+
balanced: "medium",
|
|
610
|
+
frontier: "high",
|
|
611
|
+
},
|
|
612
|
+
ui: {
|
|
613
|
+
tab: "model",
|
|
614
|
+
label: "Tier Effort Mapping",
|
|
615
|
+
description: "Map routing tiers to thinking effort levels",
|
|
616
|
+
submenu: true,
|
|
617
|
+
},
|
|
618
|
+
},
|
|
619
|
+
|
|
620
|
+
"routing.pools": {
|
|
621
|
+
type: "record",
|
|
622
|
+
default: {},
|
|
623
|
+
},
|
|
624
|
+
|
|
625
|
+
"routing.disabledPresets": {
|
|
626
|
+
type: "array",
|
|
627
|
+
default: [],
|
|
628
|
+
},
|
|
629
|
+
|
|
533
630
|
// Sampling
|
|
534
631
|
temperature: {
|
|
535
632
|
type: "number",
|
|
@@ -2203,6 +2300,7 @@ export interface GroupTypeMap {
|
|
|
2203
2300
|
modelRoles: Record<string, string>;
|
|
2204
2301
|
modelTags: ModelTagsSettings;
|
|
2205
2302
|
cycleOrder: string[];
|
|
2303
|
+
routing: RoutingSettings;
|
|
2206
2304
|
}
|
|
2207
2305
|
|
|
2208
2306
|
export type GroupPrefix = keyof GroupTypeMap;
|
package/src/index.ts
CHANGED
|
@@ -38,6 +38,13 @@ export * from "./modes";
|
|
|
38
38
|
export * from "./modes/components";
|
|
39
39
|
// Theme utilities for custom tools
|
|
40
40
|
export * from "./modes/theme/theme";
|
|
41
|
+
export * from "./routing/classifier";
|
|
42
|
+
export * from "./routing/coordinator";
|
|
43
|
+
export * from "./routing/delegation";
|
|
44
|
+
export * from "./routing/presets";
|
|
45
|
+
export * from "./routing/profiler";
|
|
46
|
+
export * from "./routing/state-machine";
|
|
47
|
+
export type * from "./routing/types";
|
|
41
48
|
// SDK for programmatic usage
|
|
42
49
|
export * from "./sdk";
|
|
43
50
|
export * from "./session/agent-session";
|
|
@@ -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.3",
|
|
21
|
+
"commit": "a53c648993e3b94f865921929f85bdf491447000",
|
|
22
|
+
"shortCommit": "a53c648",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v20.8.
|
|
25
|
-
"commitDate": "2026-08-
|
|
26
|
-
"buildDate": "2026-08-
|
|
24
|
+
"tag": "v20.8.3",
|
|
25
|
+
"commitDate": "2026-08-09T05:36:30Z",
|
|
26
|
+
"buildDate": "2026-08-09T06:08:18.709Z",
|
|
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/a53c648993e3b94f865921929f85bdf491447000",
|
|
32
|
+
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v20.8.3"
|
|
33
33
|
};
|