agent-afk 5.294.0 → 5.295.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ export interface ToolEventMin {
2
+ toolName: string;
3
+ input: string;
4
+ isError?: boolean;
5
+ }
6
+ export declare const DONE_EVIDENCE_TOOLS: ReadonlySet<string>;
7
+ export declare function isVerificationCommand(input: string): boolean;
8
+ export declare function classifyDoneEvidence(toolEvents: readonly ToolEventMin[]): 'no-code-changes' | 'verified' | 'unverified';
9
+ export declare function doneHasCorroboratingEvidence(toolEvents: readonly ToolEventMin[]): boolean;
@@ -5,10 +5,12 @@ import type { ProviderCommandInfo, ProviderCompactResult, ProviderQuery, Provide
5
5
  import type { AccountInfo, AgentConfig, AgentInfo, AgentModelInput, IAgentSession, InputStreamRef, McpServerStatus, Message, ModelInfo, OutputEvent, PermissionMode, ResponseMetadata, RewindFilesResult, SDKControlGetContextUsageResponse, SendMessageOptions, SessionIdentity, SessionMetadata, SessionState, StructuredMessageOptions } from '../types.js';
6
6
  import type { ZodType } from 'zod';
7
7
  import type { ElicitationRequest } from '../types/sdk-types.js';
8
+ import type { StopWiring } from '../types/session-types.js';
8
9
  import type { MessageJournal } from '../journal/index.js';
9
10
  export declare class AgentSession implements IAgentSession {
10
11
  private readonly ownedTraceWriter;
11
12
  private config;
13
+ private stopWiring;
12
14
  private readonly planExit;
13
15
  private currentState;
14
16
  private providerQuery;
@@ -45,6 +47,7 @@ export declare class AgentSession implements IAgentSession {
45
47
  sendMessageStream(content: string | ContentBlockParam[]): AsyncIterableIterator<OutputEvent>;
46
48
  interrupt(): Promise<void>;
47
49
  setBeforeNextRound(cb: (() => string | undefined) | undefined): void;
50
+ wireStopHook(wiring: StopWiring): void;
48
51
  reset(): Promise<void>;
49
52
  private onAbort;
50
53
  private makeConfigDeps;
@@ -1,4 +1,4 @@
1
- import type { HookRegistry, SessionEndContext, SessionStartContext } from '../hooks.js';
1
+ import type { HookRegistry, SessionEndContext, SessionStartContext, StopContext } from '../hooks.js';
2
2
  import type { TraceSink } from '../trace/index.js';
3
3
  export interface SessionHookDispatchOptions {
4
4
  signal?: AbortSignal;
@@ -7,3 +7,14 @@ export interface SessionHookDispatchOptions {
7
7
  }
8
8
  export declare function dispatchSessionStart(registry: HookRegistry | undefined, context: SessionStartContext, options?: SessionHookDispatchOptions): Promise<string | undefined>;
9
9
  export declare function dispatchSessionEnd(registry: HookRegistry | undefined, context: SessionEndContext, options?: SessionHookDispatchOptions): Promise<void>;
10
+ export interface StopHookDispatchOptions extends SessionHookDispatchOptions {
11
+ hasNextTurn: boolean;
12
+ surface?: string;
13
+ }
14
+ export interface StopHookDispatchResult {
15
+ injectContext?: string;
16
+ wasBlocked?: boolean;
17
+ blockedReason?: string;
18
+ wasTimeout?: boolean;
19
+ }
20
+ export declare function dispatchStopHook(registry: HookRegistry | undefined, context: StopContext, options: StopHookDispatchOptions): Promise<StopHookDispatchResult>;
@@ -1,8 +1,9 @@
1
1
  import type { ProviderEvent, ProviderUsage } from '../provider.js';
2
+ import { type ToolEventAccumulator } from './stream-consumer.tool-events.js';
2
3
  import type { Message, OutputEvent, ResponseMetadata, SessionMetadata } from '../types.js';
3
4
  import { BudgetExceededError } from '../../utils/errors.js';
4
5
  import type { TraceSink } from '../trace/index.js';
5
- export type TransformDeps = {
6
+ export type TransformDeps = ToolEventAccumulator & {
6
7
  conversationHistory: Message[];
7
8
  getSessionMetadata: () => SessionMetadata;
8
9
  setSessionMetadata: (updater: (prev: SessionMetadata) => SessionMetadata) => void;
@@ -12,7 +13,6 @@ export type TransformDeps = {
12
13
  maxBudgetUsd?: number;
13
14
  abortBudget?: (reason: BudgetExceededError) => void;
14
15
  _runningCostUsd?: number;
15
- _successfulToolNames?: string[];
16
16
  traceWriter?: TraceSink;
17
17
  };
18
18
  export declare function parsePersistedOutput(content: string): {
@@ -0,0 +1,16 @@
1
+ import type { ProviderEvent } from '../provider.js';
2
+ import type { ToolEventMin } from '../done-evidence.js';
3
+ type ToolUseStartEvent = Extract<ProviderEvent, {
4
+ type: 'tool.use.start';
5
+ }>;
6
+ type ToolOutputEvent = Extract<ProviderEvent, {
7
+ type: 'tool.output';
8
+ }>;
9
+ export interface ToolEventAccumulator {
10
+ _successfulToolNames?: string[];
11
+ _pendingToolInputs?: Map<string, string>;
12
+ _turnToolEvents?: ToolEventMin[];
13
+ }
14
+ export declare function recordToolUseStart(acc: ToolEventAccumulator, event: ToolUseStartEvent): void;
15
+ export declare function recordToolOutput(acc: ToolEventAccumulator, event: ToolOutputEvent): void;
16
+ export {};
@@ -7,6 +7,7 @@ import type { SessionStateManager } from './session-state.js';
7
7
  import type { AgentConfig, OutputEvent, ResponseMetadata, SessionState } from '../types.js';
8
8
  import type { ProviderQuery, ProviderEvent } from '../provider.js';
9
9
  import type { Message } from '../types.js';
10
+ import type { StopWiring } from '../types/session-types.js';
10
11
  export interface TurnRunnerDeps {
11
12
  getConfig: () => AgentConfig;
12
13
  getAbortController: () => AbortController;
@@ -31,6 +32,7 @@ export interface TurnRunnerDeps {
31
32
  getProviderQuery: () => ProviderQuery;
32
33
  getLedgerMetadata: () => ReturnType<SessionStateManager['getSessionMetadata']>;
33
34
  observeProviderEvent?: (event: ProviderEvent) => void;
35
+ getStopWiring?: () => StopWiring | undefined;
34
36
  }
35
37
  export declare class TurnStreamRunner {
36
38
  private readonly deps;
@@ -0,0 +1,13 @@
1
+ import type { AgentConfig } from '../types.js';
2
+ import type { Message } from '../types.js';
3
+ import type { StopWiring } from '../types/session-types.js';
4
+ import { type ToolEventMin } from '../done-evidence.js';
5
+ export interface TurnStopParams {
6
+ config: AgentConfig;
7
+ wiring: StopWiring | undefined;
8
+ sessionId: string | undefined;
9
+ signal: AbortSignal;
10
+ conversationHistory: readonly Message[];
11
+ toolEvents: readonly ToolEventMin[];
12
+ }
13
+ export declare function dispatchTurnStop(p: TurnStopParams): Promise<void>;
@@ -0,0 +1,10 @@
1
+ import type { HookHandler } from './hooks.js';
2
+ import type { PermissionMode } from './types/sdk-types.js';
3
+ export declare const DEFAULT_MAX_TERMINAL_STATE_INJECTIONS = 3;
4
+ export declare const TERMINAL_STATE_GATE_CORRECTION: string;
5
+ export interface TerminalStateGateOptions {
6
+ getPermissionMode: () => PermissionMode;
7
+ isEnabled: () => boolean;
8
+ maxInjectionsPerSession?: number;
9
+ }
10
+ export declare function createTerminalStateGate(opts: TerminalStateGateOptions): HookHandler;
@@ -94,6 +94,7 @@ export declare const HookEventNameSchema: z.ZodEnum<{
94
94
  PostToolUseFailure: "PostToolUseFailure";
95
95
  SessionStart: "SessionStart";
96
96
  SessionEnd: "SessionEnd";
97
+ Stop: "Stop";
97
98
  SubagentStart: "SubagentStart";
98
99
  SubagentStop: "SubagentStop";
99
100
  }>;
@@ -104,6 +105,7 @@ export declare const HookDecisionPayloadSchema: z.ZodObject<{
104
105
  PostToolUseFailure: "PostToolUseFailure";
105
106
  SessionStart: "SessionStart";
106
107
  SessionEnd: "SessionEnd";
108
+ Stop: "Stop";
107
109
  SubagentStart: "SubagentStart";
108
110
  SubagentStop: "SubagentStop";
109
111
  }>;
@@ -459,6 +461,7 @@ export declare const TraceEventInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject
459
461
  PostToolUseFailure: "PostToolUseFailure";
460
462
  SessionStart: "SessionStart";
461
463
  SessionEnd: "SessionEnd";
464
+ Stop: "Stop";
462
465
  SubagentStart: "SubagentStart";
463
466
  SubagentStop: "SubagentStop";
464
467
  }>;
@@ -765,6 +768,7 @@ export declare const TraceEventInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject
765
768
  connection_retry: "connection_retry";
766
769
  usage_notice: "usage_notice";
767
770
  tool_degraded: "tool_degraded";
771
+ stop_inject_dropped: "stop_inject_dropped";
768
772
  }>;
769
773
  durationMs: z.ZodOptional<z.ZodNumber>;
770
774
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
@@ -836,6 +840,7 @@ export declare const TraceEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
836
840
  PostToolUseFailure: "PostToolUseFailure";
837
841
  SessionStart: "SessionStart";
838
842
  SessionEnd: "SessionEnd";
843
+ Stop: "Stop";
839
844
  SubagentStart: "SubagentStart";
840
845
  SubagentStop: "SubagentStop";
841
846
  }>;
@@ -1168,6 +1173,7 @@ export declare const TraceEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1168
1173
  connection_retry: "connection_retry";
1169
1174
  usage_notice: "usage_notice";
1170
1175
  tool_degraded: "tool_degraded";
1176
+ stop_inject_dropped: "stop_inject_dropped";
1171
1177
  }>;
1172
1178
  durationMs: z.ZodOptional<z.ZodNumber>;
1173
1179
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
@@ -32,6 +32,7 @@ export declare const SessionPhaseNameSchema: z.ZodEnum<{
32
32
  connection_retry: "connection_retry";
33
33
  usage_notice: "usage_notice";
34
34
  tool_degraded: "tool_degraded";
35
+ stop_inject_dropped: "stop_inject_dropped";
35
36
  }>;
36
37
  export declare const SessionPhasePayloadSchema: z.ZodObject<{
37
38
  phase: z.ZodEnum<{
@@ -67,6 +68,7 @@ export declare const SessionPhasePayloadSchema: z.ZodObject<{
67
68
  connection_retry: "connection_retry";
68
69
  usage_notice: "usage_notice";
69
70
  tool_degraded: "tool_degraded";
71
+ stop_inject_dropped: "stop_inject_dropped";
70
72
  }>;
71
73
  durationMs: z.ZodOptional<z.ZodNumber>;
72
74
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
@@ -30,7 +30,7 @@ export interface ToolCallCompletedPayload {
30
30
  testResult?: import('../tools/handlers/test-runner-detector.js').TestResult;
31
31
  }
32
32
  export type ToolCallPayload = ToolCallStartedPayload | ToolCallCompletedPayload;
33
- export type HookEventName = 'PreToolUse' | 'PostToolUse' | 'PostToolUseFailure' | 'SessionStart' | 'SessionEnd' | 'SubagentStart' | 'SubagentStop';
33
+ export type HookEventName = 'PreToolUse' | 'PostToolUse' | 'PostToolUseFailure' | 'SessionStart' | 'SessionEnd' | 'Stop' | 'SubagentStart' | 'SubagentStop';
34
34
  export type AfkApprovalOutcome = 'carve-out' | 'approved' | 'denied' | 'unrecognised' | 'timeout' | 'decline' | 'cancel' | 'hard-block';
35
35
  export interface HookDecisionPayload {
36
36
  hookEvent: HookEventName;
@@ -1,4 +1,4 @@
1
- export type SessionPhaseName = 'bootstrap_start' | 'bootstrap_done' | 'session_init_start' | 'session_init_done' | 'mcp_connect_start' | 'mcp_connect_done' | 'mcp_server_start' | 'mcp_server_done' | 'loop_start' | 'loop_end' | 'model_ttfb' | 'interrupt_halt' | 'rate_limit' | 'ttfb_timeout' | 'usage_limit_pause' | 'usage_limit_resume' | 'overload_pause' | 'overload_resume' | 'idle_watchdog_fired' | 'pause_extension_granted' | 'suspected_loop' | 'compaction_disabled' | 'boot_warning' | 'workspace_subscribed' | 'workspace_delivery' | 'gate_shape' | 'session_id_assigned' | 'many_image_degraded' | 'stream_accepted_after_drop' | 'connection_retry' | 'usage_notice' | 'tool_degraded';
1
+ export type SessionPhaseName = 'bootstrap_start' | 'bootstrap_done' | 'session_init_start' | 'session_init_done' | 'mcp_connect_start' | 'mcp_connect_done' | 'mcp_server_start' | 'mcp_server_done' | 'loop_start' | 'loop_end' | 'model_ttfb' | 'interrupt_halt' | 'rate_limit' | 'ttfb_timeout' | 'usage_limit_pause' | 'usage_limit_resume' | 'overload_pause' | 'overload_resume' | 'idle_watchdog_fired' | 'pause_extension_granted' | 'suspected_loop' | 'compaction_disabled' | 'boot_warning' | 'workspace_subscribed' | 'workspace_delivery' | 'gate_shape' | 'session_id_assigned' | 'many_image_degraded' | 'stream_accepted_after_drop' | 'connection_retry' | 'usage_notice' | 'tool_degraded' | 'stop_inject_dropped';
2
2
  export interface SessionPhasePayload {
3
3
  phase: SessionPhaseName;
4
4
  durationMs?: number;
@@ -150,6 +150,7 @@ export interface IAgentSession {
150
150
  sendMessageStructured?<T>(content: string, schema: ZodType<T>, options?: StructuredMessageOptions): Promise<T>;
151
151
  interrupt(): Promise<void>;
152
152
  setBeforeNextRound?(cb: (() => string | undefined) | undefined): void;
153
+ wireStopHook?(wiring: StopWiring): void;
153
154
  reset(): Promise<void>;
154
155
  readonly abortSignal: AbortSignal;
155
156
  abort(reason: string): void;
@@ -181,3 +182,9 @@ export interface IAgentSession {
181
182
  rewindConversation(turnIndex: number): Promise<ProviderRewindConversationResult>;
182
183
  close(): Promise<void>;
183
184
  }
185
+ export interface StopWiring {
186
+ getHasNextTurn: () => boolean;
187
+ onStopInjectContext?: (text: string) => void;
188
+ onStopBlocked?: (reason: string | undefined) => void;
189
+ onStopTimeout?: () => void;
190
+ }
@@ -0,0 +1,7 @@
1
+ import type { AgentSession } from '../../agent/session.js';
2
+ type SubagentCompletionArgs = Parameters<AgentSession['recordSubagentCompletion']>;
3
+ export interface SubagentSuccessSource {
4
+ setOnSubagentSucceeded(cb: (...args: SubagentCompletionArgs) => void): void;
5
+ }
6
+ export declare function wireOneShotChatSession(session: AgentSession, sources: readonly SubagentSuccessSource[]): void;
7
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { StopWiring } from '../../../agent/types/session-types.js';
2
+ import type { InteractiveCtx } from './shared.js';
3
+ export declare function wireReplStopHook(ctx: InteractiveCtx, setPendingStopInjection: (text: string) => void): StopWiring;
@@ -1,10 +1 @@
1
- import type { HookHandler } from '../../../agent/hooks.js';
2
- import type { PermissionMode } from '../../../agent/types/sdk-types.js';
3
- export declare const DEFAULT_MAX_TERMINAL_STATE_INJECTIONS = 3;
4
- export declare const TERMINAL_STATE_GATE_CORRECTION: string;
5
- export interface TerminalStateGateOptions {
6
- getPermissionMode: () => PermissionMode;
7
- isEnabled: () => boolean;
8
- maxInjectionsPerSession?: number;
9
- }
10
- export declare function createTerminalStateGate(opts: TerminalStateGateOptions): HookHandler;
1
+ export { DEFAULT_MAX_TERMINAL_STATE_INJECTIONS, TERMINAL_STATE_GATE_CORRECTION, type TerminalStateGateOptions, createTerminalStateGate, } from '../../../agent/terminal-state-gate.js';