agent-afk 5.303.1 → 5.303.3

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.
@@ -5,6 +5,7 @@ import type { Telegraf } from 'telegraf';
5
5
  import { ScheduledTask } from './triggers.js';
6
6
  export { resolveWorktreePruneRoot } from './worktree-prune-task.js';
7
7
  export { daemonTraceLabel } from './session-spawn.js';
8
+ import { type TaskTurnCompleteArgs } from './scheduler.execute-agent-task.js';
8
9
  import { type SessionStartSkipReason } from './gates.js';
9
10
  export interface SchedulerOptions {
10
11
  sessionConfig?: Partial<AgentConfig>;
@@ -19,6 +20,7 @@ export interface SchedulerOptions {
19
20
  responseText: string;
20
21
  successfulToolNames: readonly string[];
21
22
  }) => boolean;
23
+ onTaskTurnComplete?: (args: TaskTurnCompleteArgs) => void;
22
24
  bot?: Telegraf;
23
25
  primaryChatId?: number;
24
26
  primaryThreadId?: number;
@@ -6,6 +6,7 @@ import type { StateStore } from '../state/state-store.js';
6
6
  import type { ScheduledTask } from './triggers.js';
7
7
  import type { TelemetryRecord, TelemetryTrigger, TaskCompletionDetails } from './scheduler.js';
8
8
  import type { Telegraf } from 'telegraf';
9
+ import type { Message } from '../types/message-types.js';
9
10
  interface AgentTaskOptions {
10
11
  bot?: Telegraf;
11
12
  primaryChatId?: number;
@@ -14,6 +15,14 @@ interface AgentTaskOptions {
14
15
  responseText: string;
15
16
  successfulToolNames: readonly string[];
16
17
  }) => boolean;
18
+ onTaskTurnComplete?: (args: TaskTurnCompleteArgs) => void;
19
+ }
20
+ export interface TaskTurnCompleteArgs {
21
+ task: ScheduledTask;
22
+ sessionId: string | undefined;
23
+ cwd: string | undefined;
24
+ userInput: string;
25
+ response: Message;
17
26
  }
