chore: 删除 agentSdkTypes 中三个 not-implemented stub

移除 watchScheduledTasks、buildMissedTaskNotification、connectRemoteControl 三个 stub 函数(函数体仅 throw new Error('not implemented')),以及仅被这些 stub 引用的孤儿类型(ScheduledTasksHandle、ConnectRemoteControlOptions、RemoteControlHandle、InboundPrompt 等)。

全仓零外部引用。buildMissedTaskNotification 在 src/utils/cronScheduler.ts 有真实可用实现,未受影响。

Co-Authored-By: glm-5.2 <zai-org@claude-code-best.win>
This commit is contained in:
claude-code-best
2026-06-20 10:21:41 +08:00
parent b59461ae3f
commit 9ff7058f40

View File

@@ -35,7 +35,6 @@ export * from './sdk/toolTypes.js'
// ============================================================================
import type {
SDKMessage,
SDKResultMessage,
SDKSessionInfo,
SDKUserMessage,
@@ -306,144 +305,6 @@ export type CronJitterConfig = {
recurringMaxAgeMs: number
}
/**
* Event yielded by `watchScheduledTasks()`.
* @internal
*/
export type ScheduledTaskEvent =
| { type: 'fire'; task: CronTask }
| { type: 'missed'; tasks: CronTask[] }
/**
* Handle returned by `watchScheduledTasks()`.
* @internal
*/
export type ScheduledTasksHandle = {
/** Async stream of fire/missed events. Drain with `for await`. */
events(): AsyncGenerator<ScheduledTaskEvent>
/**
* Epoch ms of the soonest scheduled fire across all loaded tasks, or null
* if nothing is scheduled. Useful for deciding whether to tear down an
* idle agent subprocess or keep it warm for an imminent fire.
*/
getNextFireTime(): number | null
}
/**
* Watch `<dir>/.claude/scheduled_tasks.json` and yield events as tasks fire.
*
* Acquires the per-directory scheduler lock (PID-based liveness) so a REPL
* session in the same dir won't double-fire. Releases the lock and closes
* the file watcher when the signal aborts.
*
* - `fire` — a task whose cron schedule was met. One-shot tasks are already
* deleted from the file when this yields; recurring tasks are rescheduled
* (or deleted if aged out).
* - `missed` — one-shot tasks whose window passed while the daemon was down.
* Yielded once on initial load; a background delete removes them from the
* file shortly after.
*
* Intended for daemon architectures that own the scheduler externally and
* spawn the agent via `query()`; the agent subprocess (`-p` mode) does not
* run its own scheduler.
*
* @internal
*/
export function watchScheduledTasks(_opts: {
dir: string
signal: AbortSignal
getJitterConfig?: () => CronJitterConfig
}): ScheduledTasksHandle {
throw new Error('not implemented')
}
/**
* Format missed one-shot tasks into a prompt that asks the model to confirm
* with the user (via AskUserQuestion) before executing.
* @internal
*/
export function buildMissedTaskNotification(_missed: CronTask[]): string {
throw new Error('not implemented')
}
/**
* A user message typed on claude.ai, extracted from the bridge WS.
* @internal
*/
export type InboundPrompt = {
content: string | unknown[]
uuid?: string
}
/**
* Options for connectRemoteControl.
* @internal
*/
export type ConnectRemoteControlOptions = {
dir: string
name?: string
workerType?: string
branch?: string
gitRepoUrl?: string | null
getAccessToken: () => string | undefined
baseUrl: string
orgUUID: string
model: string
}
/**
* Handle returned by connectRemoteControl. Write query() yields in,
* read inbound prompts out. See src/assistant/daemonBridge.ts for full
* field documentation.
* @internal
*/
export type RemoteControlHandle = {
sessionUrl: string
environmentId: string
bridgeSessionId: string
write(msg: SDKMessage): void
sendResult(): void
sendControlRequest(req: unknown): void
sendControlResponse(res: unknown): void
sendControlCancelRequest(requestId: string): void
inboundPrompts(): AsyncGenerator<InboundPrompt>
controlRequests(): AsyncGenerator<unknown>
permissionResponses(): AsyncGenerator<unknown>
onStateChange(
cb: (
state: 'ready' | 'connected' | 'reconnecting' | 'failed',
detail?: string,
) => void,
): void
teardown(): Promise<void>
}
/**
* Hold a claude.ai remote-control bridge connection from a daemon process.
*
* The daemon owns the WebSocket in the PARENT process — if the agent
* subprocess (spawned via `query()`) crashes, the daemon respawns it while
* claude.ai keeps the same session. Contrast with `query.enableRemoteControl`
* which puts the WS in the CHILD process (dies with the agent).
*
* Pipe `query()` yields through `write()` + `sendResult()`. Read
* `inboundPrompts()` (user typed on claude.ai) into `query()`'s input
* stream. Handle `controlRequests()` locally (interrupt → abort, set_model
* → reconfigure).
*
* Skips the `tengu_ccr_bridge` gate and policy-limits check — @internal
* caller is pre-entitled. OAuth is still required (env var or keychain).
*
* Returns null on no-OAuth or registration failure.
*
* @internal
*/
export async function connectRemoteControl(
_opts: ConnectRemoteControlOptions,
): Promise<RemoteControlHandle | null> {
throw new Error('not implemented')
}
/** 会话钩子事件名(与 `HOOK_EVENTS` / settings schema 一致)。 */
export type HookEvent = (typeof HOOK_EVENTS)[number] // 与 `coreSchemas.HOOK_EVENTS` 逐项对应