@f5-sales-demo/xcsh 20.1.2 → 20.2.2

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,22 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [20.2.1] - 2026-08-01
6
+
7
+ ### Fixed
8
+
9
+ - 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))
10
+
11
+ ## [20.2.0] - 2026-08-01
12
+
13
+ ### Breaking Changes
14
+
15
+ - 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))
16
+
17
+ ### Fixed
18
+
19
+ - 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))
20
+
5
21
  ## [20.1.2] - 2026-08-01
6
22
 
7
23
  ### Fixed
@@ -36,7 +52,7 @@
36
52
 
37
53
  - 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
54
  - 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))
55
+ - 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
56
 
41
57
  ## [20.0.0] - 2026-08-01
42
58
 
@@ -225,7 +241,7 @@
225
241
  - 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
242
  - Fixed aggregate SOQL columns rendering as `expr0`/`expr1` by adding aliases (`TotalDeals`, `TotalAmount`) to template queries in sf-query prompt
227
243
  - 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)
244
+ - Fixed pre-existing biome linting warning in `glab/formatters.ts` (string concatenation -> template literal)
229
245
  - 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
246
  - Fixed profile caching test contaminating real `~/.sf/config.json` with mock data by adding HOME isolation
231
247
 
@@ -477,7 +493,7 @@ Refs: #173.
477
493
  - 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
494
  - Language detection for `.pm` (Perl modules), `.astro` (Astro framework), and special filenames `containerfile` and `justfile`
479
495
  - 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
496
+ - 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
497
  - Improved extensionless binary debugging: native debuggers (gdb, lldb-dap) and adapters with root markers are now preferred over unrelated adapters like debugpy
482
498
  - 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
499
  - Debug adapter configuration for gdb, lldb-dap, debugpy, and dlv with language/file-type matching and root marker detection
@@ -588,7 +604,7 @@ Refs: #173.
588
604
  - Removed unused `_createErrorToolResult` helper function from RPC host-tools module
589
605
  - Fixed Go receiver method indentation in append operations to preserve relative indentation from the anchor chunk
590
606
  - 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
607
+ - Fixed enum variant insertion to avoid adding extra empty lines between variants
592
608
  - 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
609
  - Chunk edit error messages now consistently report checksum mismatches with format `Checksum mismatch` instead of variable phrasing
594
610
  - 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 +679,7 @@ Refs: #173.
663
679
 
664
680
  ### Added
665
681
 
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
682
+ - 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
683
  - Added `offset` and `limit` parameter support for paginating cached URL fetch results
668
684
  - Added URL caching mechanism to avoid redundant network requests when reading the same URL multiple times
669
685
 
@@ -1388,7 +1404,7 @@ Refs: #173.
1388
1404
  - Added `refreshProvider()` method to refresh models for a specific provider on demand
1389
1405
  - Added `getDiscoverableProviders()` method to list all configured discoverable providers
1390
1406
  - 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)
1407
+ - Added provider discovery state tracking with status indicators (idle, OK, cached, unavailable, unauthenticated)
1392
1408
  - Added model caching with 24-hour TTL to preserve discovered models across sessions
1393
1409
  - Added provider-specific empty state messages in model selector showing cache age and discovery status
1394
1410
  - Added live provider refresh when switching provider tabs in model selector
@@ -1657,7 +1673,7 @@ Refs: #173.
1657
1673
 
1658
1674
  - Updated hashline prompt documentation with clearer operation syntax and improved examples showing full edit structure with path and edits array
1659
1675
  - 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
1676
+ - Improved `hashlineParseText` to correctly preserve empty lines and trailing empty strings in array input while stripping trailing newlines from string input
1661
1677
  - Optimized duplicate line detection in range replacements to use trimmed comparison, reducing false positives from whitespace differences
1662
1678
  - Refactored Kagi search provider to use shared Kagi API utilities from `web/kagi` module
1663
1679
  - Changed HTML-to-text rendering priority order to try Kagi first, then Jina, Trafilatura, and Lynx
@@ -3256,7 +3272,7 @@ Refs: #173.
3256
3272
  - Changed screenshot format to always use PNG instead of supporting JPEG with quality parameter
3257
3273
  - Changed default extract_readable format from text to markdown
3258
3274
  - 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
3275
+ - Changed ResizedImage interface to return buffer as Uint8Array with lazy loaded base64 data getter for improved memory efficiency
3260
3276
 
3261
3277
  ### Removed
3262
3278
 
@@ -3855,7 +3871,7 @@ Refs: #173.
3855
3871
  - Added detailed phased execution pattern with four phases (Foundation, Parallel Implementation, Integration, Dependent Layer) and WASM-to-N-API migration example
3856
3872
  - Added table of dependency patterns that must be sequential (API creation before bindings, interface definition before implementation, etc.)
3857
3873
  - 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
3874
+ - Added example demonstrating phased execution pattern for porting Wasm to N-API with sequential foundation, parallel implementation, integration, and dependent layer phases
3859
3875
 
3860
3876
  ### Changed
3861
3877
 
