chore: version up to v2.80.30 and package vsix
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import { SidebarChatProvider } from '../sidebarProvider';
|
||||
import { logInfo } from '../utils';
|
||||
import { resolveScopeForAgent, openKnowledgeMapEditor } from '../skills/agentKnowledgeMap';
|
||||
import { logError, logInfo } from '../utils';
|
||||
import {
|
||||
resolveScopeForAgent,
|
||||
openKnowledgeMapEditor,
|
||||
getOrCreateAgentEntry,
|
||||
upsertAgentEntry,
|
||||
} from '../skills/agentKnowledgeMap';
|
||||
import { getActiveBrainProfile } from '../utils';
|
||||
|
||||
/**
|
||||
@@ -54,6 +59,90 @@ export async function handleAgentMessage(provider: SidebarChatProvider, data: an
|
||||
case 'editKnowledgeMap':
|
||||
await openKnowledgeMapEditor();
|
||||
return true;
|
||||
case 'getAgentMap': {
|
||||
const view = (provider as any)._view as vscode.WebviewView | undefined;
|
||||
if (!view) return true;
|
||||
try {
|
||||
const entry = getOrCreateAgentEntry(data.agentPath || '');
|
||||
const knowledgeMapHasEntry = entry.knowledgeFolders.length > 0 || (entry.skillFolders?.length ?? 0) > 0;
|
||||
view.webview.postMessage({
|
||||
type: 'agentMapData',
|
||||
value: {
|
||||
name: entry.name,
|
||||
knowledgeFolders: entry.knowledgeFolders,
|
||||
skillFolders: entry.skillFolders || [],
|
||||
exists: knowledgeMapHasEntry,
|
||||
},
|
||||
});
|
||||
} catch (e: any) {
|
||||
logError('agent-map: load failed.', { error: e?.message ?? String(e) });
|
||||
view.webview.postMessage({
|
||||
type: 'agentMapData',
|
||||
value: { name: '', knowledgeFolders: [], skillFolders: [], exists: false },
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case 'saveAgentMap': {
|
||||
const view = (provider as any)._view as vscode.WebviewView | undefined;
|
||||
if (!view) return true;
|
||||
const agentPath = typeof data.agentPath === 'string' ? data.agentPath : '';
|
||||
const name = path.basename(agentPath).replace(/\.(md|markdown)$/i, '').trim();
|
||||
const knowledgeFolders = Array.isArray(data.knowledgeFolders)
|
||||
? data.knowledgeFolders.filter((f: unknown) => typeof f === 'string')
|
||||
: [];
|
||||
const skillFolders = Array.isArray(data.skillFolders)
|
||||
? data.skillFolders.filter((f: unknown) => typeof f === 'string')
|
||||
: [];
|
||||
const result = upsertAgentEntry({
|
||||
name,
|
||||
knowledgeFolders,
|
||||
skillFolders,
|
||||
});
|
||||
view.webview.postMessage({
|
||||
type: 'agentMapSaved',
|
||||
value: { ok: result.ok, path: result.path, error: result.error },
|
||||
});
|
||||
return true;
|
||||
}
|
||||
case 'pickPath': {
|
||||
const view = (provider as any)._view as vscode.WebviewView | undefined;
|
||||
if (!view) return true;
|
||||
const kind = data.kind === 'skillFile' ? 'skillFile'
|
||||
: data.kind === 'skillFolder' ? 'skillFolder'
|
||||
: 'knowledgeFolder';
|
||||
const isFile = kind === 'skillFile';
|
||||
const label = kind === 'knowledgeFolder' ? 'Select Knowledge Folder'
|
||||
: kind === 'skillFolder' ? 'Select Skill Folder'
|
||||
: 'Select Skill File (.md)';
|
||||
const defaultUri = (() => {
|
||||
if (kind === 'knowledgeFolder') {
|
||||
const brain = getActiveBrainProfile();
|
||||
if (brain?.localBrainPath) return vscode.Uri.file(brain.localBrainPath);
|
||||
}
|
||||
return undefined;
|
||||
})();
|
||||
try {
|
||||
const picked = await vscode.window.showOpenDialog({
|
||||
canSelectFiles: isFile,
|
||||
canSelectFolders: !isFile,
|
||||
canSelectMany: false,
|
||||
openLabel: label,
|
||||
defaultUri,
|
||||
filters: isFile ? { Markdown: ['md', 'markdown'] } : undefined,
|
||||
});
|
||||
const fsPath = picked?.[0]?.fsPath || '';
|
||||
if (fsPath) {
|
||||
view.webview.postMessage({
|
||||
type: 'pickedPath',
|
||||
value: { kind, path: fsPath },
|
||||
});
|
||||
}
|
||||
} catch (e: any) {
|
||||
logError('agent-map: pick failed.', { kind, error: e?.message ?? String(e) });
|
||||
}
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user