chantier: durcissement reprise headless inter-projets + persistance profils Opencode
- Implémentation reprise de session Opencode headless (conversational_recovery) - Persistance des profils IA Opencode dans .ideai/memory avec JSON Schema - Gestion des permissions MCP pour agents externes - Tests QA verts : structured_launch_d3, conversation_log, tickets_missing_carnet, agents, ProfilesSettings
This commit is contained in:
@ -56,7 +56,10 @@ function describe(e: unknown): string {
|
||||
function tabFor(profile: AgentProfile): ProfileTab | null {
|
||||
if (profile.structuredAdapter === "codex") return "codex";
|
||||
if (profile.structuredAdapter === "claude") return "claude";
|
||||
if (profile.structuredAdapter === "openCode" && profile.opencode) {
|
||||
if (
|
||||
profile.structuredAdapter === "openCode" &&
|
||||
(profile.opencode || profile.opencodeProvider)
|
||||
) {
|
||||
return "openCode";
|
||||
}
|
||||
return null;
|
||||
@ -352,6 +355,16 @@ export function ProfilesSettings() {
|
||||
setBusy(true);
|
||||
setError(null);
|
||||
try {
|
||||
if (activeTab === "openCode") {
|
||||
const created = await profile.cloneOpenCodeProfileFromSeed({
|
||||
name: `${seed.name} copy`,
|
||||
opencode: seed.opencode,
|
||||
});
|
||||
await profile.saveProfile(created);
|
||||
await refresh();
|
||||
return;
|
||||
}
|
||||
|
||||
const models =
|
||||
activeTab === "codex" || activeTab === "claude"
|
||||
? catalogue[activeTab].models
|
||||
@ -404,6 +417,16 @@ export function ProfilesSettings() {
|
||||
setBusy(true);
|
||||
setError(null);
|
||||
try {
|
||||
if (source.structuredAdapter === "openCode") {
|
||||
const created = await profile.cloneOpenCodeProfileFromSeed({
|
||||
name: `${source.name} copy`,
|
||||
opencode: source.opencode,
|
||||
});
|
||||
await profile.saveProfile(created);
|
||||
await refresh();
|
||||
return;
|
||||
}
|
||||
|
||||
await profile.cloneProfileFromSeed({
|
||||
seedProfileId: source.id,
|
||||
name: `${source.name} copy`,
|
||||
|
||||
Reference in New Issue
Block a user