@@ -3865,7 +3881,7 @@ Refs: #173.
3865
3881
  - Updated binary build process to exclude worker files from compilation, reducing binary size
3866
3882
  - Modified update mechanism to download and install native addon alongside CLI binary for platform-specific functionality
3867
3883
  - 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
3884
+ - Modified find tool to use native match metadata (mtime, fileType) from Wasm layer instead of redundant filesystem stats, improving performance
3869
3885
  - Restructured Task tool documentation to emphasize context quality and explicit API contracts for subagent success
3870
3886
  - Updated task execution guidance to require structured context with Goal, Constraints, Existing Code, and API Contract sections
3871
3887
  - Reorganized parallelization rules with explicit dependency patterns and phased execution guidance for migrations
@@ -3952,7 +3968,7 @@ Refs: #173.
3952
3968
  - Git branch detection in status line now works synchronously without race conditions
3953
3969
  - Shell session initialization properly restores trap handlers and shell functions after command execution
3954
3970
  - 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.
3971
+ - Cached shell snapshots per shell binary to avoid sourcing Zsh snapshots in bash sessions.
3956
3972
  - Filtered unsafe bash options (onecmd/monitor/restricted) out of shell snapshots to prevent session exits.
3957
3973
 
3958
3974
  ## [9.2.2] - 2026-01-31
@@ -4135,7 +4151,7 @@ Refs: #173.
4135
4151
  ### Fixed
4136
4152
 
4137
4153
  - 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
4154
+ - Fixed tool downloads hanging on slow/blocked GitHub by adding timeouts and ZIP extraction fallback
4139
4155
  - Fixed missing UI notification when tools are downloaded or installed on demand
4140
4156
 
4141
4157
  ## [8.4.0] - 2026-01-25
@@ -4228,7 +4244,7 @@ Refs: #173.
4228
4244
  - Added Python kernel session pooling with MAX_KERNEL_SESSIONS limit and automatic eviction of oldest sessions
4229
4245
  - Added automatic idle kernel session cleanup timer (5-minute timeout, 30-second interval)
4230
4246
  - 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
4247
+ - Added bunfig.toml loader configuration for importing markdown, Python, and Wasm files as text modules
4232
4248
  - Added color manipulation utilities (hexToHsv, hsvToHex, shiftHue) to pi-utils for accessible theme adjustments
4233
4249
  - Added color-blind mode setting for improved accessibility
4234
4250
  - Added filesystem error type guards (isEnoent, isEacces, isPerm, isEnotempty, isFsError, hasFsCode) to pi-utils for safe error handling
@@ -4288,7 +4304,7 @@ Refs: #173.
4288
4304
  - Changed Python kernel resource management with gateway shutdown on session disposal
4289
4305
  - Updated TypeScript configuration for better publish-time configuration handling with tsconfig.publish.json
4290
4306
  - 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
4307
+ - Removed Wasm base64 encoding build script; imports now use Bun loader with `wasm?raw` query parameter
4292
4308
  - Unified TypeScript checking pipeline with tsgo-based configuration instead of per-package tsconfig.publish.json boilerplate
4293
4309
  - Refactored scanDirectoryForSkills to use async/await with concurrent directory scanning via Promise.all
4294
4310
  - Improved error logging in settings manager for config file access failures
@@ -4706,18 +4722,18 @@ Refs: #173.
4706
4722
 
4707
4723
  ### Changed
4708
4724
 
4709
- - Updated WASM loading to use streaming for development environments with base64 fallback
4725
+ - Updated Wasm loading to use streaming for development environments with base64 fallback
4710
4726
  - Added scripts directory to published package files
4711
4727
 
4712
4728
  ## [5.7.68] - 2026-01-18
4713
4729
 
4714
4730
  ### Changed
4715
4731
 
4716
- - Updated WASM loading to use base64-encoded WASM for better compatibility with compiled binaries
4732
+ - Updated Wasm loading to use base64-encoded Wasm for better compatibility with compiled binaries
4717
4733
 
4718
4734
  ### Fixed
4719
4735
 
4720
- - Fixed WASM loading issues in compiled binary builds
4736
+ - Fixed Wasm loading issues in compiled binary builds
4721
4737
 
4722
4738
  ## [5.7.67] - 2026-01-18
4723
4739
 
@@ -4900,10 +4916,10 @@ Refs: #173.
4900
4916
 
4901
4917
  ### Changed
4902
4918
 
4903
- - Replaced wasm-vips with Photon for more stable WASM image processing
4919
+ - Replaced wasm-vips with Photon for more stable Wasm image processing
4904
4920
  - Added graceful fallback to original images when image resizing fails
4905
4921
  - 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)
4922
+ - Replace wasm-vips with Photon for more stable Wasm image processing (fixes worker thread crashes)
4907
4923
 
4908
4924
  ## [5.0.0] - 2026-01-12
4909
4925
 
@@ -5113,7 +5129,7 @@ Refs: #173.
5113
5129
  - Separated `/export` and `/dump` commands—`/export` now only exports to HTML file, while `/dump` copies session transcript to clipboard
