@f5-sales-demo/xcsh 20.1.1 → 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,28 @@
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
+
21
+ ## [20.1.2] - 2026-08-01
22
+
23
+ ### Fixed
24
+
25
+ - Made `xcsh sandbox check` work for sessions rooted directly under the operator home, distinguish harness errors from sandbox failures, and verify this topology against installed release artifacts ([#2807](https://github.com/f5-sales-demo/xcsh/issues/2807))
26
+
5
27
  ## [20.1.1] - 2026-08-01
6
28
 
7
29
  ### Fixed
@@ -30,7 +52,7 @@
30
52
 
31
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))
32
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))
33
- - 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))
34
56
 
35
57
  ## [20.0.0] - 2026-08-01
36
58
 
@@ -219,7 +241,7 @@
219
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
220
242
  - Fixed aggregate SOQL columns rendering as `expr0`/`expr1` by adding aliases (`TotalDeals`, `TotalAmount`) to template queries in sf-query prompt
221
243
  - Fixed duplicate org entries in welcome-screen Salesforce status check (`welcome-checks.ts`)
222
- - 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)
223
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
224
246
  - Fixed profile caching test contaminating real `~/.sf/config.json` with mock data by adding HOME isolation
225
247
 
@@ -471,7 +493,7 @@ Refs: #173.
471
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
472
494
  - Language detection for `.pm` (Perl modules), `.astro` (Astro framework), and special filenames `containerfile` and `justfile`
473
495
  - Workspace-scoped diagnostics and reload actions via `*` file parameter; `diagnostics` action now supports `*` for workspace-wide diagnostics across all configured servers
474
- - 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
475
497
  - Improved extensionless binary debugging: native debuggers (gdb, lldb-dap) and adapters with root markers are now preferred over unrelated adapters like debugpy
476
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
477
499
  - Debug adapter configuration for gdb, lldb-dap, debugpy, and dlv with language/file-type matching and root marker detection
@@ -582,7 +604,7 @@ Refs: #173.
582
604
  - Removed unused `_createErrorToolResult` helper function from RPC host-tools module
583
605
  - Fixed Go receiver method indentation in append operations to preserve relative indentation from the anchor chunk
584
606
  - Fixed Go type chunk line counts to report only the type body lines instead of including grouped receiver methods
585
- - 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
586
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
587
609
  - Chunk edit error messages now consistently report checksum mismatches with format `Checksum mismatch` instead of variable phrasing
588
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
@@ -657,7 +679,7 @@ Refs: #173.
657
679
 
658
680
  ### Added
659
681
 
660
- - 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
661
683
  - Added `offset` and `limit` parameter support for paginating cached URL fetch results
662
684
  - Added URL caching mechanism to avoid redundant network requests when reading the same URL multiple times
663
685
 
@@ -1382,7 +1404,7 @@ Refs: #173.
1382
1404
  - Added `refreshProvider()` method to refresh models for a specific provider on demand
1383
1405
  - Added `getDiscoverableProviders()` method to list all configured discoverable providers
1384
1406
  - Added `getProviderDiscoveryState()` method to inspect provider discovery status, cache age, and errors
1385
- - 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)
1386
1408
  - Added model caching with 24-hour TTL to preserve discovered models across sessions
1387
1409
  - Added provider-specific empty state messages in model selector showing cache age and discovery status
1388
1410
  - Added live provider refresh when switching provider tabs in model selector
@@ -1651,7 +1673,7 @@ Refs: #173.
1651
1673
 
1652
1674
  - Updated hashline prompt documentation with clearer operation syntax and improved examples showing full edit structure with path and edits array
1653
1675
  - Refactored `href` Handlebars helper to return JSON-quoted strings for safer embedding in JSON blocks within prompts
1654
- - 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
1655
1677
  - Optimized duplicate line detection in range replacements to use trimmed comparison, reducing false positives from whitespace differences
1656
1678
  - Refactored Kagi search provider to use shared Kagi API utilities from `web/kagi` module
1657
1679
  - Changed HTML-to-text rendering priority order to try Kagi first, then Jina, Trafilatura, and Lynx
@@ -3250,7 +3272,7 @@ Refs: #173.
3250
3272
  - Changed screenshot format to always use PNG instead of supporting JPEG with quality parameter
3251
3273
  - Changed default extract_readable format from text to markdown
3252
3274
  - Changed screenshot storage to use temporary directory with Snowflake IDs instead of artifacts directory
3253
- - 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
3254
3276
 
3255
3277
  ### Removed
3256
3278
 
@@ -3849,7 +3871,7 @@ Refs: #173.
3849
3871
  - Added detailed phased execution pattern with four phases (Foundation, Parallel Implementation, Integration, Dependent Layer) and WASM-to-N-API migration example
3850
3872
  - Added table of dependency patterns that must be sequential (API creation before bindings, interface definition before implementation, etc.)
