2707fca32b
Phase 1-5 complete per .agents/specs/u6u-core-mvp/: **Phase 1 — Cherry-pick & cleanup** - Create arcrun/ from cypher-executor, credentials, builtins, registry - Remove 9 InkStone Service Bindings (KBDB, REGISTRY, CLINIC_*, AICEO, MINI_ME) - Rewrite component-loader: 3-layer (builtin → WASM_BUCKET R2 → error) - Remove autoPublishMissing.ts, proxy.ts (AICEO), execution-logger.ts (KBDB) - Clean all KV namespace IDs and InkStone internal URLs from config files **Phase 2 — contract.yaml completeness** - Add credentials_required to gmail, google_sheets, telegram, line_notify - Add config_example to all 21 components with annotated field descriptions **Phase 3 — Credential injection** - Add credential-injector.ts: AES-GCM decrypt from CREDENTIALS_KV - Integrate into GraphExecutor before WASM execution - Structured errors with repair instructions when credential missing **Phase 4 — CLI (acr)** - cli/package.json: arcrun package, bin: acr, deps: commander/js-yaml/chalk/ora - 8 commands: init, creds push, push, run, validate, parts, list, logs - Standard mode: writes directly to user's CF KV via CF REST API - acr init: interactive setup with arcrun.dev API Key registration **Phase 5 — Open source release prep** - README.md: 5-minute quickstart, component table, workflow YAML syntax - CONTRIBUTING.md: TinyGo dev env, component scaffolding, submission flow - Security audit: no InkStone internal URLs/IDs in committed files - .gitignore: exclude credentials.yaml, .wrangler, *.wasm https://claude.ai/code/session_01BnCdSLVH8tUed9VrrPavgT
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
// Component Registry Worker — 零件合約管理 HTTP endpoints
|
||
// index.ts 只做路由宣告,業務邏輯在 actions/(INV Layer 1)
|
||
|
||
import { Hono } from 'hono';
|
||
import { cors } from 'hono/cors';
|
||
import type { Bindings } from './types';
|
||
import guideRoute from './routes/guide';
|
||
import validateContractRoute from './routes/validateContract';
|
||
import componentsRoute from './routes/components';
|
||
import queryRoute from './routes/query';
|
||
import initRoute from './routes/init';
|
||
|
||
const app = new Hono<{ Bindings: Bindings }>();
|
||
app.use('*', cors());
|
||
|
||
// Health check
|
||
app.get('/', c => c.json({ service: 'component-registry', version: '1.0.0', status: 'ok' }));
|
||
|
||
// === Component Registry 端點 ===
|
||
app.route('/components/guide', guideRoute);
|
||
app.route('/components/validate-contract', validateContractRoute);
|
||
app.route('/components', queryRoute); // GET /components/search, /:id, /:id/versions
|
||
app.route('/components', componentsRoute); // POST /components
|
||
|
||
// === 初始化端點(建立 tpl-component template)===
|
||
app.route('/init', initRoute);
|
||
|
||
export default app;
|