ai with hyper machine
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-06-26 15:28:47 +01:00
parent 2c4c9b0595
commit 7251bf305a
11 changed files with 501 additions and 130 deletions

View File

@@ -2,17 +2,20 @@ import { handleApi } from "@/lib/api";
import { requireUser } from "@/lib/services/user";
import {
getAiBehaviorConfig,
getAiProviderConfig,
getAiProviderSettings,
saveAiBehaviorConfig,
saveAiProviderSettings,
saveAiProviderConfig,
} from "@/lib/services/ai-config";
import type { AIProviderSettings } from "@/lib/ai/types";
export async function GET() {
return handleApi(async () => {
const { user } = await requireUser();
const behavior = await getAiBehaviorConfig(user.id);
const provider = await getAiProviderConfig(user.id);
return { behavior, provider };
const providerSettings = await getAiProviderSettings(user.id);
const provider = providerSettings.profiles[providerSettings.machineMode];
return { behavior, provider, providerSettings };
});
}
@@ -21,13 +24,23 @@ export async function PATCH(request: Request) {
return handleApi(async () => {
const { user } = await requireUser();
let behavior = await getAiBehaviorConfig(user.id);
let provider = await getAiProviderConfig(user.id);
let providerSettings = await getAiProviderSettings(user.id);
if (body.behavior) {
behavior = await saveAiBehaviorConfig(user.id, body.behavior);
}
if (body.provider) {
provider = await saveAiProviderConfig(user.id, body.provider);
if (body.providerSettings) {
providerSettings = await saveAiProviderSettings(
user.id,
body.providerSettings as Partial<AIProviderSettings>
);
} else if (body.provider) {
await saveAiProviderConfig(user.id, body.provider);
providerSettings = await getAiProviderSettings(user.id);
}
return { behavior, provider };
const provider = providerSettings.profiles[providerSettings.machineMode];
return { behavior, provider, providerSettings };
});
}

View File

@@ -1,8 +1,7 @@
import { handleApi } from "@/lib/api";
import { requireUser } from "@/lib/services/user";
import { listMemories, saveProfileSummary } from "@/lib/services/ai-memory";
import { getProvider } from "@/lib/ai/provider-registry";
import { getAiBehaviorConfig, getAiProviderConfig, buildSystemPrompt } from "@/lib/services/ai-config";
import { getAiBehaviorConfig, getAiProviderConfig, generateTextWithFallback, buildSystemPrompt } from "@/lib/services/ai-config";
import { getTemplateBody } from "@/lib/services/ai-templates";
import { renderTemplate } from "@/lib/ai/prompts/render";
@@ -32,16 +31,19 @@ export async function POST() {
user_name: user.displayName,
context: bulletList,
});
const provider = getProvider(providerConfig.type);
const res = await provider.generateText(providerConfig, {
model: providerConfig.model,
prompt,
system,
format: "text",
temperature: 0.5,
maxTokens: 400,
timeoutMs: providerConfig.timeoutMs,
});
const res = await generateTextWithFallback(
user.id,
{
model: providerConfig.model,
prompt,
system,
format: "text",
temperature: 0.5,
maxTokens: 400,
timeoutMs: providerConfig.timeoutMs,
},
behavior
);
if (res.text.trim()) summaryText = res.text.trim();
} catch {
/* use bullet list fallback */