feat: add main features

Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
This commit is contained in:
2026-06-06 01:27:01 +02:00
parent 55b3bee2c8
commit 307ae71857
273 changed files with 48740 additions and 0 deletions

View File

@ -0,0 +1,53 @@
/**
* Tauri adapter for {@link GitGateway} (L8).
*
* Commands use snake_case (Tauri convention); payload keys are camelCase
* (matching the backend DTO `#[serde(rename_all = "camelCase")]`), consistent
* with the other adapters in this directory.
*
* NOTE: The Tauri commands wired here are defined in the backend `app-tauri`
* crate. The mock gateway covers tests and offline dev today.
*/
import { invoke } from "@tauri-apps/api/core";
import type { GitBranches, GitCommit, GitFileStatus, GraphCommit } from "@/domain";
import type { GitGateway } from "@/ports";
export class TauriGitGateway implements GitGateway {
status(projectId: string): Promise<GitFileStatus[]> {
return invoke<GitFileStatus[]>("git_status", { projectId });
}
async stage(projectId: string, path: string): Promise<void> {
await invoke("git_stage", { request: { projectId, path } });
}
async unstage(projectId: string, path: string): Promise<void> {
await invoke("git_unstage", { request: { projectId, path } });
}
commit(projectId: string, message: string): Promise<GitCommit> {
return invoke<GitCommit>("git_commit", { request: { projectId, message } });
}
branches(projectId: string): Promise<GitBranches> {
return invoke<GitBranches>("git_branches", { projectId });
}
async checkout(projectId: string, branch: string): Promise<void> {
await invoke("git_checkout", { request: { projectId, branch } });
}
log(projectId: string, limit: number): Promise<GitCommit[]> {
return invoke<GitCommit[]>("git_log", { projectId, limit });
}
async init(projectId: string): Promise<void> {
await invoke("git_init", { projectId });
}
graph(projectId: string, limit: number): Promise<GraphCommit[]> {
return invoke<GraphCommit[]>("git_graph", { projectId, limit });
}
}