@bismawy/pi-vision-watcher 1.0.14 → 1.1.0
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 +99 -0
- package/LICENSE +0 -0
- package/README.md +137 -129
- package/package.json +72 -68
- package/src/dataloader.ts +0 -0
- package/src/describer.ts +0 -0
- package/src/dispose.ts +0 -0
- package/src/error-log.ts +0 -0
- package/src/image.ts +0 -0
- package/src/index.ts +0 -0
- package/src/prewarm-editor.ts +0 -0
- package/src/usage.ts +0 -0
- package/src/vision-model-selector.ts +690 -600
- package/vision-watcher.ts +1304 -1304
- package/vitest.config.ts +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.1.0] - 2026-10-05
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- **Breaking:** rebind four picker chords that collided with OS, terminal, readline and Pi
|
|
7
|
+
shortcuts. VTE (GNOME Terminal) closes the window on `ctrl+shift+q`, and POSIX tty flow
|
|
8
|
+
control swallows `ctrl+q`, so the previous bindings were unusable or destructive on Linux:
|
|
9
|
+
- `ctrl+q` → `ctrl+enter` (failover chain toggle)
|
|
10
|
+
- `ctrl+shift+q` → `ctrl+shift+r` (reset failover chain)
|
|
11
|
+
- `ctrl+a` → `alt+a` · `ctrl+alt+a` (async paste handoff)
|
|
12
|
+
- `ctrl+t` → `ctrl+shift+t` (thinking ladder)
|
|
13
|
+
- Vision and failover markers now use single-cell glyphs (`✦`, `⇆`) instead of emoji, which
|
|
14
|
+
are double-width and broke column alignment. The symbols in the detail pane carry the same
|
|
15
|
+
colour as the badges they explain.
|
|
16
|
+
- Detail pane labels read `Vision-capable ✦ :` / `Fallback ⇆ :` and the async row prints its
|
|
17
|
+
own chord beside the state.
|
|
18
|
+
- `package.json` `description` now leads with the README tagline, per the `/arnative-pi`
|
|
19
|
+
manifest standard — `pi.dev/packages` renders this field verbatim as the package card
|
|
20
|
+
description. (Previously staged as `[Unreleased]` in PR #1.)
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- `alt+↑` / `alt+↓` reorder the highlighted model; the failover chain follows list order and
|
|
24
|
+
the `None` row stays pinned first.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- Pressing `enter` while a filter was active silently saved the previously selected primary,
|
|
28
|
+
which the user could not see in the filtered list. `enter` now adopts the highlighted match.
|
|
29
|
+
- Removed the `f2` binding from the README; it was documented but never implemented.
|
|
30
|
+
|
|
31
|
+
### Notes
|
|
32
|
+
- The three `ctrl+` chords are no-ops on legacy terminals that do not speak the Kitty Keyboard
|
|
33
|
+
Protocol (no wrong action fires). They work on Windows Terminal/conhost, X11, macOS, tmux
|
|
34
|
+
and SSH.
|
|
35
|
+
- `ctrl+alt+a` is the international-layout-safe half of the async chord, where AltGr occupies
|
|
36
|
+
`alt+a`.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## [1.0.15] - 2026-09-28
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
- Standard `CHANGELOG.md` tracking repository release history according to Keep a Changelog.
|
|
44
|
+
- Added `dev` script (`pi --extension ./vision-watcher.ts`) to `package.json` for live local testing without installation.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
- Refreshed README presentation layout, badge aesthetics, and structure to match the standard `pi-arnative` specification.
|
|
48
|
+
- Streamlined README commands and shortcuts tables, tightened bullet copywriting, and repaired link icon character.
|
|
49
|
+
- Standardized README tagline (`Intelligent vision watcher. Connected models. Zero workflow interruption.`) and `package.json` description to use vision watcher identity.
|
|
50
|
+
- Refreshed package keywords and repository topics to focus on vision-watcher, image-describer, and failover capabilities (purged legacy handoff tags).
|
|
51
|
+
- Standardized README banner image to full-width responsive `<img width="100%">` matching `pi-jev-eye`.
|
|
52
|
+
- Updated `pi.image` manifest URL to `assets/banner.webp`.
|
|
53
|
+
- Registered `CHANGELOG.md` and `LICENSE` in `package.json` `"files"` packaging list.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
- Fixed model picker detail pane hanging wrapped values and aligned filter input field with the list gutter.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## [1.0.14] - 2026-09-22
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
- Tightened picker header by removing empty spacing between top border and dialog title.
|
|
64
|
+
- Updated picker footer legend to use clean `[Key] Action` layout with colored accent highlighting for model counter.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## [1.0.13] - 2026-09-22
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- Added `ctrl+shift+q` shortcut to reset the entire fallback model chain in one keystroke.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
- Polished picker footer spacing and legend descriptions.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## [1.0.12] - 2026-09-22
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
- Footer key legend in the interactive picker with clear separator formatting.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## [1.0.11] - 2026-09-12
|
|
86
|
+
|
|
87
|
+
### Added
|
|
88
|
+
- In-picker failover chain configuration (`ctrl+q` / `f2`) with real-time preview in the detail pane.
|
|
89
|
+
- Auto-healing and detection for GLM 4/5 false-vision and provider HTTP 400 errors.
|
|
90
|
+
|
|
91
|
+
### Changed
|
|
92
|
+
- Major model picker architecture overhaul with connected-only provider credentials filtering.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## [1.0.0] - 2026-08-21
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
- Initial standalone release of `pi-vision-watcher` providing intelligent vision handoff to text-only coding models in Pi.
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -1,129 +1,137 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
[
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
##
|
|
35
|
-
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
|
58
|
-
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
| `
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
</
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
1
|
+
# Vision Watcher
|
|
2
|
+
|
|
3
|
+
Intelligent vision watcher. Connected models. Zero workflow interruption.
|
|
4
|
+
|
|
5
|
+
[](https://pi.dev/packages/@bismawy/pi-vision-watcher)
|
|
6
|
+
[](https://www.npmjs.com/package/@bismawy/pi-vision-watcher)
|
|
7
|
+
[](https://github.com/bismawy/pi-vision-watcher)
|
|
8
|
+
|
|
9
|
+
<img src="https://raw.githubusercontent.com/bismawy/pi-vision-watcher/main/assets/banner.webp" alt="Vision Watcher: intelligent vision watcher for text-only coding models in Pi" width="100%">
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
pi-vision-watcher gives text-only pi models vision — images are described in the background by a vision model you pick, watching over text-only coding models without interrupting your workflow.
|
|
14
|
+
|
|
15
|
+
- Connected-only Picker: `/vision-watcher` filters models to connected providers with valid credentials.
|
|
16
|
+
- Batching & Cache: Parallel tool calls batch images into one request; SHA-256 cache prevents redundant descriptions.
|
|
17
|
+
- False-Vision Healing: Proactively detects text-only models falsely advertised as multimodal and auto-heals `models.json` on HTTP 400.
|
|
18
|
+
- Thinking Controls: Configurable reasoning effort (`off` – `max`) for reasoning-capable vision models.
|
|
19
|
+
- Failover Chains: Ordered fallbacks to backup vision models on timeouts, rate limits, or auth errors.
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pi install npm:@bismawy/pi-vision-watcher
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Run `/vision-watcher` to pick a vision model (or `/vision-watcher model <provider/id>`). Handoff is enabled by default.
|
|
28
|
+
|
|
29
|
+
To test locally without installing:
|
|
30
|
+
```bash
|
|
31
|
+
pi --extension ./vision-watcher.ts
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Shortcuts
|
|
35
|
+
|
|
36
|
+
| Key | Action |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `space` | Toggle highlighted model as primary describer |
|
|
39
|
+
| `ctrl+enter` | Toggle highlighted model in/out of failover chain (marked ⇆, max 3) |
|
|
40
|
+
| `ctrl+shift+r` | Reset failover chain |
|
|
41
|
+
| `alt+↑` · `alt+↓` | Reorder the highlighted model (the chain follows list order) |
|
|
42
|
+
| `ctrl+shift+t` | Walk thinking ladder (`off` → `minimal` → `low` → `medium` → `high` → `xhigh` → `max`) |
|
|
43
|
+
| `ctrl+alt+a` | Toggle async paste handoff (`alt+a` also works on Windows/macOS) |
|
|
44
|
+
| `enter` · `ctrl+s` | Save configuration (primary describer and chain) |
|
|
45
|
+
| `esc` | Cancel and exit picker |
|
|
46
|
+
|
|
47
|
+
> **Notes:**
|
|
48
|
+
> - In filter mode, `space` enters a space character so multi-word queries (e.g. `gemini 3.8`) stay typeable; press `enter` to adopt the highlighted match as the primary describer.
|
|
49
|
+
> - The detail pane renders live preview updates before saving.
|
|
50
|
+
> - Chords are chosen to avoid POSIX tty flow control (`ctrl+s`/`ctrl+q`), VTE's window-level `ctrl+shift+q`, readline keys (`ctrl+a`/`ctrl+t`) and pi's own bindings. `ctrl+enter` works on Windows Terminal/conhost, X11, macOS, tmux and SSH. `ctrl+alt+a` is the safe half of the async chord on international layouts, where AltGr occupies `alt+a`.
|
|
51
|
+
|
|
52
|
+
## Commands
|
|
53
|
+
|
|
54
|
+
| Command | Action |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| `/vision-watcher` | Interactive picker for connected vision models |
|
|
57
|
+
| `/vision-watcher model <provider/id>` | Set primary vision describer directly |
|
|
58
|
+
| `/vision-watcher status` | View active configuration and failover chain |
|
|
59
|
+
| `/vision-watcher auto <on\|off>` | Toggle automatic handoff (default: `on`) |
|
|
60
|
+
| `/vision-watcher add \| remove <provider/id>` | Force or unforce handoff on specific models |
|
|
61
|
+
| `/vision-watcher thinking <level>` | Configure reasoning effort (`off` – `max`) |
|
|
62
|
+
| `/vision-watcher timeout <ms>` | Set per-image description timeout in ms (default: `45000`) |
|
|
63
|
+
| `/vision-watcher prewarm \| async <on\|off>` | Toggle paste-time prewarming or async clipboard fallback |
|
|
64
|
+
| `/vision-watcher clear` | Clear configured vision model |
|
|
65
|
+
| `/vision-watcher enable \| disable` | Toggle extension active state |
|
|
66
|
+
| `/vision-watcher help` | List all subcommands |
|
|
67
|
+
|
|
68
|
+
## Architecture
|
|
69
|
+
|
|
70
|
+
<details>
|
|
71
|
+
<summary><b>Configuration</b> (<code>~/.pi/agent/extensions/pi-vision-watcher.json</code>)</summary>
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"enabled": true,
|
|
76
|
+
"visionModel": "openai/gpt-4o",
|
|
77
|
+
"fallbackModels": [],
|
|
78
|
+
"autoHandoff": true,
|
|
79
|
+
"handoffModels": [],
|
|
80
|
+
"thinking": false,
|
|
81
|
+
"thinkingLevel": "medium",
|
|
82
|
+
"describeTimeoutMs": 45000,
|
|
83
|
+
"prewarmPastedImages": false,
|
|
84
|
+
"asyncClipboardHandoff": false,
|
|
85
|
+
"maxTokens": null,
|
|
86
|
+
"cacheMax": 50,
|
|
87
|
+
"maxDescriptionLines": 0
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Most fields have sane defaults — `visionModel` is the only one you normally set.
|
|
92
|
+
|
|
93
|
+
`fallbackModels` is the failover chain: when the primary describer fails (timeout, rate limit, auth), each entry is tried **in order** until one returns a description. The picker caps the chain at 3 entries (`ctrl+enter`). Set it from the picker instead of hand-editing the file.
|
|
94
|
+
|
|
95
|
+
</details>
|
|
96
|
+
|
|
97
|
+
<details>
|
|
98
|
+
<summary><b>Diagnostics & Recovery</b></summary>
|
|
99
|
+
|
|
100
|
+
- Failed vision calls log with stack traces to `~/.pi/agent/logs/pi-vision-watcher/errors.log` and degrade gracefully to `[Image: description unavailable]`.
|
|
101
|
+
- When a model falsely advertises image capability and 400s, the error is captured on `message_end`, `modelOverrides.<model>.input = ["text"]` is written to `models.json`, and the registry refreshes in-process.
|
|
102
|
+
|
|
103
|
+
</details>
|
|
104
|
+
|
|
105
|
+
<details>
|
|
106
|
+
<summary><b>Components</b></summary>
|
|
107
|
+
|
|
108
|
+
| File | Role |
|
|
109
|
+
| --- | --- |
|
|
110
|
+
| `vision-watcher.ts` | Extension entry point, lifecycle hooks, and CLI command handlers |
|
|
111
|
+
| `src/vision-model-selector.ts` | Interactive TUI model picker with connected-only filtering |
|
|
112
|
+
| `src/describer.ts` | Vision API request orchestration, multi-image batching, and failover chains |
|
|
113
|
+
| `src/dataloader.ts` | Batched image loader to prevent redundant parallel requests |
|
|
114
|
+
| `src/image.ts` | Image hashing (SHA-256), memory caching, and MIME detection |
|
|
115
|
+
| `src/prewarm-editor.ts` | Paste-time image prewarming and async clipboard injection |
|
|
116
|
+
| `src/error-log.ts` | Structured logging and error capture |
|
|
117
|
+
|
|
118
|
+
</details>
|
|
119
|
+
|
|
120
|
+
<details>
|
|
121
|
+
<summary><b>Development</b></summary>
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm test # Vitest suite (250+ unit tests)
|
|
125
|
+
npm run typecheck # TypeScript checks
|
|
126
|
+
npm run lint:dead # Knip dead code analysis
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
</details>
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
Distributed under the **MIT** license.
|
|
134
|
+
|
|
135
|
+
## Author
|
|
136
|
+
|
|
137
|
+
[Bisma](https://github.com/bismawy)
|
package/package.json
CHANGED
|
@@ -1,68 +1,72 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@bismawy/pi-vision-watcher",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "
|
|
5
|
-
"type": "module",
|
|
6
|
-
"author": "bismawy",
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"publishConfig": {
|
|
9
|
-
"access": "public"
|
|
10
|
-
},
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/bismawy/pi-vision-watcher.git"
|
|
14
|
-
},
|
|
15
|
-
"homepage": "https://github.com/bismawy/pi-vision-watcher#readme",
|
|
16
|
-
"bugs": {
|
|
17
|
-
"url": "https://github.com/bismawy/pi-vision-watcher/issues"
|
|
18
|
-
},
|
|
19
|
-
"keywords": [
|
|
20
|
-
"pi-package",
|
|
21
|
-
"pi-extension",
|
|
22
|
-
"pi-vision-watcher",
|
|
23
|
-
"
|
|
24
|
-
"pi",
|
|
25
|
-
"pi-coding-agent",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"image",
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"model-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"@
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@bismawy/pi-vision-watcher",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Intelligent vision watcher. Connected models. Zero workflow interruption. Text-only Pi models get background image descriptions with failover chains.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": "bismawy",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/bismawy/pi-vision-watcher.git"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/bismawy/pi-vision-watcher#readme",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/bismawy/pi-vision-watcher/issues"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"pi-package",
|
|
21
|
+
"pi-extension",
|
|
22
|
+
"pi-vision-watcher",
|
|
23
|
+
"vision-watcher",
|
|
24
|
+
"pi",
|
|
25
|
+
"pi-coding-agent",
|
|
26
|
+
"vision",
|
|
27
|
+
"image-describer",
|
|
28
|
+
"image-description",
|
|
29
|
+
"multimodal",
|
|
30
|
+
"model-selector",
|
|
31
|
+
"model-picker",
|
|
32
|
+
"failover",
|
|
33
|
+
"accessibility"
|
|
34
|
+
],
|
|
35
|
+
"files": [
|
|
36
|
+
"*.ts",
|
|
37
|
+
"src/",
|
|
38
|
+
"CHANGELOG.md",
|
|
39
|
+
"LICENSE",
|
|
40
|
+
"README.md"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"dev": "pi --extension ./vision-watcher.ts",
|
|
45
|
+
"test:watch": "vitest",
|
|
46
|
+
"test:coverage": "vitest run --coverage",
|
|
47
|
+
"typecheck": "tsc --noEmit",
|
|
48
|
+
"lint:dead": "knip --no-gitignore"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@earendil-works/pi-ai": "0.85.1",
|
|
52
|
+
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
53
|
+
"@earendil-works/pi-tui": "0.85.1",
|
|
54
|
+
"@types/node": "25.9.1",
|
|
55
|
+
"@vitest/coverage-v8": "4.1.7",
|
|
56
|
+
"knip": "6.14.1",
|
|
57
|
+
"typescript": "6.0.3",
|
|
58
|
+
"vitest": "4.1.7"
|
|
59
|
+
},
|
|
60
|
+
"pi": {
|
|
61
|
+
"extensions": [
|
|
62
|
+
"./vision-watcher.ts"
|
|
63
|
+
],
|
|
64
|
+
"image": "https://raw.githubusercontent.com/bismawy/pi-vision-watcher/main/assets/banner.webp"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"@earendil-works/pi-ai": "*",
|
|
68
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
69
|
+
"@earendil-works/pi-tui": "*"
|
|
70
|
+
},
|
|
71
|
+
"packageManager": "pnpm@11.20.0"
|
|
72
|
+
}
|
package/src/dataloader.ts
CHANGED
|
File without changes
|
package/src/describer.ts
CHANGED
|
File without changes
|
package/src/dispose.ts
CHANGED
|
File without changes
|
package/src/error-log.ts
CHANGED
|
File without changes
|
package/src/image.ts
CHANGED
|
File without changes
|
package/src/index.ts
CHANGED
|
File without changes
|
package/src/prewarm-editor.ts
CHANGED
|
File without changes
|
package/src/usage.ts
CHANGED
|
File without changes
|