@pellux/goodvibes-agent 1.6.0 → 1.6.2
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 +8 -0
- package/README.md +1 -1
- package/dist/package/main.js +64 -14
- package/package.json +2 -2
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Product-facing release notes for GoodVibes Agent.
|
|
4
4
|
|
|
5
|
+
## 1.6.2 - 2026-07-07
|
|
6
|
+
|
|
7
|
+
- Updated to SDK 1.3.3: the macOS capability-limit classification now matches Apple SQLite's exact refusal message, so compiled binaries report the honest limit instead of an error.
|
|
8
|
+
|
|
9
|
+
## 1.6.1 - 2026-07-07
|
|
10
|
+
|
|
11
|
+
- Updated to SDK 1.3.2: a platform that cannot load SQLite extensions (macOS system SQLite in a compiled binary) now reports an honest capability limit instead of an error; semantic memory search states its literal fallback.
|
|
12
|
+
|
|
5
13
|
## 1.6.0 - 2026-07-07
|
|
6
14
|
|
|
7
15
|
- Spoken output now uses the SDK's shared speech engine — the same sentence batching, bounded concurrency, retry, and drain behavior as every other GoodVibes surface, from one implementation.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# GoodVibes Agent
|
|
2
2
|
|
|
3
3
|
[](https://opensource.org/licenses/MIT)
|
|
4
|
-
[](#install)
|
|
5
5
|
|
|
6
6
|
GoodVibes Agent is the installable autonomous operator assistant for GoodVibes. It keeps the existing terminal renderer and workspace bones, but the product goal is different from a vibecoding harness: the user should experience one assistant that can chat, plan, remember, research, schedule, send, generate, run visible agents, and operate the GoodVibes daemon contract with clear confirmation gates.
|
|
7
7
|
|
package/dist/package/main.js
CHANGED
|
@@ -4463,7 +4463,7 @@ var init_mcp = __esm(() => {
|
|
|
4463
4463
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/version.js
|
|
4464
4464
|
import { readFileSync as readFileSync3 } from "fs";
|
|
4465
4465
|
import { join as join4 } from "path";
|
|
4466
|
-
var version = "1.3.
|
|
4466
|
+
var version = "1.3.3", VERSION2;
|
|
4467
4467
|
var init_version = __esm(() => {
|
|
4468
4468
|
try {
|
|
4469
4469
|
const pkg = JSON.parse(readFileSync3(join4(import.meta.dir, "..", "..", "package.json"), "utf-8"));
|
|
@@ -45975,16 +45975,35 @@ function resolveSqliteVecPath() {
|
|
|
45975
45975
|
}
|
|
45976
45976
|
return "";
|
|
45977
45977
|
}
|
|
45978
|
+
function isExtensionLoadingRefusal(err2) {
|
|
45979
|
+
const message = err2 instanceof Error ? err2.message : String(err2);
|
|
45980
|
+
return /not authorized|omit.*load.*extension|extension loading is disabled|does not support dynamic extension loading/i.test(message);
|
|
45981
|
+
}
|
|
45978
45982
|
function loadSqliteVecExtension(db) {
|
|
45979
45983
|
const bundledPath = resolveSqliteVecPath();
|
|
45980
|
-
|
|
45981
|
-
|
|
45982
|
-
|
|
45983
|
-
|
|
45984
|
+
try {
|
|
45985
|
+
if (bundledPath) {
|
|
45986
|
+
db.loadExtension(bundledPath);
|
|
45987
|
+
} else {
|
|
45988
|
+
load(db);
|
|
45989
|
+
}
|
|
45990
|
+
} catch (err2) {
|
|
45991
|
+
if (isExtensionLoadingRefusal(err2)) {
|
|
45992
|
+
throw new SqliteVecPlatformUnsupportedError(err2 instanceof Error ? err2.message : String(err2));
|
|
45993
|
+
}
|
|
45994
|
+
throw err2;
|
|
45984
45995
|
}
|
|
45985
45996
|
}
|
|
45997
|
+
var SqliteVecPlatformUnsupportedError;
|
|
45986
45998
|
var init_sqlite_vec_loader = __esm(() => {
|
|
45987
45999
|
init_sqlite_vec();
|
|
46000
|
+
SqliteVecPlatformUnsupportedError = class SqliteVecPlatformUnsupportedError extends Error {
|
|
46001
|
+
platformLimit = true;
|
|
46002
|
+
constructor(cause) {
|
|
46003
|
+
super("this platform's SQLite does not allow loading extensions" + " (macOS system SQLite); the semantic vector index is unavailable" + ` and memory search uses literal matching. Underlying refusal: ${cause}`);
|
|
46004
|
+
this.name = "SqliteVecPlatformUnsupportedError";
|
|
46005
|
+
}
|
|
46006
|
+
};
|
|
45988
46007
|
});
|
|
45989
46008
|
|
|
45990
46009
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/state/memory-vector-store.js
|
|
@@ -46040,6 +46059,7 @@ class SqliteVecMemoryIndex {
|
|
|
46040
46059
|
enabled = false;
|
|
46041
46060
|
available = false;
|
|
46042
46061
|
error;
|
|
46062
|
+
platformLimitReason;
|
|
46043
46063
|
static rebuildBatchSize = 25;
|
|
46044
46064
|
constructor(dbPath, dimensions = MEMORY_VECTOR_DIMS, embeddingRegistry) {
|
|
46045
46065
|
this.dbPath = dbPath;
|
|
@@ -46062,8 +46082,16 @@ class SqliteVecMemoryIndex {
|
|
|
46062
46082
|
this.close();
|
|
46063
46083
|
this.available = false;
|
|
46064
46084
|
this.enabled = false;
|
|
46065
|
-
|
|
46066
|
-
|
|
46085
|
+
if (err2 instanceof SqliteVecPlatformUnsupportedError) {
|
|
46086
|
+
this.platformLimitReason = err2.message;
|
|
46087
|
+
logger.warn("Memory vector index unavailable on this platform \u2014 memory search uses literal matching", {
|
|
46088
|
+
backend: "sqlite-vec",
|
|
46089
|
+
reason: err2.message
|
|
46090
|
+
});
|
|
46091
|
+
} else {
|
|
46092
|
+
this.error = summarizeError(err2);
|
|
46093
|
+
logger.warn("Memory vector index unavailable", { backend: "sqlite-vec", error: this.error });
|
|
46094
|
+
}
|
|
46067
46095
|
}
|
|
46068
46096
|
}
|
|
46069
46097
|
stats() {
|
|
@@ -46077,7 +46105,8 @@ class SqliteVecMemoryIndex {
|
|
|
46077
46105
|
indexedRecords: this.countIndexedRecords(),
|
|
46078
46106
|
embeddingProviderId: provider?.id ?? this.embeddingRegistry.getDefaultProviderId(),
|
|
46079
46107
|
embeddingProviderLabel: provider?.label ?? `Unregistered (${this.embeddingRegistry.getDefaultProviderId()})`,
|
|
46080
|
-
...this.
|
|
46108
|
+
...this.platformLimitReason ? { platformLimitReason: this.platformLimitReason } : {},
|
|
46109
|
+
...this.error ?? (!provider && !this.platformLimitReason) ? { error: this.error ?? `Active memory embedding provider '${this.embeddingRegistry.getDefaultProviderId()}' is not registered.` } : {}
|
|
46081
46110
|
};
|
|
46082
46111
|
}
|
|
46083
46112
|
upsert(record) {
|
|
@@ -53425,6 +53454,7 @@ class CodeIndexStore {
|
|
|
53425
53454
|
db = null;
|
|
53426
53455
|
available = false;
|
|
53427
53456
|
error;
|
|
53457
|
+
platformLimitReason;
|
|
53428
53458
|
building = false;
|
|
53429
53459
|
buildStartedAtMs = null;
|
|
53430
53460
|
buildPromise = null;
|
|
@@ -53456,8 +53486,15 @@ class CodeIndexStore {
|
|
|
53456
53486
|
} catch (err2) {
|
|
53457
53487
|
this.close();
|
|
53458
53488
|
this.available = false;
|
|
53459
|
-
|
|
53460
|
-
|
|
53489
|
+
const limit2 = err2 instanceof SqliteVecPlatformUnsupportedError;
|
|
53490
|
+
if (limit2)
|
|
53491
|
+
this.platformLimitReason = err2.message;
|
|
53492
|
+
else
|
|
53493
|
+
this.error = summarizeError(err2);
|
|
53494
|
+
logger.warn(limit2 ? "Code index unavailable on this platform" : "Code index unavailable", {
|
|
53495
|
+
backend: "sqlite-vec",
|
|
53496
|
+
...limit2 ? { reason: err2.message } : { error: this.error }
|
|
53497
|
+
});
|
|
53461
53498
|
}
|
|
53462
53499
|
}
|
|
53463
53500
|
close() {
|
|
@@ -263967,7 +264004,7 @@ var FOUNDATION_METADATA;
|
|
|
263967
264004
|
var init_foundation_metadata = __esm(() => {
|
|
263968
264005
|
FOUNDATION_METADATA = {
|
|
263969
264006
|
productId: "goodvibes",
|
|
263970
|
-
productVersion: "1.3.
|
|
264007
|
+
productVersion: "1.3.3",
|
|
263971
264008
|
operatorMethodCount: 327,
|
|
263972
264009
|
operatorEventCount: 31,
|
|
263973
264010
|
peerEndpointCount: 6
|
|
@@ -263982,7 +264019,7 @@ var init_operator_contract = __esm(() => {
|
|
|
263982
264019
|
product: {
|
|
263983
264020
|
id: "goodvibes",
|
|
263984
264021
|
surface: "operator",
|
|
263985
|
-
version: "1.3.
|
|
264022
|
+
version: "1.3.3"
|
|
263986
264023
|
},
|
|
263987
264024
|
auth: {
|
|
263988
264025
|
modes: [
|
|
@@ -321121,6 +321158,9 @@ var init_operator_contract = __esm(() => {
|
|
|
321121
321158
|
},
|
|
321122
321159
|
error: {
|
|
321123
321160
|
type: "string"
|
|
321161
|
+
},
|
|
321162
|
+
platformLimitReason: {
|
|
321163
|
+
type: "string"
|
|
321124
321164
|
}
|
|
321125
321165
|
},
|
|
321126
321166
|
required: [
|
|
@@ -321318,6 +321358,9 @@ var init_operator_contract = __esm(() => {
|
|
|
321318
321358
|
},
|
|
321319
321359
|
error: {
|
|
321320
321360
|
type: "string"
|
|
321361
|
+
},
|
|
321362
|
+
platformLimitReason: {
|
|
321363
|
+
type: "string"
|
|
321321
321364
|
}
|
|
321322
321365
|
},
|
|
321323
321366
|
required: [
|
|
@@ -323750,6 +323793,9 @@ var init_operator_contract = __esm(() => {
|
|
|
323750
323793
|
},
|
|
323751
323794
|
error: {
|
|
323752
323795
|
type: "string"
|
|
323796
|
+
},
|
|
323797
|
+
platformLimitReason: {
|
|
323798
|
+
type: "string"
|
|
323753
323799
|
}
|
|
323754
323800
|
},
|
|
323755
323801
|
required: [
|
|
@@ -323830,6 +323876,9 @@ var init_operator_contract = __esm(() => {
|
|
|
323830
323876
|
},
|
|
323831
323877
|
error: {
|
|
323832
323878
|
type: "string"
|
|
323879
|
+
},
|
|
323880
|
+
platformLimitReason: {
|
|
323881
|
+
type: "string"
|
|
323833
323882
|
}
|
|
323834
323883
|
},
|
|
323835
323884
|
required: [
|
|
@@ -450930,7 +450979,8 @@ var init_operator_contract_schemas_runtime = __esm(() => {
|
|
|
450930
450979
|
indexedRecords: NUMBER_SCHEMA,
|
|
450931
450980
|
embeddingProviderId: STRING_SCHEMA,
|
|
450932
450981
|
embeddingProviderLabel: STRING_SCHEMA,
|
|
450933
|
-
error: STRING_SCHEMA
|
|
450982
|
+
error: STRING_SCHEMA,
|
|
450983
|
+
platformLimitReason: STRING_SCHEMA
|
|
450934
450984
|
}, ["backend", "enabled", "available", "path", "dimensions", "indexedRecords", "embeddingProviderId", "embeddingProviderLabel"], { additionalProperties: true });
|
|
450935
450985
|
MEMORY_DOCTOR_REPORT_SCHEMA = objectSchema({
|
|
450936
450986
|
vector: MEMORY_VECTOR_STATS_SCHEMA,
|
|
@@ -837016,7 +837066,7 @@ var createStyledCell = (char, overrides = {}) => ({
|
|
|
837016
837066
|
// src/version.ts
|
|
837017
837067
|
import { readFileSync } from "fs";
|
|
837018
837068
|
import { join } from "path";
|
|
837019
|
-
var _version = "1.6.
|
|
837069
|
+
var _version = "1.6.2";
|
|
837020
837070
|
try {
|
|
837021
837071
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, "..", "package.json"), "utf-8"));
|
|
837022
837072
|
_version = typeof pkg.version === "string" ? pkg.version : _version;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-agent",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "GoodVibes personal operator assistant TUI with a proactive Agent product brain, isolated Agent Knowledge, local profiles, routines, skills, personas, and explicit build delegation.",
|
|
6
6
|
"type": "module",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {},
|
|
94
94
|
"devDependencies": {
|
|
95
|
-
"@pellux/goodvibes-sdk": "1.3.
|
|
95
|
+
"@pellux/goodvibes-sdk": "1.3.3",
|
|
96
96
|
"sql.js": "^1.14.1",
|
|
97
97
|
"sqlite-vec": "^0.1.9",
|
|
98
98
|
"zustand": "^5.0.12",
|
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.6.
|
|
9
|
+
let _version = '1.6.2';
|
|
10
10
|
try {
|
|
11
11
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8')) as {
|
|
12
12
|
readonly version?: unknown;
|