@f5-sales-demo/xcsh 20.1.2 → 20.2.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/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [20.2.3] - 2026-08-02
6
+
7
+ ### Fixed
8
+
9
+ - Made sandbox launch-flag scope errors consistent in either argument position, report usage exit 2 without parser exceptions, and direct operators to the flag-free conformance check ([#2834](https://github.com/f5-sales-demo/xcsh/issues/2834))
10
+
11
+ ## [20.2.1] - 2026-08-01
12
+
13
+ ### Fixed
14
+
15
+ - Made root launch flags reject ambiguous subcommand placement without entering agent startup, kept subcommand help correctly routed, and added installed conformance coverage that explicit grants restore parent enumeration ([#2817](https://github.com/f5-sales-demo/xcsh/issues/2817))
16
+
17
+ ## [20.2.0] - 2026-08-01
18
+
19
+ ### Breaking Changes
20
+
21
+ - Adopted browser bridge contract 2.0: Chrome chat requests now require explicit tab and session routing, terminal chat errors expose only a closed reason code, and Chrome clients can no longer configure provider credentials or send console login credentials through the bridge ([#2802](https://github.com/f5-sales-demo/xcsh/issues/2802))
22
+
23
+ ### Fixed
24
+
25
+ - Made root launch flags reject ambiguous subcommand placement without entering agent startup, kept subcommand help correctly routed, and added installed conformance coverage that explicit grants restore parent enumeration ([#2817](https://github.com/f5-sales-demo/xcsh/issues/2817))
26
+
5
27
  ## [20.1.2] - 2026-08-01
6
28
 
7
29
  ### Fixed
@@ -36,7 +58,7 @@
36
58
 
37
59
  - Made operator-owned home files, CLI configuration, shell profiles, SSH state, plugins, skills, and settings consistently writable while preserving cross-session and data-root isolation ([#2720](https://github.com/f5-sales-demo/xcsh/issues/2720))
38
60
  - Prevented sandbox sessions from enumerating the session root's parent while preserving named operator access and explicit read-grant overrides ([#2725](https://github.com/f5-sales-demo/xcsh/issues/2725))
39
- - Included the generated API-spec indexes in npm artifacts and exercised them in tarball install smoke tests ([#2760](https://github.com/f5-sales-demo/xcsh/issues/2760))
61
+ - Included the generated API-spec indices in npm artifacts and exercised them in tarball install smoke tests ([#2760](https://github.com/f5-sales-demo/xcsh/issues/2760))
40
62
 
41
63
  ## [20.0.0] - 2026-08-01
42
64
 
@@ -225,7 +247,7 @@
225
247
  - Fixed relationship column pollution in `flattenRecord` where null relationships (e.g., `Account: null`) created a bare `Account` column alongside `Account.Name` from non-null records
226
248
  - Fixed aggregate SOQL columns rendering as `expr0`/`expr1` by adding aliases (`TotalDeals`, `TotalAmount`) to template queries in sf-query prompt
227
249
  - Fixed duplicate org entries in welcome-screen Salesforce status check (`welcome-checks.ts`)
228
- - Fixed pre-existing biome lint warning in `glab/formatters.ts` (string concatenation -> template literal)
250
+ - Fixed pre-existing biome linting warning in `glab/formatters.ts` (string concatenation -> template literal)
229
251
  - Fixed pre-existing test timeouts in `model-registry-runtime-provider.test.ts` and `interactive-mode-lsp-startup.test.ts` by increasing timeout for integration-level tests that shell out to CLIs
230
252
  - Fixed profile caching test contaminating real `~/.sf/config.json` with mock data by adding HOME isolation
231
253
 
@@ -477,7 +499,7 @@ Refs: #173.
477
499
  - Deferred diagnostics support in LSP writethrough: `onDeferredDiagnostics` callback and `deferredSignal` in `WritethroughOptions` allow callers to receive diagnostics that arrive after the main 5-second timeout
478
500
  - Language detection for `.pm` (Perl modules), `.astro` (Astro framework), and special filenames `containerfile` and `justfile`
479
501
  - Workspace-scoped diagnostics and reload actions via `*` file parameter; `diagnostics` action now supports `*` for workspace-wide diagnostics across all configured servers
480
- - Socket-mode DAP adapter support for debuggers like dlv that communicate via network sockets instead of stdio; Linux uses unix domain sockets, macOS/other platforms use TCP with client-addr dialing
502
+ - Socket-mode DAP adapter support for debuggers like dlv that communicate via network sockets instead of stdio; Linux uses Unix domain sockets, macOS/other platforms use TCP with client-addr dialing
481
503
  - Improved extensionless binary debugging: native debuggers (gdb, lldb-dap) and adapters with root markers are now preferred over unrelated adapters like debugpy
482
504
  - Debug tool with DAP (Debug Adapter Protocol) support for launching and attaching debuggers, setting breakpoints, stepping through execution, inspecting threads/stack/variables, and evaluating expressions
483
505
  - Debug adapter configuration for gdb, lldb-dap, debugpy, and dlv with language/file-type matching and root marker detection
@@ -588,7 +610,7 @@ Refs: #173.
588
610
  - Removed unused `_createErrorToolResult` helper function from RPC host-tools module
589
611
  - Fixed Go receiver method indentation in append operations to preserve relative indentation from the anchor chunk
590
612
  - Fixed Go type chunk line counts to report only the type body lines instead of including grouped receiver methods
591
- - Fixed enum variant insertion to avoid adding extra blank lines between variants
613
+ - Fixed enum variant insertion to avoid adding extra empty lines between variants
592
614
  - Chunk read output now correctly preserves embedded CRC in selectors (e.g., `class_Foo.fn_bar#ZZPM`) instead of stripping them during path parsing
593
615
  - Chunk edit error messages now consistently report checksum mismatches with format `Checksum mismatch` instead of variable phrasing
594
616
  - Chunk-mode read output now correctly displays scoped response trees showing only touched chunks and adjacent siblings, preventing unrelated distant chunks from appearing in responses
@@ -663,7 +685,7 @@ Refs: #173.
663
685
 
664
686
  ### Added
665
687
 
666
- - Added URL reading capability to `read` tool with support for web pages, GitHub issues, Stack Overflow, Wikipedia, Reddit, NPM, arXiv, technical blogs, RSS/Atom feeds, and JSON endpoints
688
+ - Added URL reading capability to `read` tool with support for web pages, GitHub issues, Stack Overflow, Wikipedia, Reddit, npm, arXiv, technical blogs, RSS/Atom feeds, and JSON endpoints
667
689
  - Added `offset` and `limit` parameter support for paginating cached URL fetch results
668
690
  - Added URL caching mechanism to avoid redundant network requests when reading the same URL multiple times
669
691
 
@@ -1388,7 +1410,7 @@ Refs: #173.
1388
1410
  - Added `refreshProvider()` method to refresh models for a specific provider on demand
1389
1411
  - Added `getDiscoverableProviders()` method to list all configured discoverable providers
1390
1412
  - Added `getProviderDiscoveryState()` method to inspect provider discovery status, cache age, and errors
1391
- - Added provider discovery state tracking with status indicators (idle, ok, cached, unavailable, unauthenticated)
1413
+ - Added provider discovery state tracking with status indicators (idle, OK, cached, unavailable, unauthenticated)
1392
1414
  - Added model caching with 24-hour TTL to preserve discovered models across sessions
1393
1415
  - Added provider-specific empty state messages in model selector showing cache age and discovery status
1394
1416
  - Added live provider refresh when switching provider tabs in model selector
@@ -1657,7 +1679,7 @@ Refs: #173.
1657
1679
 
1658
1680
  - Updated hashline prompt documentation with clearer operation syntax and improved examples showing full edit structure with path and edits array
1659
1681
  - Refactored `href` Handlebars helper to return JSON-quoted strings for safer embedding in JSON blocks within prompts
1660
- - Improved `hashlineParseText` to correctly preserve blank lines and trailing empty strings in array input while stripping trailing newlines from string input
1682
+ - Improved `hashlineParseText` to correctly preserve empty lines and trailing empty strings in array input while stripping trailing newlines from string input
1661
1683
  - Optimized duplicate line detection in range replacements to use trimmed comparison, reducing false positives from whitespace differences
1662
1684
  - Refactored Kagi search provider to use shared Kagi API utilities from `web/kagi` module
1663
1685
  - Changed HTML-to-text rendering priority order to try Kagi first, then Jina, Trafilatura, and Lynx
@@ -3256,7 +3278,7 @@ Refs: #173.
3256
3278
  - Changed screenshot format to always use PNG instead of supporting JPEG with quality parameter
3257
3279
  - Changed default extract_readable format from text to markdown
3258
3280
  - Changed screenshot storage to use temporary directory with Snowflake IDs instead of artifacts directory
3259
- - Changed ResizedImage interface to return buffer as Uint8Array with lazy-loaded base64 data getter for improved memory efficiency
3281
+ - Changed ResizedImage interface to return buffer as Uint8Array with lazy loaded base64 data getter for improved memory efficiency
3260
3282
 
3261
3283
  ### Removed
3262
3284
 
@@ -3855,7 +3877,7 @@ Refs: #173.
3855
3877
  - Added detailed phased execution pattern with four phases (Foundation, Parallel Implementation, Integration, Dependent Layer) and WASM-to-N-API migration example
3856
3878
  - Added table of dependency patterns that must be sequential (API creation before bindings, interface definition before implementation, etc.)
3857
3879
  - Added phased execution guidance for migrations and refactors to prevent parallel work on dependent layers
3858
- - Added example demonstrating phased execution pattern for porting WASM to N-API with sequential foundation, parallel implementation, integration, and dependent layer phases
3880
+ - Added example demonstrating phased execution pattern for porting Wasm to N-API with sequential foundation, parallel implementation, integration, and dependent layer phases
3859
3881
 
3860
3882
  ### Changed
3861
3883
 
@@ -3865,7 +3887,7 @@ Refs: #173.
3865
3887
  - Updated binary build process to exclude worker files from compilation, reducing binary size
3866
3888
  - Modified update mechanism to download and install native addon alongside CLI binary for platform-specific functionality
3867
3889
  - Updated find tool to emit streaming match updates via callback, allowing real-time progress feedback during file searches
3868
- - Modified find tool to use native match metadata (mtime, fileType) from WASM layer instead of redundant filesystem stats, improving performance
3890
+ - Modified find tool to use native match metadata (mtime, fileType) from Wasm layer instead of redundant filesystem stats, improving performance
3869
3891
  - Restructured Task tool documentation to emphasize context quality and explicit API contracts for subagent success
3870
3892
  - Updated task execution guidance to require structured context with Goal, Constraints, Existing Code, and API Contract sections
3871
3893
  - Reorganized parallelization rules with explicit dependency patterns and phased execution guidance for migrations
@@ -3952,7 +3974,7 @@ Refs: #173.
3952
3974
  - Git branch detection in status line now works synchronously without race conditions
3953
3975
  - Shell session initialization properly restores trap handlers and shell functions after command execution
3954
3976
  - Sanitized `BASH_ENV`/`ENV` during persistent shell startup and snapshot creation to prevent basic shells from exiting immediately.
3955
- - Cached shell snapshots per shell binary to avoid sourcing zsh snapshots in bash sessions.
3977
+ - Cached shell snapshots per shell binary to avoid sourcing Zsh snapshots in bash sessions.
3956
3978
  - Filtered unsafe bash options (onecmd/monitor/restricted) out of shell snapshots to prevent session exits.
3957
3979
 
3958
3980
  ## [9.2.2] - 2026-01-31
@@ -4135,7 +4157,7 @@ Refs: #173.
4135
4157
  ### Fixed
4136
4158
 
4137
4159
  - Fixed plan reference injection and workflow prompt parameters for plan mode
4138
- - Fixed tool downloads hanging on slow/blocked GitHub by adding timeouts and zip extraction fallback
4160
+ - Fixed tool downloads hanging on slow/blocked GitHub by adding timeouts and ZIP extraction fallback
4139
4161
  - Fixed missing UI notification when tools are downloaded or installed on demand
4140
4162
 
4141
4163
  ## [8.4.0] - 2026-01-25
@@ -4228,7 +4250,7 @@ Refs: #173.
4228
4250
  - Added Python kernel session pooling with MAX_KERNEL_SESSIONS limit and automatic eviction of oldest sessions
4229
4251
  - Added automatic idle kernel session cleanup timer (5-minute timeout, 30-second interval)
4230
4252
  - Added types/assets/index.d.ts for global TypeScript module declarations supporting `.md`, `.py`, and `.wasm?raw` imports
4231
- - Added bunfig.toml loader configuration for importing markdown, Python, and WASM files as text modules
4253
+ - Added bunfig.toml loader configuration for importing markdown, Python, and Wasm files as text modules
4232
4254
  - Added color manipulation utilities (hexToHsv, hsvToHex, shiftHue) to pi-utils for accessible theme adjustments
4233
4255
  - Added color-blind mode setting for improved accessibility
4234
4256
  - Added filesystem error type guards (isEnoent, isEacces, isPerm, isEnotempty, isFsError, hasFsCode) to pi-utils for safe error handling
@@ -4288,7 +4310,7 @@ Refs: #173.
4288
4310
  - Changed Python kernel resource management with gateway shutdown on session disposal
4289
4311
  - Updated TypeScript configuration for better publish-time configuration handling with tsconfig.publish.json
4290
4312
  - Updated TypeScript and Bun configuration for monorepo-wide build consistency and reduced boilerplate
4291
- - Removed WASM base64 encoding build script; imports now use Bun loader with `wasm?raw` query parameter
4313
+ - Removed Wasm base64 encoding build script; imports now use Bun loader with `wasm?raw` query parameter
4292
4314
  - Unified TypeScript checking pipeline with tsgo-based configuration instead of per-package tsconfig.publish.json boilerplate
4293
4315
  - Refactored scanDirectoryForSkills to use async/await with concurrent directory scanning via Promise.all
4294
4316
  - Improved error logging in settings manager for config file access failures
@@ -4706,18 +4728,18 @@ Refs: #173.
4706
4728
 
4707
4729
  ### Changed
4708
4730
 
4709
- - Updated WASM loading to use streaming for development environments with base64 fallback
4731
+ - Updated Wasm loading to use streaming for development environments with base64 fallback
4710
4732
  - Added scripts directory to published package files
4711
4733
 
4712
4734
  ## [5.7.68] - 2026-01-18
4713
4735
 
4714
4736
  ### Changed
4715
4737
 
4716
- - Updated WASM loading to use base64-encoded WASM for better compatibility with compiled binaries
4738
+ - Updated Wasm loading to use base64-encoded Wasm for better compatibility with compiled binaries
4717
4739
 
4718
4740
  ### Fixed
4719
4741
 
4720
- - Fixed WASM loading issues in compiled binary builds
4742
+ - Fixed Wasm loading issues in compiled binary builds
4721
4743
 
4722
4744
  ## [5.7.67] - 2026-01-18
4723
4745
 
@@ -4900,10 +4922,10 @@ Refs: #173.
4900
4922
 
4901
4923
  ### Changed
4902
4924
 
4903
- - Replaced wasm-vips with Photon for more stable WASM image processing
4925
+ - Replaced wasm-vips with Photon for more stable Wasm image processing
4904
4926
  - Added graceful fallback to original images when image resizing fails
4905
4927
  - Added error handling for image conversion failures in interactive mode to prevent crashes
4906
- - Replace wasm-vips with Photon for more stable WASM image processing (fixes worker thread crashes)
4928
+ - Replace wasm-vips with Photon for more stable Wasm image processing (fixes worker thread crashes)
4907
4929
 
4908
4930
  ## [5.0.0] - 2026-01-12
4909
4931
 
@@ -5113,7 +5135,7 @@ Refs: #173.
5113
5135
  - Separated `/export` and `/dump` commands—`/export` now only exports to HTML file, while `/dump` copies session transcript to clipboard
5114
5136
  - Updated `/export` command to no longer accept `--copy` flag (use `/dump` instead)
5115
5137
  - Changed prompt template rendering to use Handlebars instead of simple string replacement
5116
- - Updated prompt layout optimization to normalize indentation and collapse excessive blank lines
5138
+ - Updated prompt layout optimization to normalize indentation and collapse excessive empty lines
5117
5139
  - Changed auth migration to merge credentials per-provider instead of skipping when any credentials exist in database
5118
5140
  - Migrated settings and auth credential storage from JSON files to SQLite database (agent.db)
5119
5141
  - Updated credential migration message to reference agent.db instead of auth.json
@@ -5205,7 +5227,7 @@ Refs: #173.
5205
5227
  - `pi.sendUserMessage()` for sending user messages from extensions
5206
5228
  - Extension UI dialogs (`select`, `confirm`, `input`) support `timeout` option with live countdown display
5207
5229
  - Extension UI dialogs accept optional `AbortSignal` to programmatically dismiss dialogs
5208
- - Async extension factories for dynamic imports and lazy-loaded dependencies
5230
+ - Async extension factories for dynamic imports and lazy loaded dependencies
5209
5231
  - `user_bash` event for intercepting user `!`/`!!` commands
5210
5232
  - Built-in renderers used automatically for tool overrides without custom `renderCall`/`renderResult`
5211
5233
  - `InteractiveMode`, `runPrintMode()`, `runRpcMode()` exported for building custom run modes
@@ -5407,7 +5429,7 @@ Refs: #173.
5407
5429
  - Changed YouTube scraper to use async command execution with proper stream handling
5408
5430
  - Improved rust-analyzer diagnostic polling to use version-based stability detection instead of time-based delays
5409
5431
  - Changed theme icons for extension types to use Unicode symbols (✧, ⚒) instead of text abbreviations (SK, TL, MCP)
5410
- - Changed task tool to use short CamelCase task IDs instead of agent-based naming (e.g., 'SessionStore' instead of 'explore_0')
5432
+ - Changed task tool to use short camelCase task IDs instead of agent-based naming (e.g., 'SessionStore' instead of 'explore_0')
5411
5433
  - Changed task tool to accept single `agent` parameter at top level instead of per-task agent specification
5412
5434
  - Changed reviewer agent to use `complete` tool instead of `submit_review` for finishing reviews
5413
5435
  - Changed theme icons for extensions to use Unicode symbols instead of text abbreviations
@@ -5532,7 +5554,7 @@ Refs: #173.
5532
5554
 
5533
5555
  ### Changed
5534
5556
 
5535
- - Refactored tool renderers to be co-located with their respective tool implementations for improved code organization
5557
+ - Refactored tool renderers to be colocated with their respective tool implementations for improved code organization
5536
5558
  - Changed web search to try all configured providers in sequence with fallback before reporting errors
5537
5559
  - Changed default Anthropic web search model from `claude-sonnet-4-5-20250514` to `claude-haiku-4-5`
5538
5560
  - Changed read tool to show first 50KB of oversized lines instead of directing users to bash sed
@@ -5861,11 +5883,11 @@ Refs: #173.
5861
5883
 
5862
5884
  - Added shell environment snapshot to preserve user aliases, functions, and shell options when executing bash commands
5863
5885
  - Added support for `OMP_BASH_NO_CI`, `OMP_BASH_NO_LOGIN`, and `OMP_SHELL_PREFIX` environment variables for shell customization
5864
- - Added zsh support alongside bash for shell detection and configuration
5886
+ - Added Zsh support alongside bash for shell detection and configuration
5865
5887
 
5866
5888
  ### Changed
5867
5889
 
5868
- - Changed shell detection to prefer user's `$SHELL` when it's bash or zsh, with improved fallback path resolution
5890
+ - Changed shell detection to prefer user's `$SHELL` when it's bash or Zsh, with improved fallback path resolution
5869
5891
  - Changed Edit tool to reject `.ipynb` files with guidance to use NotebookEdit tool instead
5870
5892
 
5871
5893
  ## [1.500.0] - 2026-01-03
@@ -5955,7 +5977,7 @@ Refs: #173.
5955
5977
  - LSP server warmup at startup: LSP servers are now started at launch to avoid cold-start delays when first writing files.
5956
5978
  - LSP server status in welcome banner: Shows which language servers are active and ready.
5957
5979
  - Edit fuzzy match setting: Added `edit.fuzzyMatch` setting (enabled by default) to control whether the edit tool accepts high-confidence fuzzy matches for whitespace/indentation differences. Toggle via `/settings`.
5958
- - Multi-server LSP diagnostics: Diagnostics now query all applicable language servers for a file type. For TypeScript/JavaScript projects with Biome, this means both type errors (from tsserver) and lint errors (from Biome) are reported together.
5980
+ - Multi-server LSP diagnostics: Diagnostics now query all applicable language servers for a file type. For TypeScript/JavaScript projects with Biome, this means both type errors (from tsserver) and linting errors (from Biome) are reported together.
5959
5981
  - Comprehensive LSP server configurations for 40+ languages including Rust, Go, Python, Java, Kotlin, Scala, Haskell, OCaml, Elixir, Ruby, PHP, C#, Lua, Nix, and many more. Each server includes sensible defaults for args, settings, and init options.
5960
5982
  - Extended LSP config file search paths: Now searches for `lsp.json`, `.lsp.json` in project root and `.omp/` subdirectory, plus user-level configs in `~/.omp/` and home directory.
5961
5983
 
@@ -6794,7 +6816,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
6794
6816
 
6795
6817
  - Fixed read tool failing on macOS screenshot filenames due to Unicode Narrow No-Break Space (U+202F) in timestamp. Added fallback to try macOS variant paths and consolidated duplicate expandPath functions into shared path-utils.ts. ([#181](https://github.com/badlogic/pi-mono/pull/181) by [@nicobailon](https://github.com/nicobailon))
6796
6818
 
6797
- - Fixed double blank lines rendering after markdown code blocks ([#173](https://github.com/badlogic/pi-mono/pull/173) by [@markusylisiurunen](https://github.com/markusylisiurunen))
6819
+ - Fixed double empty lines rendering after markdown code blocks ([#173](https://github.com/badlogic/pi-mono/pull/173) by [@markusylisiurunen](https://github.com/markusylisiurunen))
6798
6820
 
6799
6821
  ## [0.20.1] - 2025-12-13
6800
6822
 
@@ -7235,7 +7257,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
7235
7257
 
7236
7258
  ### Fixed
7237
7259
 
7238
- - `@`-references now handle special characters in file names (spaces, quotes, unicode)
7260
+ - `@`-references now handle special characters in filenames (spaces, quotes, unicode)
7239
7261
  - Fixed cursor positioning issues with multi-byte unicode characters in editor
7240
7262
 
7241
7263
  ## [0.10.4] - 2025-11-28
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@f5-sales-demo/xcsh",
4
- "version": "20.1.2",
4
+ "version": "20.2.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",
@@ -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": "20.1.2",
61
- "@f5-sales-demo/pi-agent-core": "20.1.2",
62
- "@f5-sales-demo/pi-ai": "20.1.2",
63
- "@f5-sales-demo/pi-natives": "20.1.2",
64
- "@f5-sales-demo/pi-resource-management": "20.1.2",
65
- "@f5-sales-demo/pi-tui": "20.1.2",
66
- "@f5-sales-demo/pi-utils": "20.1.2",
60
+ "@f5-sales-demo/xcsh-stats": "20.2.3",
61
+ "@f5-sales-demo/pi-agent-core": "20.2.3",
62
+ "@f5-sales-demo/pi-ai": "20.2.3",
63
+ "@f5-sales-demo/pi-natives": "20.2.3",
64
+ "@f5-sales-demo/pi-resource-management": "20.2.3",
65
+ "@f5-sales-demo/pi-tui": "20.2.3",
66
+ "@f5-sales-demo/pi-utils": "20.2.3",
67
67
  "@sinclair/typebox": "^0.34",
68
68
  "@xterm/headless": "^6.0",
69
69
  "ajv": "^8.20",
@@ -26,7 +26,7 @@ export interface ExtensionCapabilities {
26
26
 
27
27
  export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
28
28
  "version": "0.1.0",
29
- "contractVersion": "1.12.0",
29
+ "contractVersion": "2.0.0",
30
30
  "multiPortDiscovery": true,
31
31
  "protocol": "tool_request/result",
32
32
  "tools": [
@@ -128,33 +128,6 @@ export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
128
128
  "mutates": true
129
129
  }
130
130
  },
131
- {
132
- "name": "login",
133
- "summary": "Drive the F5 XC OIDC/Keycloak login end-to-end (production + staging consoles).",
134
- "category": "navigation",
135
- "params": {
136
- "type": "object",
137
- "required": [
138
- "email",
139
- "password",
140
- "consoleUrl"
141
- ],
142
- "properties": {
143
- "email": {
144
- "type": "string"
145
- },
146
- "password": {
147
- "type": "string"
148
- },
149
- "consoleUrl": {
150
- "type": "string"
151
- }
152
- }
153
- },
154
- "flags": {
155
- "mutates": true
156
- }
157
- },
158
131
  {
159
132
  "name": "scroll_to",
160
133
  "summary": "Scroll an AX-ref element into view.",
@@ -617,7 +590,7 @@ export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
617
590
  },
618
591
  {
619
592
  "name": "diag_bridges",
620
- "summary": "List discovered xcsh bridges (port, tenant, env, sessionId, lastSeen) for multi-session diagnostics.",
593
+ "summary": "List discovered xcsh bridge health without tenant, environment, or session identifiers.",
621
594
  "category": "read",
622
595
  "params": {
623
596
  "type": "object",
@@ -645,16 +618,6 @@ export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
645
618
  },
646
619
  "flags": {}
647
620
  },
648
- {
649
- "name": "capture_login_flow",
650
- "summary": "Diagnostic: captured login redirect chain annotated with tenant/env (Phase 0b).",
651
- "category": "read",
652
- "params": {
653
- "type": "object",
654
- "properties": {}
655
- },
656
- "flags": {}
657
- },
658
621
  {
659
622
  "name": "wait_for_api_response",
660
623
  "summary": "Wait for a network response whose URL matches a pattern.",
@@ -786,29 +749,6 @@ export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
786
749
  }
787
750
  ],
788
751
  "features": {
789
- "handshake": {
790
- "serveKind": [
791
- "office",
792
- "browser"
793
- ],
794
- "officePortRange": [
795
- 19242,
796
- 19261
797
- ],
798
- "officeWssPortRange": [
799
- 19342,
800
- 19361
801
- ],
802
- "browserPortRange": [
803
- 19222,
804
- 19241
805
- ],
806
- "browserWssPortRange": [
807
- 19322,
808
- 19341
809
- ],
810
- "description": "hello_ack advertises serveKind — how the bridge was STARTED (office-serve vs Chrome worker), distinct from the client's announced host. `xcsh office serve` binds the dedicated office port range and advertises serveKind:\"office\"; the Chrome worker binds the browser range and advertises \"browser\". The Office pane scans only the office wss range AND filters on serveKind:\"office\", so it can never adopt a Chrome worker (a serveKind absent/null is treated as ineligible)."
811
- },
812
752
  "explainMode": {
813
753
  "tool": "set_explain_mode",
814
754
  "default": false,
@@ -855,14 +795,7 @@ export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
855
795
  "host_tool_call",
856
796
  "host_tool_update",
857
797
  "host_tool_result",
858
- "host_tool_cancel",
859
- "configure",
860
- "configure_ack",
861
- "configure_error",
862
- "list_skills",
863
- "skills",
864
- "list_commands",
865
- "commands"
798
+ "host_tool_cancel"
866
799
  ],
867
800
  "description": "User ↔ xcsh chat over the bridge. The extension side panel sends chat_request (with mode and page-context snapshot); xcsh streams chat_delta tokens then a terminal chat_done (with reference links) or chat_error. Chat ids are prefixed \"c-\". Tool calls during a turn use the normal tool_request flow. chat_stop halts a streaming response. chat_tool_notice is emitted by the EXTENSION (the service worker) to the panel as a best-effort UI signal when a tool runs during a turn — it is NOT sent by xcsh; xcsh must not produce it to avoid double-rendering in the panel.",
868
801
  "promptHints": {
@@ -882,6 +815,6 @@ export const EXTENSION_CAPABILITIES: ExtensionCapabilities = {
882
815
  }
883
816
  };
884
817
 
885
- export const EXTENSION_CONTRACT_VERSION = "1.12.0";
818
+ export const EXTENSION_CONTRACT_VERSION = "2.0.0";
886
819
 
887
- export const EXTENSION_TOOL_NAMES: readonly string[] = ["ping","capabilities","reload","debug_exec","detach","set_bridge_port","navigate","login","scroll_to","resize_window","tabs_list","tabs_create","tabs_close","click","click_element","click_xy","type_text","form_input","key_press","select_option","label_select","file_upload","read_ax","get_page_text","query_dom","find","wait_for","assert_text","screenshot","read_console","read_network","diag_suspension","diag_bridges","diag_activation","diag_ttft","capture_login_flow","wait_for_api_response","get_page_context","javascript_tool","browser_batch","set_explain_mode","annotate"];
820
+ export const EXTENSION_TOOL_NAMES: readonly string[] = ["ping","capabilities","reload","debug_exec","detach","set_bridge_port","navigate","scroll_to","resize_window","tabs_list","tabs_create","tabs_close","click","click_element","click_xy","type_text","form_input","key_press","select_option","label_select","file_upload","read_ax","get_page_text","query_dom","find","wait_for","assert_text","screenshot","read_console","read_network","diag_suspension","diag_bridges","diag_activation","diag_ttft","wait_for_api_response","get_page_context","javascript_tool","browser_batch","set_explain_mode","annotate"];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.1.0",
3
- "contractVersion": "1.12.0",
3
+ "contractVersion": "2.0.0",
4
4
  "multiPortDiscovery": true,
5
5
  "protocol": "tool_request/result",
6
6
  "tools": [
@@ -98,29 +98,6 @@
98
98
  "mutates": true
99
99
  }
100
100
  },
101
- {
102
- "name": "login",
103
- "summary": "Drive the F5 XC OIDC/Keycloak login end-to-end (production + staging consoles).",
104
- "category": "navigation",
105
- "params": {
106
- "type": "object",
107
- "required": ["email", "password", "consoleUrl"],
108
- "properties": {
109
- "email": {
110
- "type": "string"
111
- },
112
- "password": {
113
- "type": "string"
114
- },
115
- "consoleUrl": {
116
- "type": "string"
117
- }
118
- }
119
- },
120
- "flags": {
121
- "mutates": true
122
- }
123
- },
124
101
  {
125
102
  "name": "scroll_to",
126
103
  "summary": "Scroll an AX-ref element into view.",
@@ -542,7 +519,7 @@
542
519
  },
543
520
  {
544
521
  "name": "diag_bridges",
545
- "summary": "List discovered xcsh bridges (port, tenant, env, sessionId, lastSeen) for multi-session diagnostics.",
522
+ "summary": "List discovered xcsh bridge health without tenant, environment, or session identifiers.",
546
523
  "category": "read",
547
524
  "params": {
548
525
  "type": "object",
@@ -570,16 +547,6 @@
570
547
  },
571
548
  "flags": {}
572
549
  },
573
- {
574
- "name": "capture_login_flow",
575
- "summary": "Diagnostic: captured login redirect chain annotated with tenant/env (Phase 0b).",
576
- "category": "read",
577
- "params": {
578
- "type": "object",
579
- "properties": {}
580
- },
581
- "flags": {}
582
- },
583
550
  {
584
551
  "name": "wait_for_api_response",
585
552
  "summary": "Wait for a network response whose URL matches a pattern.",
@@ -703,14 +670,6 @@
703
670
  }
704
671
  ],
705
672
  "features": {
706
- "handshake": {
707
- "serveKind": ["office", "browser"],
708
- "officePortRange": [19242, 19261],
709
- "officeWssPortRange": [19342, 19361],
710
- "browserPortRange": [19222, 19241],
711
- "browserWssPortRange": [19322, 19341],
712
- "description": "hello_ack advertises serveKind — how the bridge was STARTED (office-serve vs Chrome worker), distinct from the client's announced host. `xcsh office serve` binds the dedicated office port range and advertises serveKind:\"office\"; the Chrome worker binds the browser range and advertises \"browser\". The Office pane scans only the office wss range AND filters on serveKind:\"office\", so it can never adopt a Chrome worker (a serveKind absent/null is treated as ineligible)."
713
- },
714
673
  "explainMode": {
715
674
  "tool": "set_explain_mode",
716
675
  "default": false,
@@ -748,14 +707,7 @@
748
707
  "host_tool_call",
749
708
  "host_tool_update",
750
709
  "host_tool_result",
751
- "host_tool_cancel",
752
- "configure",
753
- "configure_ack",
754
- "configure_error",
755
- "list_skills",
756
- "skills",
757
- "list_commands",
758
- "commands"
710
+ "host_tool_cancel"
759
711
  ],
760
712
  "description": "User ↔ xcsh chat over the bridge. The extension side panel sends chat_request (with mode and page-context snapshot); xcsh streams chat_delta tokens then a terminal chat_done (with reference links) or chat_error. Chat ids are prefixed \"c-\". Tool calls during a turn use the normal tool_request flow. chat_stop halts a streaming response. chat_tool_notice is emitted by the EXTENSION (the service worker) to the panel as a best-effort UI signal when a tool runs during a turn — it is NOT sent by xcsh; xcsh must not produce it to avoid double-rendering in the panel.",
761
713
  "promptHints": {