Files
mnote/scripts/task-hermes-page-ai-retirement-guard.js

68 lines
1.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
"use strict";
const assert = require("node:assert");
const BASE_URL = (process.env.MNOTE_UI_BASE_URL || "http://127.0.0.1:3000").replace(/\/+$/, "");
const REQUEST_TIMEOUT_MS = Number(process.env.MNOTE_SMOKE_TIMEOUT_MS || 20_000);
async function fetchWithTimeout(path, init = {}) {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
try {
return await fetch(`${BASE_URL}${path}`, { ...init, signal: controller.signal });
} finally {
clearTimeout(timeout);
}
}
async function main() {
const response = await fetchWithTimeout("/api/ai-agent/run", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
stream: true,
messages: [{ role: "user", content: "ping" }],
context: { documentId: "retirement_guard" },
options: { ai: { provider: "hermes" } },
}),
});
const text = await response.text();
let payload = null;
try {
payload = JSON.parse(text);
} catch {
payload = { raw: text };
}
assert(
response.status === 410,
`/api/ai-agent/run legacy guard 应返回退场状态,实际 ${response.status}: ${text.slice(0, 500)}`,
);
const code = response.headers.get("x-error-code") || payload.code || "";
const owner = response.headers.get("x-mnote-ai-execution-owner") || "";
assert(
code === "legacy_ai_agent_run_retired" && owner.includes("retired"),
`legacy guard 不应静默 fallbackcode=${code}, owner=${owner}, body=${text.slice(0, 500)}`,
);
console.log(
JSON.stringify(
{
ok: true,
baseUrl: BASE_URL,
status: response.status,
code,
owner,
},
null,
2,
),
);
}
main().catch((error) => {
console.error(error instanceof Error ? error.stack || error.message : String(error));
process.exit(1);
});