@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 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
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
4
- [![Version: 1.5.3](https://img.shields.io/badge/version-1.6.1-blue.svg)](#install)
4
+ [![Version: 1.5.3](https://img.shields.io/badge/version-1.6.2-blue.svg)](#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
 
@@ -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.2", VERSION2;
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.2",
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.2"
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 HOME_GRAPH_NODE_KINDS, HOME_GRAPH_RELATIONS, HOME_GRAPH_CAPABILITIES;
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 = __esm(() => {
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: () => uniq2,
807367
- stabilizeKnowledgeText: () => stableText,
807368
- runKnowledgeSemanticSelfImprovement: () => runKnowledgeSemanticSelfImprovement,
807308
+ uniqKnowledgeValues: () => uniq3,
807309
+ stabilizeKnowledgeText: () => stableText2,
807310
+ runKnowledgeSemanticSelfImprovement: () => runKnowledgeSemanticSelfImprovement2,
807369
807311
  resolveProjectPlanningSpace: () => resolveProjectPlanningSpace,
807370
- resolveKnowledgeDbPathFromControlPlaneDir: () => resolveKnowledgeDbPathFromControlPlaneDir,
807312
+ resolveKnowledgeDbPathFromControlPlaneDir: () => resolveKnowledgeDbPathFromControlPlaneDir2,
807371
807313
  renderPacket: () => renderPacket,
807372
807314
  renderKnowledgeSchemaSql: () => renderKnowledgeSchemaSql,
807373
807315
  renderKnowledgeMap: () => renderKnowledgeMap,
807374
807316
  readKnowledgeSearchText: () => readKnowledgeSearchText,
807375
- readBrowserKnowledgeProfile: () => readBrowserKnowledgeProfile,
807317
+ readBrowserKnowledgeProfile: () => readBrowserKnowledgeProfile2,
807376
807318
  projectPlanningSourceId: () => projectPlanningSourceId,
807377
807319
  projectPlanningProjectIdFromPath: () => projectPlanningProjectIdFromPath,
807378
807320
  projectPlanningCanonicalUri: () => projectPlanningCanonicalUri,
807379
807321
  projectKnowledgeSpaceId: () => projectKnowledgeSpaceId,
807380
- parseKnowledgeJsonValue: () => parseJsonValue,
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: () => loadKnowledgeStoreSnapshot,
807330
+ loadKnowledgeStoreSnapshot: () => loadKnowledgeStoreSnapshot2,
807389
807331
  listGeneratedKnowledgePages: () => listGeneratedKnowledgePages,
807390
- listBrowserKinds: () => listBrowserKinds,
807332
+ listBrowserKinds: () => listBrowserKinds2,
807391
807333
  knowledgeSpaceMetadata: () => knowledgeSpaceMetadata,
807392
807334
  knowledgePageSourceWeight: () => knowledgePageSourceWeight,
807393
- knowledgeNowMs: () => nowMs,
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: () => evaluateProjectPlanningReadiness,
807414
- discoverBrowserKnowledgeProfiles: () => discoverBrowserKnowledgeProfiles,
807355
+ evaluateProjectPlanningReadiness: () => evaluateProjectPlanningReadiness2,
807356
+ discoverBrowserKnowledgeProfiles: () => discoverBrowserKnowledgeProfiles2,
807415
807357
  createWebKnowledgeGapRepairer: () => createWebKnowledgeGapRepairer,
807416
807358
  createProviderBackedKnowledgeSemanticLlm: () => createProviderBackedKnowledgeSemanticLlm,
807417
807359
  createMemoryApi: () => createMemoryApi,
807418
- createKnowledgeSchema: () => createSchema2,
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, nowMs2 = Date.now()) {
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 ? nowMs2 - Math.min(...queuedRuns.map((r6) => r6.queuedAt)) : null;
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.1";
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 nowMs2() {
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 = nowMs2();
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 = nowMs2();
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 = nowMs2();
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: nowMs2()
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 = nowMs2();
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 = nowMs2();
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, nowMs3 = Date.now()) {
974339
- const diffMs = targetMs - nowMs3;
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.1",
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.2",
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.1';
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;