@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 +44 -28
- package/package.json +8 -8
- package/src/browser/capabilities.generated.ts +5 -72
- package/src/browser/capabilities.json +3 -51
- package/src/browser/chat-conformance.json +120 -229
- package/src/browser/chat-handler.ts +20 -18
- package/src/browser/chat-protocol.ts +23 -19
- package/src/browser/extension-bridge-tools.ts +0 -1
- package/src/browser/extension-bridge.ts +6 -9
- package/src/browser/extension-identity.ts +2 -0
- package/src/browser/extension-provider.ts +11 -54
- package/src/browser/host-profiles.ts +1 -1
- package/src/cli/chrome-cli.ts +3 -2
- package/src/cli/root-command-routing.ts +72 -0
- package/src/cli/sandbox-check.ts +43 -2
- package/src/cli.ts +39 -1
- package/src/commands/manager.ts +8 -8
- package/src/internal-urls/build-info.generated.ts +8 -8
- package/src/main.ts +6 -8
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
4732
|
+
- Updated Wasm loading to use base64-encoded Wasm for better compatibility with compiled binaries
|
|
4717
4733
|
|
|
4718
4734
|
### Fixed
|
|
4719
4735
|
|
|
4720
|
-
- Fixed
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
61
|
-
"@f5-sales-demo/pi-agent-core": "20.
|
|
62
|
-
"@f5-sales-demo/pi-ai": "20.
|
|
63
|
-
"@f5-sales-demo/pi-natives": "20.
|
|
64
|
-
"@f5-sales-demo/pi-resource-management": "20.
|
|
65
|
-
"@f5-sales-demo/pi-tui": "20.
|
|
66
|
-
"@f5-sales-demo/pi-utils": "20.
|
|
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": "
|
|
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
|
|
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 = "
|
|
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","
|
|
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": "
|
|
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
|
|
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": {
|