@pellux/goodvibes-agent 1.6.1 → 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 +4 -0
- package/README.md +1 -1
- package/dist/package/main.js +30 -88
- package/package.json +2 -2
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
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
|
+
|
|
5
9
|
## 1.6.1 - 2026-07-07
|
|
6
10
|
|
|
7
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.
|
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"));
|
|
@@ -45977,7 +45977,7 @@ function resolveSqliteVecPath() {
|
|
|
45977
45977
|
}
|
|
45978
45978
|
function isExtensionLoadingRefusal(err2) {
|
|
45979
45979
|
const message = err2 instanceof Error ? err2.message : String(err2);
|
|
45980
|
-
return /not authorized|omit.*load.*extension|extension loading is disabled/i.test(message);
|
|
45980
|
+
return /not authorized|omit.*load.*extension|extension loading is disabled|does not support dynamic extension loading/i.test(message);
|
|
45981
45981
|
}
|
|
45982
45982
|
function loadSqliteVecExtension(db) {
|
|
45983
45983
|
const bundledPath = resolveSqliteVecPath();
|
|
@@ -264004,7 +264004,7 @@ var FOUNDATION_METADATA;
|
|
|
264004
264004
|
var init_foundation_metadata = __esm(() => {
|
|
264005
264005
|
FOUNDATION_METADATA = {
|
|
264006
264006
|
productId: "goodvibes",
|
|
264007
|
-
productVersion: "1.3.
|
|
264007
|
+
productVersion: "1.3.3",
|
|
264008
264008
|
operatorMethodCount: 327,
|
|
264009
264009
|
operatorEventCount: 31,
|
|
264010
264010
|
peerEndpointCount: 6
|
|
@@ -264019,7 +264019,7 @@ var init_operator_contract = __esm(() => {
|
|
|
264019
264019
|
product: {
|
|
264020
264020
|
id: "goodvibes",
|
|
264021
264021
|
surface: "operator",
|
|
264022
|
-
version: "1.3.
|
|
264022
|
+
version: "1.3.3"
|
|
264023
264023
|
},
|
|
264024
264024
|
auth: {
|
|
264025
264025
|
modes: [
|
|
@@ -464318,23 +464318,6 @@ function createSchema2(db) {
|
|
|
464318
464318
|
)
|
|
464319
464319
|
`);
|
|
464320
464320
|
}
|
|
464321
|
-
function getKnowledgeSchemaStatements() {
|
|
464322
|
-
const statements = [];
|
|
464323
|
-
createSchema2({
|
|
464324
|
-
run(sql) {
|
|
464325
|
-
const normalized = sql.trim();
|
|
464326
|
-
if (normalized.length > 0)
|
|
464327
|
-
statements.push(normalized);
|
|
464328
|
-
}
|
|
464329
|
-
});
|
|
464330
|
-
return statements;
|
|
464331
|
-
}
|
|
464332
|
-
function renderKnowledgeSchemaSql() {
|
|
464333
|
-
return `${getKnowledgeSchemaStatements().map((statement) => statement.endsWith(";") ? statement : `${statement};`).join(`
|
|
464334
|
-
|
|
464335
|
-
`)}
|
|
464336
|
-
`;
|
|
464337
|
-
}
|
|
464338
464321
|
function rowObject(columns, values2) {
|
|
464339
464322
|
return Object.fromEntries(columns.map((column, index) => [column, values2[index]]));
|
|
464340
464323
|
}
|
|
@@ -777707,9 +777690,6 @@ var init_ingest = __esm(() => {
|
|
|
777707
777690
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/knowledge/browser-history/index.js
|
|
777708
777691
|
var init_browser_history = __esm(() => {
|
|
777709
777692
|
init_ingest();
|
|
777710
|
-
init_discover();
|
|
777711
|
-
init_readers();
|
|
777712
|
-
init_paths2();
|
|
777713
777693
|
});
|
|
777714
777694
|
|
|
777715
777695
|
// node_modules/graphql/jsutils/devAssert.mjs
|
|
@@ -795584,7 +795564,6 @@ var init_semantic = __esm(() => {
|
|
|
795584
795564
|
init_llm();
|
|
795585
795565
|
init_gap_repair();
|
|
795586
795566
|
init_service5();
|
|
795587
|
-
init_self_improvement();
|
|
795588
795567
|
});
|
|
795589
795568
|
|
|
795590
795569
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/knowledge/home-graph/helpers.js
|
|
@@ -799553,40 +799532,8 @@ var init_map_view = __esm(() => {
|
|
|
799553
799532
|
});
|
|
799554
799533
|
|
|
799555
799534
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/knowledge/home-graph/types.js
|
|
799556
|
-
var
|
|
799535
|
+
var HOME_GRAPH_CAPABILITIES;
|
|
799557
799536
|
var init_types15 = __esm(() => {
|
|
799558
|
-
HOME_GRAPH_NODE_KINDS = [
|
|
799559
|
-
"ha_home",
|
|
799560
|
-
"ha_entity",
|
|
799561
|
-
"ha_device",
|
|
799562
|
-
"ha_area",
|
|
799563
|
-
"ha_automation",
|
|
799564
|
-
"ha_script",
|
|
799565
|
-
"ha_scene",
|
|
799566
|
-
"ha_label",
|
|
799567
|
-
"ha_integration",
|
|
799568
|
-
"ha_room",
|
|
799569
|
-
"ha_device_passport",
|
|
799570
|
-
"ha_maintenance_item",
|
|
799571
|
-
"ha_troubleshooting_case",
|
|
799572
|
-
"ha_purchase",
|
|
799573
|
-
"ha_network_node"
|
|
799574
|
-
];
|
|
799575
|
-
HOME_GRAPH_RELATIONS = [
|
|
799576
|
-
"controls",
|
|
799577
|
-
"located_in",
|
|
799578
|
-
"belongs_to_device",
|
|
799579
|
-
"has_manual",
|
|
799580
|
-
"has_receipt",
|
|
799581
|
-
"has_warranty",
|
|
799582
|
-
"has_issue",
|
|
799583
|
-
"fixed_by",
|
|
799584
|
-
"uses_battery",
|
|
799585
|
-
"connected_via",
|
|
799586
|
-
"part_of_network",
|
|
799587
|
-
"mentioned_by",
|
|
799588
|
-
"source_for"
|
|
799589
|
-
];
|
|
799590
799537
|
HOME_GRAPH_CAPABILITIES = [
|
|
799591
799538
|
"knowledge-space-isolation",
|
|
799592
799539
|
"snapshot-sync",
|
|
@@ -801377,7 +801324,6 @@ var init_service6 = __esm(() => {
|
|
|
801377
801324
|
var init_home_graph = __esm(() => {
|
|
801378
801325
|
init_service6();
|
|
801379
801326
|
init_extension();
|
|
801380
|
-
init_types15();
|
|
801381
801327
|
});
|
|
801382
801328
|
|
|
801383
801329
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/knowledge/store-record-delete.js
|
|
@@ -803802,14 +803748,10 @@ var init_service7 = __esm(() => {
|
|
|
803802
803748
|
var init_project_planning = __esm(() => {
|
|
803803
803749
|
init_service7();
|
|
803804
803750
|
init_helpers3();
|
|
803805
|
-
init_readiness();
|
|
803806
803751
|
});
|
|
803807
803752
|
|
|
803808
803753
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/knowledge/persistence.js
|
|
803809
|
-
var init_persistence =
|
|
803810
|
-
init_store_schema();
|
|
803811
|
-
init_store_load();
|
|
803812
|
-
});
|
|
803754
|
+
var init_persistence = () => {};
|
|
803813
803755
|
|
|
803814
803756
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/knowledge/projections.js
|
|
803815
803757
|
class KnowledgeProjectionService {
|
|
@@ -807363,21 +807305,21 @@ var init_service8 = __esm(() => {
|
|
|
807363
807305
|
var exports_knowledge = {};
|
|
807364
807306
|
__export(exports_knowledge, {
|
|
807365
807307
|
withKnowledgeSpace: () => withKnowledgeSpace,
|
|
807366
|
-
uniqKnowledgeValues: () =>
|
|
807367
|
-
stabilizeKnowledgeText: () =>
|
|
807368
|
-
runKnowledgeSemanticSelfImprovement: () =>
|
|
807308
|
+
uniqKnowledgeValues: () => uniq3,
|
|
807309
|
+
stabilizeKnowledgeText: () => stableText2,
|
|
807310
|
+
runKnowledgeSemanticSelfImprovement: () => runKnowledgeSemanticSelfImprovement2,
|
|
807369
807311
|
resolveProjectPlanningSpace: () => resolveProjectPlanningSpace,
|
|
807370
|
-
resolveKnowledgeDbPathFromControlPlaneDir: () =>
|
|
807312
|
+
resolveKnowledgeDbPathFromControlPlaneDir: () => resolveKnowledgeDbPathFromControlPlaneDir2,
|
|
807371
807313
|
renderPacket: () => renderPacket,
|
|
807372
807314
|
renderKnowledgeSchemaSql: () => renderKnowledgeSchemaSql,
|
|
807373
807315
|
renderKnowledgeMap: () => renderKnowledgeMap,
|
|
807374
807316
|
readKnowledgeSearchText: () => readKnowledgeSearchText,
|
|
807375
|
-
readBrowserKnowledgeProfile: () =>
|
|
807317
|
+
readBrowserKnowledgeProfile: () => readBrowserKnowledgeProfile2,
|
|
807376
807318
|
projectPlanningSourceId: () => projectPlanningSourceId,
|
|
807377
807319
|
projectPlanningProjectIdFromPath: () => projectPlanningProjectIdFromPath,
|
|
807378
807320
|
projectPlanningCanonicalUri: () => projectPlanningCanonicalUri,
|
|
807379
807321
|
projectKnowledgeSpaceId: () => projectKnowledgeSpaceId,
|
|
807380
|
-
parseKnowledgeJsonValue: () =>
|
|
807322
|
+
parseKnowledgeJsonValue: () => parseJsonValue2,
|
|
807381
807323
|
normalizeProjectId: () => normalizeProjectId,
|
|
807382
807324
|
normalizeKnowledgeSpaceId: () => normalizeKnowledgeSpaceId,
|
|
807383
807325
|
normalizeHomeAssistantInstallationId: () => normalizeHomeAssistantInstallationId,
|
|
@@ -807385,12 +807327,12 @@ __export(exports_knowledge, {
|
|
|
807385
807327
|
materializeGeneratedKnowledgeProjection: () => materializeGeneratedKnowledgeProjection,
|
|
807386
807328
|
looksLikeRawPdfPayload: () => looksLikeRawPdfPayload,
|
|
807387
807329
|
looksBinaryLikeText: () => looksBinaryLikeText,
|
|
807388
|
-
loadKnowledgeStoreSnapshot: () =>
|
|
807330
|
+
loadKnowledgeStoreSnapshot: () => loadKnowledgeStoreSnapshot2,
|
|
807389
807331
|
listGeneratedKnowledgePages: () => listGeneratedKnowledgePages,
|
|
807390
|
-
listBrowserKinds: () =>
|
|
807332
|
+
listBrowserKinds: () => listBrowserKinds2,
|
|
807391
807333
|
knowledgeSpaceMetadata: () => knowledgeSpaceMetadata,
|
|
807392
807334
|
knowledgePageSourceWeight: () => knowledgePageSourceWeight,
|
|
807393
|
-
knowledgeNowMs: () =>
|
|
807335
|
+
knowledgeNowMs: () => nowMs2,
|
|
807394
807336
|
knowledgeExtractionNeedsRefresh: () => knowledgeExtractionNeedsRefresh,
|
|
807395
807337
|
isUsefulKnowledgePageSourceCandidate: () => isUsefulKnowledgePageSourceCandidate,
|
|
807396
807338
|
isUsefulKnowledgePageSource: () => isUsefulKnowledgePageSource,
|
|
@@ -807410,12 +807352,12 @@ __export(exports_knowledge, {
|
|
|
807410
807352
|
generatedKnowledgeSourceId: () => generatedKnowledgeSourceId,
|
|
807411
807353
|
generatedKnowledgeCanonicalUri: () => generatedKnowledgeCanonicalUri,
|
|
807412
807354
|
extractKnowledgeArtifact: () => extractKnowledgeArtifact,
|
|
807413
|
-
evaluateProjectPlanningReadiness: () =>
|
|
807414
|
-
discoverBrowserKnowledgeProfiles: () =>
|
|
807355
|
+
evaluateProjectPlanningReadiness: () => evaluateProjectPlanningReadiness2,
|
|
807356
|
+
discoverBrowserKnowledgeProfiles: () => discoverBrowserKnowledgeProfiles2,
|
|
807415
807357
|
createWebKnowledgeGapRepairer: () => createWebKnowledgeGapRepairer,
|
|
807416
807358
|
createProviderBackedKnowledgeSemanticLlm: () => createProviderBackedKnowledgeSemanticLlm,
|
|
807417
807359
|
createMemoryApi: () => createMemoryApi,
|
|
807418
|
-
createKnowledgeSchema: () =>
|
|
807360
|
+
createKnowledgeSchema: () => createSchema3,
|
|
807419
807361
|
createKnowledgeApi: () => createKnowledgeApi,
|
|
807420
807362
|
createDefaultKnowledgeConnectorRegistry: () => createDefaultKnowledgeConnectorRegistry,
|
|
807421
807363
|
compareKnowledgePageSources: () => compareKnowledgePageSources,
|
|
@@ -809888,7 +809830,7 @@ var init_delivery_manager = __esm(() => {
|
|
|
809888
809830
|
});
|
|
809889
809831
|
|
|
809890
809832
|
// node_modules/@pellux/goodvibes-sdk/dist/platform/automation/scheduler-capacity.js
|
|
809891
|
-
function computeSchedulerCapacity(slotsTotal, runs,
|
|
809833
|
+
function computeSchedulerCapacity(slotsTotal, runs, nowMs3 = Date.now()) {
|
|
809892
809834
|
let slotsInUse = 0;
|
|
809893
809835
|
const queuedRuns = [];
|
|
809894
809836
|
for (const run7 of runs) {
|
|
@@ -809898,7 +809840,7 @@ function computeSchedulerCapacity(slotsTotal, runs, nowMs2 = Date.now()) {
|
|
|
809898
809840
|
queuedRuns.push(run7);
|
|
809899
809841
|
}
|
|
809900
809842
|
const queueDepth = queuedRuns.length;
|
|
809901
|
-
const oldestQueuedAgeMs = queueDepth > 0 ?
|
|
809843
|
+
const oldestQueuedAgeMs = queueDepth > 0 ? nowMs3 - Math.min(...queuedRuns.map((r6) => r6.queuedAt)) : null;
|
|
809902
809844
|
return { slotsTotal, slotsInUse, queueDepth, oldestQueuedAgeMs };
|
|
809903
809845
|
}
|
|
809904
809846
|
|
|
@@ -837124,7 +837066,7 @@ var createStyledCell = (char, overrides = {}) => ({
|
|
|
837124
837066
|
// src/version.ts
|
|
837125
837067
|
import { readFileSync } from "fs";
|
|
837126
837068
|
import { join } from "path";
|
|
837127
|
-
var _version = "1.6.
|
|
837069
|
+
var _version = "1.6.2";
|
|
837128
837070
|
try {
|
|
837129
837071
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, "..", "package.json"), "utf-8"));
|
|
837130
837072
|
_version = typeof pkg.version === "string" ? pkg.version : _version;
|
|
@@ -862281,7 +862223,7 @@ var WORK_PLAN_STATUSES = [
|
|
|
862281
862223
|
"failed",
|
|
862282
862224
|
"cancelled"
|
|
862283
862225
|
];
|
|
862284
|
-
function
|
|
862226
|
+
function nowMs3() {
|
|
862285
862227
|
return Date.now();
|
|
862286
862228
|
}
|
|
862287
862229
|
function isObject4(value) {
|
|
@@ -862387,7 +862329,7 @@ class WorkPlanStore {
|
|
|
862387
862329
|
if (!normalizedTitle)
|
|
862388
862330
|
throw new Error("Work plan item title is required.");
|
|
862389
862331
|
const plan = this.readPlan();
|
|
862390
|
-
const time4 =
|
|
862332
|
+
const time4 = nowMs3();
|
|
862391
862333
|
const item = {
|
|
862392
862334
|
id: createItemId(),
|
|
862393
862335
|
title: normalizedTitle,
|
|
@@ -862411,7 +862353,7 @@ class WorkPlanStore {
|
|
|
862411
862353
|
updateItem(idOrPrefix, patch2) {
|
|
862412
862354
|
const plan = this.readPlan();
|
|
862413
862355
|
const item = this.resolveItem(plan, idOrPrefix);
|
|
862414
|
-
const time4 =
|
|
862356
|
+
const time4 = nowMs3();
|
|
862415
862357
|
const nextStatus = patch2.status ?? item.status;
|
|
862416
862358
|
const next = this.pruneItem({
|
|
862417
862359
|
...item,
|
|
@@ -862444,7 +862386,7 @@ class WorkPlanStore {
|
|
|
862444
862386
|
removeItem(idOrPrefix) {
|
|
862445
862387
|
const plan = this.readPlan();
|
|
862446
862388
|
const item = this.resolveItem(plan, idOrPrefix);
|
|
862447
|
-
const time4 =
|
|
862389
|
+
const time4 = nowMs3();
|
|
862448
862390
|
const remaining = plan.items.filter((candidate) => candidate.id !== item.id);
|
|
862449
862391
|
this.writePlan({
|
|
862450
862392
|
...plan,
|
|
@@ -862464,7 +862406,7 @@ class WorkPlanStore {
|
|
|
862464
862406
|
...plan,
|
|
862465
862407
|
items: remaining,
|
|
862466
862408
|
activeItemId: remaining[0]?.id,
|
|
862467
|
-
updatedAt:
|
|
862409
|
+
updatedAt: nowMs3()
|
|
862468
862410
|
});
|
|
862469
862411
|
return removed;
|
|
862470
862412
|
}
|
|
@@ -862503,7 +862445,7 @@ class WorkPlanStore {
|
|
|
862503
862445
|
const parsed = JSON.parse(raw);
|
|
862504
862446
|
if (!isObject4(parsed))
|
|
862505
862447
|
return this.createEmptyPlan();
|
|
862506
|
-
const time4 =
|
|
862448
|
+
const time4 = nowMs3();
|
|
862507
862449
|
const createdAt = typeof parsed.createdAt === "number" ? parsed.createdAt : time4;
|
|
862508
862450
|
const updatedAt = typeof parsed.updatedAt === "number" ? parsed.updatedAt : createdAt;
|
|
862509
862451
|
const items = Array.isArray(parsed.items) ? parsed.items.map((item) => normalizeItem(item, createdAt)).filter((item) => item !== null) : [];
|
|
@@ -862522,7 +862464,7 @@ class WorkPlanStore {
|
|
|
862522
862464
|
};
|
|
862523
862465
|
}
|
|
862524
862466
|
createEmptyPlan() {
|
|
862525
|
-
const time4 =
|
|
862467
|
+
const time4 = nowMs3();
|
|
862526
862468
|
return {
|
|
862527
862469
|
id: createPlanId(this.options.projectId, this.options.projectRoot),
|
|
862528
862470
|
projectId: this.options.projectId,
|
|
@@ -974335,8 +974277,8 @@ function formatDigestTime(at, from = Date.now()) {
|
|
|
974335
974277
|
return `yesterday ${time4}`;
|
|
974336
974278
|
return `${d4.toLocaleDateString(undefined, { month: "short", day: "numeric" })} ${time4}`;
|
|
974337
974279
|
}
|
|
974338
|
-
function formatRelativeTime(targetMs,
|
|
974339
|
-
const diffMs = targetMs -
|
|
974280
|
+
function formatRelativeTime(targetMs, nowMs4 = Date.now()) {
|
|
974281
|
+
const diffMs = targetMs - nowMs4;
|
|
974340
974282
|
if (diffMs <= 0)
|
|
974341
974283
|
return "soon";
|
|
974342
974284
|
const diffMin = Math.round(diffMs / 60000);
|
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;
|