agent-afk 5.307.14 → 5.308.1
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.
- package/dist/agent/awareness/index.d.ts +1 -1
- package/dist/agent/awareness/runtime-snapshot.d.ts +5 -0
- package/dist/agent/awareness/types.d.ts +4 -0
- package/dist/agent/daemon/schedule-store.d.ts +2 -0
- package/dist/agent/daemon/scheduler.d.ts +3 -1
- package/dist/agent/daemon/scheduler.execute-agent-task.d.ts +3 -0
- package/dist/agent/daemon/task-retry.d.ts +41 -0
- package/dist/agent/daemon/triggers.d.ts +2 -0
- package/dist/agent/providers/anthropic-direct/loop/tool-results.d.ts +1 -1
- package/dist/agent/providers/openai-compatible/query/dispatch-append.d.ts +2 -1
- package/dist/agent/providers/shared/transient-retry.d.ts +1 -0
- package/dist/agent/providers/shared/vitals.d.ts +24 -0
- package/dist/cli.mjs +385 -382
- package/dist/config/env.d.ts +8 -0
- package/dist/config/env.vitals.d.ts +9 -0
- package/dist/index.mjs +156 -153
- package/dist/telegram.mjs +191 -188
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { Surface, PhaseRole, SubagentStatusLite, SubagentStatusLiteValue, BgJobLite, BgJobStatus, McpServerSummary, McpFailedServer, RuntimeSelf, RuntimeTools, RuntimeSubagents, RuntimeWorkspace, RuntimeSnapshot, RuntimeView, RuntimeStateSource, } from './types.js';
|
|
2
|
-
export { buildRuntimeSnapshot, parseView, formatEnvironmentFragment, formatEnvironmentDateLine, } from './runtime-snapshot.js';
|
|
2
|
+
export { buildRuntimeSnapshot, parseView, formatEnvironmentFragment, formatEnvironmentDateLine, formatClock, snapshotClock, } from './runtime-snapshot.js';
|
|
3
3
|
export { buildRuntimeStateSource, type RuntimeSourceDeps, } from './runtime-source.js';
|
|
4
4
|
export { getRuntimeStateTool, AWARENESS_TOOL_NAMES, createGetRuntimeStateHandler, wrapDispatcherWithRuntimeState, } from './tool.js';
|
|
5
5
|
export { gatherWorkspace } from './workspace-source.js';
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { RuntimeStateSource, RuntimeSnapshot, RuntimeView, RuntimeWorkspace } from './types.js';
|
|
2
2
|
export declare function buildRuntimeSnapshot(source: RuntimeStateSource, view?: RuntimeView): Partial<RuntimeSnapshot>;
|
|
3
|
+
export declare function snapshotClock(epochMs: number): {
|
|
4
|
+
iso: string;
|
|
5
|
+
local: string;
|
|
6
|
+
};
|
|
3
7
|
export declare function parseView(raw: unknown): RuntimeView;
|
|
4
8
|
export declare function formatEnvironmentFragment(args: {
|
|
5
9
|
cwd: string;
|
|
@@ -12,3 +16,4 @@ export declare function formatEnvironmentFragment(args: {
|
|
|
12
16
|
timeZone?: string;
|
|
13
17
|
}): string;
|
|
14
18
|
export declare function formatEnvironmentDateLine(now: Date, timeZone?: string): string;
|
|
19
|
+
export declare function formatClock(epochMs: number, timeZone?: string): string;
|
|
@@ -59,6 +59,10 @@ export interface RuntimeSnapshot {
|
|
|
59
59
|
subagents: RuntimeSubagents;
|
|
60
60
|
workspace: RuntimeWorkspace;
|
|
61
61
|
usage?: RuntimeUsageEntry[];
|
|
62
|
+
clock?: {
|
|
63
|
+
iso: string;
|
|
64
|
+
local: string;
|
|
65
|
+
};
|
|
62
66
|
subagentOutcomeSummary?: SubagentOutcomeSummaryEntry[];
|
|
63
67
|
}
|
|
64
68
|
export type { SubagentOutcomeSummaryEntry } from '../../insights/aggregators/subagent-outcomes.js';
|
|
@@ -7,7 +7,6 @@ export { resolveWorktreePruneRoot } from './worktree-prune-task.js';
|
|
|
7
7
|
export { daemonTraceLabel } from './session-spawn.js';
|
|
8
8
|
import { type TaskTurnCompleteArgs } from './scheduler.execute-agent-task.js';
|
|
9
9
|
import { type SessionStartSkipReason } from './gates.js';
|
|
10
|
-
export declare const COMMAND_HEAD_MAX_LEN = 60;
|
|
11
10
|
export interface SchedulerOptions {
|
|
12
11
|
sessionConfig?: Partial<AgentConfig>;
|
|
13
12
|
telemetryPath?: string;
|
|
@@ -26,6 +25,7 @@ export interface SchedulerOptions {
|
|
|
26
25
|
primaryChatId?: number;
|
|
27
26
|
primaryThreadId?: number;
|
|
28
27
|
budgetGate?: () => Promise<import('./budget-gate.js').BudgetGateResult>;
|
|
28
|
+
retrySleep?: (ms: number, signal: AbortSignal) => Promise<void>;
|
|
29
29
|
}
|
|
30
30
|
export type TelemetryTrigger = 'cron' | 'sessionstart' | 'pull';
|
|
31
31
|
type TelemetryStatus = 'success' | 'error' | 'skipped';
|
|
@@ -42,6 +42,7 @@ export interface TelemetryRecord {
|
|
|
42
42
|
skipReason?: SessionStartSkipReason;
|
|
43
43
|
name?: string;
|
|
44
44
|
doneUnverified?: boolean;
|
|
45
|
+
attempts?: number;
|
|
45
46
|
}
|
|
46
47
|
export interface TaskCompletionDetails {
|
|
47
48
|
responseText?: string;
|
|
@@ -61,6 +62,7 @@ export declare class CronScheduler {
|
|
|
61
62
|
private readonly budgetAlerts;
|
|
62
63
|
private readonly overlapAlerts;
|
|
63
64
|
private readonly telemetryAlerts;
|
|
65
|
+
private shutdownController;
|
|
64
66
|
constructor(options?: SchedulerOptions);
|
|
65
67
|
register(task: ScheduledTask): void;
|
|
66
68
|
unregister(taskId: string): void;
|
|
@@ -37,6 +37,9 @@ export interface AgentTaskContext {
|
|
|
37
37
|
dispose: () => void;
|
|
38
38
|
}>;
|
|
39
39
|
writeTelemetry: (record: TelemetryRecord, task: ScheduledTask, details?: TaskCompletionDetails) => void;
|
|
40
|
+
shutdownSignal?: AbortSignal;
|
|
41
|
+
isCancelled?: () => boolean;
|
|
42
|
+
retrySleep?: (ms: number, signal: AbortSignal) => Promise<void>;
|
|
40
43
|
}
|
|
41
44
|
export declare function executeAgentTask(ctx: AgentTaskContext, task: ScheduledTask, trigger: TelemetryTrigger): Promise<TelemetryRecord>;
|
|
42
45
|
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const TASK_MAX_ATTEMPTS_LIMIT = 5;
|
|
2
|
+
export declare const TASK_RETRY_DELAY_MIN_MS = 1000;
|
|
3
|
+
export declare const TASK_RETRY_DELAY_MAX_MS: number;
|
|
4
|
+
export declare const DEFAULT_TASK_RETRY_DELAY_MS: number;
|
|
5
|
+
export interface TaskRetryFields {
|
|
6
|
+
maxAttempts?: number;
|
|
7
|
+
retryDelayMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export type ParseTaskRetryResult = {
|
|
10
|
+
ok: true;
|
|
11
|
+
value: TaskRetryFields;
|
|
12
|
+
} | {
|
|
13
|
+
ok: false;
|
|
14
|
+
error: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function parseTaskRetryFields(obj: Record<string, unknown>): ParseTaskRetryResult;
|
|
17
|
+
export interface ResolvedTaskRetry {
|
|
18
|
+
maxAttempts: number;
|
|
19
|
+
retryDelayMs: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function resolveTaskRetryPolicy(task: TaskRetryFields): ResolvedTaskRetry;
|
|
22
|
+
export interface TaskRetryRunOptions extends ResolvedTaskRetry {
|
|
23
|
+
signal: AbortSignal;
|
|
24
|
+
isCancelled?: () => boolean;
|
|
25
|
+
sleep?: (ms: number, signal: AbortSignal) => Promise<void>;
|
|
26
|
+
onRetry?: (info: {
|
|
27
|
+
attempt: number;
|
|
28
|
+
error: unknown;
|
|
29
|
+
delayMs: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
}
|
|
32
|
+
export type TaskRetryOutcome<T> = {
|
|
33
|
+
ok: true;
|
|
34
|
+
value: T;
|
|
35
|
+
attempts: number;
|
|
36
|
+
} | {
|
|
37
|
+
ok: false;
|
|
38
|
+
error: unknown;
|
|
39
|
+
attempts: number;
|
|
40
|
+
};
|
|
41
|
+
export declare function runWithTaskRetry<T>(attempt: (attemptNumber: number) => Promise<T>, opts: TaskRetryRunOptions): Promise<TaskRetryOutcome<T>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ProviderEvent } from '../../../provider.js';
|
|
2
2
|
import type { RunTurnInput, ToolCall, ToolResult } from '../types.js';
|
|
3
3
|
export type ToolResultsOutcome = 'committed' | 'denial-tripped';
|
|
4
|
-
export declare function emitAndCommitToolResults(calls: ToolCall[], results: ToolResult[], startTimes: Map<string, number>, input: RunTurnInput): AsyncGenerator<ProviderEvent, ToolResultsOutcome, void>;
|
|
4
|
+
export declare function emitAndCommitToolResults(calls: ToolCall[], results: ToolResult[], startTimes: Map<string, number>, input: RunTurnInput, vitalsNote?: string): AsyncGenerator<ProviderEvent, ToolResultsOutcome, void>;
|
|
@@ -13,5 +13,6 @@ export interface DispatchAndAppendInput {
|
|
|
13
13
|
priorTurns: OpenAIMessage[];
|
|
14
14
|
sessionId: string;
|
|
15
15
|
subagentId?: string | undefined;
|
|
16
|
+
vitalsNote?: string | undefined;
|
|
16
17
|
}
|
|
17
|
-
export declare function dispatchAndAppendToolCalls({ state, signal, vision, toolDispatcher, traceWriter, priorTurns, sessionId, subagentId, }: DispatchAndAppendInput): AsyncGenerator<ProviderEvent, ToolResult | undefined>;
|
|
18
|
+
export declare function dispatchAndAppendToolCalls({ state, signal, vision, toolDispatcher, traceWriter, priorTurns, sessionId, subagentId, vitalsNote, }: DispatchAndAppendInput): AsyncGenerator<ProviderEvent, ToolResult | undefined>;
|
|
@@ -16,4 +16,5 @@ export interface TransientRetryOpts {
|
|
|
16
16
|
onExhausted?: (info: RetryInfo) => void;
|
|
17
17
|
sleep?: (ms: number, signal: AbortSignal) => Promise<void>;
|
|
18
18
|
}
|
|
19
|
+
export declare function isTransientError(err: unknown): boolean;
|
|
19
20
|
export declare function withTransientRetry<T>(attempt: () => Promise<T>, opts?: TransientRetryOpts): Promise<T>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { UsageRecord } from '../../usage/usage-record.js';
|
|
2
|
+
export declare const VITALS_PREFIX = "[vitals]";
|
|
3
|
+
export declare const CONTEXT_SHOW_PCT = 50;
|
|
4
|
+
export declare const USAGE_SHOW_PCT = 80;
|
|
5
|
+
export declare const HIGH_PCT = 90;
|
|
6
|
+
export declare const USAGE_CACHE_TTL_MS = 60000;
|
|
7
|
+
export interface VitalsInput {
|
|
8
|
+
readonly turnStartedAt: number;
|
|
9
|
+
readonly softDeadlineMs?: number | undefined;
|
|
10
|
+
readonly contextTokens?: number | undefined;
|
|
11
|
+
readonly model?: string | undefined;
|
|
12
|
+
readonly subagentId?: string | undefined;
|
|
13
|
+
readonly claudeUsage?: boolean | undefined;
|
|
14
|
+
}
|
|
15
|
+
export interface VitalsDeps {
|
|
16
|
+
readonly now?: () => number;
|
|
17
|
+
readonly timeZone?: string;
|
|
18
|
+
readonly readClaudeUsage?: () => UsageRecord | undefined;
|
|
19
|
+
readonly contextLimit?: (model: string) => number;
|
|
20
|
+
}
|
|
21
|
+
export declare function vitalsEnabled(): boolean;
|
|
22
|
+
export declare function buildVitalsNote(input: VitalsInput, deps?: VitalsDeps): string | undefined;
|
|
23
|
+
export declare function resetVitalsUsageCacheForTests(): void;
|
|
24
|
+
export declare function formatDuration(ms: number, seconds?: boolean): string;
|