@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 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 — the
42
- `submit-pending` flush lands on disk before the merchant submit so a
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.23",
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.21",
71
- "@pellux/goodvibes-terminal-shell": "2.0.21",
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.19",
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 plaintext body is NEVER transmitted
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 additionally a whole number inside the range `Date` accepts.
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 additionally exposes the live
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) close is expected.
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; // Stop every poller this graph started; best-effort, total, idempotent. This surface owns its graph the SDK's disposal scope drives it.
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
  }
@@ -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) see fleet-services.ts
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) see register-gateway-verb-groups.ts
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,