feat(arcrun): mira wiki page with tag filter + accumulated WIP
- landing/app/mira/wiki: tag=mira-wiki list now shows all wiki paragraphs (depends on KBDB tag filter exposed in matrix/kbdb commit, separate repo) - landing: app/mira hub + feed split + various WIP from prior sessions - registry/components: claude_api / kbdb_create_block / kbdb_get / km_writer / platform_crypto / auth_oauth2 contracts + main.go (accumulated) - .component-builds: pkg-lock updates + index.ts adjustments (WIP) - .agents/specs/arcrun/frontend-redesign: design notes - docs/test_credentials, docs/user_requirements/arcrun-landing-page: WIP docs - cypher-executor: auth-dispatcher / wasi-shim adjustments (WIP) Includes accumulated work from prior sessions plus the wiki UI tag-filter update that surfaces the AI-generated wiki paragraphs at /mira/wiki. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -3,12 +3,8 @@
|
||||
*
|
||||
* POST / → JSON input → WASM (WASI preview1 stdin/stdout) → JSON output
|
||||
*
|
||||
* 方案 A:import cypher-executor/src/lib/wasi-shim.ts 的 `createWasiShim`
|
||||
* 提供單一 `http_request` host function(fetch → 回 response body 原文)。
|
||||
* 這個 Worker 不需要 crypto / kv_get(無 credential 解密職責)。
|
||||
*
|
||||
* Credential 注入路徑:cypher-executor auth-dispatcher 會先 POST 到對應 auth primitive Worker,
|
||||
* 把 auth headers 合進本 Worker 的 input(例:`_auth_headers`)。
|
||||
* host function: http_request(fetch → 回 response body 原文)
|
||||
* 此 Worker 不做 credential 注入,只提供通用 HTTP 能力。
|
||||
*/
|
||||
|
||||
import componentWasm from '../component.wasm' assert { type: 'webassembly' };
|
||||
@@ -57,7 +53,7 @@ async function runWasm(input: unknown): Promise<unknown> {
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
// 忽略 header parse 錯誤
|
||||
// ignore header parse errors
|
||||
}
|
||||
}
|
||||
const init: RequestInit = { method, headers };
|
||||
@@ -65,7 +61,6 @@ async function runWasm(input: unknown): Promise<unknown> {
|
||||
init.body = body;
|
||||
}
|
||||
const res = await fetch(url, init);
|
||||
// WASM 端直接 json.Unmarshal 回傳內容,這裡回 response body 原文
|
||||
return await res.text();
|
||||
},
|
||||
};
|
||||
@@ -77,19 +72,11 @@ async function runWasm(input: unknown): Promise<unknown> {
|
||||
shim.imports,
|
||||
);
|
||||
shim.setMemory(instance.exports.memory as WebAssembly.Memory);
|
||||
|
||||
const start = (instance.exports._start ?? instance.exports.main) as () => void;
|
||||
if (typeof start !== 'function') {
|
||||
throw new Error('WASM missing _start or main export');
|
||||
}
|
||||
|
||||
try {
|
||||
start();
|
||||
} catch (e) {
|
||||
if (!(e instanceof Error && e.message === 'wasm exit: 0')) throw e;
|
||||
}
|
||||
await shim.run(instance);
|
||||
|
||||
const stdout = shim.getStdout().trim();
|
||||
const stderr = shim.getStderr().trim();
|
||||
if (stderr) console.error('[http_request wasm stderr]', stderr);
|
||||
if (!stdout) throw new Error('WASM component produced no output');
|
||||
return JSON.parse(stdout);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user