@teamvibe/poller 0.1.47 → 0.1.49
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/dist/claude-spawner.js +26 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +1 -0
- package/package.json +1 -1
package/dist/claude-spawner.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { spawn } from 'child_process';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
+
import { readFileSync, existsSync } from 'fs';
|
|
3
4
|
import { WebClient } from '@slack/web-api';
|
|
4
5
|
import { config } from './config.js';
|
|
5
6
|
import { logger } from './logger.js';
|
|
@@ -81,6 +82,23 @@ async function countNewThreadMessages(botToken, channel, threadTs, sinceTs) {
|
|
|
81
82
|
return 0;
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Read brain settings.json from the brain working directory.
|
|
87
|
+
* Returns parsed settings or empty object if not found.
|
|
88
|
+
*/
|
|
89
|
+
function readBrainSettings(cwd) {
|
|
90
|
+
const settingsPath = join(cwd, 'settings.json');
|
|
91
|
+
if (!existsSync(settingsPath))
|
|
92
|
+
return {};
|
|
93
|
+
try {
|
|
94
|
+
const raw = readFileSync(settingsPath, 'utf-8');
|
|
95
|
+
return JSON.parse(raw);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logger.warn(`Failed to read brain settings at ${settingsPath}: ${error}`);
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
84
102
|
function buildPrompt(msg, resumeHint) {
|
|
85
103
|
// Heartbeat messages get a minimal prompt — CLAUDE.md/MAINTENANCE.md handle the rest
|
|
86
104
|
if (msg.source === 'heartbeat') {
|
|
@@ -203,6 +221,8 @@ async function runClaudeCode(msg, sessionLog, cwd, sessionId, isFirstMessage = t
|
|
|
203
221
|
'teamvibe-api': { command: 'node', args: [teamvibeApiServerPath] },
|
|
204
222
|
},
|
|
205
223
|
});
|
|
224
|
+
// Read per-brain settings (e.g. model override)
|
|
225
|
+
const brainSettings = readBrainSettings(cwd);
|
|
206
226
|
const args = [
|
|
207
227
|
'--print',
|
|
208
228
|
'--verbose',
|
|
@@ -215,6 +235,12 @@ async function runClaudeCode(msg, sessionLog, cwd, sessionId, isFirstMessage = t
|
|
|
215
235
|
'--disallowedTools',
|
|
216
236
|
'NotebookEdit',
|
|
217
237
|
];
|
|
238
|
+
// Model override: brain settings.json takes priority, then CLAUDE_MODEL env var
|
|
239
|
+
const model = (typeof brainSettings['model'] === 'string' && brainSettings['model']) || config.CLAUDE_MODEL;
|
|
240
|
+
if (model) {
|
|
241
|
+
args.push('--model', model);
|
|
242
|
+
sessionLog.info(`Using model: ${model}`);
|
|
243
|
+
}
|
|
218
244
|
// Handle session continuity
|
|
219
245
|
if (sessionId) {
|
|
220
246
|
if (isFirstMessage) {
|
package/dist/config.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ declare const configSchema: z.ZodObject<{
|
|
|
17
17
|
BRAINS_PATH: z.ZodDefault<z.ZodString>;
|
|
18
18
|
DEFAULT_BRAIN_PATH: z.ZodDefault<z.ZodString>;
|
|
19
19
|
CLAUDE_CLI_PATH: z.ZodDefault<z.ZodString>;
|
|
20
|
+
CLAUDE_MODEL: z.ZodDefault<z.ZodString>;
|
|
20
21
|
PERSISTENT_STORAGE_PATH: z.ZodDefault<z.ZodString>;
|
|
21
22
|
BASE_BRAIN_REPO: z.ZodDefault<z.ZodString>;
|
|
22
23
|
BASE_BRAIN_BRANCH: z.ZodDefault<z.ZodString>;
|
|
@@ -40,6 +41,7 @@ declare const configSchema: z.ZodObject<{
|
|
|
40
41
|
BRAINS_PATH: string;
|
|
41
42
|
DEFAULT_BRAIN_PATH: string;
|
|
42
43
|
CLAUDE_CLI_PATH: string;
|
|
44
|
+
CLAUDE_MODEL: string;
|
|
43
45
|
PERSISTENT_STORAGE_PATH: string;
|
|
44
46
|
BASE_BRAIN_REPO: string;
|
|
45
47
|
BASE_BRAIN_BRANCH: string;
|
|
@@ -69,6 +71,7 @@ declare const configSchema: z.ZodObject<{
|
|
|
69
71
|
BRAINS_PATH?: string | undefined;
|
|
70
72
|
DEFAULT_BRAIN_PATH?: string | undefined;
|
|
71
73
|
CLAUDE_CLI_PATH?: string | undefined;
|
|
74
|
+
CLAUDE_MODEL?: string | undefined;
|
|
72
75
|
PERSISTENT_STORAGE_PATH?: string | undefined;
|
|
73
76
|
BASE_BRAIN_REPO?: string | undefined;
|
|
74
77
|
BASE_BRAIN_BRANCH?: string | undefined;
|
|
@@ -95,6 +98,7 @@ export declare const config: {
|
|
|
95
98
|
BRAINS_PATH: string;
|
|
96
99
|
DEFAULT_BRAIN_PATH: string;
|
|
97
100
|
CLAUDE_CLI_PATH: string;
|
|
101
|
+
CLAUDE_MODEL: string;
|
|
98
102
|
PERSISTENT_STORAGE_PATH: string;
|
|
99
103
|
BASE_BRAIN_REPO: string;
|
|
100
104
|
BASE_BRAIN_BRANCH: string;
|
package/dist/config.js
CHANGED
|
@@ -27,6 +27,7 @@ const configSchema = z.object({
|
|
|
27
27
|
BRAINS_PATH: z.string().default(''),
|
|
28
28
|
DEFAULT_BRAIN_PATH: z.string().default(''),
|
|
29
29
|
CLAUDE_CLI_PATH: z.string().default('claude'),
|
|
30
|
+
CLAUDE_MODEL: z.string().default('opus'),
|
|
30
31
|
PERSISTENT_STORAGE_PATH: z.string().default(''),
|
|
31
32
|
// Base brain repo (user-scope config for Claude Code)
|
|
32
33
|
BASE_BRAIN_REPO: z.string().default('https://github.com/teamvibeai/poller-brain.git'),
|