@pellux/goodvibes-daemon 1.28.23 → 1.28.25
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 +33 -2
- package/package.json +4 -4
- package/src/daemon/handlers/drafts/draft-store.ts +1 -1
- package/src/daemon/handlers/payments/budget-store.ts +1 -1
- package/src/daemon/handlers/routing/index.ts +1 -1
- package/src/daemon/handlers/triage/tagger/imap.ts +1 -1
- package/src/runtime/runtime-services-types.ts +1 -1
- package/src/runtime/services.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the GoodVibes daemon.
|
|
4
4
|
|
|
5
|
+
## [1.28.25] - 2026-08-23
|
|
6
|
+
|
|
7
|
+
### Changes
|
|
8
|
+
|
|
9
|
+
- **The platform moves to sdk 2.0.23.** Calendar callers get an honest
|
|
10
|
+
CALENDAR_AUTH_FAILED for a dead Google grant, non-model 400s keep their own
|
|
11
|
+
hints instead of an LLM checklist, provider auth summaries fold in their
|
|
12
|
+
routes (a usable subscription sign-in reads configured), catalog providers
|
|
13
|
+
without declared auth metadata gain derived api-key and secret-ref routes,
|
|
14
|
+
and the model verbs serve the new reasoning-effort surface this daemon now
|
|
15
|
+
hosts: per-model options on models.list, a persisted validated level on
|
|
16
|
+
models.current.set with null-to-clear, the level reported by
|
|
17
|
+
models.current.get, and each turn resolving it with snap-down.
|
|
18
|
+
|
|
19
|
+
## [1.28.24] - 2026-08-22
|
|
20
|
+
|
|
21
|
+
### Changes
|
|
22
|
+
|
|
23
|
+
- **A dead subscription login shows dead everywhere.** sdk 2.0.22 inside:
|
|
24
|
+
a refused grant stamps the stored record, the provider-health posture
|
|
25
|
+
reports the session as ended instead of deriving healthy from a
|
|
26
|
+
timestamp, later turns fail fast with the honest message, and a
|
|
27
|
+
near-expiry token refreshes silently before the send.
|
|
28
|
+
- **Surfaces adopt this daemon again.** The adoption gate now band-checks
|
|
29
|
+
the platform build this daemon reports on /status instead of its 1.28.x
|
|
30
|
+
artifact version, which had every 2.x surface refusing adoption and
|
|
31
|
+
silently running local-only since sdk 2.0.0.
|
|
32
|
+
- **A machine with no microphone is reported as that**, once, in plain
|
|
33
|
+
words, with a gentle retry, not a wake-detector crash loop. A busy
|
|
34
|
+
device keeps prompt retries and the crash latch.
|
|
35
|
+
|
|
5
36
|
## [1.28.23] - 2026-08-21
|
|
6
37
|
|
|
7
38
|
### Changes
|
|
@@ -38,8 +69,8 @@ All notable changes to the GoodVibes daemon.
|
|
|
38
69
|
the content fingerprint whenever one is present and the caller names the
|
|
39
70
|
content in question, independent of taint clearing.
|
|
40
71
|
- **In-flight checkouts survive restarts.** The checkout registry writes
|
|
41
|
-
every phase to `payments-checkout-journal.json` before proceeding
|
|
42
|
-
`submit-pending` flush lands on disk before the merchant submit
|
|
72
|
+
every phase to `payments-checkout-journal.json` before proceeding. The
|
|
73
|
+
`submit-pending` flush lands on disk before the merchant submit, so a
|
|
43
74
|
crash in the one ambiguous window leaves a record the boot sweep can
|
|
44
75
|
disclose instead of nothing. Unknown journal fields round-trip untouched.
|
|
45
76
|
- **Help text tells the truth** about update checks and auth file paths.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-daemon",
|
|
3
|
-
"version": "1.28.
|
|
3
|
+
"version": "1.28.25",
|
|
4
4
|
"description": "The GoodVibes daemon \u2014 the one long-running host for the control plane, channels, cluster membership, scheduled work, knowledge and memory stores, and the verb families every GoodVibes client calls.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/daemon/cli.ts",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"@anthropic-ai/bedrock-sdk": "^0.28.1",
|
|
68
68
|
"@anthropic-ai/sdk": "^0.82.0",
|
|
69
69
|
"@ast-grep/napi": "^0.42.0",
|
|
70
|
-
"@pellux/goodvibes-sdk": "2.0.
|
|
71
|
-
"@pellux/goodvibes-terminal-shell": "2.0.
|
|
70
|
+
"@pellux/goodvibes-sdk": "2.0.23",
|
|
71
|
+
"@pellux/goodvibes-terminal-shell": "2.0.23",
|
|
72
72
|
"bash-language-server": "^5.6.0",
|
|
73
73
|
"fuse.js": "^7.1.0",
|
|
74
74
|
"graphql": "^16.13.2",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"web-tree-sitter": "^0.26.7"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@pellux/goodvibes-toolchain": "2.0.
|
|
92
|
+
"@pellux/goodvibes-toolchain": "2.0.23",
|
|
93
93
|
"@types/bun": "^1.3.10",
|
|
94
94
|
"typescript": "^5.9.3"
|
|
95
95
|
},
|
|
@@ -65,7 +65,7 @@ export interface DraftRecord {
|
|
|
65
65
|
createdAt: string; // ISO-8601
|
|
66
66
|
updatedAt: string; // ISO-8601
|
|
67
67
|
status: DraftStatus;
|
|
68
|
-
message: string; // sha256First(body, 12) digest
|
|
68
|
+
message: string; // sha256First(body, 12) digest. Plaintext body is NEVER transmitted.
|
|
69
69
|
title?: string;
|
|
70
70
|
channel?: string;
|
|
71
71
|
route?: string;
|
|
@@ -103,7 +103,7 @@ function isFiniteNonNegativeAmount(value: unknown): value is number {
|
|
|
103
103
|
* first time `snapshot()` or `reserve()` computes a day key from it (`day.ts`),
|
|
104
104
|
* on every call, forever, since nothing ever mutates the record to fix it or
|
|
105
105
|
* calls `persist()` to rewrite the file. Checked the same way an amount is:
|
|
106
|
-
* finite, and
|
|
106
|
+
* finite, and a whole number inside the range `Date` accepts.
|
|
107
107
|
*/
|
|
108
108
|
function isValidTimestampMs(value: unknown): value is number {
|
|
109
109
|
return typeof value === 'number'
|
|
@@ -117,7 +117,7 @@ function clampLimit(value: unknown): number | undefined {
|
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
119
|
* Routing surface handle. Satisfies the foundation `RoutingRegistration`
|
|
120
|
-
* (`{ unregister, resolveProfileId }`) and
|
|
120
|
+
* (`{ unregister, resolveProfileId }`) and exposes the live
|
|
121
121
|
* {@link RoutingResolver} and {@link RouteStore} so the inbox surface and tests
|
|
122
122
|
* can reuse routing resolution without going through the catalog.
|
|
123
123
|
*/
|
|
@@ -235,7 +235,7 @@ export function imapStoreFlagOverTls(
|
|
|
235
235
|
type Step = { tag: string; isLogout: boolean; resolve: () => void; reject: (e: Error) => void };
|
|
236
236
|
|
|
237
237
|
let done = false;
|
|
238
|
-
let completed = false; // LOGOUT acknowledged (or BYE seen)
|
|
238
|
+
let completed = false; // LOGOUT acknowledged (or BYE seen), so close is expected.
|
|
239
239
|
let buffer = '';
|
|
240
240
|
let pending: Step | null = null;
|
|
241
241
|
let counter = 0;
|
|
@@ -271,5 +271,5 @@ export interface RuntimeServices {
|
|
|
271
271
|
* rather than preserved.
|
|
272
272
|
*/
|
|
273
273
|
cancelHostedAgentRuns(): number;
|
|
274
|
-
dispose(): void; //
|
|
274
|
+
dispose(): void; // Stops every poller this graph started: best-effort, total, idempotent. This surface owns its graph, and the SDK's disposal scope drives it.
|
|
275
275
|
}
|
package/src/runtime/services.ts
CHANGED
|
@@ -471,7 +471,7 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
|
|
|
471
471
|
.register({ sessionId: id, kind: 'acp', title, project: cwd, participant: { surfaceKind: 'service', surfaceId: `acp-host:${agentTitle}`, lastSeenAt: Date.now() } })
|
|
472
472
|
.catch(() => { /* best-effort; the fleet row is authoritative */ }),
|
|
473
473
|
});
|
|
474
|
-
const { processRegistry } = createFleetServices({ // Shared archive-aware fleet registry (+ daemon observed rows)
|
|
474
|
+
const { processRegistry } = createFleetServices({ // Shared archive-aware fleet registry (+ daemon observed rows). See fleet-services.ts.
|
|
475
475
|
agentManager, wrfcController,
|
|
476
476
|
orchestrationEngine, // Folds workstream/phase/work-item nodes into the fleet
|
|
477
477
|
codeIndexService: codeIndexStore, // Folds a single 'code-index' node into the fleet
|
|
@@ -563,7 +563,7 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
|
|
|
563
563
|
watcherRegistry, userPermissionRuleStore, shellPaths, configManager, runtimeStore: options.runtimeStore,
|
|
564
564
|
channelDeliveryRouter, providerRegistry, automationManager, sessionLister: sessionBroker, sessionIntake: sessionBroker,
|
|
565
565
|
workingDirectory, memoryRegistry, pairingTokens, sessionLiveTurnControls, powerManager, memoryGovernor, voiceSetup,
|
|
566
|
-
acpHost, // Registers acp.agents.list (discovery) and acp.sessions.create (spawn)
|
|
566
|
+
acpHost, // Registers acp.agents.list (discovery) and acp.sessions.create (spawn). See register-gateway-verb-groups.ts.
|
|
567
567
|
attemptsController: orchestrationEngine,
|
|
568
568
|
relayAvailable: () => configManager.get('relay.enabled') === true,
|
|
569
569
|
pairingWebOrigin: () => resolvePairingWebOrigin(configManager).origin,
|