github TypeScript analyzed 9118fb0

Kevin-Liu-01/Ariadne

github

Phone-first event backbone for live experiences: LLM agent over SMS/iMessage/voice with deterministic tools for check-in, missions, drinks, songs, and a projection board. Built for Dedalus Run(way)time at Lume Studios. Next.js · Vercel · Supabase · AgentPhone · MCP.

maintainer
Kevin-Liu-01
licence
MIT
first seen
2026-06-16
last seen
2026-06-16
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 11 tools
transport stdio counts 11 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • ariadne_deliver_mission
  • ariadne_get_participant
  • ariadne_get_system_prompt
  • ariadne_list_drink_queue
  • ariadne_projection
  • ariadne_register_participant
  • ariadne_send_guest_message
  • ariadne_status
  • ariadne_submit_mission_answer
  • ariadne_take_drink_order
  • ariadne_update_drink_status
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 9118fb0 · analyzer v33 · 1w ago

skills & prompt files 3

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 244

filesystem 8

  • fs (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/generate-logo-sdf.ts :15 import { writeFileSync } from "node:fs";
  • fs (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/generate-mark-icons.ts :8 import { writeFileSync } from "node:fs";
  • fs (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/import-waitlist.ts :12 import { readFileSync, writeFileSync } from "node:fs";
  • fs (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/provision.ts :19 import { existsSync, readFileSync, writeFileSync } from "node:fs";
  • fs Kevin-Liu-01-Ariadne-9118fb0/src/app/ariadne.vcf/route.ts :1 import { readFile } from "node:fs/promises";
  • fs Kevin-Liu-01-Ariadne-9118fb0/src/server/door/waitlist.ts :1 import { readFileSync } from "node:fs";
  • fs (weak) Kevin-Liu-01-Ariadne-9118fb0/tests/no-em-dash.test.ts :2 import { readFileSync, readdirSync, statSync } from "node:fs";
  • fs (weak) Kevin-Liu-01-Ariadne-9118fb0/tests/vcard.test.ts :1 import { readFileSync } from "node:fs";

shell / exec 3

  • shell Kevin-Liu-01-Ariadne-9118fb0/src/server/db/connection.ts :15 exec(sql: string): Promise<void>;
  • shell Kevin-Liu-01-Ariadne-9118fb0/src/server/db/pg.ts :17 async exec(sql: string): Promise<void> {
  • shell Kevin-Liu-01-Ariadne-9118fb0/src/server/db/pglite.ts :7 exec(query: string): Promise<unknown>;

network 12

  • net (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/e2e-prod.ts :56 const res = await fetch(`${BASE}/api/webhooks/agentphone`, { method: "POST", headers: signedHeaders(raw, id), body: raw });
  • net (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/simulate-inbound.ts :54 const res = await fetch(`${base}/api/webhooks/agentphone`, {
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/join/check-in-panel.tsx :57 const res = await fetch("/api/participants/register", {
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/operator/api.ts :12 return fetch(path, { ...init, headers });
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/operator/projection-controls.tsx :25 fetch("/api/projection/state")
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/operator/stats-rail.tsx :20 const res = await fetch("/api/projection/state");
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/play/live/actions.ts :13 const res = await fetch(path, {
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/play/live/check-in-card.tsx :29 const res = await fetch("/api/participants/register", {
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/play/live/use-player.ts :32 const res = await fetch("/api/play/me", { headers: { authorization: `Bearer ${token}` } });
  • net Kevin-Liu-01-Ariadne-9118fb0/src/app/projection/page.tsx :167 const snap = (await (await fetch("/api/projection/state")).json()) as ProjectionSnapshot;
  • net Kevin-Liu-01-Ariadne-9118fb0/src/server/partners/agentphone/client.ts :33 const res = await fetch(`${this.baseUrl}${path}`, {
  • net Kevin-Liu-01-Ariadne-9118fb0/src/server/partners/dedalus/client.ts :27 const res = await fetch(`${this.baseUrl}/chat/completions`, {

secrets 3

  • secrets (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/e2e-prod.ts :20 const OP = process.env.OP_TOKEN ?? env.operatorToken;
  • secrets Kevin-Liu-01-Ariadne-9118fb0/src/lib/env.ts :61 return process.env.ARIADNE_OPERATOR_TOKEN ?? "";
  • secrets (weak) Kevin-Liu-01-Ariadne-9118fb0/tests/play-session.test.ts :34 process.env.ARIADNE_PLAYER_SECRET = "s3cret";

database 2

  • db (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/e2e-prod.ts :14 import pg from "pg";
  • db Kevin-Liu-01-Ariadne-9118fb0/src/server/db/pg.ts :1 import { Pool, type PoolClient } from "pg";

tool registrations 11

  • ariadne_status Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :44
  • ariadne_get_system_prompt Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :51
  • ariadne_register_participant Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :58
  • ariadne_get_participant Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :80
  • ariadne_deliver_mission Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :87
  • ariadne_submit_mission_answer Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :100
  • ariadne_take_drink_order Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :113
  • ariadne_list_drink_queue Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :125
  • ariadne_update_drink_status Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :132
  • ariadne_send_guest_message Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :140
  • ariadne_projection Kevin-Liu-01-Ariadne-9118fb0/src/mcp/server.ts :153

declared dependencies 23

  • @modelcontextprotocol/sdk@^1.29.0
  • clsx@^2.1.1
  • lucide-react@^1.17.0
  • next@16.2.6
  • obscenity@^0.4.6
  • pg@^8.21.0
  • pixi.js@^8.19.0
  • react@19.2.4
  • react-dom@19.2.4
  • shaders@^2.5.129
  • tailwind-merge@^3.6.0
  • zod@^4.4.3
show 11 more
  • @electric-sql/pglite@^0.4.6
  • @tailwindcss/postcss@^4
  • @types/node@^20
  • @types/pg@^8.20.0
  • @types/react@^19
  • @types/react-dom@^19
  • sharp@^0.34.5
  • tailwindcss@^4
  • tsx@^4.22.3
  • typescript@^5
  • vitest@^4.1.7

perm:untrusted 1

  • untrusted (weak) Kevin-Liu-01-Ariadne-9118fb0/scripts/e2e-prod.ts :80 return (await fetch(`${BASE}/api/projection/state`)).json() as Promise<Record<string, unknown>>;