v0.1.56
Patch Changes
-
f2066a9:
call_sdk도구 description(에이전트 노출 문자열)에서 환경 2 가용성 서술 모순을 정정했다. 기존(env 2 PWA does not inject the SDK — call_sdk is not available there.)는 code ground truth(callSdkMethodJSDoc) 및 docs 4곳과 정반대였다 —call_sdkdescriptor는availableIn: 'both'라 환경 2에서 tier-gating으로 막히지 않고, 환경 2 relay(kind:'relay')를 타고 폰 PWA iframe의 mock SDK에 닿는다. description을 정합화:on env 1 (local mock) and env 2 (PWA relay — real WebKit, mock SDK) it hits the mock SDK.환경 2를 client로 운전하는 MCP-attach 진입은 별개 관심사로start_debug({mode:'mobile'})(#378)이 담당하며, tool 가용성 서술과 혼동하지 않는다. -
01b79cf:
call_sdk의 sdk-absent 에러 안내를 connection 종류에 따라 분기했다 (#360). 같은 "window.__sdkCall 부재"라도 다음 행동은 정반대다 — relay(env 3/4)면 dogfood 빌드가 아니라는 뜻이라ait build && aitcc app deploy재배포가 맞고, local(--target=local, env 1 로컬 브라우저)이면 재배포가 아니라pnpm devdev 서버와 unplugin alias(@apps-in-toss/web-framework→ devtools mock) resolve를 확인하는 게 맞다. 이전에는 두 경우 모두 relay/dogfood 안내만 떠서 local 세션 사용자를 잘못된 방향으로 이끌었다.sdkAbsentError/classifyToolError에isLocal파라미터를 추가하고(생략 시 기존 relay 안내 유지 — 하위 호환), call_sdk 핸들러와 catch 경로 양쪽이conn.kind === 'local'을 전달하도록 배선했다.call_sdk도구 description도 두 환경의 안내를 함께 명시하도록 갱신했다. -
50e6bbf: build_attach_url 환경 2(mobile) launcher QR 분기 — AIT_TUNNEL_BASE_URL + buildLauncherAttachUrl로 런처 딥링크 생성, scheme_url 불필요
-
50f3fcd: 환경 2(실기기 PWA)에 CDP 디버깅을 배선했다.
tunnel: { cdp: true }opt-in을 켜면 dev 서버 HTTP 터널과 별도로 Chii relay + 두 번째 quick tunnel이 떠서, launcher QR deep-link에&debug=1&relay=<wss>를 실어 보낸다. 폰의 PWA iframe이 in-app debug gate를 통과해 target.js를 주입받으므로, 같은 한 번의 QR 스캔으로 화면 미리보기와 on-device CDP가 동시에 열린다.in-app debug gate는
*.trycloudflare.comhost에 대해 Layer B1을 host별로 분기 우회한다(나머지 layer + TOTP는 그대로). 토스 host(*.private-apps.tossmini.com) 경로는 한 글자도 바뀌지 않아 환경 4 LIVE 안전 불변식을 유지한다.call_sdk는 환경 2에서 여전히 mock을 친다 — CDP가 메우는 건 실기기 WebKit의 DOM·콘솔·예외·measure_safe_area관측이다. -
cc07275: relay 인증 TOTP를 필수 baseline으로 강제한다 (#250). 기존에는
AIT_DEBUG_TOTP_SECRET이 설정된 경우에만 §4 Layer C TOTP gate가 켜져, 미설정 시 relay가 공개wss://…trycloudflare.com터널을 인증 없이 노출했다 — URL이 유출되면 제3자가 dogfood/live 미니앱에 디버거를 attach할 수 있는 갭. 이제 public relay가 실제로 부팅되는 모든 지점에서 fail-fast한다.- 새 가드
assertRelayAuthConfigured()(src/mcp/totp.ts)를bootRelayFamily(intoss env 3/4)와bootExternalRelayFamily(env-2 PWA) 진입에 배치 — eager·lazy(DualConnectionRouter) relay boot 양쪽 모두 relay/CDP가 열리기 전에 검증한다. local-only 세션(relay 미부팅)은 가드를 거치지 않아 그대로 면제. - unplugin
tunnel: { cdp: true }의 env-2 relay도 가드 +verifyAuth를 배선 — 이전엔 이 relay가verifyAuth없이 떠 secret과 무관하게 인증이 비어 있었다. 미설정 시 relay를 띄우지 않고 화면 미리보기로 degrade. - 검증은 hex(base16,
Buffer.from(secret, 'hex')decode 경로에 정합) 형식 + 32자 이상 + 짝수 길이. 미설정/빈 문자열/약형은 거부. - fail-fast 안내는 요구사항과 발급 명령(
openssl rand -hex 32)만 출력하고 secret 값·길이·파생값을 절대 노출하지 않는다.
- 새 가드
-
5461a3d: start_debug에
mobile(환경 2 실기기 PWA) 모드를 1급 모드로 추가하고relay-mobile출력 env를 도입했다. unplugin이tunnel: { cdp: true }로 외부에 띄운 Chii relay에 MCP가 attach하는 쪽 절반으로, MCP는 relay/tunnel을 새로 띄우지 않고AIT_RELAY_BASE_URL로 전달된 relay base에 CDP 클라이언트만 연다.mobile과staging은 둘 다kind:'relay'라 출력에서 구분돼야 하므로, URL을 스니핑하지 않고 부팅된 family에 실어 나르는relayOrigin('intoss-webview'vs'external-pwa') 디스크리미네이터를deriveEnvironment에 넣었다. dual-connection 라우터는 단일 lazy slot을FamilyKey(local/relay-intoss/relay-external) 키 Map으로 일반화해 두 relay family가 같은 슬롯에서 충돌하지 않는다. relay-mobile은 liveIntent가 항상 꺼져 있어 LIVE side-effect 가드 대상이 아니다. -
acca107: start_debug 도구 스키마에 mobile mode(환경 2 PWA) 추가 — 런타임은 이미 지원하나 MCP enum/description에서 누락돼 있던 갭 수정
-
15d30f8: start_debug mode를 local/staging/live 사용자 환경 이름으로 리네이밍 (legacy relay-dev/relay-live/local-browser-* 별칭 유지), tool description 강화
-
e856989: web-framework dev-pin을 새 3.0.0-beta 빌드(9d42c0b→3051978)로 갱신. peer(2.6.x)·GA flip과 무관한 dev-only beta bump.