feat(backend,frontend): lot utilisateur #346 #347 #348 — exécution workspace plugin contrôlée par l'hôte, réordonnancement des onglets projet par glisser-déposer, Final restauré après stop d'agent CLI custom (QA verte)
#346 — capacités plugin SCM: le manifeste permissions.workspaceExec (contrat SDK 8ff0f47) est appliqué côté hôte — domain PluginWorkspaceExec Rule/Effect + audit sink, port WorkspaceToolRunner, adapter LocalWorkspaceToolRunner sandboxé (concurrence 4, timeout, bornes stdout/stderr, résolution bare executable sans shell), service application + DTO backend + commandes app-tauri, gateway frontend execTool exposée au runtime plugin — fin des lectures ad hoc du store interne .git par les plugins. #347 — onglets projet réordonnables par glisser-déposer (Tabs DnD, onReorder, persistance de l'ordre via useProjects). #348 — stop d'agent CLI custom: le message Final vert réapparaît au tour suivant (override terminal stop armé correctement, reset de l'interaction, refresh de la délégation requester). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -160,6 +160,8 @@ import type {
|
||||
PluginToolchainDiagnosticRequest,
|
||||
PluginToolchainGateway,
|
||||
PluginWorkspaceGateway,
|
||||
PluginWorkspaceExecInput,
|
||||
PluginWorkspaceExecResult,
|
||||
PluginWorkspacePathInput,
|
||||
PluginWorkspaceWriteBinaryInput,
|
||||
PluginWorkspaceWriteTextInput,
|
||||
@ -4553,6 +4555,10 @@ function basename(path: string): string {
|
||||
export class MockPluginWorkspaceGateway implements PluginWorkspaceGateway {
|
||||
private readonly files = new Map<string, Map<string, Uint8Array>>();
|
||||
|
||||
async execTool(_input: PluginWorkspaceExecInput): Promise<PluginWorkspaceExecResult> {
|
||||
throw new Error("Plugin workspace tool execution is unavailable in the mock adapter");
|
||||
}
|
||||
|
||||
private bucket(projectId: string): Map<string, Uint8Array> {
|
||||
let files = this.files.get(projectId);
|
||||
if (!files) {
|
||||
|
||||
Reference in New Issue
Block a user