@bismawy/pi-vision-watcher 1.0.15 → 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 CHANGED
@@ -1,59 +1,99 @@
1
- # Changelog
2
-
3
- ## [1.0.15] - 2026-09-28
4
-
5
- ### Added
6
- - Standard `CHANGELOG.md` tracking repository release history according to Keep a Changelog.
7
- - Added `dev` script (`pi --extension ./vision-watcher.ts`) to `package.json` for live local testing without installation.
8
-
9
- ### Changed
10
- - Refreshed README presentation layout, badge aesthetics, and structure to match the standard `pi-arnative` specification.
11
- - Standardized README banner image syntax (`![alt](url)`) for full compatibility with pi.dev markdown sanitization.
12
- - Updated `pi.image` manifest URL to `assets/banner.webp` with `assets/screenshot.webp` backwards compatibility.
13
- - Registered `CHANGELOG.md` and `LICENSE` in `package.json` `"files"` packaging list.
14
-
15
- ### Fixed
16
- - Fixed model picker detail pane hanging wrapped values and aligned filter input field with the list gutter.
17
-
18
- ---
19
-
20
- ## [1.0.14] - 2026-09-22
21
-
22
- ### Changed
23
- - Tightened picker header by removing empty spacing between top border and dialog title.
24
- - Updated picker footer legend to use clean `[Key] Action` layout with colored accent highlighting for model counter.
25
-
26
- ---
27
-
28
- ## [1.0.13] - 2026-09-22
29
-
30
- ### Added
31
- - Added `ctrl+shift+q` shortcut to reset the entire fallback model chain in one keystroke.
32
-
33
- ### Changed
34
- - Polished picker footer spacing and legend descriptions.
35
-
36
- ---
37
-
38
- ## [1.0.12] - 2026-09-22
39
-
40
- ### Added
41
- - Footer key legend in the interactive picker with clear separator formatting.
42
-
43
- ---
44
-
45
- ## [1.0.11] - 2026-09-12
46
-
47
- ### Added
48
- - In-picker failover chain configuration (`ctrl+q` / `f2`) with real-time preview in the detail pane.
49
- - Auto-healing and detection for GLM 4/5 false-vision and provider HTTP 400 errors.
50
-
51
- ### Changed
52
- - Major model picker architecture overhaul with connected-only provider credentials filtering.
53
-
54
- ---
55
-
56
- ## [1.0.0] - 2026-08-21
57
-
58
- ### Added
59
- - Initial standalone release of `pi-vision-watcher` providing intelligent vision handoff to text-only coding models in Pi.
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/README.md CHANGED
@@ -1,137 +1,137 @@
1
- # Vision Watcher
2
-
3
- Give text-only models vision. Seamless multimodal handoff. Built for Pi.
4
-
5
- [![Custom badge](https://shieldcn.dev/badge/pi-%20Packages.svg?variant=outline&size=xs&logo=ri%3APiPiBold)](https://pi.dev/packages/@bismawy/pi-vision-watcher)
6
- [![badge](https://shieldcn.dev/npm/@bismawy/pi-vision-watcher.svg?variant=outline&size=xs)](https://www.npmjs.com/package/@bismawy/pi-vision-watcher)
7
- [![license](https://shieldcn.dev/github/bismawy/pi-vision-watcher/license.svg?variant=outline&size=xs)](https://github.com/bismawy/pi-vision-watcher)
8
-
9
- ![Vision Watcher: intelligent vision handoff for text-only coding models in Pi](https://raw.githubusercontent.com/bismawy/pi-vision-watcher/main/assets/banner.webp)
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, then handed off to text-only coding models without interrupting your workflow.
14
-
15
- - Connected-only Picker: `/vision-watcher` shows only vision-capable models from providers where you actually have credentials.
16
- - Batching & Cache: Multiple images across parallel tool calls are batched into one describer request; cached images (SHA-256) are never re-described.
17
- - False-Vision Healing: Aggregator providers sometimes flag text-only models as multimodal, causing HTTP 400s. The extension proactively forces handoff for them and auto-heals `models.json` in-process.
18
- - Thinking Controls: Adjust reasoning effort (`off` – `max`) for reasoning-capable vision models.
19
- - Fallback Chains: Automatically falls back to backup vision models when the primary is rate-limited or down.
20
-
21
- ## Install
22
-
23
- ```bash
24
- pi install npm:@bismawy/pi-vision-watcher
25
- ```
26
-
27
- Run `/vision-watcher` to pick your vision model (or set it directly: `/vision-watcher model openai/gpt-4o`). Handoff is on by default — switch to any text-only model and work as usual.
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` | Select highlighted model as primary describer (press again to clear) |
39
- | `ctrl+q` · `f2` | Toggle highlighted model in/out of failover chain (marked 🔗, max 3) |
40
- | `ctrl+t` | Walk thinking ladder (`off` → `minimal` → `low` → `medium` → `high` → `xhigh` → `max`) |
41
- | `ctrl+a` | Toggle async paste handoff |
42
- | `enter` · `ctrl+s` | Save configuration (primary describer and chain) |
43
- | `esc` | Cancel and exit picker |
44
-
45
- > **Notes:**
46
- > - `ctrl+q` toggles backup models safely; `f2` is also available as a fallback key.
47
- > - While filtering models in search, `space` enters a space character so multi-word queries (e.g. `gemini 3.8`) stay typeable.
48
- > - The detail pane shows live configuration — primary, chain, thinking, and async handoff — so every keypress previews what will be saved.
49
-
50
- ## Commands
51
-
52
- | Command | Action |
53
- | --- | --- |
54
- | `/vision-watcher` | Interactive picker for connected vision models |
55
- | `/vision-watcher model <provider/id>` | Set primary vision describer directly |
56
- | `/vision-watcher status` | View current configuration |
57
- | `/vision-watcher auto <on\|off>` | Toggle automatic handoff (default: `on`) |
58
- | `/vision-watcher add <provider/id>` | Force handoff on a specific model |
59
- | `/vision-watcher remove <provider/id>` | Remove model from forced handoff list |
60
- | `/vision-watcher thinking <level>` | Configure reasoning effort (`off` – `max`) |
61
- | `/vision-watcher timeout <ms>` | Set per-image description timeout (default `45000`) |
62
- | `/vision-watcher prewarm <on\|off>` | Describe pasted images at paste-time (opt-in) |
63
- | `/vision-watcher async <on\|off>` | Inject pasted-image descriptions asynchronously when no matching `read` wins |
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+q`). 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)
1
+ # Vision Watcher
2
+
3
+ Intelligent vision watcher. Connected models. Zero workflow interruption.
4
+
5
+ [![Custom badge](https://shieldcn.dev/badge/pi-%20Packages.svg?variant=outline&size=xs&logo=ri%3APiPiBold)](https://pi.dev/packages/@bismawy/pi-vision-watcher)
6
+ [![badge](https://shieldcn.dev/npm/@bismawy/pi-vision-watcher.svg?variant=outline&size=xs)](https://www.npmjs.com/package/@bismawy/pi-vision-watcher)
7
+ [![license](https://shieldcn.dev/github/bismawy/pi-vision-watcher/license.svg?variant=outline&size=xs)](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,71 +1,72 @@
1
- {
2
- "name": "@bismawy/pi-vision-watcher",
3
- "version": "1.0.15",
4
- "description": "Give text-only pi models vision — describe images with a vision model you pick via an interactive picker, then hand off the text description to non-vision models",
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
- "pi-vision-handoff",
24
- "pi",
25
- "pi-coding-agent",
26
- "extension",
27
- "vision",
28
- "image",
29
- "handoff",
30
- "multimodal",
31
- "model-selector",
32
- "accessibility"
33
- ],
34
- "files": [
35
- "*.ts",
36
- "src/",
37
- "CHANGELOG.md",
38
- "LICENSE",
39
- "README.md"
40
- ],
41
- "scripts": {
42
- "test": "vitest run",
43
- "dev": "pi --extension ./vision-watcher.ts",
44
- "test:watch": "vitest",
45
- "test:coverage": "vitest run --coverage",
46
- "typecheck": "tsc --noEmit",
47
- "lint:dead": "knip --no-gitignore"
48
- },
49
- "devDependencies": {
50
- "@earendil-works/pi-ai": "0.85.1",
51
- "@earendil-works/pi-coding-agent": "0.85.1",
52
- "@earendil-works/pi-tui": "0.85.1",
53
- "@types/node": "25.9.1",
54
- "@vitest/coverage-v8": "4.1.7",
55
- "knip": "6.14.1",
56
- "typescript": "6.0.3",
57
- "vitest": "4.1.7"
58
- },
59
- "pi": {
60
- "extensions": [
61
- "./vision-watcher.ts"
62
- ],
63
- "image": "https://raw.githubusercontent.com/bismawy/pi-vision-watcher/main/assets/banner.webp"
64
- },
65
- "peerDependencies": {
66
- "@earendil-works/pi-ai": "*",
67
- "@earendil-works/pi-coding-agent": "*",
68
- "@earendil-works/pi-tui": "*"
69
- },
70
- "packageManager": "pnpm@11.20.0"
71
- }
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
+ }