18
27
  export interface AgentTaskContext {
19
28
  options: AgentTaskOptions;
@@ -13,6 +13,7 @@ export interface DaemonOptions {
13
13
  now?: () => number;
14
14
  onTaskComplete?: SchedulerOptions['onTaskComplete'];
15
15
  doneUnverifiedProbe?: SchedulerOptions['doneUnverifiedProbe'];
16
+ onTaskTurnComplete?: SchedulerOptions['onTaskTurnComplete'];
16
17
  pullPollIntervalMs?: number;
17
18
  queueDir?: string;
18
19
  writePortFile?: boolean;
@@ -1,5 +1,4 @@
1
1
  import type { ZodType } from 'zod';
2
- import type { ContentBlockParam } from '@anthropic-ai/sdk/resources';
3
2
  import type { AgentModelInput, CanUseTool, IAgentSession } from './types.js';
4
3
  import type { ModelProvider } from './provider.js';
5
4
  import type { SubagentManager } from './subagent.js';
@@ -30,7 +29,6 @@ export interface SubagentDAGNode {
30
29
  provider?: ModelProvider;
31
30
  depth?: number;
32
31
  maxDepth?: number;
33
- buildPromptAsync?: (inputs: Record<string, unknown>) => Promise<string | ContentBlockParam[]>;
34
32
  resolvedAttachments?: ImageBlockAttachment[];
35
33
  }
36
34
  export interface SubagentDAGOptions {
@@ -1,10 +1,12 @@
1
1
  import { type SessionFacet, type StoredSessionInput, type SubagentToolSummary, type ToolEventInput } from './schema.js';
2
+ import type { TraceSignals } from './derive.trace.js';
2
3
  export interface DeriveOptions {
3
4
  sourceSessionPath?: string;
4
5
  sourceSessionMtimeMs?: number;
5
6
  derivedAt?: Date;
6
7
  journalEvents?: ToolEventInput[];
7
8
  subagentBreakdown?: SubagentToolSummary[];
9
+ traceSignals?: TraceSignals;
8
10
  }
9
11
  export declare function dedupeToolEvents(events: ToolEventInput[]): ToolEventInput[];
10
12
  export declare function deriveSessionFacet(session: StoredSessionInput, options?: DeriveOptions): SessionFacet;
@@ -0,0 +1,11 @@
1
+ import type { FacetOutcomeDowngradeReason } from './schema.js';
2
+ import type { TraceSignals } from './derive.trace.js';
3
+ export declare function checkDowngradeSignals({ parsedDeferred, parsedEvidence, filesWritten, filesEdited, commits, composePartialNodes, traceSignals, }: {
4
+ parsedDeferred: string | undefined;
5
+ parsedEvidence: string | undefined;
6
+ filesWritten: number;
7
+ filesEdited: number;
8
+ commits: number;
9
+ composePartialNodes: number;
10
+ traceSignals: TraceSignals | undefined;
11
+ }): FacetOutcomeDowngradeReason | undefined;
@@ -0,0 +1,6 @@
1
+ export type DowngradableClosureReason = 'budget_exceeded' | 'iteration_cap' | 'truncated';
2
+ export interface TraceSignals {
3
+ traceClosureReason: DowngradableClosureReason | undefined;
4
+ hasSubagentBudgetExhaustion: boolean;
5
+ }
6
+ export declare function parseTraceSignals(content: string): TraceSignals;
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- export declare const FACET_VERSION = 10;
2
+ export declare const FACET_VERSION = 11;
3
3
  export declare const ToolEventInputSchema: z.ZodObject<{
4
4
  toolName: z.ZodString;
5
5
  toolUseId: z.ZodOptional<z.ZodString>;
@@ -88,6 +88,10 @@ export declare const FacetOutcomeDowngradeReasonSchema: z.ZodEnum<{
88
88
  deferred_items: "deferred_items";
89
89
  no_corroborating_evidence: "no_corroborating_evidence";
90
90
  compose_partial_nodes: "compose_partial_nodes";
91
+ budget_exceeded_closure: "budget_exceeded_closure";
92
+ iteration_cap_closure: "iteration_cap_closure";
93
+ truncated_closure: "truncated_closure";
94
+ subagent_budget_exhaustion: "subagent_budget_exhaustion";
91
95
  }>;
92
96
  export type FacetOutcomeDowngradeReason = z.infer<typeof FacetOutcomeDowngradeReasonSchema>;
93
97
  export declare const SubagentPersistenceSchema: z.ZodEnum<{
@@ -198,6 +202,10 @@ export declare const SessionFacetSchema: z.ZodObject<{
198
202
  deferred_items: "deferred_items";
199
203
  no_corroborating_evidence: "no_corroborating_evidence";
200
204
  compose_partial_nodes: "compose_partial_nodes";
205
+ budget_exceeded_closure: "budget_exceeded_closure";
206
+ iteration_cap_closure: "iteration_cap_closure";
207
+ truncated_closure: "truncated_closure";
208
+ subagent_budget_exhaustion: "subagent_budget_exhaustion";
201
209
  }>>;
202
210
  primary_success: z.ZodString;
203
211
  world_changes: z.ZodObject<{
@@ -1,4 +1,6 @@
1
1
  export declare function sleep(ms: number, opts?: {
2
2
  unref?: boolean;
3
3
  }): Promise<void>;
4
- export declare function sleepWithAbort(ms: number, signal: AbortSignal): Promise<void>;
4
+ export declare function sleepWithAbort(ms: number, signal: AbortSignal, opts?: {
5
+ unref?: boolean;
6
+ }): Promise<void>;
@@ -15,7 +15,7 @@ export declare class LedgerLifecycle {
15
15
  private writer;
16
16
  private initAttempted;
17
17
  ensure(ctx: LedgerEnsureContext): void;
18
- recordUser(text: string): void;
18
+ recordUser(text: string, input?: string): void;
19
19
  recordEvent(event: OutputEvent): void;
20
20
  recordElicitation(reqId: string, request: ElicitationRequest): void;
21
21
  seal(reason: string): Promise<void>;
@@ -14,6 +14,7 @@ export type LedgerPayload = {
14
14
  } | {
15
15
  kind: 'user';
16
16
  text: string;
17
+ input?: string;
17
18
  } | {
18
19
  kind: 'assistant';
19
20
  text: string;
@@ -16,7 +16,7 @@ export declare class SessionLedgerWriter {
16
16
  get active(): boolean;
17
17
  record(payload: import('./session-ledger-project.js').LedgerPayload): void;
18
18
  recordEvent(event: OutputEvent): void;
19
- recordUser(text: string): void;
19
+ recordUser(text: string, input?: string): void;
20
20
  private _openStream;
21
21
  private _writeLine;
22
22
  close(reason?: string): Promise<void>;
@@ -1,4 +1,5 @@
1
- import type { AbortPayload, BackgroundAgentPayload, BrowserEventPayload, BudgetPayload, ClaimPayload, ClosurePayload, CompactionPayloadInput, HookDecisionPayload, PeerMessagePayload, QueuedUserMessagePayload, SessionPhasePayload, SubagentLifecyclePayload, ToolCallPayload, TraceSink } from './index.js';
1
+ import type { AbortPayload, BackgroundAgentPayload, BrowserEventPayload, BudgetPayload, ClaimPayload, ClosurePayload, CompactionPayloadInput, HookDecisionPayload, PeerMessagePayload, QueuedUserMessagePayload, SessionPhasePayload, SubagentLifecyclePayload, ToolCallPayload } from './types.js';
2
+ import type { TraceSink } from './writer.js';
2
3
  export declare const emitToolCall: (w: TraceSink | undefined, p: ToolCallPayload) => Promise<void>;
3
4
  export declare const emitHookDecision: (w: TraceSink | undefined, p: HookDecisionPayload) => Promise<void>;
4
5
  export declare const emitSubagentLifecycle: (w: TraceSink | undefined, p: SubagentLifecyclePayload) => Promise<void>;
@@ -1,6 +1,3 @@
1
- export type { AfkApprovalOutcome, AbortOrigin, AbortPayload, BackgroundAgentCancelledPayload, BackgroundAgentCompletedPayload, BackgroundAgentFailedPayload, BackgroundAgentJoinedPayload, BackgroundAgentPayload, BackgroundAgentStartedPayload, BrowserActAction, BrowserEventPayload, BrowserEventTarget, BrowserEventTool, BudgetPayload, ClaimPayload, QueuedUserMessagePayload, PeerMessagePayload, ClosurePayload, ClosureReason, CompactionPayloadInput, CompactionPayloadPersisted, CompactionSidecarRef, CompactionTrigger, HookDecisionPayload, HookEventName, SessionPhasePayload, SessionPhaseName, SessionSealedPayload, SubagentCancelledPayload, SubagentFailedPayload, SubagentLifecyclePayload, SubagentStartedPayload, SubagentSucceededPayload, ToolCallCompletedPayload, ToolCallPayload, ToolCallStartedPayload, TraceEvent, TraceEventInput, TraceEventKind, } from './types.js';
2
- export { AbortOriginSchema, AbortPayloadSchema, BackgroundAgentCancelledPayloadSchema, BackgroundAgentCompletedPayloadSchema, BackgroundAgentFailedPayloadSchema, BackgroundAgentJoinedPayloadSchema, BackgroundAgentPayloadSchema, BackgroundAgentStartedPayloadSchema, BrowserActActionSchema, BrowserEventPayloadSchema, BrowserEventTargetSchema, BrowserEventToolSchema, BudgetPayloadSchema, ClaimPayloadSchema, QueuedUserMessagePayloadSchema, PeerMessagePayloadSchema, ClosurePayloadSchema, ClosureReasonSchema, CompactionPayloadInputSchema, CompactionPayloadPersistedSchema, CompactionSidecarRefSchema, CompactionTriggerSchema, HookDecisionPayloadSchema, HookEventNameSchema, SessionPhaseNameSchema, SessionPhasePayloadSchema, SessionSealedPayloadSchema, SubagentCancelledPayloadSchema, SubagentFailedPayloadSchema, SubagentLifecyclePayloadSchema, SubagentStartedPayloadSchema, SubagentSucceededPayloadSchema, ToolCallCompletedPayloadSchema, ToolCallPayloadSchema, ToolCallStartedPayloadSchema, TraceEventInputSchema, TraceEventSchema, } from './events.js';
3
- export { InMemoryTraceWriter, NdjsonTraceWriter, } from './writer.js';
4
- export type { NdjsonTraceWriterOptions, TraceSink, TraceWriter } from './writer.js';
5
- export { emitSessionIdAssigned } from '../session/session-id-trace.js';
6
- export { emitPeerMessage } from './emit.js';
1
+ export type { AbortOrigin, BackgroundAgentPayload, ClosureReason, HookEventName, SessionPhasePayload, SubagentLifecyclePayload, TraceEvent, TraceEventInput, } from './types.js';
2
+ export { InMemoryTraceWriter, } from './writer.js';
3
+ export type { TraceSink, TraceWriter } from './writer.js';
@@ -0,0 +1,5 @@
1
+ import type { AgentModelInput } from '../../agent/types.js';
2
+ import type { TaskTurnCompleteArgs } from '../../agent/daemon/scheduler.execute-agent-task.js';
3
+ import type { SchedulerOptions } from '../../agent/daemon/scheduler.js';
4
+ export declare function makeDaemonTurnPersister(model: AgentModelInput): (args: TaskTurnCompleteArgs) => void;
5
+ export declare function daemonTurnHooks(model: AgentModelInput, doneUnverifiedProbe: NonNullable<SchedulerOptions['doneUnverifiedProbe']>): Pick<SchedulerOptions, 'doneUnverifiedProbe' | 'onTaskTurnComplete'>;
@@ -0,0 +1,26 @@
1
+ import type { ResponseMetadata } from '../agent/types/message-types.js';
2
+ import type { AgentModelInput, OutputEvent } from '../agent/types.js';
3
+ import type { SessionStats, ToolEvent } from './slash/types.js';
4
+ export interface SessionAutosaverOptions {
5
+ model: AgentModelInput;
6
+ source: NonNullable<SessionStats['source']>;
7
+ cwd?: string;
8
+ sessionId?: string;
9
+ name?: string;
10
+ onError?: (err: unknown) => void;
11
+ }
12
+ export interface SessionAutosaver {
13
+ readonly stats: SessionStats;
14
+ saveTurn(userInput: string, assistantText: string, metadata: ResponseMetadata | undefined, toolEvents?: ToolEvent[]): void;
15
+ }
16
+ export declare function createSessionAutosaver(opts: SessionAutosaverOptions): SessionAutosaver;
17
+ export interface CollectedTurn {
18
+ completed: boolean;
19
+ assistantText: string;
20
+ metadata: ResponseMetadata | undefined;
21
+ toolEvents: ToolEvent[];
22
+ }
23
+ export declare function createTurnCollector(): {
24
+ observe(event: OutputEvent): void;
25
+ result(): CollectedTurn;
26
+ };
@@ -60,7 +60,7 @@ export interface SessionStats {
60
60
  sessionId?: string;
61
61
  name?: string;
62
62
  cwd?: string;
63
- source?: 'cli' | 'telegram' | 'daemon';
63
+ source?: 'cli' | 'telegram' | 'daemon' | 'web';
64
64
  telegramChatId?: number;
65
65
  actor?: TraceActor;
66
66
  }