Updates
Rolling release / release (push) Failing after 1m50s

This commit is contained in:
2026-09-14 11:31:41 -04:00
parent aa06c71fe1
commit af9246151f
12 changed files with 176 additions and 159 deletions
+8
View File
@@ -29,6 +29,7 @@ export class HarnessBridge extends EventEmitter {
const assistantName = normalizeAssistantName(settings.assistantName);
const workspace = cwd || ensureAgentWorkspace({ name: assistantName, prompt: settings.assistantPrompt });
const roots = harnessRoots(access);
this.filesystemComputer = computer;
this.assistantName = assistantName;
this.assistantPrompt = settings.assistantPrompt;
this.options = {
@@ -62,6 +63,13 @@ export class HarnessBridge extends EventEmitter {
this.configureObsidian(settings);
}
configureFilesystem(access) {
const tools = createPhase2Tools({ cwd: this.options.cwd, computer: this.filesystemComputer, roots: filesystemRoots(access, this.options.cwd) });
const names = new Set(tools.map(tool => tool.name));
this.options.tools = this.options.tools.filter(tool => !names.has(tool.name)).concat(tools);
this.options.roots = harnessRoots(access);
}
configureObsidian(settings) {
this.obsidian.configure(settings);
this.options.tools = this.options.tools.filter(tool => tool.name !== 'obsidian').concat(createObsidianTools(this.obsidian));
+6 -1
View File
@@ -252,6 +252,7 @@ export class JarvisDaemon extends EventEmitter {
this.camera.setBackend(payload.via || 'portal');
}).catch((error) => {
if (generation !== this._webcamGeneration) return;
this.webcamRevoke();
this.emit('Error', 'WEBCAM_GRANT', error.message);
});
return result;
@@ -304,6 +305,10 @@ export class JarvisDaemon extends EventEmitter {
await this.voiceLoop?.stop?.();
this.voiceLoop = null;
this.settings = next;
if (next.fsAccess !== previous.fsAccess) {
await this.harness.resetContext();
this.harness.configureFilesystem(next.fsAccess);
}
if (['obsidianEnabled', 'obsidianVaultPath', 'obsidianMemoryEnabled'].some(key => next[key] !== previous[key])) {
await this.harness.resetContext();
this.harness.configureObsidian(next);
@@ -329,7 +334,7 @@ export class JarvisDaemon extends EventEmitter {
Object.assign(this.webcamNormalizer, { maxLongEdge: next.webcamMaxEdge, quality: next.screenshotQuality });
await this.startVoice();
this.voice.cancel(); this.setState('ARMED');
return JSON.stringify({ applied: true, voice: this.voiceLoop.status, environmentOverrides: ['JARVIS_TTS_MODEL', 'JARVIS_ASR_MODEL', 'JARVIS_WAKE_COMMAND', 'JARVIS_QVAC_MODEL', 'GROQ_API_KEY', 'JARVIS_GROQ_API_KEY'].filter(key => process.env[key]), restartRequired: ['chatModel', 'modelProfile', 'maxTurns', 'maxShellCalls', 'maxToolRounds', 'fsAccess'].filter(key => next[key] !== this.startupSettings[key]) });
return JSON.stringify({ applied: true, voice: this.voiceLoop.status, environmentOverrides: ['JARVIS_TTS_MODEL', 'JARVIS_ASR_MODEL', 'JARVIS_WAKE_COMMAND', 'JARVIS_QVAC_MODEL', 'GROQ_API_KEY', 'JARVIS_GROQ_API_KEY'].filter(key => process.env[key]), restartRequired: ['chatModel', 'modelProfile', 'maxTurns', 'maxShellCalls', 'maxToolRounds'].filter(key => next[key] !== this.startupSettings[key]) });
}
async previewVoice(text) {
if (this.locked) throw new Error('Unlock the desktop to preview a voice');