@pellux/goodvibes-tui 0.19.4 → 0.19.7
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 +42 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/runtime/bootstrap-core.ts +18 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,48 @@ All notable changes to GoodVibes TUI.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [0.19.7] - 2026-04-18
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Bumped `@pellux/goodvibes-sdk` from 0.21.10 to 0.21.12.
|
|
11
|
+
|
|
12
|
+
### Investigation: No TUI-side changes required
|
|
13
|
+
|
|
14
|
+
SDK 0.21.12 ships three additive changes to the daemon:
|
|
15
|
+
|
|
16
|
+
1. **`kind: 'message'` at `POST /api/sessions/:id/messages`** now calls `sessionBroker.submitMessage()` (previously called `appendCompanionMessage` + `publishConversationFollowup` only). A real turn is started and the full agent event chain (TURN_STARTED, STREAM_DELTA, TURN_COMPLETED) streams back.
|
|
17
|
+
|
|
18
|
+
2. **`kind: 'followup'`** — new kind value that always spawns an agent. Full agent event chain streams to companion SSE.
|
|
19
|
+
|
|
20
|
+
3. **`GET /api/sessions/:id/events`** — new session-scoped SSE endpoint for companion consumption.
|
|
21
|
+
|
|
22
|
+
4. **`'turn'` added to `DEFAULT_DOMAINS`** in the control-plane gateway — turn events are now auto-delivered to all SSE subscribers.
|
|
23
|
+
|
|
24
|
+
Investigation of the TUI's `COMPANION_MESSAGE_RECEIVED` subscription in `src/runtime/bootstrap-core.ts` found **no double-render risk**: SDK 0.21.12 emits `COMPANION_MESSAGE_RECEIVED` _before_ calling `submitMessage`, so the user message is shown once (via the existing subscription), and the AI response streams in via the existing `uiServices.events.turns` path. These are distinct content on distinct code paths. No deduplication needed.
|
|
25
|
+
|
|
26
|
+
The `'turn'` addition to `DEFAULT_DOMAINS` affects external SSE subscribers (companion app). The TUI consumes turn events in-process via the runtime bus — unaffected.
|
|
27
|
+
|
|
28
|
+
Updated `docs/foundation-artifacts/operator-contract.json` SDK version field to `0.21.12`.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## [0.19.6] - 2026-04-18
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- Bumped `@pellux/goodvibes-sdk` to 0.21.10 (up from 0.21.8 which was pinned by mistake in 0.19.5). 0.19.5 subscribed to the `COMPANION_MESSAGE_RECEIVED` runtime event but remained on an SDK version that didn't emit it, so the "companion main-chat messages render in TUI" fix from 0.19.5 didn't actually work. 0.19.6 corrects the dep so the subscription is live against an SDK that emits the event. Removed the `as Parameters<typeof runtimeBus.on>[0]` type cast that was hiding the version gap.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## [0.19.5] - 2026-04-18
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
- Companion-app messages sent via POST `/api/sessions/:id/messages` (kind `message`) are now rendered in the TUI conversation view immediately upon receipt. Previously the 202 was acknowledged and the message was persisted (SDK 0.21.9), but the TUI conversation never displayed it. The fix subscribes to the new `COMPANION_MESSAGE_RECEIVED` runtime bus event (emitted by the daemon's HTTP router after persistence, added in SDK 0.21.10) and calls `conversation.addUserMessage()` to surface the message inline.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
- SDK dependency remains `@pellux/goodvibes-sdk@0.21.8` (published); the `COMPANION_MESSAGE_RECEIVED` event type is cast at the call-site until SDK 0.21.10 is available on npm.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
7
49
|
## [0.19.4] - 2026-04-18
|
|
8
50
|
|
|
9
51
|
### Changed
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
[](https://github.com/mgd34msu/goodvibes-tui)
|
|
6
6
|
|
|
7
7
|
A terminal-native AI coding, operations, automation, knowledge, and integration console with a typed runtime, omnichannel surfaces, structured memory/knowledge, and a raw ANSI renderer.
|
|
8
8
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-tui",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.7",
|
|
4
4
|
"description": "Terminal-native GoodVibes product for coding, operations, automation, knowledge, channels, and daemon-backed control-plane workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/main.ts",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"@anthropic-ai/vertex-sdk": "^0.16.0",
|
|
90
90
|
"@ast-grep/napi": "^0.42.0",
|
|
91
91
|
"@aws/bedrock-token-generator": "^1.1.0",
|
|
92
|
-
"@pellux/goodvibes-sdk": "0.21.
|
|
92
|
+
"@pellux/goodvibes-sdk": "0.21.12",
|
|
93
93
|
"bash-language-server": "^5.6.0",
|
|
94
94
|
"fuse.js": "^7.1.0",
|
|
95
95
|
"graphql": "^16.13.2",
|
|
@@ -16,6 +16,7 @@ import type { MutableRuntimeState } from '@pellux/goodvibes-sdk/platform/runtime
|
|
|
16
16
|
import type { BootstrapOptions } from './context.ts';
|
|
17
17
|
import { createFeatureFlagManager } from '@pellux/goodvibes-sdk/platform/runtime/feature-flags/index';
|
|
18
18
|
import { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
19
|
+
import type { SessionEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
19
20
|
import { createRuntimeStore, createDomainDispatch, type RuntimeStore } from './store/index.ts';
|
|
20
21
|
import { ForensicsCollector, ForensicsRegistry } from '@pellux/goodvibes-sdk/platform/runtime/forensics/index';
|
|
21
22
|
import {
|
|
@@ -285,6 +286,23 @@ export async function initializeBootstrapCore(
|
|
|
285
286
|
wrfcController: services.wrfcController,
|
|
286
287
|
});
|
|
287
288
|
|
|
289
|
+
// Subscribe to companion follow-up messages received from the daemon's HTTP layer.
|
|
290
|
+
// The daemon emits COMPANION_MESSAGE_RECEIVED on the runtime bus (SDK 0.21.10+).
|
|
291
|
+
// In SDK 0.21.12, kind='message' at POST /api/sessions/:id/messages now also calls
|
|
292
|
+
// sessionBroker.submitMessage(), starting a real turn. COMPANION_MESSAGE_RECEIVED
|
|
293
|
+
// still fires BEFORE submitMessage so the user message appears immediately in the
|
|
294
|
+
// conversation view, and the AI response streams in via the normal turn path.
|
|
295
|
+
// No double-render: COMPANION_MESSAGE_RECEIVED adds the user message once; the turn
|
|
296
|
+
// path adds the AI response. Both paths are correctly wired with no changes required.
|
|
297
|
+
// after persisting the message, so the TUI conversation view can render it immediately.
|
|
298
|
+
runtimeUnsubs.push(runtimeBus.on<Extract<SessionEvent, { type: 'COMPANION_MESSAGE_RECEIVED' }>>(
|
|
299
|
+
'COMPANION_MESSAGE_RECEIVED',
|
|
300
|
+
({ payload }) => {
|
|
301
|
+
conversation.addUserMessage(payload.body);
|
|
302
|
+
requestRender();
|
|
303
|
+
},
|
|
304
|
+
));
|
|
305
|
+
|
|
288
306
|
providerRegistry.startWatching(runtimeBus);
|
|
289
307
|
|
|
290
308
|
const webhookUrls = (configManager.getCategory('notifications') as { webhookUrls?: string[] }).webhookUrls ?? [];
|
package/src/version.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { join } from 'node:path';
|
|
|
6
6
|
// The prebuild script updates the fallback value before compilation.
|
|
7
7
|
// Uses import.meta.dir (Bun) to locate package.json relative to this file,
|
|
8
8
|
// which is correct regardless of the process working directory.
|
|
9
|
-
let _version = '0.19.
|
|
9
|
+
let _version = '0.19.7';
|
|
10
10
|
try {
|
|
11
11
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8'));
|
|
12
12
|
_version = pkg.version ?? _version;
|