Skip to content

feat: オープンワールド実践ラボへ再構築 - #2

Merged
skjshr merged 6 commits into
mainfrom
feat/open-world-lab-v1
Jul 28, 2026
Merged

feat: オープンワールド実践ラボへ再構築#2
skjshr merged 6 commits into
mainfrom
feat/open-world-lab-v1

Conversation

@skjshr

@skjshr skjshr commented Jul 28, 2026

Copy link
Copy Markdown
Owner

概要

旧単一路線ラボを白紙から置き換え、Debianデュアルブート標的とKali Bridgeを使う初心者向けオープンワールド実践ラボを追加します。

主な変更

  • 3入口 × 3 root経路 × 14 flags の標的世界
  • Kali Bridge、Debian telemetry、復旧・隔離プラットフォーム
  • PLAY / OPS / FOCUS の3テーマを持つ探索地図と状況相談
  • 必要時だけ開くdrawer / bottom sheet情報階層
  • 公開URLを ExamServer /lab、ライブAPIを /api/lab に統一
  • Vercel Function + Upstash Redisの短期pairingとsanitized projection relay
  • 旧Sites/D1配備経路を削除

検証

  • npm run check: PASS
  • repository: 4/4
  • telemetry: 42 pass, 1 Linux-only skip
  • bridge: 19/19
  • platform: 54 pass, 2 Linux/WSL-only skip
  • operator: 7/7
  • guide Vitest: 27/27
  • guide Node: 19/19
  • typecheck / Vite production build: PASS

未完了ゲート

  • Vercel originの作成とUpstash環境変数設定
  • ExamServer側reverse proxy
  • 公開URLでのcreate→pair→snapshot→state/SSE smoke
  • 物理Kali↔Debian、デュアルブート、復旧USBの実機証跡

@skjshr
skjshr force-pushed the feat/open-world-lab-v1 branch from 868da6d to 7f4bba3 Compare July 28, 2026 03:39
@skjshr
skjshr merged commit 27ddf19 into main Jul 28, 2026
0 of 2 checks passed
@skjshr
skjshr deleted the feat/open-world-lab-v1 branch July 28, 2026 03:40

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 868da6d465

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +157 to +159
const relativePath =
decodedPath === "/" ? "index.html" : decodedPath.replace(/^\/+/, "");
let file = await findStaticFile(rootRealPath, relativePath);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Strip the /lab prefix when serving fallback assets

When the documented Kali fallback is opened at http://127.0.0.1:8080/?local=1, the Vite build generated with base: "/lab/" requests scripts and styles under /lab/assets/*. This code resolves those requests as dist/client/lab/assets/*, while Vite emits them under dist/client/assets/*, so the entry script returns 404 and the offline guide never starts. Mount the static build at /lab or strip that prefix before resolving files.

AGENTS.md reference: apps/lab-guide/AGENTS.md:L17-L20

Useful? React with 👍 / 👎.

Comment on lines +285 to +287
const { decodedPath, url } = parseRequestUrl(request.url);
const isSessionApi = decodedPath.startsWith("/api/session/");
const isAnyApi = decodedPath === "/api" || decodedPath.startsWith("/api/");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Proxy the browser's /api/lab routes in fallback mode

In the documented local fallback flow, ApiLabClient always calls /api/lab/session/*, but this predicate only accepts /api/session/*; the following generic API branch therefore returns 404 instead of forwarding state, events, hints, or flag submissions to telemetry. Recognize /api/lab/session/* and rewrite it to the target's /api/session/* contract before proxying.

AGENTS.md reference: apps/lab-guide/AGENTS.md:L17-L20

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant