922a57fe34
Self-hosted 開源:WASM 零件 + recipe + cypher-executor,跑在你自己的 Cloudflare。 此為重建的乾淨歷史起點(移除曾誤 commit 的 GCP SA 金鑰,舊歷史保留在 richblack/arcrun 與本地 backup 分支)。含: - acr init --self-hosted installer(建 KV/R2 + codeload 拉預編譯 wasm + wrangler deploy + seed recipe) - recipe push 把關(資料外流提醒 + 打通檢查) - 19 個正當零件預編譯 wasm(claude_api/km_writer/kbdb_upsert_block 排除:違反 DECISIONS §1) - CLI / cypher-executor / registry / 完整 SDD Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
753 B
TypeScript
32 lines
753 B
TypeScript
// POST /components/validate-contract
|
|
// Requirements: 1.1, 1.2, 11.5
|
|
|
|
import { Hono } from 'hono';
|
|
import type { Bindings } from '../types';
|
|
import { validateContract } from '../actions/validateContract';
|
|
|
|
const app = new Hono<{ Bindings: Bindings }>();
|
|
|
|
app.post('/', async c => {
|
|
let body: unknown;
|
|
try {
|
|
body = await c.req.json();
|
|
} catch {
|
|
return c.json({ valid: false, missing_fields: [], errors: ['request body 必須為合法 JSON'] }, 400);
|
|
}
|
|
|
|
const result = validateContract(body);
|
|
|
|
if (result.valid) {
|
|
return c.json({ valid: true, missing_fields: [], errors: [] }, 200);
|
|
}
|
|
|
|
return c.json({
|
|
valid: false,
|
|
missing_fields: result.missing_fields,
|
|
errors: result.errors,
|
|
}, 422);
|
|
});
|
|
|
|
export default app;
|