signalk-whisper 0.1.0 → 0.2.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/README.md CHANGED
@@ -1,30 +1,38 @@
1
1
  # signalk-whisper
2
2
 
3
- > **Status: ALPHA** This SignalK Wyoming system is 100% vibecoded slop. I don't have the right hardware yet to test it, so I'm putting it out there for people to test in the meantime. It _should_ work. File issues for anything that doestn.
4
-
5
- Whisper speech-to-text for Signal K, speaking the [Wyoming
6
- protocol](https://github.com/rhasspy/wyoming). The plugin runs the
7
- [`rhasspy/wyoming-whisper`](https://hub.docker.com/r/rhasspy/wyoming-whisper)
8
- image in a container managed through
9
- [signalk-container](https://www.npmjs.com/package/signalk-container), waits
10
- until the service actually answers a Wyoming `describe` request, keeps
11
- health-checking it, and advertises it on the shared `wyoming-service`
12
- discovery channel. It is the STT (ASR) building block of the
3
+ > **Status: ALPHA.** This SignalK Wyoming system is 100% vibecoded slop. I
4
+ > don't have the right hardware yet to test it, so I'm putting it out there
5
+ > for people to test in the meantime. It _should_ work. File issues for
6
+ > anything that doesn't.
7
+
8
+ ## What is this?
9
+
10
+ Whisper speech-to-text for [Signal K](https://signalk.org) it gives your
11
+ boat server "ears". The plugin runs the
12
+ [Whisper](https://github.com/rhasspy/wyoming-faster-whisper) speech
13
+ recognizer as a background service and takes care of everything around it:
14
+ starting it in a container (via the
15
+ [signalk-container](https://www.npmjs.com/package/signalk-container)
16
+ plugin), downloading the speech model, checking that it stays healthy, and
17
+ telling the rest of the voice stack where to find it. You never have to
18
+ touch docker or podman yourself.
19
+
20
+ It is the speech-to-text (STT) building block of the
13
21
  [signalk-wyoming voice-assistant family](https://github.com/hoeken/signalk-wyoming)
14
22
  — install it together with the `signalk-wyoming` orchestrator to get voice
15
- commands on your boat but it works equally well as a standalone Wyoming
16
- STT server for other consumers (e.g. Home Assistant).
23
+ commands on your boat. Because it speaks the standard
24
+ [Wyoming protocol](https://github.com/rhasspy/wyoming), it also works as a
25
+ standalone speech-to-text server for other software such as Home Assistant.
17
26
 
18
27
  ## Requirements
19
28
 
20
29
  - Signal K server ≥ 2.x on **Node 24+**
21
30
  - The **signalk-container** plugin with a working podman or docker runtime
22
- (this plugin declares `"signalk": { "requires": ["signalk-container"] }`)
23
31
  - RAM for the model: the default `tiny-int8` uses roughly **400–500 MB
24
32
  resident** (`base-int8` ≈ 700 MB). The container is capped at 1 GB by
25
- default so a misbehaving model cannot OOM the boat server. A TTS-only
26
- voice install does not need this plugin at all; the full voice stack with
27
- whisper is comfortable on a Pi 4/5 with 4 GB.
33
+ default so a misbehaving model cannot starve the boat server. The full
34
+ voice stack with whisper is comfortable on a Pi 4/5 with 4 GB. (A
35
+ TTS-only voice install does not need this plugin at all.)
28
36
 
29
37
  ## Install
30
38
 
@@ -34,19 +42,29 @@ enable the signalk-container plugin if you have not already.
34
42
 
35
43
  ## Configuration
36
44
 
37
- | Setting | Default | Notes |
38
- | ------------------------ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
39
- | `model` | `tiny-int8` | One of `tiny-int8`, `base-int8`, `small-int8`, `medium-int8`, `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium.en`, `turbo`. int8 models are recommended (smaller + faster on CPU). `auto` is deliberately **not** offered: with this image it can silently switch to a ~0.6 B-parameter sherpa/Parakeet backend and download hundreds of MB. |
40
- | `language` | `en` | Explicit language code. `auto` enables per-utterance detection but costs speed **and** accuracy on the small models — set it explicitly if you can. |
41
- | `initialPrompt` | nautical word list | Passed as `--initial-prompt` to bias recognition toward your vocabulary — the cheapest accuracy win available. See below. Empty disables it. |
42
- | `imageTag` | `auto` | `auto` runs the pinned, tested upstream release (**3.5.0**) and follows plugin updates. Set an explicit tag to pin something else. |
43
- | `port` | `10300` | Host TCP port — only used with `bind: 0.0.0.0`, where the service is published on exactly this port. With the default loopback networking the setting is ignored: signalk-container assigns the host port automatically (10300, or the next free port if that is taken). |
44
- | `advanced.bind` | `127.0.0.1` | `127.0.0.1` keeps whisper local to the boat server (recommended — the orchestrator is its only intended consumer). `0.0.0.0` publishes it on all interfaces, e.g. to share it with Home Assistant. See Security. |
45
- | `advanced.memoryLimit` | `1g` | Hard container memory cap (swap capped to the same value). |
46
- | `advanced.restartPolicy` | `unless-stopped` | Container runtime restart policy. |
45
+ The plugin ships a graphical configuration panel (Server → Plugin Config →
46
+ Whisper STT) with a live container status card, a one-click image update
47
+ check/apply, a version dropdown fed by Docker Hub, and all the settings
48
+ below with inline warnings if you pick a heavyweight model or open the
49
+ service to the network. On servers without custom-panel support you get a
50
+ plain settings form with the same options.
51
+
52
+ | Setting | Default | Notes |
53
+ | ------------------------ | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
54
+ | `model` | `tiny-int8` | One of `tiny-int8`, `base-int8`, `small-int8`, `medium-int8`, `tiny`, `tiny.en`, `base`, `base.en`, `small`, `small.en`, `medium.en`, `turbo`. int8 models are recommended (smaller + faster on CPU). See "Choosing a model". |
55
+ | `language` | `en` | Explicit language code. `auto` enables per-utterance detection but costs speed **and** accuracy on the small models — set it explicitly if you can. |
56
+ | `initialPrompt` | nautical word list | A list of words that biases recognition toward your vocabulary — the cheapest accuracy win available. See "The initial prompt". Empty disables it. |
57
+ | `imageTag` | `auto` | `auto` runs the pinned, tested upstream release (**3.5.0**) and follows plugin updates. Set an explicit tag to pin something else. |
58
+ | `port` | `10300` | Host TCP port — only used with `bind: 0.0.0.0`, where the service is published on exactly this port. With the default loopback networking the setting is ignored and a host port is assigned automatically. |
59
+ | `advanced.bind` | `127.0.0.1` | `127.0.0.1` keeps whisper local to the boat server (recommended — the orchestrator is its only intended consumer). `0.0.0.0` publishes it on all interfaces, e.g. to share it with Home Assistant. See Security. |
60
+ | `advanced.memoryLimit` | `1g` | Hard container memory cap (swap capped to the same value). |
61
+ | `advanced.restartPolicy` | `unless-stopped` | Container runtime restart policy. |
47
62
 
48
63
  ### Choosing a model
49
64
 
65
+ Bigger models transcribe more accurately but need more RAM and take longer
66
+ per utterance.
67
+
50
68
  | Model | Download | Resident RAM | When |
51
69
  | --------------------------------------- | -------------- | ------------ | ---------------------------------------------------------------------------- |
52
70
  | `tiny-int8` | ≈ 43 MB | ≈ 400–500 MB | Default. Fine for short commands on a Pi 4. |
@@ -58,6 +76,10 @@ Transcription latency is the practical constraint: the signalk-wyoming
58
76
  webapp's **Test screen** shows a per-transcription latency figure — use it
59
77
  to decide whether your hardware can afford a bigger model.
60
78
 
79
+ (A model setting of `auto` is deliberately **not** offered: with this
80
+ service it can silently switch to a much larger non-Whisper backend and
81
+ download hundreds of MB.)
82
+
61
83
  ### The initial prompt
62
84
 
63
85
  The shipped default biases Whisper toward sailing vocabulary:
@@ -73,47 +95,48 @@ Customize it with words Whisper would otherwise mis-hear, for example:
73
95
  - **local place and port names** ("Port Townsend, Deception Pass, Anacortes"),
74
96
  - **boat-specific gear** ("watermaker, Hydrovane, staysail, preventer").
75
97
 
76
- ## First start & offline behavior
98
+ ## First start & offline use
77
99
 
78
100
  On first start (and after a model change) the container downloads the model
79
- into this plugin's Signal K data directory, mounted at `/data` — the
80
- download survives container recreation and image updates. The plugin status
81
- shows _"starting — first start downloads the model (tiny-int8 ≈ 43 MB,
82
- base-int8 ≈ 80 MB)"_ until the service answers; the readiness deadline is
83
- 10 minutes to allow slow connections. **Do the first start (and any model
84
- change) while you have internet** — at sea with no connectivity a
85
- never-downloaded model cannot load, and the plugin will report the failure
86
- rather than sit silent.
101
+ into this plugin's Signal K data directory the download survives
102
+ container recreation and image updates, so it only happens once per model.
103
+ The plugin status shows _"starting — first start downloads the model
104
+ (tiny-int8 ≈ 43 MB, base-int8 ≈ 80 MB)"_ until the service answers; up to
105
+ 10 minutes are allowed for slow connections.
106
+
107
+ **Do the first start (and any model change) while you have internet** — at
108
+ sea with no connectivity a never-downloaded model cannot load, and the
109
+ plugin will report the failure rather than sit silent.
87
110
 
88
- ## How other software uses it
111
+ ## Using it from other software
89
112
 
90
113
  Once ready, the service is a plain Wyoming STT server at
91
114
  `tcp://<host>:<port>` (normally `tcp://127.0.0.1:10300`):
92
115
 
93
- - **signalk-wyoming** discovers it automatically: the plugin emits
94
- `{ plugin: "signalk-whisper", type: "asr", uri, status }` on the
95
- `wyoming-service` PropertyValues channel on every status change.
116
+ - **signalk-wyoming** discovers it automatically nothing to configure.
96
117
  - **Home Assistant** (or any other Wyoming client) can use it as an STT
97
118
  provider: set `advanced.bind` to `0.0.0.0` and point HA's Wyoming
98
119
  integration at `tcp://<boat-ip>:10300`.
99
120
 
100
- Status endpoint (any authenticated user):
101
- `GET /plugins/signalk-whisper/api/status` →
102
- `{ status, uri, tag, containerState, lastHealth, info }`. Admins can check
103
- and apply image updates via `GET /plugins/signalk-whisper/api/update/check`
104
- and `POST /plugins/signalk-whisper/api/update/apply`.
121
+ ## HTTP API
122
+
123
+ | Endpoint | Access | Purpose |
124
+ | ------------------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------- |
125
+ | `GET /plugins/signalk-whisper/api/status` | any authenticated user | Current state: `{ status, uri, tag, containerState, lastHealth, info }` |
126
+ | `GET /plugins/signalk-whisper/api/versions` | any authenticated user | Available image versions from Docker Hub (feeds the config panel; works while plugin disabled) |
127
+ | `GET /plugins/signalk-whisper/api/update/check` | admin | Check whether a newer image is available |
128
+ | `POST /plugins/signalk-whisper/api/update/apply` | admin | Pull and switch to the newer image |
105
129
 
106
130
  ## Health & notifications
107
131
 
108
- After startup the plugin sends a Wyoming `describe` ping every 30 s. Three
109
- consecutive failures raise the Signal K notification
110
- **`notifications.voice.whisper`** with `state: "alarm"` (method `visual`
111
- only deliberately not `sound`, so notification-to-speech bridges don't
112
- try to _speak_ the voice stack's own failure), set a plugin error, and mark
113
- the service `error` on `wyoming-service`. When the service answers again
114
- everything clears back to `ready`/`normal` automatically. Status flapping
115
- is debounced (≥ 500 ms between emissions) and pathological churn is logged
116
- instead of emitted.
132
+ The plugin checks the service every 30 seconds. If it stops answering,
133
+ after three consecutive failures (about 90 seconds) it raises the Signal K
134
+ notification **`notifications.voice.whisper`** with `state: "alarm"` and
135
+ shows an error in Plugin Config. When the service answers again everything
136
+ clears back to normal automatically no action needed.
137
+
138
+ The alarm is visual-only by design: plugins that read notifications aloud
139
+ won't try to _speak_ the voice stack's own failure.
117
140
 
118
141
  ## Security
119
142
 
@@ -127,22 +150,8 @@ marina-wifi hardening recipe).
127
150
 
128
151
  ## Development
129
152
 
130
- ```sh
131
- npm install
132
- npm run build # tsc → dist/
133
- npm test # typecheck + vitest (mock Wyoming server, fake container manager)
134
- npm run ci-lint # eslint + prettier --check
135
- npm run format # prettier + eslint --fix
136
- ```
137
-
138
- Tests run against the scriptable `MockWyomingServer` from the
139
- [signalk-wyoming](https://github.com/hoeken/signalk-wyoming) package's
140
- `signalk-wyoming/mock` export and a fake `signalk-container` manager —
141
- no docker/podman or network access needed.
142
-
143
- Production code has **no** runtime dependency on the orchestrator package:
144
- the Wyoming `describe` handshake is a ~140-line embedded client
145
- (`src/wyoming.ts`).
153
+ See [DEVELOPERS.md](DEVELOPERS.md) for the code layout, build/test
154
+ commands, architecture notes, and the service-discovery contract.
146
155
 
147
156
  ## License
148
157
 
package/dist/config.d.ts CHANGED
@@ -55,6 +55,8 @@ export declare function defaultSettings(): WhisperSettings;
55
55
  export declare function applyDefaults(raw: unknown): WhisperSettings;
56
56
  /** Maps the user-facing tag to the tag actually run: "auto" → pinned. */
57
57
  export declare function resolveTag(requested: string): string;
58
+ /** True for plain numeric semver tags like "3.5.0" (update-check filter). */
59
+ export declare function isSemverTag(tag: string): boolean;
58
60
  /**
59
61
  * Pure, deterministic settings → ContainerConfig mapping. Called on every
60
62
  * start/update; the `command` array is always present and stable so
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,2EAA2E;AAC3E,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,KAAK,4BAA4B,CAAC;AAC/C,4EAA4E;AAC5E,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,iBAAiB,gCAAgC,CAAC;AAC/D,2EAA2E;AAC3E,eAAO,MAAM,aAAa,mDAAyC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,mJAajB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,eAAe,QAIqB,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,IAAI,GAAG,gBAAgB,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,eAAe,IAAI,eAAe,CAajD;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAkD3D;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,MAAM,GACV,eAAe,CA4BjB;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FhB,CAAC;AAEX,eAAO,MAAM,SAAS;;;;CAIZ,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,2EAA2E;AAC3E,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,KAAK,4BAA4B,CAAC;AAC/C,4EAA4E;AAC5E,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,iBAAiB,gCAAgC,CAAC;AAC/D,2EAA2E;AAC3E,eAAO,MAAM,aAAa,mDAAyC,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,mJAajB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,eAAe,QAIqB,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,IAAI,GAAG,gBAAgB,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,eAAe,IAAI,eAAe,CAajD;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAkD3D;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,MAAM,GACV,eAAe,CA4BjB;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FhB,CAAC;AAEX,eAAO,MAAM,SAAS;;;;CAIZ,CAAC"}
package/dist/config.js CHANGED
@@ -116,6 +116,10 @@ export function applyDefaults(raw) {
116
116
  export function resolveTag(requested) {
117
117
  return requested === "auto" ? PINNED_TAG : requested;
118
118
  }
119
+ /** True for plain numeric semver tags like "3.5.0" (update-check filter). */
120
+ export function isSemverTag(tag) {
121
+ return /^\d+\.\d+\.\d+$/.test(tag);
122
+ }
119
123
  /**
120
124
  * Pure, deterministic settings → ContainerConfig mapping. Called on every
121
125
  * start/update; the `command` array is always present and stable so
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAClC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,CAAC,MAAM,KAAK,GAAG,yBAAyB,CAAC;AAC/C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAClC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAC/D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG,sCAAsC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,WAAW;IACX,OAAO;CACC,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAC1B,yEAAyE;IACzE,uEAAuE;IACvE,8DAA8D;IAC9D,+CAA+C,CAAC;AAiBlD,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,eAAe;QAC9B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,gBAAgB;SAChC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvD,MAAM,KAAK,GACT,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAC5B,cAAoC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACvD,CAAC,CAAE,GAAG,CAAC,KAAsB;QAC7B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IACrB,MAAM,QAAQ,GACZ,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAC5D,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QACrB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACxB,mEAAmE;IACnE,MAAM,aAAa,GACjB,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;QACnC,CAAC,CAAC,GAAG,CAAC,aAAa;QACnB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC7B,MAAM,QAAQ,GACZ,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAC5D,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QACrB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACxB,MAAM,IAAI,GACR,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,CAAC;QACZ,GAAG,CAAC,IAAI,IAAI,KAAK;QACf,CAAC,CAAC,GAAG,CAAC,IAAI;QACV,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzE,MAAM,WAAW,GACf,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;QAClE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;QACxB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpC,MAAM,aAAa,GACjB,GAAG,CAAC,aAAa,KAAK,IAAI;QAC1B,GAAG,CAAC,aAAa,KAAK,QAAQ;QAC9B,GAAG,CAAC,aAAa,KAAK,gBAAgB;QACpC,CAAC,CAAC,GAAG,CAAC,aAAa;QACnB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;IAEtC,OAAO;QACL,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,aAAa;QACb,IAAI;QACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,GAAW;IAEX,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG;QACd,SAAS;QACT,QAAQ,CAAC,KAAK;QACd,YAAY;QACZ,QAAQ,CAAC,QAAQ;QACjB,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;KACvD,CAAC;IACF,MAAM,MAAM,GAAoB;QAC9B,KAAK,EAAE,KAAK;QACZ,GAAG;QACH,OAAO;QACP,qEAAqE;QACrE,qEAAqE;QACrE,gBAAgB,EAAE,OAAO;QACzB,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa;QACxC,SAAS,EAAE;YACT,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;YACrC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;SAC1C;KACF,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,sBAAsB,GAAG,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC;YACzB,OAAO,EAAE,WAAW;YACpB,WAAW,EACT,6DAA6D;gBAC7D,oEAAoE;gBACpE,mEAAmE;gBACnE,kEAAkE;gBAClE,+DAA+D;gBAC/D,yCAAyC;SAC5C;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,uEAAuE;gBACvE,oEAAoE;gBACpE,wCAAwC;SAC3C;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,kCAAkC;YACzC,OAAO,EAAE,eAAe;YACxB,WAAW,EACT,iEAAiE;gBACjE,qEAAqE;gBACrE,qEAAqE;gBACrE,aAAa;SAChB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,MAAM;YACf,WAAW,EACT,wBAAwB,KAAK,mCAAmC;gBAChE,YAAY,UAAU,8CAA8C;gBACpE,oEAAoE;SACvE;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,YAAY;YACrB,WAAW,EACT,+DAA+D;gBAC/D,mEAAmE;gBACnE,6DAA6D;gBAC7D,iEAAiE;gBACjE,wDAAwD;SAC3D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;oBAC9B,OAAO,EAAE,WAAW;oBACpB,WAAW,EACT,6DAA6D;wBAC7D,yDAAyD;wBACzD,+DAA+D;wBAC/D,gEAAgE;wBAChE,iEAAiE;wBACjE,yBAAyB;iBAC5B;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,cAAc;oBACrB,OAAO,EAAE,IAAI;oBACb,WAAW,EACT,6DAA6D;wBAC7D,8DAA8D;wBAC9D,mCAAmC;iBACtC;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,gBAAgB;oBACvB,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,CAAC;oBACxC,OAAO,EAAE,gBAAgB;oBACzB,WAAW,EAAE,mCAAmC;iBACjD;aACF;SACF;KACF;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,aAAa,EAAE;QACb,WAAW,EAAE,UAAU;KACxB;CACO,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAQ7D,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AAgBzB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CA4F3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAc7D,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AA6BzB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAiI3D"}
package/dist/index.js CHANGED
@@ -7,10 +7,22 @@
7
7
  * shared `wyoming-service` PropertyValues channel for the signalk-wyoming
8
8
  * orchestrator (or any other consumer) to discover.
9
9
  */
10
- import { errMsg } from "signalk-container-helper";
11
- import { applyDefaults, CONFIG_SCHEMA, PLUGIN_ID, UI_SCHEMA, } from "./config.js";
10
+ import { errMsg, fetchWithTimeout, } from "signalk-container-helper";
11
+ import { applyDefaults, CONFIG_SCHEMA, IMAGE, isSemverTag, PLUGIN_ID, UI_SCHEMA, } from "./config.js";
12
12
  import { ServiceRunner } from "./service.js";
13
13
  export { ServiceRunner };
14
+ const TAGS_URL = `https://hub.docker.com/v2/repositories/${IMAGE}/tags/?page_size=25`;
15
+ /** Numeric-descending compare for the plain x.y.z tags isSemverTag admits. */
16
+ function compareSemverDesc(a, b) {
17
+ const pa = a.split(".").map(Number);
18
+ const pb = b.split(".").map(Number);
19
+ for (let i = 0; i < 3; i += 1) {
20
+ const d = (pb[i] ?? 0) - (pa[i] ?? 0);
21
+ if (d !== 0)
22
+ return d;
23
+ }
24
+ return 0;
25
+ }
14
26
  export default function createPlugin(app) {
15
27
  let runner;
16
28
  let lastConfig = {};
@@ -73,22 +85,49 @@ export default function createPlugin(app) {
73
85
  r.onUpdateApplied(resolvedTag);
74
86
  },
75
87
  });
76
- // GET /plugins/signalk-whisper/api/status — any authenticated user
77
- // when the server supports route permissions, admin-only otherwise.
78
- const statusHandler = guard(async (_req, res) => {
88
+ // Readonly routes — any authenticated user when the server supports
89
+ // route permissions, admin-only otherwise.
90
+ const readonlyRouter = typeof pluginRouter.access === "function"
91
+ ? pluginRouter.access("readonly")
92
+ : pluginRouter;
93
+ // GET /plugins/signalk-whisper/api/status
94
+ readonlyRouter.get("/api/status", guard(async (_req, res) => {
79
95
  try {
80
96
  res.json(await r.statusReport());
81
97
  }
82
98
  catch (err) {
83
99
  res.status(500).json({ error: errMsg(err) });
84
100
  }
101
+ }));
102
+ // GET /plugins/signalk-whisper/api/versions — the config panel's
103
+ // version-dropdown feed. Deliberately NOT guarded by the running
104
+ // flag: the operator picks a tag while the plugin is still disabled,
105
+ // and the route only reaches out to Docker Hub on demand.
106
+ readonlyRouter.get("/api/versions", (_req, res) => {
107
+ void (async () => {
108
+ try {
109
+ const response = await fetchWithTimeout(TAGS_URL, {
110
+ timeoutMs: 10_000,
111
+ });
112
+ if (!response.ok) {
113
+ res
114
+ .status(502)
115
+ .json({ error: `Docker Hub answered HTTP ${response.status}` });
116
+ return;
117
+ }
118
+ const body = (await response.json());
119
+ const versions = (Array.isArray(body.results) ? body.results : [])
120
+ .map((entry) => typeof entry?.name === "string" ? entry.name : "")
121
+ .filter(isSemverTag)
122
+ .sort(compareSemverDesc)
123
+ .map((tag) => ({ tag }));
124
+ res.json({ versions });
125
+ }
126
+ catch (err) {
127
+ res.status(502).json({ error: errMsg(err) });
128
+ }
129
+ })();
85
130
  });
86
- if (typeof pluginRouter.access === "function") {
87
- pluginRouter.access("readonly").get("/api/status", statusHandler);
88
- }
89
- else {
90
- pluginRouter.get("/api/status", statusHandler);
91
- }
92
131
  },
93
132
  };
94
133
  return plugin;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -13,7 +13,7 @@
13
13
  * deliberately omitted; readiness is our own describe loop (src/wyoming.ts).
14
14
  */
15
15
  import { ManagedContainer, startSafely, errMsg, } from "signalk-container-helper";
16
- import { buildContainerConfig, CONTAINER_NAME, defaultSettings, DOWNLOAD_HINT, IMAGE, NOTIFICATION_PATH, PLUGIN_ID, resolveTag, SERVICE_TYPE, WYOMING_PORT, } from "./config.js";
16
+ import { buildContainerConfig, CONTAINER_NAME, defaultSettings, DOWNLOAD_HINT, IMAGE, isSemverTag, NOTIFICATION_PATH, PLUGIN_ID, resolveTag, SERVICE_TYPE, WYOMING_PORT, } from "./config.js";
17
17
  import { describeService } from "./wyoming.js";
18
18
  /**
19
19
  * Emission discipline for the shared `wyoming-service` property (§3.1):
@@ -224,9 +224,9 @@ export class ServiceRunner {
224
224
  buildConfig: (tag) => buildContainerConfig(this.settings, tag),
225
225
  updates: {
226
226
  versionSource: {
227
- dockerHubTags: IMAGE,
228
227
  // Numeric semver tags only (drop latest/branch tags).
229
- filter: (tag) => /^\d+\.\d+\.\d+$/.test(tag),
228
+ dockerHubTags: IMAGE,
229
+ filter: isSemverTag,
230
230
  },
231
231
  },
232
232
  ensureOptions: {
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,MAAM,GAEP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,GAEb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAuB,MAAM,cAAc,CAAC;AA+BpE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACxB,GAAG,GAAkB,IAAI,CAAC;IAET,GAAG,CAAkD;IACrD,QAAQ,CAAmC;IAC3C,MAAM,CAAgB;IAC/B,UAAU,GAAyB,IAAI,CAAC;IACxC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,OAAO,GACb,IAAI,CAAC;IACC,UAAU,GAChB,IAAI,CAAC;IACC,SAAS,GAAa,EAAE,CAAC;IACzB,QAAQ,GAAG,KAAK,CAAC;IACjB,UAAU,GAAG,KAAK,CAAC;IAE3B,YACE,GAAoD,EACpD,QAA0C,EAC1C,MAA+B;QAE/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG;YACZ,aAAa,EAAE,GAAG;YAClB,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,EAAE;YACb,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,MAAqB;QAC3B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,mEAAmE;YACnE,wCAAwC;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;YAAE,OAAO,CAAC,iCAAiC;QAChE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,sBAAsB;YACpD,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC;QAC/D,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;gBAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,aAAa,KAAK,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,wDAAwD;IACxD,aAAa;QACX,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,KAAK;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,MAAqB;QAChC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,wBAAwB;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAC1C,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,yCAAyC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;oBAC/D,kBAAkB,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,OAAO;oBACxD,wCAAwC,CAC3C,CAAC;YACJ,CAAC;YACD,+DAA+D;YAC/D,iEAAiE;YACjE,gEAAgE;YAChE,gEAAgE;YAChE,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,MAAM,KAAK,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,MAAM,YAAY,GAA+B;YAC/C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC5B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM;SACP,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,+CAA+C;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mEAAmE;YACnE,uDAAuD;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,kEAAkE;gBAChE,qDAAqD,MAAM,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA2BD,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,gBAAgB,EAAE,OAAO;IACzB,kBAAkB,EAAE,KAAK;IACzB,iBAAiB,EAAE,KAAK;IACxB,cAAc,EAAE,OAAO,EAAE,2CAA2C;IACpE,iBAAiB,EAAE,MAAM;IACzB,gBAAgB,EAAE,MAAM;IACxB,eAAe,EAAE,KAAK;IACtB,mBAAmB,EAAE,CAAC;IACtB,iBAAiB,EAAE,GAAG;IACtB,YAAY,EAAE,MAAM;IACpB,SAAS,EAAE,EAAE;CACd,CAAC;AAmBF,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,aAAa;IACf,SAAS,CAAmB;IAEpB,GAAG,CAAa;IAChB,MAAM,CAAe;IACrB,OAAO,CAAgB;IAChC,QAAQ,GAAoB,eAAe,EAAE,CAAC;IAC9C,OAAO,GAAG,KAAK,CAAC;IAChB,QAAQ,GAAG,CAAC,CAAC;IACb,MAAM,GAAkB,SAAS,CAAC;IAClC,GAAG,GAAkB,IAAI,CAAC;IAC1B,WAAW,GAA0B,IAAI,CAAC;IAC1C,aAAa,GAAG,KAAK,CAAC;IACtB,mBAAmB,GAAG,CAAC,CAAC;IACxB,UAAU,GAAsB,IAAI,CAAC;IACrC,QAAQ,GAAmC,IAAI,CAAC;IAChD,aAAa,GAA8B,IAAI,CAAC;IAExD,YAAY,GAAe,EAAE,SAAgC,EAAE;QAC7D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAC9B,GAAG,EACH,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EACzC;YACE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAC5C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CACF,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC;YACpC,GAAG;YACH,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,cAAc,EAAE,2BAA2B;YACjD,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,MAAM;YAClB,UAAU;YACV,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC9D,OAAO,EAAE;gBACP,aAAa,EAAE;oBACb,sDAAsD;oBACtD,aAAa,EAAE,KAAK;oBACpB,MAAM,EAAE,WAAW;iBACpB;aACF;YACD,aAAa,EAAE;gBACb,8DAA8D;gBAC9D,wDAAwD;gBACxD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,wBAAwB,KAAK,EAAE,CAAC;aACnE;YACD,oEAAoE;YACpE,8DAA8D;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAyB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC9B,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,iDAAiD;QAClE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,4CAA4C;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAC5D,cAAc,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC/C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ;SACpB,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,mBAAmB;IACnB,wEAAwE;IAEhE,MAAM,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,KAAa;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,GAAW;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,qCAAqC;QACpE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAAC,KAAa,EAAE,GAAW;QACtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,8CAA8C;QAC1E,IAAI,CAAC,GAAG,CAAC,eAAe,CACtB,YAAY,KAAK,IAAI,GAAG,qCAAqC;YAC3D,IAAI,aAAa,GAAG,CACvB,CAAC;QAEF,sEAAsE;QACtE,qEAAqE;QACrE,mEAAmE;QACnE,+CAA+C;QAC/C,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,GAAG,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO;YAChC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,GAAG,GACP,uDAAuD;oBACvD,uCAAuC,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB;QAErD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,kEAAkE;YAClE,iEAAiE;YACjE,8DAA8D;YAC9D,6DAA6D;YAC7D,4CAA4C;YAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CACxB,KAAa,EACb,IAAY,EACZ,GAAW;QAEX,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACxD,IAAI,UAAU,GAAG,SAAS,CAAC;QAC3B,IAAI,SAA6B,CAAC;QAClC,SAAS,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE;oBACvC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;iBACzC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;gBAChE,MAAM,GAAG,GACP,oDAAoD,OAAO,GAAG;oBAC9D,cAAc,IAAI,CAAC,GAAG,kBAAkB;oBACxC,CAAC,SAAS,IAAI,+BAA+B,CAAC,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACtD,UAAU,GAAG,GAAG,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,CAAC,eAAe,CACtB,YAAY,KAAK,IAAI,GAAG,qCAAqC;oBAC3D,IAAI,OAAO,8CAA8C;oBACzD,GAAG,aAAa,GAAG,CACtB,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAsB;QACzC,wEAAwE;QACxE,sEAAsE;QACtE,+BAA+B;QAC/B,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,kDAAkD,MAAM,CAAC,OAAO,IAAI;gBAClE,kEAAkE,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,+DAA+D;gBAC7D,6BAA6B,CAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,4BAA4B,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,GAAW;QAC7B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,wEAAwE;IACxE,cAAc;IACd,wEAAwE;IAEhE,eAAe,CAAC,KAAa,EAAE,IAAY,EAAE,GAAW;QAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;IAC7B,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,KAAa,EACb,IAAY,EACZ,IAAY,EACZ,GAAW;QAEX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QACtD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE;gBAC/C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;aACvC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO;YAChC,IAAI,CAAC,UAAU,GAAG;gBAChB,EAAE,EAAE,IAAI;gBACR,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBACd,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG;gBAChB,EAAE,EAAE,KAAK;gBACT,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBACd,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,MAAM;aACd,CAAC;YACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,gCAAgC,IAAI,CAAC,mBAAmB,QAAQ;gBAC9D,SAAS,MAAM,EAAE,CACpB,CAAC;YACF,IACE,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB;gBAC3D,IAAI,CAAC,MAAM,KAAK,OAAO,EACvB,CAAC;gBACD,MAAM,GAAG,GACP,wDAAwD;oBACxD,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,mBAAmB,eAAe;oBACvD,cAAc,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,4EAA4E;IACpE,KAAK,CAAC,QAAQ;QACpB,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,iCAAiC;QACrE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE;gBAChC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;aACvC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,4BAA4B;IAC5B,wEAAwE;IAEhE,SAAS,CAAC,MAAqB;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,KAAyB,EAAE,OAAe;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;YAAE,OAAO;QACzC,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE;gBAChC,OAAO,EAAE;oBACP;wBACE,MAAM,EAAE;4BACN;gCACE,IAAI,EAAE,iBAAiB;gCACvB,4DAA4D;gCAC5D,2CAA2C;gCAC3C,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE;6BAC9C;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "signalk-whisper",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Whisper speech-to-text (Wyoming protocol) for Signal K — runs rhasspy/wyoming-whisper in a managed container.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "files": [
9
9
  "dist",
10
+ "public",
10
11
  "README.md",
11
12
  "LICENSE"
12
13
  ],
13
14
  "scripts": {
14
- "build": "tsc",
15
+ "build": "tsc && webpack",
15
16
  "test": "npm run typecheck:test && vitest run",
16
17
  "test:watch": "vitest",
17
18
  "typecheck": "tsc --noEmit",
@@ -25,7 +26,7 @@
25
26
  "prepublishOnly": "npm run build && npm test"
26
27
  },
27
28
  "lint-staged": {
28
- "*.ts": [
29
+ "*.{ts,jsx}": [
29
30
  "eslint --fix",
30
31
  "prettier --write"
31
32
  ],
@@ -33,6 +34,7 @@
33
34
  },
34
35
  "keywords": [
35
36
  "signalk-node-server-plugin",
37
+ "signalk-plugin-configurator",
36
38
  "signalk-category-utility",
37
39
  "wyoming",
38
40
  "whisper",
@@ -58,21 +60,28 @@
58
60
  "node": ">=24"
59
61
  },
60
62
  "dependencies": {
61
- "signalk-container-helper": "^0.1.0"
63
+ "signalk-container-helper": "^0.2.1"
62
64
  },
63
65
  "devDependencies": {
66
+ "@babel/core": "^7.29.0",
67
+ "@babel/preset-react": "^7.28.5",
64
68
  "@eslint/js": "^10.0.1",
65
69
  "@signalk/server-api": "^2.30.0",
66
70
  "@types/node": "^24.0.0",
71
+ "babel-loader": "^10.1.1",
67
72
  "eslint": "^10.2.0",
68
73
  "eslint-config-prettier": "^10.1.8",
69
74
  "globals": "^17.4.0",
70
75
  "husky": "^9.1.7",
71
76
  "lint-staged": "^16.4.0",
72
77
  "prettier": "^3.8.1",
78
+ "react": "^19.2.4",
79
+ "react-dom": "^19.2.4",
73
80
  "signalk-wyoming": "^0.1.0",
74
81
  "typescript": "^5.5.0",
75
82
  "typescript-eslint": "^8.58.0",
76
- "vitest": "^4.1.10"
83
+ "vitest": "^4.1.10",
84
+ "webpack": "^5.105.4",
85
+ "webpack-cli": "^7.0.2"
77
86
  }
78
87
  }
package/public/172.mjs ADDED
@@ -0,0 +1 @@
1
+ export const __webpack_esm_id__=172;export const __webpack_esm_ids__=[172];export const __webpack_esm_modules__={172(e,t,n){n.d(t,{default:()=>E}),n.r(t);var a=n(231);function r(e,t={}){const{stableCount:n=5,preCount:a=3}=t,r=e.filter(e=>"number"==typeof e.pr),o=e.filter(e=>"number"!=typeof e.pr);return{prVersions:r,stableVersions:o.filter(e=>!e.prerelease).slice(0,n),preVersions:o.filter(e=>e.prerelease).slice(0,a)}}const o={root:{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',color:"#333",padding:"16px 0"},sectionTitle:{fontSize:13,fontWeight:600,color:"#888",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:10,marginTop:24},btn:{display:"inline-flex",alignItems:"center",gap:8,padding:"8px 16px",border:"none",borderRadius:6,fontSize:13,fontWeight:600,cursor:"pointer"},btnPrimary:{background:"#3b82f6",color:"#fff"},btnSecondary:{background:"#f1f5f9",color:"#475569",border:"1px solid #e2e8f0"},btnWarn:{background:"#f59e0b",color:"#fff"},btnDanger:{background:"#ef4444",color:"#fff"},btnDisabled:{opacity:.5,cursor:"not-allowed"},btnSmall:{padding:"4px 12px",fontSize:12},status:{marginTop:8,fontSize:12,minHeight:18},card:{display:"flex",alignItems:"center",gap:14,padding:"14px 18px",background:"#f8f9fa",border:"1px solid #e0e0e0",borderRadius:10,marginBottom:12},cardIcon:{width:44,height:44,borderRadius:10,display:"flex",alignItems:"center",justifyContent:"center",fontSize:20,fontWeight:700,flexShrink:0},cardInfo:{flex:1},cardTitle:{fontSize:15,fontWeight:600,color:"#333"},cardMeta:{fontSize:12,color:"#888"},stateIndicator:{width:10,height:10,borderRadius:"50%",flexShrink:0},fieldRow:{display:"flex",alignItems:"center",gap:12,marginBottom:10},label:{fontSize:13,fontWeight:500,color:"#555",width:180,flexShrink:0},select:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",minWidth:200},input:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",width:200},inputSmall:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",width:80},checkbox:{width:16,height:16,accentColor:"#3b82f6"},hint:{fontSize:11,color:"#aaa",marginLeft:8},link:{color:"#3b82f6",textDecoration:"none",fontSize:13,fontWeight:600},textarea:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,fontFamily:"monospace",background:"#fff",color:"#333",width:"100%",minHeight:70,boxSizing:"border-box",resize:"vertical"},empty:{textAlign:"center",padding:"30px 16px",color:"#999",fontSize:13},tag:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:10,fontWeight:600,marginLeft:8},tagPre:{background:"#fef3c7",color:"#92400e"},tagLatest:{background:"#dcfce7",color:"#166534"},warnBanner:{padding:"12px 16px",background:"#fef2f2",border:"1px solid #fecaca",borderRadius:10,marginBottom:12,fontSize:13,color:"#991b1b",lineHeight:1.5},warnBannerTitle:{fontWeight:700,marginBottom:4},infoBanner:{padding:"12px 16px",background:"#fffbeb",border:"1px solid #fde68a",borderRadius:10,marginBottom:12,fontSize:13,color:"#92400e",lineHeight:1.5},bannerCode:{display:"block",marginTop:8,padding:"8px 10px",background:"#fff",border:"1px solid #fecaca",borderRadius:6,fontFamily:"monospace",fontSize:12,color:"#7f1d1d",whiteSpace:"pre-wrap",wordBreak:"break-word"},statsGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:10,marginBottom:12},statCard:{padding:"12px 16px",background:"#f8f9fa",border:"1px solid #e0e0e0",borderRadius:10,textAlign:"center"},statValue:{fontSize:22,fontWeight:700,color:"#333"},statLabel:{fontSize:11,color:"#888",marginTop:2}},l={ok:"#10b981",warn:"#f59e0b",error:"#ef4444"};function i(e){const{runningTag:t,tagKind:n,currentVersion:a,latestVersion:r,updateAvailable:o,reason:l,fromCache:i,lastSuccessfulCheckAt:s}=e??{};return"offline"===l?i&&s?`Offline — last checked ${function(e){try{const t=new Date(e).getTime(),n=Math.max(0,Math.floor((Date.now()-t)/1e3));if(n<5)return"just now";if(n<60)return`${n}s ago`;const a=Math.floor(n/60);if(a<60)return`${a}m ago`;const r=Math.floor(a/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}catch{return e}}(s)}: ${o?"update available":"up to date"}`:"Offline — never checked yet":"newer-version"===l?`Update available: ${a} → ${r}`:"digest-drift"===l?`Image rebuild available for :${t}${r?` (latest stable: ${r})`:""}`:"up-to-date"===l?"floating"===n&&r?`Up to date with :${t} (latest stable: ${r})`:`Up to date (${a||t})`:"older-than-pinned"===l?`Pinned to ${a}; latest stable is ${r}`:"error"===l?`Check error: ${e?.error||"unknown"}`:`State: ${l||"unknown"}`}function s({children:e}){return a.createElement("div",{style:o.sectionTitle},e)}function c({children:e,color:t}){return a.createElement("span",{style:{...o.hint,...t?{color:t}:{}}},e)}function d({label:e,hint:t,hintColor:n,children:r}){return a.createElement("div",{style:o.fieldRow},a.createElement("span",{style:o.label},e),r,null!=t&&""!==t&&a.createElement(c,{color:n},t))}function u({state:e="ok",color:t,title:n,style:r}){return a.createElement("div",{style:{...o.stateIndicator,background:t??l[e],...r},title:n})}function p({icon:e,iconBackground:t,iconColor:n,title:r,meta:i,state:s="ok",stateTitle:c,link:d,children:p}){const g="error"===s&&!t;return a.createElement("div",{style:o.card},a.createElement("div",{style:{...o.cardIcon,background:g?"#fef2f2":t??"#3b82f6",color:g?l.error:n??"#fff"}},e),a.createElement("div",{style:o.cardInfo},a.createElement("div",{style:o.cardTitle},r),null!=i&&a.createElement("div",{style:o.cardMeta},i)),p,d&&a.createElement("a",{href:d.href,target:"_blank",rel:"noopener noreferrer",style:o.link},d.label),a.createElement(u,{state:s,title:c}))}function g({title:e,defaultOpen:t=!1,children:n}){const[r,l]=(0,a.useState)(t);return a.createElement("div",null,a.createElement("button",{type:"button","aria-expanded":r,style:{...o.sectionTitle,cursor:"pointer",userSelect:"none",display:"flex",alignItems:"center",gap:6,width:"100%",textAlign:"left",background:"none",border:"none",padding:0},onClick:()=>l(!r)},a.createElement("span",{style:{fontSize:10,transition:"transform 0.15s",transform:r?"rotate(90deg)":"rotate(0deg)"}},"▶"),e),r&&a.createElement("div",{style:{marginBottom:16}},n))}const f={primary:o.btnPrimary,secondary:o.btnSecondary,warn:o.btnWarn,danger:o.btnDanger};function m({variant:e="primary",small:t=!1,busy:n=!1,busyLabel:r,disabled:l=!1,onClick:i,title:s,style:c,children:d}){const u=l||n;return a.createElement("button",{type:"button",style:{...o.btn,...f[e],...t?o.btnSmall:{},...u?o.btnDisabled:{},...c},onClick:i,disabled:u,title:s},n?r??d:d)}function b({message:e,error:t=!1,style:n}){return e?a.createElement("div",{style:{...o.status,color:t?l.error:l.ok,marginTop:16,...n}},e):null}const h=[{tag:"latest",label:"latest (recommended)"}];function y({value:e,onChange:t,versions:n,floatingOptions:i=h,stableCount:s,preCount:d,loading:u=!1,error:p,onRefresh:g,disabled:f=!1,style:b}){const y={stableCount:s,preCount:d},{prVersions:k,stableVersions:v,preVersions:w}=r(n,y),E=function(e,t,n=["latest"],a={}){return e?function(e,t=["latest"],n={}){const{prVersions:a,stableVersions:o,preVersions:l}=r(e,n);return new Set([...t,...l.map(e=>e.tag),...o.map(e=>e.tag),...a.map(e=>e.tag)])}(t,n,a).has(e)?null:e:null}(e,n,i.map(e=>e.tag),y);return a.createElement(a.Fragment,null,a.createElement("select",{style:{...o.select,...b},value:e,onChange:e=>t(e.target.value),disabled:f},i.map(e=>a.createElement("option",{key:e.tag,value:e.tag},e.label??e.tag)),w.map(e=>a.createElement("option",{key:e.tag,value:e.tag},e.tag," (pre-release)")),v.map((e,t)=>a.createElement("option",{key:e.tag,value:e.tag},e.tag,0===t?" (current stable)":"")),k.length>0&&a.createElement("optgroup",{label:"PR test images"},k.map(e=>a.createElement("option",{key:e.tag,value:e.tag},e.tag,e.title?` — ${e.title}`:""))),E&&a.createElement("option",{value:E},E," (running)")),u&&a.createElement(c,null,"loading releases..."),g&&a.createElement(m,{small:!0,style:{padding:"4px 10px",fontSize:11},onClick:g,title:"Refresh available versions"},"↻"),p&&a.createElement(c,{color:l.error},p))}function k({checkUrl:e,applyUrl:t,tag:n,onApplied:r,updateLabel:o="Update",disabled:s=!1,style:c}){const d=function(e){const{checkUrl:t,applyUrl:n}=e,[r,o]=(0,a.useState)(!1),[l,i]=(0,a.useState)(!1),[s,c]=(0,a.useState)(null),[d,u]=(0,a.useState)("");return{checking:r,applying:l,result:s,error:d,check:(0,a.useCallback)(async()=>{o(!0),u("");try{const e=await fetch(t),n=await e.json().catch(()=>null);if(e.ok&&n&&"object"==typeof n)c(n);else{const t=n?.error??`HTTP ${e.status}`;u(`Check failed: ${t}`)}}catch(e){u(`Check failed: ${e instanceof Error?e.message:String(e)}`)}o(!1)},[t]),apply:(0,a.useCallback)(async e=>{let t;i(!0),u("");try{const a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e?{tag:e}:{})}),r=await a.json().catch(()=>null);a.ok?(t={ok:!0,tag:r?.tag},c(null)):(t={ok:!1,error:r?.error??`HTTP ${a.status}`},u(`Update failed: ${t.error}`))}catch(e){t={ok:!1,error:e instanceof Error?e.message:String(e)},u(`Update failed: ${t.error}`)}return i(!1),t},[n])}}({checkUrl:e,applyUrl:t}),[u,p]=(0,a.useState)("");return a.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:12,...c}},d.result?.updateAvailable?a.createElement(a.Fragment,null,a.createElement("span",{style:{fontSize:13}},i(d.result)),a.createElement(m,{small:!0,variant:"warn",busy:d.applying,busyLabel:"Updating...",disabled:s||d.checking,onClick:()=>{(async()=>{p("");const e=await d.apply(n);e.ok&&(p(e.tag?`Updated to ${e.tag}.`:"Updated."),r?.(e.tag))})()},title:"Pull the image and recreate the container"},o)):d.result?a.createElement("span",{style:{fontSize:12,color:"#888"}},i(d.result)):a.createElement(m,{small:!0,variant:"secondary",busy:d.checking,busyLabel:"Checking...",disabled:s||d.applying,onClick:()=>{d.check()}},"Check for updates"),u&&a.createElement("span",{style:{fontSize:12,color:l.ok}},u),d.error&&a.createElement("span",{style:{fontSize:12,color:l.error}},d.error))}const v="/plugins/signalk-whisper",w=["tiny-int8","base-int8","small-int8","medium-int8","tiny","tiny.en","base","base.en","small","small.en","medium.en","turbo"];function E({configuration:e,save:t}){const n=e||{},r=n.advanced||{},[i,c]=(0,a.useState)(w.includes(n.model)?n.model:"tiny-int8"),[u,f]=(0,a.useState)(n.language||"en"),[h,E]=(0,a.useState)("string"==typeof n.initialPrompt?n.initialPrompt:"Genoa, jib, mainsail, spinnaker, windlass, gybe, tack, halyard, winch, anchor chain, rode, bilge, galley, helm, autopilot, waypoint, knots, port, starboard, bow, stern, leeward, windward, reef, furl, log position, anchor alarm, engine, throttle."),[S,x]=(0,a.useState)(n.imageTag||"auto"),[C,$]=(0,a.useState)(String(n.port??10300)),[z,T]=(0,a.useState)("0.0.0.0"===r.bind?"0.0.0.0":"127.0.0.1"),[R,B]=(0,a.useState)(r.memoryLimit||"1g"),[_,W]=(0,a.useState)(r.restartPolicy||"unless-stopped"),[A,I]=(0,a.useState)(""),{status:P,loading:U,refresh:M}=function(e,t={}){const{intervalMs:n=5e3}=t,[r,o]=(0,a.useState)(null),[l,i]=(0,a.useState)(!0),s=(0,a.useRef)(0),c=(0,a.useRef)(t.fallback??null),d=(0,a.useCallback)(async t=>{const n=++s.current;let a=c.current;try{const n=await fetch(e,{signal:t}),r=await n.json().catch(()=>null);r&&"object"==typeof r&&(a=r)}catch{}n===s.current&&(o(a),i(!1))},[e]);return(0,a.useEffect)(()=>{let e=!1,t=null;const a=new AbortController,r=async()=>{await d(a.signal),!e&&n>0&&(t=setTimeout(r,n))};return r(),()=>{e=!0,a.abort(),t&&clearTimeout(t)}},[d,n]),{status:r,loading:l,refresh:()=>d()}}(`${v}/api/status`,{fallback:{status:"not_running"}}),j=function(e){const[t,n]=(0,a.useState)([]),[r,o]=(0,a.useState)(""),[l,i]=(0,a.useState)(!1),s=(0,a.useRef)(0),c=(0,a.useCallback)(async()=>{const t=++s.current;i(!0);try{const a=await fetch(e),r=await a.json().catch(()=>null),l=function(e,t){if(!e)return{versions:null,versionsError:"⚠ Could not reach GitHub — showing last known versions, retry"};const n=t&&"object"==typeof t?t:{},a=Array.isArray(n)?n:Array.isArray(n.versions)?n.versions:[],r=!Array.isArray(n)&&n.sources&&"object"==typeof n.sources?n.sources:{};let o="";return"rate-limited"===r.prImages?o="⚠ GitHub rate-limited — PR test images temporarily unavailable, retry shortly":"rate-limited"===r.releases?o="⚠ GitHub rate-limited — some versions temporarily unavailable, retry shortly":"error"!==r.prImages&&"error"!==r.releases||(o="⚠ Could not fetch some versions from GitHub, retry"),{versions:a,versionsError:o}}(a.ok,r);if(t!==s.current)return;null!==l.versions&&n(l.versions),o(l.versionsError)}catch{if(t!==s.current)return;o("⚠ Offline — showing last known versions")}i(!1)},[e]);return(0,a.useEffect)(()=>{c()},[c]),{versions:t,versionsError:r,loading:l,refresh:c}}(`${v}/api/versions`),L=P&&"string"==typeof P.status?P.status:"not_running",V="ready"===L?"ok":"starting"===L?"warn":"error",H=U?"Checking...":"ready"===L?`rhasspy/wyoming-whisper:${P.tag} at ${P.uri}`:"starting"===L?"Starting — a first start downloads the model (tiny-int8 ≈ 43 MB, base-int8 ≈ 80 MB)":"error"===L?"Not answering"+(P&&P.uri?` at ${P.uri}`:""):"Not running",O=function(e){return"tiny-int8"===e?{text:"fits a Pi 4; ≈ 43 MB download on first use",warn:!1}:"base-int8"===e?{text:"recommended on a Pi 5 / x86 box; ≈ 80 MB download on first use",warn:!1}:e.endsWith("-int8")?{text:"hundreds of MB download, > 1 GB RAM — raise the memory limit",warn:!0}:{text:"float model — slower and heavier than int8 at the same size",warn:!0}}(i);return a.createElement("div",{style:o.root},a.createElement(s,null,"Whisper status"),a.createElement(p,{icon:"W",iconBackground:"ready"===L?"#7c3aed":void 0,title:"Whisper STT (Wyoming)",meta:H,state:V,stateTitle:L}),"not_running"!==L&&"stopped"!==L&&a.createElement(k,{checkUrl:`${v}/api/update/check`,applyUrl:`${v}/api/update/apply`,tag:S,onApplied:()=>{M()}}),a.createElement(s,null,"Settings"),a.createElement(d,{label:"Model",hint:O.text,hintColor:O.warn?l.warn:void 0},a.createElement("select",{style:o.select,value:i,onChange:e=>c(e.target.value)},w.map(e=>a.createElement("option",{key:e,value:e},e)))),a.createElement(d,{label:"Language",hint:"auto"===u.trim()?"per-utterance detection costs speed and accuracy — set a code if you can":"spoken language code, e.g. en, de, fr",hintColor:"auto"===u.trim()?l.warn:void 0},a.createElement("input",{style:{...o.input,width:90},value:u,onChange:e=>f(e.target.value),placeholder:"en"})),a.createElement(d,{label:"Initial prompt",hint:"vocabulary bias — add your vessel name, local ports, boat gear; empty disables"}),a.createElement("textarea",{style:{...o.textarea,marginBottom:10},rows:4,value:h,onChange:e=>E(e.target.value),placeholder:"Words Whisper should expect to hear"}),a.createElement(d,{label:"Image version"},a.createElement(y,{value:S,onChange:x,versions:j.versions,floatingOptions:[{tag:"auto",label:"auto (pinned release, recommended)"}],loading:j.loading,error:j.versionsError,onRefresh:j.refresh})),a.createElement(d,{label:"Port",hint:"only used with bind address 0.0.0.0"},a.createElement("input",{style:{...o.input,width:90},type:"number",value:C,onChange:e=>$(e.target.value)})),a.createElement(g,{title:"Advanced"},a.createElement(d,{label:"Bind address",hint:"0.0.0.0"===z?"LAN-reachable — Wyoming has no authentication, firewall accordingly":"only Signal K can reach the service",hintColor:"0.0.0.0"===z?l.warn:void 0},a.createElement("select",{style:o.select,value:z,onChange:e=>T(e.target.value)},a.createElement("option",{value:"127.0.0.1"},"127.0.0.1 (recommended)"),a.createElement("option",{value:"0.0.0.0"},"0.0.0.0 (all interfaces)"))),a.createElement(d,{label:"Memory limit",hint:'hard cap, e.g. "1g" or "1536m"'},a.createElement("input",{style:{...o.input,width:90},value:R,onChange:e=>B(e.target.value)})),a.createElement(d,{label:"Restart policy"},a.createElement("select",{style:o.select,value:_,onChange:e=>W(e.target.value)},a.createElement("option",{value:"unless-stopped"},"unless-stopped"),a.createElement("option",{value:"always"},"always"),a.createElement("option",{value:"no"},"no")))),a.createElement("div",{style:{marginTop:24}},a.createElement(m,{onClick:()=>{const e=Number(C);t({...n,model:i,language:u,initialPrompt:h,imageTag:S,port:""!==C&&Number.isFinite(e)?e:10300,advanced:{bind:z,memoryLimit:R,restartPolicy:_}}),I("Saved. Signal K restarts the plugin with the new configuration.")}},"Save Configuration")),a.createElement(b,{message:A}))}}};
package/public/540.mjs ADDED
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 540.mjs.LICENSE.txt */
2
+ export const __webpack_esm_id__=540;export const __webpack_esm_ids__=[540];export const __webpack_esm_modules__={869(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),i=Symbol.for("react.context"),a=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),l=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),d=Symbol.iterator,_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,m={};function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||_}function v(){}function S(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||_}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=b.prototype;var E=S.prototype=new v;E.constructor=S,h(E,b.prototype),E.isPureReactComponent=!0;var w=Array.isArray;function g(){}var k={H:null,A:null,T:null,S:null},H=Object.prototype.hasOwnProperty;function j(e,t,r){var o=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==o?o:null,props:r}}function R(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var C=/\/+/g;function $(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function x(e,t,o,u,c){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var i,a,f=!1;if(null===e)f=!0;else switch(s){case"bigint":case"string":case"number":f=!0;break;case"object":switch(e.$$typeof){case n:case r:f=!0;break;case p:return x((f=e._init)(e._payload),t,o,u,c)}}if(f)return c=c(e),f=""===u?"."+$(e,0):u,w(c)?(o="",null!=f&&(o=f.replace(C,"$&/")+"/"),x(c,t,o,"",function(e){return e})):null!=c&&(R(c)&&(i=c,a=o+(null==c.key||e&&e.key===c.key?"":(""+c.key).replace(C,"$&/")+"/")+f,c=j(i.type,a,i.props)),t.push(c)),1;f=0;var l,y=""===u?".":u+":";if(w(e))for(var _=0;_<e.length;_++)f+=x(u=e[_],t,o,s=y+$(u,_),c);else if("function"==typeof(_=null===(l=e)||"object"!=typeof l?null:"function"==typeof(l=d&&l[d]||l["@@iterator"])?l:null))for(e=_.call(e),_=0;!(u=e.next()).done;)f+=x(u=u.value,t,o,s=y+$(u,_++),c);else if("object"===s){if("function"==typeof e.then)return x(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(g,g):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,o,u,c);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return f}function T(e,t,n){if(null==e)return e;var r=[],o=0;return x(e,r,"","",function(e){return t.call(n,e,o++)}),r}function A(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var O="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},I={map:T,forEach:function(e,t,n){T(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return T(e,function(){t++}),t},toArray:function(e){return T(e,function(e){return e})||[]},only:function(e){if(!R(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=y,t.Children=I,t.Component=b,t.Fragment=o,t.Profiler=c,t.PureComponent=S,t.StrictMode=u,t.Suspense=f,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=k,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return k.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=h({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)!H.call(t,u)||"key"===u||"__self"===u||"__source"===u||"ref"===u&&void 0===t.ref||(r[u]=t[u]);var u=arguments.length-2;if(1===u)r.children=n;else if(1<u){for(var c=Array(u),s=0;s<u;s++)c[s]=arguments[s+2];r.children=c}return j(e.type,o,r)},t.createContext=function(e){return(e={$$typeof:i,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:s,_context:e},e},t.createElement=function(e,t,n){var r,o={},u=null;if(null!=t)for(r in void 0!==t.key&&(u=""+t.key),t)H.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(o[r]=t[r]);var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){for(var s=Array(c),i=0;i<c;i++)s[i]=arguments[i+2];o.children=s}if(e&&e.defaultProps)for(r in c=e.defaultProps)void 0===o[r]&&(o[r]=c[r]);return j(e,u,o)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:a,render:e}},t.isValidElement=R,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:A}},t.memo=function(e,t){return{$$typeof:l,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=k.T,n={};k.T=n;try{var r=e(),o=k.S;null!==o&&o(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(g,O)}catch(e){O(e)}finally{null!==t&&null!==n.types&&(t.types=n.types),k.T=t}},t.unstable_useCacheRefresh=function(){return k.H.useCacheRefresh()},t.use=function(e){return k.H.use(e)},t.useActionState=function(e,t,n){return k.H.useActionState(e,t,n)},t.useCallback=function(e,t){return k.H.useCallback(e,t)},t.useContext=function(e){return k.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return k.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return k.H.useEffect(e,t)},t.useEffectEvent=function(e){return k.H.useEffectEvent(e)},t.useId=function(){return k.H.useId()},t.useImperativeHandle=function(e,t,n){return k.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return k.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return k.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return k.H.useMemo(e,t)},t.useOptimistic=function(e,t){return k.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return k.H.useReducer(e,t,n)},t.useRef=function(e){return k.H.useRef(e)},t.useState=function(e){return k.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return k.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return k.H.useTransition()},t.version="19.2.8"},540(e,t,n){e.exports=n(869)}};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license React
3
+ * react.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
@@ -0,0 +1 @@
1
+ var e={980(){}};const t={};function r(o){const s=t[o];if(void 0!==s)return s.exports;const n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.m=e,r.c=t,r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>e+".mjs",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{r.S={};const e={},t={};r.I=(o,s)=>{s||(s=[]);let n=t[o];if(n||(n=t[o]={}),s.indexOf(n)>=0)return;if(s.push(n),e[o])return e[o];r.o(r.S,o)||(r.S[o]={});const i=r.S[o],c="signalk-whisper",_=[];return"default"===o&&((e,t,o,s)=>{const n=i[e]=i[e]||{},_=n[t];(!_||!_.loaded&&(1!=!_.eager?s:c>_.from))&&(n[t]={get:()=>r.e(540).then(()=>()=>r(540)),from:c,eager:!1})})("react","19.2.8"),e[o]=_.length?Promise.all(_).then(()=>e[o]=1):1}})(),(()=>{const e={792:0},t=t=>{let{__webpack_esm_ids__:o,__webpack_esm_modules__:s,__webpack_esm_runtime__:n}=t;var i,c,_=0;for(i in s)r.o(s,i)&&(r.m[i]=s[i]);for(n&&n(r);_<o.length;_++)c=o[_],r.o(e,c)&&e[c]&&e[c][0](),e[o[_]]=0};r.f.j=(o,s)=>{let n=r.o(e,o)?e[o]:void 0;if(0!==n)if(n)s.push(n[1]);else{let i=import("./"+r.u(o)).then(t,t=>{throw 0!==e[o]&&(e[o]=void 0),t});i=Promise.race([i,new Promise(t=>n=e[o]=[t])]),s.push(n[1]=i)}}})(),r(980);
@@ -0,0 +1 @@
1
+ var e={623(e,r,t){const n={"./PluginConfigurationPanel":()=>t.e(172).then(()=>()=>t(172))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),i=(e,r)=>{if(!t.S)return;const n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)};t.d(r,{get:()=>o,init:()=>i})}};const r={};function t(n){const o=r[n];if(void 0!==o)return o.exports;const i=r[n]={exports:{}};return e[n](i,i.exports,t),i.exports}t.m=e,t.c=r,t.d=(e,r)=>{if(Array.isArray(r))for(var n=0;n<r.length;){var o=r[n++],i=r[n++];t.o(e,o)?0===i&&n++:0===i?Object.defineProperty(e,o,{enumerable:!0,value:r[n++]}):Object.defineProperty(e,o,{enumerable:!0,get:i})}else for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce((r,n)=>(t.f[n](e,r),r),[])),t.u=e=>e+".mjs",t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{t.S={};const e={},r={};t.I=(n,o)=>{o||(o=[]);let i=r[n];if(i||(i=r[n]={}),o.indexOf(i)>=0)return;if(o.push(i),e[n])return e[n];t.o(t.S,n)||(t.S[n]={});const s=t.S[n],a="signalk-whisper",u=[];return"default"===n&&((e,r,n,o)=>{const i=s[e]=s[e]||{},u=i[r];(!u||!u.loaded&&(1!=!u.eager?o:a>u.from))&&(i[r]={get:()=>t.e(540).then(()=>()=>t(540)),from:a,eager:!1})})("react","19.2.8"),e[n]=u.length?Promise.all(u).then(()=>e[n]=1):1}})(),(()=>{var e=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},r=e=>{var t=e[0],n="";if(1===e.length)return"*";if(t+.5){n+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var o=1,i=1;i<e.length;i++)o--,n+="u"==(typeof(a=e[i]))[0]?"-":(o>0?".":"")+(o=2,a);return n}var s=[];for(i=1;i<e.length;i++){var a=e[i];s.push(0===a?"not("+u()+")":1===a?"("+u()+" || "+u()+")":2===a?s.pop()+" "+s.pop():r(a))}return u();function u(){return s.pop().replace(/^\((.+)\)$/,"$1")}},n=(r,t)=>{if(0 in r){t=e(t);var o=r[0],i=o<0;i&&(o=-o-1);for(var s=0,a=1,u=!0;;a++,s++){var f,l,c=a<r.length?(typeof r[a])[0]:"";if(s>=t.length||"o"==(l=(typeof(f=t[s]))[0]))return!u||("u"==c?a>o&&!i:""==c!=i);if("u"==l){if(!u||"u"!=c)return!1}else if(u)if(c==l)if(a<=o){if(f!=r[a])return!1}else{if(i?f>r[a]:f<r[a])return!1;f!=r[a]&&(u=!1)}else if("s"!=c&&"n"!=c){if(i||a<=o)return!1;u=!1,a--}else{if(a<=o||l<c!=i)return!1;u=!1}else"s"!=c&&"n"!=c&&(u=!1,a--)}}var p=[],d=p.pop.bind(p);for(s=1;s<r.length;s++){var h=r[s];p.push(1==h?d()|d():2==h?d()&d():h?n(h,t):!d())}return!!d()};const o=(r,t,n)=>{const o=n?(e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}))(r[t]):r[t];return Object.keys(o).reduce((r,t)=>!r||!o[r].loaded&&((r,t)=>{r=e(r),t=e(t);for(var n=0;;){if(n>=r.length)return n<t.length&&"u"!=(typeof t[n])[0];var o=r[n],i=(typeof o)[0];if(n>=t.length)return"u"==i;var s=t[n],a=(typeof s)[0];if(i!=a)return"o"==i&&"n"==a||"s"==a||"u"==i;if("o"!=i&&"u"!=i&&o!=s)return o<s;n++}})(r,t)?t:r,0)},i=(e,r,t)=>t?t():((e,r)=>(e=>{throw new Error(e)})("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),s=(e=>function(r,n,o,i,s){const a=t.I(r);return a?.then&&!o?a.then(e.bind(e,r,t.S[r],n,!1,i,s)):e(r,t.S[r],n,o,i,s)})((e,s,a,u,f,l)=>{if(!((e,r)=>e&&t.o(e,r))(s,a))return i(e,a,l);const c=o(s,a,u);return n(f,c)||(d=((e,t,n,o)=>"Unsatisfied version "+n+" from "+(n&&e[t][n].from)+" of shared singleton module "+t+" (required "+r(o)+")")(s,a,c,f),"undefined"!=typeof console&&console.warn&&console.warn(d)),(p=s[a][c]).loaded=1,p.get();var p,d}),a={},u={231:()=>s("default","react",!1,[1,19],()=>t.e(540).then(()=>()=>t(540)))},f={172:[231]},l={};t.f.consumes=(e,r)=>{t.o(f,e)&&f[e].forEach(e=>{if(t.o(a,e))return r.push(a[e]);if(!l[e]){const n=r=>{a[e]=0,t.m[e]=n=>{delete t.c[e],n.exports=r()}};l[e]=!0;const o=r=>{delete a[e],t.m[e]=n=>{throw delete t.c[e],r}};try{const t=u[e]();t.then?r.push(a[e]=t.then(n).catch(o)):n(t)}catch(e){o(e)}}})}})(),(()=>{const e={145:0},r=r=>{let{__webpack_esm_ids__:n,__webpack_esm_modules__:o,__webpack_esm_runtime__:i}=r;var s,a,u=0;for(s in o)t.o(o,s)&&(t.m[s]=o[s]);for(i&&i(t);u<n.length;u++)a=n[u],t.o(e,a)&&e[a]&&e[a][0](),e[n[u]]=0};t.f.j=(n,o)=>{let i=t.o(e,n)?e[n]:void 0;if(0!==i)if(i)o.push(i[1]);else{let s=import("./"+t.u(n)).then(r,r=>{throw 0!==e[n]&&(e[n]=void 0),r});s=Promise.race([s,new Promise(r=>i=e[n]=[r])]),o.push(i[1]=s)}}})();let n=t(623);const o=n.get,i=n.init;export{o as get,i as init};