@pellux/goodvibes-tui 2.0.20 → 2.0.21

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
@@ -4,6 +4,18 @@ All notable changes to GoodVibes TUI.
4
4
 
5
5
  ---
6
6
 
7
+ ## [2.0.21] - 2026-08-23
8
+
9
+ ### Changes
10
+
11
+ - **The pins move to sdk 2.0.23 and daemon 1.28.25.** The platform carries
12
+ honest calendar auth (a dead Google grant reads as an auth failure with a
13
+ re-authorize pointer), provider auth summaries that fold in their routes (a
14
+ usable subscription sign-in reads configured), derived api-key routes for
15
+ catalog providers that declared none, fixed non-model error hints, and the
16
+ new reasoning-effort surface on the model verbs. The reusable-workflow refs
17
+ repoint to the 2.0.23 release commit.
18
+
7
19
  ## [2.0.20] - 2026-08-22
8
20
 
9
21
  ### Changes
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![CI](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml/badge.svg)](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![Version](https://img.shields.io/badge/version-2.0.20-blue.svg)](https://github.com/mgd34msu/goodvibes-tui)
5
+ [![Version](https://img.shields.io/badge/version-2.0.21-blue.svg)](https://github.com/mgd34msu/goodvibes-tui)
6
6
 
7
7
  GoodVibes is a terminal console for coding and operations work with an AI model. You run `goodvibes` in a project directory and get a full-screen terminal app where you talk to a model that can read and edit your files, run shell commands, search the web, and hand work off to background agents, asking your permission before anything that writes or executes.
8
8
 
@@ -3,7 +3,7 @@
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "2.0.22"
6
+ "version": "2.0.23"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -80177,7 +80177,7 @@
80177
80177
  {
80178
80178
  "id": "models.current.get",
80179
80179
  "title": "Current Model",
80180
- "description": "The model this daemon would use for a turn right now, with whether its provider is actually configured and by which authentication route. `model` is null when nothing is selected, which is a real state, not an error, and a caller rendering a picker needs to tell it from a selection whose provider has lost its credentials.",
80180
+ "description": "The model this daemon would use for a turn right now, with whether its provider is actually configured and by which authentication route. `model` is null when nothing is selected, which is a real state, not an error, and a caller rendering a picker needs to tell it from a selection whose provider has lost its credentials. `effort` is the persisted reasoning level, null when none has been set explicitly.",
80181
80181
  "category": "providers",
80182
80182
  "source": "builtin",
80183
80183
  "access": "authenticated",
@@ -80312,6 +80312,16 @@
80312
80312
  ],
80313
80313
  "additionalProperties": false
80314
80314
  }
80315
+ },
80316
+ "effort": {
80317
+ "anyOf": [
80318
+ {
80319
+ "type": "string"
80320
+ },
80321
+ {
80322
+ "type": "null"
80323
+ }
80324
+ ]
80315
80325
  }
80316
80326
  },
80317
80327
  "required": [
@@ -80325,7 +80335,7 @@
80325
80335
  {
80326
80336
  "id": "models.current.set",
80327
80337
  "title": "Switch the Current Model",
80328
- "description": "Switch the daemon's current model live, by the registry key `models.list` returns. The switch applies to the next turn on every surface this daemon serves and is persisted, so it survives a restart; `persisted` says whether the write to settings succeeded. An unknown key is refused with MODEL_NOT_FOUND and a provider with no usable credentials with PROVIDER_NOT_CONFIGURED, naming the environment variables it looked for, a caller must not have to guess which of the two happened.",
80338
+ "description": "Switch the daemon's current model live, by the registry key `models.list` returns. The switch applies to the next turn on every surface this daemon serves and is persisted, so it survives a restart; `persisted` says whether the write to settings succeeded. An unknown key is refused with MODEL_NOT_FOUND and a provider with no usable credentials with PROVIDER_NOT_CONFIGURED, naming the environment variables it looked for, a caller must not have to guess which of the two happened. An optional `effort` persists a reasoning level with the selection: it is validated against the known severity ladder here, and each turn maps it onto the active model's real options, snapping down and never promoting.",
80329
80339
  "category": "providers",
80330
80340
  "source": "builtin",
80331
80341
  "access": "authenticated",
@@ -80345,6 +80355,16 @@
80345
80355
  "properties": {
80346
80356
  "registryKey": {
80347
80357
  "type": "string"
80358
+ },
80359
+ "effort": {
80360
+ "anyOf": [
80361
+ {
80362
+ "type": "string"
80363
+ },
80364
+ {
80365
+ "type": "null"
80366
+ }
80367
+ ]
80348
80368
  }
80349
80369
  },
80350
80370
  "required": [
@@ -80468,6 +80488,16 @@
80468
80488
  "additionalProperties": false
80469
80489
  }
80470
80490
  },
80491
+ "effort": {
80492
+ "anyOf": [
80493
+ {
80494
+ "type": "string"
80495
+ },
80496
+ {
80497
+ "type": "null"
80498
+ }
80499
+ ]
80500
+ },
80471
80501
  "persisted": {
80472
80502
  "type": "boolean"
80473
80503
  }
@@ -80485,7 +80515,7 @@
80485
80515
  {
80486
80516
  "id": "models.list",
80487
80517
  "title": "Model Catalog",
80488
- "description": "Every provider this daemon knows about with the models it offers, whether it is configured, and how it was configured. A GET also triggers the TTL-respecting live-discovery re-check that the terminal's model picker triggers on open, so a locally served model that appeared since the last read shows up on the next one. `currentModel` is the daemon's current selection, or null when nothing is selected. `secretsResolutionSkipped` is true when secret-backed credentials were not resolved for this read, so a caller can tell \"not configured\" from \"not checked\".",
80518
+ "description": "Every provider this daemon knows about with the models it offers, whether it is configured, and how it was configured. A GET also triggers the TTL-respecting live-discovery re-check that the terminal's model picker triggers on open, so a locally served model that appeared since the last read shows up on the next one. `currentModel` is the daemon's current selection, or null when nothing is selected. `secretsResolutionSkipped` is true when secret-backed credentials were not resolved for this read, so a caller can tell \"not configured\" from \"not checked\". Each model that reasons carries `reasoningOptions`: the levels it actually offers and which source resolved them; a model with no entry does not reason at all.",
80489
80519
  "category": "providers",
80490
80520
  "source": "builtin",
80491
80521
  "access": "authenticated",
@@ -80630,6 +80660,31 @@
80630
80660
  },
80631
80661
  "contextWindow": {
80632
80662
  "type": "number"
80663
+ },
80664
+ "reasoningOptions": {
80665
+ "type": "object",
80666
+ "properties": {
80667
+ "levels": {
80668
+ "type": "array",
80669
+ "items": {
80670
+ "type": "string"
80671
+ }
80672
+ },
80673
+ "source": {
80674
+ "type": "string",
80675
+ "enum": [
80676
+ "catalog",
80677
+ "declared",
80678
+ "family",
80679
+ "fallback"
80680
+ ]
80681
+ }
80682
+ },
80683
+ "required": [
80684
+ "levels",
80685
+ "source"
80686
+ ],
80687
+ "additionalProperties": false
80633
80688
  }
80634
80689
  },
80635
80690
  "required": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-tui",
3
- "version": "2.0.20",
3
+ "version": "2.0.21",
4
4
  "description": "Terminal-native GoodVibes client for coding, operations, knowledge and channel workflows; a pure client of the GoodVibes daemon.",
5
5
  "type": "module",
6
6
  "main": "src/main.ts",
@@ -96,11 +96,11 @@
96
96
  "@anthropic-ai/bedrock-sdk": "^0.29.1",
97
97
  "@anthropic-ai/sdk": "^0.92.0",
98
98
  "@ast-grep/napi": "^0.42.0",
99
- "@pellux/goodvibes-sdk": "2.0.22",
100
- "@pellux/goodvibes-terminal-shell": "2.0.22",
99
+ "@pellux/goodvibes-sdk": "2.0.23",
100
+ "@pellux/goodvibes-terminal-shell": "2.0.23",
101
101
  "bash-language-server": "^5.6.0",
102
102
  "fuse.js": "^7.1.0",
103
- "@pellux/goodvibes-daemon": "1.28.24",
103
+ "@pellux/goodvibes-daemon": "1.28.25",
104
104
  "graphql": "^16.13.2",
105
105
  "jszip": "^3.10.1",
106
106
  "node-edge-tts": "^1.2.10",
@@ -121,7 +121,7 @@
121
121
  "zustand": "^5.0.12"
122
122
  },
123
123
  "devDependencies": {
124
- "@pellux/goodvibes-toolchain": "2.0.22",
124
+ "@pellux/goodvibes-toolchain": "2.0.23",
125
125
  "@types/bun": "^1.3.10",
126
126
  "typescript": "^5.9.3"
127
127
  },