@pellux/goodvibes-tui 1.13.0 → 1.13.1
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 +5 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/runtime/gateway-verbs.ts +47 -0
- package/src/runtime/services.ts +8 -7
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@ All notable changes to GoodVibes TUI.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.13.1] — 2026-07-09
|
|
8
|
+
|
|
9
|
+
### Changes
|
|
10
|
+
- 9dbd88e4 fix(daemon): attach handlers for every ws-only gateway verb — fleet.*, checkpoints.*, sessions.search, push.* were 501 on every vendored daemon build
|
|
11
|
+
|
|
7
12
|
## [1.13.0] — 2026-07-09
|
|
8
13
|
|
|
9
14
|
### Changes
|
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": "1.13.
|
|
3
|
+
"version": "1.13.1",
|
|
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",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gateway-verbs.ts — attach handlers for every ws-only gateway verb group.
|
|
3
|
+
*
|
|
4
|
+
* The GatewayMethodCatalog's builtin DESCRIPTORS make fleet.* (including the
|
|
5
|
+
* archive verbs), checkpoints.*, sessions.search, and push.* appear in the
|
|
6
|
+
* contract, but a descriptor without an attached handler answers
|
|
7
|
+
* 501 "Gateway method is not invokable" over both websocket and HTTP invoke.
|
|
8
|
+
* createRuntimeServices never called the SDK's registration entry point, so
|
|
9
|
+
* every daemon build this package ever vendored shipped exactly that 501 for
|
|
10
|
+
* the whole ws-only family (found by the companion app against the 1.13.0
|
|
11
|
+
* daemon). This module is the named home for the attachment — mirroring the
|
|
12
|
+
* SDK runtime's own composition root (goodvibes-sdk
|
|
13
|
+
* platform/runtime/services.ts) — and
|
|
14
|
+
* src/test/daemon/gateway-ws-only-invokable.test.ts gates that every ws-only
|
|
15
|
+
* verb stays descriptor-present AND handler-attached, with live invokes of
|
|
16
|
+
* fleet.snapshot / fleet.archived.list.
|
|
17
|
+
*/
|
|
18
|
+
import {
|
|
19
|
+
registerGatewayVerbGroups,
|
|
20
|
+
type GatewayMethodCatalog,
|
|
21
|
+
type GatewayVerbGroupDeps,
|
|
22
|
+
} from '@pellux/goodvibes-sdk/platform/control-plane';
|
|
23
|
+
import {
|
|
24
|
+
createProcessRegistry,
|
|
25
|
+
withFleetArchive,
|
|
26
|
+
type ArchivableProcessRegistry,
|
|
27
|
+
type ProcessRegistryDeps,
|
|
28
|
+
} from '@pellux/goodvibes-sdk/platform/runtime/fleet';
|
|
29
|
+
|
|
30
|
+
export function attachWsOnlyGatewayVerbHandlers(
|
|
31
|
+
gatewayMethods: GatewayMethodCatalog,
|
|
32
|
+
deps: GatewayVerbGroupDeps,
|
|
33
|
+
): void {
|
|
34
|
+
registerGatewayVerbGroups(gatewayMethods, deps);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* One shared process registry aggregating the runtime's managers — the Fleet
|
|
39
|
+
* panel (panels/fleet-read-model.ts) is its first consumer. Constructed once
|
|
40
|
+
* (not per-consumer) so the coalesced tick and the agent-activity side-table
|
|
41
|
+
* are shared, not duplicated. Archive-aware: finished agent/swarm subtrees
|
|
42
|
+
* can be moved out of the live fleet view into a session-scoped archive (see
|
|
43
|
+
* the SDK's fleet/archive.ts).
|
|
44
|
+
*/
|
|
45
|
+
export function createArchivableFleetRegistry(deps: ProcessRegistryDeps): ArchivableProcessRegistry {
|
|
46
|
+
return withFleetArchive(createProcessRegistry(deps));
|
|
47
|
+
}
|
package/src/runtime/services.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { SecretsManager } from '../config/secrets.ts';
|
|
|
5
5
|
import { AutomationDeliveryManager, AutomationManager, AutomationRouteStore } from '@pellux/goodvibes-sdk/platform/automation';
|
|
6
6
|
import { ChannelDeliveryRouter, ChannelPluginRegistry, ChannelPolicyManager, RouteBindingManager, SurfaceRegistry } from '@pellux/goodvibes-sdk/platform/channels';
|
|
7
7
|
import { ApprovalBroker, GatewayMethodCatalog, SharedSessionBroker } from '@pellux/goodvibes-sdk/platform/control-plane';
|
|
8
|
+
import { attachWsOnlyGatewayVerbHandlers, createArchivableFleetRegistry } from './gateway-verbs.ts';
|
|
8
9
|
import { WatcherRegistry } from '@pellux/goodvibes-sdk/platform/watchers';
|
|
9
10
|
import { ArtifactStore } from '@pellux/goodvibes-sdk/platform/artifacts';
|
|
10
11
|
import {
|
|
@@ -56,7 +57,7 @@ import { isFeatureFlagEnabled } from './surface-feature-flags.ts';
|
|
|
56
57
|
import type { FeatureFlagManager } from '@/runtime/index.ts';
|
|
57
58
|
import { createFeatureFlagManager } from '@/runtime/index.ts';
|
|
58
59
|
import { PolicyRuntimeState } from '@/runtime/index.ts';
|
|
59
|
-
import {
|
|
60
|
+
import { type ArchivableProcessRegistry } from '@pellux/goodvibes-sdk/platform/runtime/fleet';
|
|
60
61
|
import { calcSessionCost, isModelPriced } from '../export/cost-utils.ts';
|
|
61
62
|
import { createWorkstreamServices, type OrchestrationEngine, type WorkstreamCommandService } from './workstream-services.ts';
|
|
62
63
|
import { codeIndexDbPath, createCodeIndexServices, isCodeInjectionSettingEnabled } from './code-index-services.ts';
|
|
@@ -605,11 +606,8 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
|
|
|
605
606
|
// code-index-services.ts's header doc.
|
|
606
607
|
const { codeIndexStore, codeIndexReindexScheduler } = createCodeIndexServices({ workingDirectory, configManager, memoryEmbeddingRegistry });
|
|
607
608
|
const codeInjectionOrchestratorDeps = { codeIndex: codeIndexStore, isCodeInjectionSettingEnabled: () => isCodeInjectionSettingEnabled(configManager), codeIndexReindexScheduler }; // Code-injection seam (agent here; main via orchestrator-core-services.ts)
|
|
608
|
-
//
|
|
609
|
-
|
|
610
|
-
// Constructed once here (not per-consumer) so the coalesced tick and the
|
|
611
|
-
// agent-activity side-table are shared, not duplicated.
|
|
612
|
-
const processRegistry = withFleetArchive(createProcessRegistry({
|
|
609
|
+
// Shared, archive-aware fleet registry — see gateway-verbs.ts's factory doc.
|
|
610
|
+
const processRegistry = createArchivableFleetRegistry({
|
|
613
611
|
agentManager,
|
|
614
612
|
wrfcController,
|
|
615
613
|
orchestrationEngine, // Folds workstream/phase/work-item nodes into the fleet
|
|
@@ -628,7 +626,7 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
|
|
|
628
626
|
if (!isModelPriced(modelId)) return null;
|
|
629
627
|
return calcSessionCost(usage.inputTokens, usage.outputTokens, usage.cacheReadTokens, usage.cacheWriteTokens, modelId);
|
|
630
628
|
},
|
|
631
|
-
})
|
|
629
|
+
});
|
|
632
630
|
const modeManager = new ModeManager();
|
|
633
631
|
const fileUndoManager = new FileUndoManager();
|
|
634
632
|
const workspaceCheckpointManager = new WorkspaceCheckpointManager({
|
|
@@ -645,6 +643,9 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
|
|
|
645
643
|
// commands (checkpoint-runtime.ts) are what actually catch and report the
|
|
646
644
|
// failure to the user, on first use.
|
|
647
645
|
void workspaceCheckpointManager.init().catch(() => {});
|
|
646
|
+
|
|
647
|
+
// ws-only verbs (fleet/checkpoints/search/push) 501 without this — see gateway-verbs.ts.
|
|
648
|
+
attachWsOnlyGatewayVerbHandlers(gatewayMethods, { processRegistry, workspaceCheckpointManager, sessionBroker, secretsManager, approvalBroker, shellPaths });
|
|
648
649
|
const integrationHelpers = new IntegrationHelperService({
|
|
649
650
|
workingDirectory,
|
|
650
651
|
homeDirectory,
|
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 = '1.13.
|
|
9
|
+
let _version = '1.13.1';
|
|
10
10
|
try {
|
|
11
11
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8'));
|
|
12
12
|
_version = pkg.version ?? _version;
|