Files
clawtap/server/types/adapter.ts
T
izackp 2ded310472 feat: plan-approval overlay, auth-expiry handling, cert download, login reset
- Add a dedicated plan-approval bottom sheet (interactive-prompt) driven by
  ExitPlanMode's now-4-option layout (Claude Code v2.1.177), with
  approve/YOLO/reject/feedback wired through respondPlan(requestId).
- PermissionManager: stop auto-expiring AskUserQuestion/plan prompts and stop
  releasing pending prompts on client disconnect — they reflect real CLI
  state and must survive reconnects.
- Detect server-rejected tokens (401/403 or failed WS handshake) and bounce
  back to the login screen via a new AUTH_EXPIRED_EVENT.
- Add `/cert` endpoint + Settings entry so phones can download/trust the
  self-signed HTTPS cert directly; fix cert IP detection on non-macOS hosts.
- Add `clawtap reset-login` command and `/api/auth/reset-attempts` endpoint
  to clear login rate-limit lockouts.
- Codex adapter: only forward recognized keystrokes/option indices to tmux,
  never the synthetic "deny" dismissal signal.
- PWA: actively poll for service-worker updates (iOS standalone apps don't
  reliably check on navigation).
- update-service.sh: install tmux if missing, prompt to create the env file
  instead of failing, add --skip-firewall, and improve logging.
2026-06-15 16:30:24 -04:00

56 lines
1.1 KiB
TypeScript

import type { ToolStatus } from './messages.js';
export interface AdapterCapabilities {
supportsPlanMode: boolean;
supportsPermissionModes: boolean;
supportsInterrupt: boolean;
supportsResume: boolean;
supportsAttach: boolean;
supportsStatusLine: boolean;
supportsImages: boolean;
supportsStreaming: boolean;
maxContextWindow: number;
permissionModeType?: 'cycle' | 'toggle';
}
export interface SessionInfo {
sessionId: string;
cwd: string | null;
lastModified?: number | string;
firstPrompt?: string | null;
model?: string | null;
}
export interface ModelInfo {
value: string;
label: string;
contextWindow?: number;
}
export interface PermissionModeInfo {
value: string;
label: string;
}
export interface EffortLevelInfo {
value: string;
label: string;
}
export interface AdapterInfo {
id: string;
displayName: string;
available: boolean;
capabilities?: AdapterCapabilities;
}
export interface ReconnectState {
tools: Record<string, ToolStatus>;
pendingRequests: Array<{
type: 'permission' | 'question' | 'plan';
requestId: string;
toolName?: string;
input?: Record<string, unknown>;
}>;
}