3851
3873
  - Added phased execution guidance for migrations and refactors to prevent parallel work on dependent layers
3852
- - 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
3853
3875
 
3854
3876
  ### Changed
3855
3877
 
@@ -3859,7 +3881,7 @@ Refs: #173.
3859
3881
  - Updated binary build process to exclude worker files from compilation, reducing binary size
3860
3882
  - Modified update mechanism to download and install native addon alongside CLI binary for platform-specific functionality
3861
3883
  - Updated find tool to emit streaming match updates via callback, allowing real-time progress feedback during file searches
3862
- - 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
3863
3885
  - Restructured Task tool documentation to emphasize context quality and explicit API contracts for subagent success
3864
3886
  - Updated task execution guidance to require structured context with Goal, Constraints, Existing Code, and API Contract sections
3865
3887
  - Reorganized parallelization rules with explicit dependency patterns and phased execution guidance for migrations
@@ -3946,7 +3968,7 @@ Refs: #173.
3946
3968
  - Git branch detection in status line now works synchronously without race conditions
3947
3969
  - Shell session initialization properly restores trap handlers and shell functions after command execution
3948
3970
  - Sanitized `BASH_ENV`/`ENV` during persistent shell startup and snapshot creation to prevent basic shells from exiting immediately.
3949
- - 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.
3950
3972
  - Filtered unsafe bash options (onecmd/monitor/restricted) out of shell snapshots to prevent session exits.
3951
3973
 
3952
3974
  ## [9.2.2] - 2026-01-31
@@ -4129,7 +4151,7 @@ Refs: #173.
4129
4151
  ### Fixed
4130
4152
 
4131
4153
  - Fixed plan reference injection and workflow prompt parameters for plan mode
4132
- - 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
4133
4155
  - Fixed missing UI notification when tools are downloaded or installed on demand
4134
4156
 
4135
4157
  ## [8.4.0] - 2026-01-25
@@ -4222,7 +4244,7 @@ Refs: #173.
4222
4244
  - Added Python kernel session pooling with MAX_KERNEL_SESSIONS limit and automatic eviction of oldest sessions
4223
4245
  - Added automatic idle kernel session cleanup timer (5-minute timeout, 30-second interval)
4224
4246
  - Added types/assets/index.d.ts for global TypeScript module declarations supporting `.md`, `.py`, and `.wasm?raw` imports
4225
- - 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
4226
4248
  - Added color manipulation utilities (hexToHsv, hsvToHex, shiftHue) to pi-utils for accessible theme adjustments
4227
4249
  - Added color-blind mode setting for improved accessibility
4228
4250
  - Added filesystem error type guards (isEnoent, isEacces, isPerm, isEnotempty, isFsError, hasFsCode) to pi-utils for safe error handling
@@ -4282,7 +4304,7 @@ Refs: #173.
4282
4304
  - Changed Python kernel resource management with gateway shutdown on session disposal
4283
4305
  - Updated TypeScript configuration for better publish-time configuration handling with tsconfig.publish.json
4284
4306
  - Updated TypeScript and Bun configuration for monorepo-wide build consistency and reduced boilerplate
4285
- - 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
4286
4308
  - Unified TypeScript checking pipeline with tsgo-based configuration instead of per-package tsconfig.publish.json boilerplate
4287
4309
  - Refactored scanDirectoryForSkills to use async/await with concurrent directory scanning via Promise.all
4288
4310
  - Improved error logging in settings manager for config file access failures
@@ -4700,18 +4722,18 @@ Refs: #173.
4700
4722
 
4701
4723
  ### Changed
4702
4724
 
4703
- - 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
4704
4726
  - Added scripts directory to published package files
4705
4727
 
4706
4728
  ## [5.7.68] - 2026-01-18
4707
4729
 
4708
4730
  ### Changed
4709
4731
 
4710
- - 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
4711
4733
 
4712
4734
  ### Fixed
4713
4735
 
4714
- - Fixed WASM loading issues in compiled binary builds
4736
+ - Fixed Wasm loading issues in compiled binary builds
4715
4737
 
4716
4738
  ## [5.7.67] - 2026-01-18
4717
4739
 
@@ -4894,10 +4916,10 @@ Refs: #173.
4894
4916
 
4895
4917
  ### Changed
4896
4918
 
4897
- - Replaced wasm-vips with Photon for more stable WASM image processing
4919
+ - Replaced wasm-vips with Photon for more stable Wasm image processing
4898
4920
  - Added graceful fallback to original images when image resizing fails
4899
4921
  - Added error handling for image conversion failures in interactive mode to prevent crashes
4900
- - 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)
4901
4923
 
4902
4924
  ## [5.0.0] - 2026-01-12
4903
4925
 
@@ -5107,7 +5129,7 @@ Refs: #173.
5107
5129
  - Separated `/export` and `/dump` commands—`/export` now only exports to HTML file, while `/dump` copies session transcript to clipboard
