Initial commit: a0_software_orchestrator v1.0
- Auto-Registration-Bug behoben (register_project/get_project_id/resolve_project Trennung) - 25 Tests gruen (Pytest) - block_compactor-Tool refactored (Option B: Soft-Check statt Hard-Block) - 4 Restbaustellen gefixt - DB-Schema: plugin_settings-Tabelle hinzugefuegt - 3 Schattenprojekte aus DB geloescht - Plan v3 + Refactor-Plan + Worklog dokumentiert
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>A0 Software Orchestrator Settings</title>
|
||||
<script type="module" src="/plugins/a0_software_orchestrator/webui/orchestrator-config-store.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div x-data>
|
||||
<template x-if="$store.a0SoftwareOrchestratorStore">
|
||||
<div x-init="$store.a0SoftwareOrchestratorStore.onOpen()" x-destroy="$store.a0SoftwareOrchestratorStore.cleanup()">
|
||||
<h3>A0 Software Orchestrator</h3>
|
||||
<p>Core-first software project orchestration.</p>
|
||||
|
||||
<!-- Model Routing -->
|
||||
<fieldset>
|
||||
<legend>Model Routing</legend>
|
||||
<div class="form-group">
|
||||
<label>Orchestrator Model:</label>
|
||||
<select x-model="config.orchestrator_preset">
|
||||
<option value="strong-reasoning">Strong Reasoning</option>
|
||||
<option value="cheap-fast">Cheap Fast</option>
|
||||
<option value="best-coding">Best Coding</option>
|
||||
<option value="balanced">Balanced</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Implementation Engineer Model:</label>
|
||||
<select x-model="config.implementation_preset">
|
||||
<option value="best-coding">Best Coding</option>
|
||||
<option value="balanced-coding">Balanced Coding</option>
|
||||
<option value="strong-reasoning">Strong Reasoning</option>
|
||||
<option value="cheap-fast">Cheap Fast</option>
|
||||
</select>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<!-- External Tools Health -->
|
||||
<fieldset>
|
||||
<legend>External Tools</legend>
|
||||
<div x-text="'Status: ' + (config.tool_status || 'not checked')">
|
||||
</div>
|
||||
<button @click="$store.a0SoftwareOrchestratorStore.loadStatus()">
|
||||
Check Tools
|
||||
</button>
|
||||
</fieldset>
|
||||
|
||||
<!-- Autonomy Level -->
|
||||
<fieldset>
|
||||
<legend>Autonomy</legend>
|
||||
<select x-model="config.autonomy_level">
|
||||
<option value="low">Low (read-only)</option>
|
||||
<option value="balanced">Balanced (commit allowed)</option>
|
||||
<option value="high">High (push feature branches)</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
<p class="version">Version 0.1.0</p>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,28 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Model Routing</title>
|
||||
<script type="module" src="/plugins/a0_software_orchestrator/webui/orchestrator-config-store.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div x-data>
|
||||
<template x-if="$store.a0SoftwareOrchestratorStore">
|
||||
<div>
|
||||
<h2>Model Routing Configuration</h2>
|
||||
<p>Assign model presets to orchestrator roles.</p>
|
||||
<div id="roles">
|
||||
<!-- Dynamically populated in v0.2 -->
|
||||
<p>Orchestrator: strong-reasoning</p>
|
||||
<p>Codebase Explorer: cheap-long-context</p>
|
||||
<p>Requirements Analyst: strong-reasoning</p>
|
||||
<p>Solution Architect: strong-reasoning</p>
|
||||
<p>Implementation Engineer: best-coding</p>
|
||||
<p>Test/Debug Engineer: balanced-coding</p>
|
||||
<p>Runtime/DevOps Engineer: reasoning-devops</p>
|
||||
<p>Security/Data Engineer: strong-reasoning</p>
|
||||
<p>Release Auditor: cheap-fast</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,59 @@
|
||||
import { createStore } from "/js/AlpineStore.js";
|
||||
import {
|
||||
toastFrontendError,
|
||||
toastFrontendSuccess,
|
||||
toastFrontendWarning,
|
||||
toastFrontendInfo
|
||||
} from "/components/notifications/notification-store.js";
|
||||
|
||||
export const store = createStore("a0SoftwareOrchestratorStore", {
|
||||
status: "idle",
|
||||
projectState: null,
|
||||
modelRouting: {},
|
||||
toolCapabilities: {},
|
||||
auditStatus: {},
|
||||
|
||||
init() {
|
||||
this.status = "initialized";
|
||||
},
|
||||
|
||||
onOpen() {
|
||||
this.status = "active";
|
||||
this.loadStatus();
|
||||
},
|
||||
|
||||
cleanup() {
|
||||
this.status = "idle";
|
||||
},
|
||||
|
||||
async loadStatus() {
|
||||
try {
|
||||
this.status = "loading";
|
||||
// In v0.1, load from API endpoints
|
||||
// TODO: wire to actual API calls
|
||||
toastFrontendInfo("Orchestrator status loaded", "A0 Software Orchestrator");
|
||||
} catch (e) {
|
||||
toastFrontendError(e.message, "A0 Software Orchestrator");
|
||||
} finally {
|
||||
this.status = "active";
|
||||
}
|
||||
},
|
||||
|
||||
async saveModelRouting(role, preset) {
|
||||
try {
|
||||
const response = await fetch("/api/plugins/a0_software_orchestrator/model_routing_save", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ role, preset })
|
||||
});
|
||||
const data = await response.json();
|
||||
if (data.ok) {
|
||||
toastFrontendSuccess(`Model routing updated: ${role} -> ${preset}`, "A0 Software Orchestrator");
|
||||
} else {
|
||||
toastFrontendError(data.error || "Save failed", "A0 Software Orchestrator");
|
||||
}
|
||||
} catch (e) {
|
||||
toastFrontendError(e.message, "A0 Software Orchestrator");
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Orchestrator Status</title>
|
||||
<script type="module" src="/plugins/a0_software_orchestrator/webui/orchestrator-config-store.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div x-data>
|
||||
<template x-if="$store.a0SoftwareOrchestratorStore">
|
||||
<div>
|
||||
<h2>Orchestrator Status</h2>
|
||||
<div id="status-panel">
|
||||
<p>Plugin: Active</p>
|
||||
<p>Version: 0.1.0</p>
|
||||
<p>Mode: Core</p>
|
||||
<p>Advanced Packs: None active</p>
|
||||
<p>Subagent Profiles: 9 (1 manager + 8 specialists)</p>
|
||||
<p>Skills: 15</p>
|
||||
<p>Tools: 11 core tools</p>
|
||||
<p>API Handlers: 6</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,24 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Tool Health</title>
|
||||
<script type="module" src="/plugins/a0_software_orchestrator/webui/orchestrator-config-store.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div x-data>
|
||||
<template x-if="$store.a0SoftwareOrchestratorStore">
|
||||
<div>
|
||||
<h2>Tool Health Status</h2>
|
||||
<table>
|
||||
<tr><th>Tool</th><th>Status</th><th>Fallback</th></tr>
|
||||
<tr><td>Forgejo</td><td id="forgejo-status">Not checked</td><td>Local git</td></tr>
|
||||
<tr><td>Coolify</td><td id="coolify-status">Not checked</td><td>Manual handoff</td></tr>
|
||||
<tr><td>Terminal</td><td id="terminal-status">Available</td><td>-</td></tr>
|
||||
<tr><td>Browser</td><td id="browser-status">Not checked</td><td>Manual QA checklist</td></tr>
|
||||
<tr><td>Git</td><td id="git-status">Available</td><td>-</td></tr>
|
||||
<tr><td>Docker</td><td id="docker-status">Not checked</td><td>Manual compose</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user