DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
AI 翻译
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗When to leave, what to bring, and how to get to class. Built from your class calendar and the forecast.
.ics files. They're merged, de-duplicated, and labeled by calendar. Then share your location (or type an address)npm install
cp .env.example .env.local # add keys (both optional)
npm run dev
| Env var | Needed? | What happens without it |
|---|---|---|
GEMINI_API_KEY | Optional | Used for the AI brief when set (free key) |
GROQ_API_KEY | Optional | Tried next (free key, no billing needed) |
ANTHROPIC_API_KEY | Optional | Tried last. With no working key, the brief and bring list come from rules |
ORS_API_KEY | Optional | Travel time is a straight-line estimate (dashed on the map) |
GEMINI_MODEL | Optional | Defaults to gemini-2.5-flash |
GROQ_MODEL | Optional | Defaults to llama-3.3-70b-versatile |
CLAUDE_MODEL | Optional | Defaults to claude-haiku-5-5 |
CAMPUS_CENTER | Optional | Geocoding bias, defaults to Penn State University Park (40.7982,-77.8599) |
Get a free OpenRouteService key at https://openrouteservice.org/dev/#/signup.
NEXT_PUBLIC_)browser ──POST /api/plan──▶ safeFetch (iCal) ─▶ parse + expand repeats
geocode (GEO → Nominatim → Open-Meteo)
Open-Meteo hourly forecast (one call)
OpenRouteService route per leg
leave-by = start − travel × weather − 5 min
Reality Check: weekly summary (week view)
Gemini → Groq → Claude → rules: bring list + brief
lib/safeFetch.ts allows only http/https/webcal on default ports, blocks private/loopback/link-local/metadata IPs, checks the IP at connect time (no DNS-rebinding gap), re-checks every redirect (max 3), and caps time (5 s) and size (2 MB).proxy.ts) blocks injected scripts, plus HSTS and other headers in next.config.ts./api/plan (in-memory, per instance).HttpOnly, Secure, SameSite=Strict cookie scoped to /api/remember for 15 days, so page scripts can't read it and it isn't sent with any other request. "Forget saved links" deletes it.npm test # SSRF guard, iCal + Canvas parsing, multi-calendar merge, leave-by math, Reality Check, AI providers, full API flow (mocked services)
npm run lint && npm run typecheck
| Path | What it does |
|---|---|
app/page.tsx | Planner UI (form, plan, PDF/email export) |
app/api/plan/route.ts | The one API route: calendars → geocode → weather → routes → AI |
lib/safeFetch.ts | SSRF-safe calendar fetcher |
lib/ical.ts, lib/calendars.ts | Parse, classify (class vs. due), merge and dedupe calendars |
lib/leaveTime.ts, lib/weekSummary.ts | Leave-by math and the Reality Check |
lib/ai.ts, lib/templatePlan.ts | AI brief (schema-checked) and the no-key rule-based fallback |
components/ui/ | shadcn/ui components (Base UI) |
Weather: Open-Meteo · Maps and geocoding: © OpenStreetMap contributors · Routes: openrouteservice · Built for HackPSU.