5108
5130
  - Updated `/export` command to no longer accept `--copy` flag (use `/dump` instead)
5109
5131
  - Changed prompt template rendering to use Handlebars instead of simple string replacement
5110
- - 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
5111
5133
  - Changed auth migration to merge credentials per-provider instead of skipping when any credentials exist in database
5112
5134
  - Migrated settings and auth credential storage from JSON files to SQLite database (agent.db)
5113
5135
  - Updated credential migration message to reference agent.db instead of auth.json
@@ -5199,7 +5221,7 @@ Refs: #173.
5199
5221
  - `pi.sendUserMessage()` for sending user messages from extensions
5200
5222
  - Extension UI dialogs (`select`, `confirm`, `input`) support `timeout` option with live countdown display
5201
5223
  - Extension UI dialogs accept optional `AbortSignal` to programmatically dismiss dialogs
5202
- - Async extension factories for dynamic imports and lazy-loaded dependencies
5224
+ - Async extension factories for dynamic imports and lazy loaded dependencies
5203
5225
  - `user_bash` event for intercepting user `!`/`!!` commands
5204
5226
  - Built-in renderers used automatically for tool overrides without custom `renderCall`/`renderResult`
5205
5227
  - `InteractiveMode`, `runPrintMode()`, `runRpcMode()` exported for building custom run modes
@@ -5401,7 +5423,7 @@ Refs: #173.
5401
5423
  - Changed YouTube scraper to use async command execution with proper stream handling
5402
5424
  - Improved rust-analyzer diagnostic polling to use version-based stability detection instead of time-based delays
5403
5425
  - Changed theme icons for extension types to use Unicode symbols (✧, ⚒) instead of text abbreviations (SK, TL, MCP)
5404
- - 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')
5405
5427
  - Changed task tool to accept single `agent` parameter at top level instead of per-task agent specification
5406
5428
  - Changed reviewer agent to use `complete` tool instead of `submit_review` for finishing reviews
5407
5429
  - Changed theme icons for extensions to use Unicode symbols instead of text abbreviations
@@ -5526,7 +5548,7 @@ Refs: #173.
5526
5548
 
5527
5549
  ### Changed
5528
5550
 
5529
- - 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
5530
5552
  - Changed web search to try all configured providers in sequence with fallback before reporting errors
5531
5553
  - Changed default Anthropic web search model from `claude-sonnet-4-5-20250514` to `claude-haiku-4-5`
5532
5554
  - Changed read tool to show first 50KB of oversized lines instead of directing users to bash sed
@@ -5855,11 +5877,11 @@ Refs: #173.
5855
5877
 
5856
5878
  - Added shell environment snapshot to preserve user aliases, functions, and shell options when executing bash commands
5857
5879
  - Added support for `OMP_BASH_NO_CI`, `OMP_BASH_NO_LOGIN`, and `OMP_SHELL_PREFIX` environment variables for shell customization
5858
- - Added zsh support alongside bash for shell detection and configuration
5880
+ - Added Zsh support alongside bash for shell detection and configuration
5859
5881
 
5860
5882
  ### Changed
5861
5883
 
5862
- - 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
5863
5885
  - Changed Edit tool to reject `.ipynb` files with guidance to use NotebookEdit tool instead
5864
5886
 
5865
5887
  ## [1.500.0] - 2026-01-03
@@ -5949,7 +5971,7 @@ Refs: #173.
5949
5971
  - LSP server warmup at startup: LSP servers are now started at launch to avoid cold-start delays when first writing files.
5950
5972
  - LSP server status in welcome banner: Shows which language servers are active and ready.
5951
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`.
5952
- - 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.
5953
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.
5954
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.
5955
5977
 
@@ -6788,7 +6810,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
6788
6810
 
6789
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))
6790
6812
 
6791
- - 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))
6792
6814
 
6793
6815
  ## [0.20.1] - 2025-12-13
6794
6816
 
@@ -7229,7 +7251,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
7229
7251
 
7230
7252
  ### Fixed
7231
7253
 
7232
- - `@`-references now handle special characters in file names (spaces, quotes, unicode)
7254
+ - `@`-references now handle special characters in filenames (spaces, quotes, unicode)
7233
7255
  - Fixed cursor positioning issues with multi-byte unicode characters in editor
7234
7256
 
7235
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.1",
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.1",
61
- "@f5-sales-demo/pi-agent-core": "20.1.1",
62
- "@f5-sales-demo/pi-ai": "20.1.1",
63
- "@f5-sales-demo/pi-natives": "20.1.1",
64
- "@f5-sales-demo/pi-resource-management": "20.1.1",
65
- "@f5-sales-demo/pi-tui": "20.1.1",
66
- "@f5-sales-demo/pi-utils": "20.1.1",
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": {