5114
5130
  - Updated `/export` command to no longer accept `--copy` flag (use `/dump` instead)
5115
5131
  - 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
5132
+ - Updated prompt layout optimization to normalize indentation and collapse excessive empty lines
5117
5133
  - Changed auth migration to merge credentials per-provider instead of skipping when any credentials exist in database
5118
5134
  - Migrated settings and auth credential storage from JSON files to SQLite database (agent.db)
5119
5135
  - Updated credential migration message to reference agent.db instead of auth.json
@@ -5205,7 +5221,7 @@ Refs: #173.
5205
5221
  - `pi.sendUserMessage()` for sending user messages from extensions
5206
5222
  - Extension UI dialogs (`select`, `confirm`, `input`) support `timeout` option with live countdown display
5207
5223
  - Extension UI dialogs accept optional `AbortSignal` to programmatically dismiss dialogs
5208
- - Async extension factories for dynamic imports and lazy-loaded dependencies
5224
+ - Async extension factories for dynamic imports and lazy loaded dependencies
5209
5225
  - `user_bash` event for intercepting user `!`/`!!` commands
5210
5226
  - Built-in renderers used automatically for tool overrides without custom `renderCall`/`renderResult`
5211
5227
  - `InteractiveMode`, `runPrintMode()`, `runRpcMode()` exported for building custom run modes
@@ -5407,7 +5423,7 @@ Refs: #173.
5407
5423
  - Changed YouTube scraper to use async command execution with proper stream handling
5408
5424
  - Improved rust-analyzer diagnostic polling to use version-based stability detection instead of time-based delays
5409
5425
  - 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')
5426
+ - Changed task tool to use short camelCase task IDs instead of agent-based naming (e.g., 'SessionStore' instead of 'explore_0')
5411
5427
  - Changed task tool to accept single `agent` parameter at top level instead of per-task agent specification
5412
5428
  - Changed reviewer agent to use `complete` tool instead of `submit_review` for finishing reviews
5413
5429
  - Changed theme icons for extensions to use Unicode symbols instead of text abbreviations
@@ -5532,7 +5548,7 @@ Refs: #173.
5532
5548
 
5533
5549
  ### Changed
5534
5550
 
5535
- - Refactored tool renderers to be co-located with their respective tool implementations for improved code organization
5551
+ - Refactored tool renderers to be colocated with their respective tool implementations for improved code organization
5536
5552
  - Changed web search to try all configured providers in sequence with fallback before reporting errors
5537
5553
  - Changed default Anthropic web search model from `claude-sonnet-4-5-20250514` to `claude-haiku-4-5`
5538
5554
  - Changed read tool to show first 50KB of oversized lines instead of directing users to bash sed
@@ -5861,11 +5877,11 @@ Refs: #173.
5861
5877
 
5862
5878
  - Added shell environment snapshot to preserve user aliases, functions, and shell options when executing bash commands
5863
5879
  - 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
5880
+ - Added Zsh support alongside bash for shell detection and configuration
5865
5881
 
5866
5882
  ### Changed
5867
5883
 
5868
- - Changed shell detection to prefer user's `$SHELL` when it's bash or zsh, with improved fallback path resolution
5884
+ - Changed shell detection to prefer user's `$SHELL` when it's bash or Zsh, with improved fallback path resolution
5869
5885
  - Changed Edit tool to reject `.ipynb` files with guidance to use NotebookEdit tool instead
5870
5886
 
5871
5887
  ## [1.500.0] - 2026-01-03
@@ -5955,7 +5971,7 @@ Refs: #173.
5955
5971
  - LSP server warmup at startup: LSP servers are now started at launch to avoid cold-start delays when first writing files.
5956
5972
  - LSP server status in welcome banner: Shows which language servers are active and ready.
5957
5973
  - 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.
5974
+ - 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
5975
  - 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
5976
  - 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
5977
 
@@ -6794,7 +6810,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
6794
6810
 
6795
6811
  - 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
6812
 
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))
6813
+ - 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
6814
 
6799
6815
  ## [0.20.1] - 2025-12-13
6800
6816
 
@@ -7235,7 +7251,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
7235
7251
 
7236
7252
  ### Fixed
7237
7253
 
7238
- - `@`-references now handle special characters in file names (spaces, quotes, unicode)
7254
+ - `@`-references now handle special characters in filenames (spaces, quotes, unicode)
7239
7255
  - Fixed cursor positioning issues with multi-byte unicode characters in editor
7240
7256
 
7241
7257
  ## [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.2",
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.2",
61
+ "@f5-sales-demo/pi-agent-core": "20.2.2",
62
+ "@f5-sales-demo/pi-ai": "20.2.2",
63
+ "@f5-sales-demo/pi-natives": "20.2.2",
64
+ "@f5-sales-demo/pi-resource-management": "20.2.2",
65
+ "@f5-sales-demo/pi-tui": "20.2.2",
66
+ "@f5-sales-demo/pi-utils": "20.2.2",
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": {