obol-ai 0.3.18 → 0.3.19
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/package.json +1 -1
- package/src/claude/constants.js +6 -0
- package/src/runtime/background.js +2 -5
- package/src/runtime/heartbeat.js +17 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## 0.3.19
|
|
2
|
+
- update changelog
|
|
3
|
+
- add curiosity toggle, fix describeToolCall crash in background tasks
|
|
4
|
+
|
|
1
5
|
## 0.3.18
|
|
2
6
|
- store news in self-memory, boost humor output, fix analysis self-referential patterns
|
|
3
7
|
- update readme with curiosity, analysis, news, voice, patterns, and remove traits
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obol-ai",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.19",
|
|
4
4
|
"description": "Self-evolving AI assistant that learns, remembers, and acts on its own. Persistent vector memory, self-rewriting personality, proactive heartbeats.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
package/src/claude/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const { buildStatusHtml,
|
|
1
|
+
const { buildStatusHtml, formatToolCall } = require('../status');
|
|
2
2
|
|
|
3
3
|
const MAX_CONCURRENT_TASKS = 3;
|
|
4
4
|
|
|
@@ -88,10 +88,7 @@ TASK: ${task}`;
|
|
|
88
88
|
if (update.model) routeInfo.model = update.model;
|
|
89
89
|
},
|
|
90
90
|
_onToolStart: (toolName, inputSummary) => {
|
|
91
|
-
statusText = 'Processing';
|
|
92
|
-
describeToolCall(claude.client, toolName, inputSummary).then(desc => {
|
|
93
|
-
if (desc) statusText = desc;
|
|
94
|
-
});
|
|
91
|
+
statusText = formatToolCall(toolName, inputSummary) || 'Processing';
|
|
95
92
|
startStatusTimer();
|
|
96
93
|
},
|
|
97
94
|
});
|
package/src/runtime/heartbeat.js
CHANGED
|
@@ -87,13 +87,27 @@ async function runCuriosityOnce(config, allowedUsers) {
|
|
|
87
87
|
console.log('[curiosity] Skipping — previous cycle still running');
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
|
+
|
|
91
|
+
const enabledUsers = [];
|
|
92
|
+
for (const userId of allowedUsers) {
|
|
93
|
+
const tenant = await getTenant(userId, config);
|
|
94
|
+
const pref = tenant.toolPrefs?.get('curiosity');
|
|
95
|
+
const enabled = pref ? pref.enabled : true;
|
|
96
|
+
if (enabled) enabledUsers.push(userId);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (!enabledUsers.length) {
|
|
100
|
+
console.log('[curiosity] Skipping — no users have curiosity enabled');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
90
104
|
_curiosityRunning = true;
|
|
91
105
|
try {
|
|
92
106
|
const selfMemory = await createSelfMemory(config.supabase, 0);
|
|
93
|
-
const firstTenant = await getTenant(
|
|
107
|
+
const firstTenant = await getTenant(enabledUsers[0], config);
|
|
94
108
|
const client = firstTenant.claude.client;
|
|
95
109
|
|
|
96
|
-
const contexts = await Promise.all(
|
|
110
|
+
const contexts = await Promise.all(enabledUsers.map(async (userId) => {
|
|
97
111
|
try {
|
|
98
112
|
const tenant = await getTenant(userId, config);
|
|
99
113
|
const parts = [];
|
|
@@ -120,7 +134,7 @@ async function runCuriosityOnce(config, allowedUsers) {
|
|
|
120
134
|
const firstUserDir = firstTenant.userDir;
|
|
121
135
|
await runCuriosity(client, selfMemory, 0, { peopleContext, userDir: firstUserDir });
|
|
122
136
|
|
|
123
|
-
const userDispatchData = await Promise.all(
|
|
137
|
+
const userDispatchData = await Promise.all(enabledUsers.map(async (userId) => {
|
|
124
138
|
try {
|
|
125
139
|
const tenant = await getTenant(userId, config);
|
|
126
140
|
const patterns = tenant.patterns ? await tenant.patterns.format().catch(() => null) : null;
|