@eminent337/aery-core 0.67.120 → 0.67.121

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.
Files changed (127) hide show
  1. package/README.md +14 -0
  2. package/dist/agent-loop.d.ts.map +1 -1
  3. package/dist/agent-loop.js +31 -1
  4. package/dist/agent-loop.js.map +1 -1
  5. package/dist/agent.d.ts +4 -3
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +7 -3
  8. package/dist/agent.js.map +1 -1
  9. package/dist/harness/agent-harness.d.ts +103 -0
  10. package/dist/harness/agent-harness.d.ts.map +1 -0
  11. package/dist/harness/agent-harness.js +788 -0
  12. package/dist/harness/agent-harness.js.map +1 -0
  13. package/dist/harness/compaction/branch-summarization.d.ts +88 -0
  14. package/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
  15. package/dist/harness/compaction/branch-summarization.js +243 -0
  16. package/dist/harness/compaction/branch-summarization.js.map +1 -0
  17. package/dist/harness/compaction/compaction.d.ts +122 -0
  18. package/dist/harness/compaction/compaction.d.ts.map +1 -0
  19. package/dist/harness/compaction/compaction.js +631 -0
  20. package/dist/harness/compaction/compaction.js.map +1 -0
  21. package/dist/harness/compaction/utils.d.ts +38 -0
  22. package/dist/harness/compaction/utils.d.ts.map +1 -0
  23. package/dist/harness/compaction/utils.js +153 -0
  24. package/dist/harness/compaction/utils.js.map +1 -0
  25. package/dist/harness/env/nodejs.d.ts +50 -0
  26. package/dist/harness/env/nodejs.d.ts.map +1 -0
  27. package/dist/harness/env/nodejs.js +487 -0
  28. package/dist/harness/env/nodejs.js.map +1 -0
  29. package/dist/harness/execution-env.d.ts +4 -0
  30. package/dist/harness/execution-env.d.ts.map +1 -0
  31. package/dist/harness/execution-env.js +3 -0
  32. package/dist/harness/execution-env.js.map +1 -0
  33. package/dist/harness/factory.d.ts +6 -0
  34. package/dist/harness/factory.d.ts.map +1 -0
  35. package/dist/harness/factory.js +9 -0
  36. package/dist/harness/factory.js.map +1 -0
  37. package/dist/harness/messages.d.ts +51 -0
  38. package/dist/harness/messages.d.ts.map +1 -0
  39. package/dist/harness/messages.js +102 -0
  40. package/dist/harness/messages.js.map +1 -0
  41. package/dist/harness/prompt-templates.d.ts +47 -0
  42. package/dist/harness/prompt-templates.d.ts.map +1 -0
  43. package/dist/harness/prompt-templates.js +201 -0
  44. package/dist/harness/prompt-templates.js.map +1 -0
  45. package/dist/harness/session/jsonl-repo.d.ts +26 -0
  46. package/dist/harness/session/jsonl-repo.d.ts.map +1 -0
  47. package/dist/harness/session/jsonl-repo.js +97 -0
  48. package/dist/harness/session/jsonl-repo.js.map +1 -0
  49. package/dist/harness/session/jsonl-storage.d.ts +33 -0
  50. package/dist/harness/session/jsonl-storage.d.ts.map +1 -0
  51. package/dist/harness/session/jsonl-storage.js +159 -0
  52. package/dist/harness/session/jsonl-storage.js.map +1 -0
  53. package/dist/harness/session/memory-repo.d.ts +18 -0
  54. package/dist/harness/session/memory-repo.d.ts.map +1 -0
  55. package/dist/harness/session/memory-repo.js +42 -0
  56. package/dist/harness/session/memory-repo.js.map +1 -0
  57. package/dist/harness/session/memory-storage.d.ts +26 -0
  58. package/dist/harness/session/memory-storage.d.ts.map +1 -0
  59. package/dist/harness/session/memory-storage.js +89 -0
  60. package/dist/harness/session/memory-storage.js.map +1 -0
  61. package/dist/harness/session/repo/jsonl.d.ts +20 -0
  62. package/dist/harness/session/repo/jsonl.d.ts.map +1 -0
  63. package/dist/harness/session/repo/jsonl.js +92 -0
  64. package/dist/harness/session/repo/jsonl.js.map +1 -0
  65. package/dist/harness/session/repo/memory.d.ts +18 -0
  66. package/dist/harness/session/repo/memory.d.ts.map +1 -0
  67. package/dist/harness/session/repo/memory.js +42 -0
  68. package/dist/harness/session/repo/memory.js.map +1 -0
  69. package/dist/harness/session/repo/shared.d.ts +10 -0
  70. package/dist/harness/session/repo/shared.d.ts.map +1 -0
  71. package/dist/harness/session/repo/shared.js +31 -0
  72. package/dist/harness/session/repo/shared.js.map +1 -0
  73. package/dist/harness/session/repo-utils.d.ts +10 -0
  74. package/dist/harness/session/repo-utils.d.ts.map +1 -0
  75. package/dist/harness/session/repo-utils.js +31 -0
  76. package/dist/harness/session/repo-utils.js.map +1 -0
  77. package/dist/harness/session/session.d.ts +32 -0
  78. package/dist/harness/session/session.d.ts.map +1 -0
  79. package/dist/harness/session/session.js +196 -0
  80. package/dist/harness/session/session.js.map +1 -0
  81. package/dist/harness/session/storage/jsonl.d.ts +30 -0
  82. package/dist/harness/session/storage/jsonl.d.ts.map +1 -0
  83. package/dist/harness/session/storage/jsonl.js +170 -0
  84. package/dist/harness/session/storage/jsonl.js.map +1 -0
  85. package/dist/harness/session/storage/memory.d.ts +26 -0
  86. package/dist/harness/session/storage/memory.d.ts.map +1 -0
  87. package/dist/harness/session/storage/memory.js +90 -0
  88. package/dist/harness/session/storage/memory.js.map +1 -0
  89. package/dist/harness/session/uuid.d.ts +2 -0
  90. package/dist/harness/session/uuid.d.ts.map +1 -0
  91. package/dist/harness/session/uuid.js +50 -0
  92. package/dist/harness/session/uuid.js.map +1 -0
  93. package/dist/harness/skills.d.ts +43 -0
  94. package/dist/harness/skills.d.ts.map +1 -0
  95. package/dist/harness/skills.js +255 -0
  96. package/dist/harness/skills.js.map +1 -0
  97. package/dist/harness/system-prompt.d.ts +3 -0
  98. package/dist/harness/system-prompt.d.ts.map +1 -0
  99. package/dist/harness/system-prompt.js +30 -0
  100. package/dist/harness/system-prompt.js.map +1 -0
  101. package/dist/harness/types.d.ts +578 -0
  102. package/dist/harness/types.d.ts.map +1 -0
  103. package/dist/harness/types.js +56 -0
  104. package/dist/harness/types.js.map +1 -0
  105. package/dist/harness/utils/shell-output.d.ts +14 -0
  106. package/dist/harness/utils/shell-output.d.ts.map +1 -0
  107. package/dist/harness/utils/shell-output.js +125 -0
  108. package/dist/harness/utils/shell-output.js.map +1 -0
  109. package/dist/harness/utils/truncate.d.ts +70 -0
  110. package/dist/harness/utils/truncate.d.ts.map +1 -0
  111. package/dist/harness/utils/truncate.js +288 -0
  112. package/dist/harness/utils/truncate.js.map +1 -0
  113. package/dist/index.d.ts +15 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +16 -0
  116. package/dist/index.js.map +1 -1
  117. package/dist/node.d.ts +3 -0
  118. package/dist/node.d.ts.map +1 -0
  119. package/dist/node.js +3 -0
  120. package/dist/node.js.map +1 -0
  121. package/dist/proxy.d.ts.map +1 -1
  122. package/dist/proxy.js +5 -2
  123. package/dist/proxy.js.map +1 -1
  124. package/dist/types.d.ts +50 -4
  125. package/dist/types.d.ts.map +1 -1
  126. package/dist/types.js.map +1 -1
  127. package/package.json +19 -2
@@ -0,0 +1,578 @@
1
+ import type { ImageContent, Model, SimpleStreamOptions, TextContent, Transport } from "@eminent337/aery-ai";
2
+ import type { AgentEvent, AgentMessage, AgentTool, QueueMode, ThinkingLevel } from "../index.js";
3
+ import type { Session } from "./session/session.js";
4
+ /** Result of a fallible operation. Expected failures are returned as `ok: false` instead of thrown. */
5
+ export type Result<TValue, TError> = {
6
+ ok: true;
7
+ value: TValue;
8
+ } | {
9
+ ok: false;
10
+ error: TError;
11
+ };
12
+ /** Create a successful {@link Result}. */
13
+ export declare function ok<TValue, TError>(value: TValue): Result<TValue, TError>;
14
+ /** Create a failed {@link Result}. */
15
+ export declare function err<TValue, TError>(error: TError): Result<TValue, TError>;
16
+ /** Return the success value or throw the failure error. Intended for tests and explicit adapter boundaries. */
17
+ export declare function getOrThrow<TValue, TError>(result: Result<TValue, TError>): TValue;
18
+ /** Return the success value or `undefined`. Only object values are allowed to avoid truthiness bugs with primitives. */
19
+ export declare function getOrUndefined<TValue extends object, TError>(result: Result<TValue, TError>): TValue | undefined;
20
+ /**
21
+ * Skill loaded from a `SKILL.md` file or provided by an application.
22
+ *
23
+ * `name`, `description`, and `filePath` are inserted into the system prompt in an XML-formatted block as suggested by agentskills.io.
24
+ * Use {@link formatSkillsForSystemPrompt} to generate the spec-compatible system prompt block.
25
+ */
26
+ export interface Skill {
27
+ /** Stable skill name used for lookup and model-visible listings. */
28
+ name: string;
29
+ /** Short model-visible description of when to use the skill. */
30
+ description: string;
31
+ /** Full skill instructions. */
32
+ content: string;
33
+ /** Absolute path to the skill file. Used for model-visible location and resolving relative references. */
34
+ filePath: string;
35
+ /** Exclude this skill from model-visible skill lists while still allowing explicit application invocation. */
36
+ disableModelInvocation?: boolean;
37
+ }
38
+ /** Prompt template that can be formatted into a prompt for explicit invocation. */
39
+ export interface PromptTemplate {
40
+ /** Stable template name used for lookup or application command routing. */
41
+ name: string;
42
+ /** Optional description for command lists or autocomplete. */
43
+ description?: string;
44
+ /** Template content. Argument placeholders are formatted by `formatPromptTemplateInvocation`. */
45
+ content: string;
46
+ }
47
+ /** Resources made available to explicit invocation methods and system-prompt callbacks. */
48
+ export interface AgentHarnessResources<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
49
+ /** Prompt templates available for explicit invocation. */
50
+ promptTemplates?: TPromptTemplate[];
51
+ /** Skills available to the model and explicit skill invocation. */
52
+ skills?: TSkill[];
53
+ }
54
+ /** Curated provider request options owned by the harness and snapshotted per turn. */
55
+ export interface AgentHarnessStreamOptions {
56
+ /** Preferred transport forwarded to the stream function. */
57
+ transport?: Transport;
58
+ /** Provider request timeout in milliseconds. */
59
+ timeoutMs?: number;
60
+ /** Maximum provider retry attempts. */
61
+ maxRetries?: number;
62
+ /** Optional cap for provider-requested retry delays. */
63
+ maxRetryDelayMs?: number;
64
+ /** Additional request headers merged with auth and lifecycle headers. */
65
+ headers?: Record<string, string>;
66
+ /** Provider metadata forwarded with requests. */
67
+ metadata?: SimpleStreamOptions["metadata"];
68
+ /** Provider cache retention hint. */
69
+ cacheRetention?: SimpleStreamOptions["cacheRetention"];
70
+ }
71
+ /** Per-request stream option patch returned by provider hooks. */
72
+ export interface AgentHarnessStreamOptionsPatch extends Omit<Partial<AgentHarnessStreamOptions>, "headers" | "metadata"> {
73
+ /** Header patch. `undefined` values delete keys; explicit `headers: undefined` clears all headers. */
74
+ headers?: Record<string, string | undefined>;
75
+ /** Metadata patch. `undefined` values delete keys; explicit `metadata: undefined` clears all metadata. */
76
+ metadata?: Record<string, unknown | undefined>;
77
+ }
78
+ /** Kind of filesystem object as addressed by a {@link FileSystem}. Symlinks are not followed automatically. */
79
+ export type FileKind = "file" | "directory" | "symlink";
80
+ /** Stable, backend-independent file error codes returned by {@link FileSystem} file operations. */
81
+ export type FileErrorCode = "aborted" | "not_found" | "permission_denied" | "not_directory" | "is_directory" | "invalid" | "not_supported" | "unknown";
82
+ /** Error returned by {@link FileSystem} file operations. */
83
+ export declare class FileError extends Error {
84
+ /** Backend-independent error code. */
85
+ code: FileErrorCode;
86
+ /** Absolute addressed path associated with the failure, when available. */
87
+ path?: string | undefined;
88
+ constructor(
89
+ /** Backend-independent error code. */
90
+ code: FileErrorCode, message: string,
91
+ /** Absolute addressed path associated with the failure, when available. */
92
+ path?: string | undefined, cause?: unknown);
93
+ }
94
+ /** Stable, backend-independent execution error codes returned by {@link ExecutionEnv.exec}. */
95
+ export type ExecutionErrorCode = "aborted" | "timeout" | "shell_unavailable" | "spawn_error" | "unknown";
96
+ /** Error returned by {@link ExecutionEnv.exec}. */
97
+ export declare class ExecutionError extends Error {
98
+ /** Backend-independent error code. */
99
+ code: ExecutionErrorCode;
100
+ constructor(
101
+ /** Backend-independent error code. */
102
+ code: ExecutionErrorCode, message: string, cause?: unknown);
103
+ }
104
+ /** Stable compaction error codes returned by compaction helpers. */
105
+ export type CompactionErrorCode = "aborted" | "summarization_failed" | "invalid_session" | "unknown";
106
+ /** Error returned by compaction helpers. */
107
+ export declare class CompactionError extends Error {
108
+ /** Backend-independent error code. */
109
+ code: CompactionErrorCode;
110
+ constructor(
111
+ /** Backend-independent error code. */
112
+ code: CompactionErrorCode, message: string, cause?: unknown);
113
+ }
114
+ /** Metadata for one filesystem object in a {@link FileSystem}. */
115
+ export interface FileInfo {
116
+ /** Basename of {@link path}. */
117
+ name: string;
118
+ /** Absolute, syntactically normalized addressed path in the execution environment. Symlinks are not followed. */
119
+ path: string;
120
+ /** Object kind. Symlink targets are not followed; use {@link FileSystem.canonicalPath} explicitly. */
121
+ kind: FileKind;
122
+ /** Size in bytes for the addressed filesystem object. */
123
+ size: number;
124
+ /** Modification time as milliseconds since Unix epoch. */
125
+ mtimeMs: number;
126
+ }
127
+ /** Options for {@link Shell.exec}. */
128
+ export interface ExecutionEnvExecOptions {
129
+ /** Working directory for the command. Relative paths are resolved against {@link ExecutionEnv.cwd}. Defaults to {@link ExecutionEnv.cwd}. */
130
+ cwd?: string;
131
+ /** Additional environment variables for the command. Values override the environment defaults. Defaults to no overrides. */
132
+ env?: Record<string, string>;
133
+ /** Timeout in seconds. Implementations should return a timeout error when the command exceeds this duration. Defaults to no timeout. */
134
+ timeout?: number;
135
+ /** Abort signal used to terminate the command. Defaults to no abort signal. */
136
+ abortSignal?: AbortSignal;
137
+ /** Called with stdout chunks as they are produced. */
138
+ onStdout?: (chunk: string) => void;
139
+ /** Called with stderr chunks as they are produced. */
140
+ onStderr?: (chunk: string) => void;
141
+ }
142
+ /**
143
+ * Filesystem capability used by the harness.
144
+ *
145
+ * Paths passed to methods may be absolute or relative to {@link cwd}. Paths returned by file operations are addressed paths
146
+ * in the filesystem namespace, but are not canonicalized through symlinks unless returned by {@link canonicalPath}.
147
+ *
148
+ * Operation methods must never throw or reject. All filesystem failures, including unexpected backend failures, must be
149
+ * encoded in the returned {@link Result}. Implementations must preserve this invariant.
150
+ */
151
+ export interface FileSystem {
152
+ /** Current working directory for relative paths. */
153
+ cwd: string;
154
+ /** Return an absolute addressed path without requiring it to exist and without resolving symlinks. */
155
+ absolutePath(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
156
+ /** Join path segments in the filesystem namespace without requiring the result to exist. */
157
+ joinPath(parts: string[], abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
158
+ /** Read a UTF-8 text file. */
159
+ readTextFile(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
160
+ /** Read a binary file. */
161
+ readBinaryFile(path: string, abortSignal?: AbortSignal): Promise<Result<Uint8Array, FileError>>;
162
+ /** Create or overwrite a file, creating parent directories when supported. */
163
+ writeFile(path: string, content: string | Uint8Array, abortSignal?: AbortSignal): Promise<Result<void, FileError>>;
164
+ /** Create or append to a file, creating parent directories when supported. */
165
+ appendFile(path: string, content: string | Uint8Array, abortSignal?: AbortSignal): Promise<Result<void, FileError>>;
166
+ /** Return metadata for the addressed path without following symlinks. */
167
+ fileInfo(path: string, abortSignal?: AbortSignal): Promise<Result<FileInfo, FileError>>;
168
+ /** List direct children of a directory without following symlinks. */
169
+ listDir(path: string, abortSignal?: AbortSignal): Promise<Result<FileInfo[], FileError>>;
170
+ /** Return the canonical path for an existing path, resolving symlinks where supported. */
171
+ canonicalPath(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
172
+ /** Return false for missing paths. Other errors, such as permission failures, return a {@link FileError}. */
173
+ exists(path: string, abortSignal?: AbortSignal): Promise<Result<boolean, FileError>>;
174
+ /** Create a directory. Defaults: `recursive: true`, no abort signal. */
175
+ createDir(path: string, options?: {
176
+ recursive?: boolean;
177
+ abortSignal?: AbortSignal;
178
+ }): Promise<Result<void, FileError>>;
179
+ /** Remove a file or directory. Defaults: `recursive: false`, `force: false`, no abort signal. */
180
+ remove(path: string, options?: {
181
+ recursive?: boolean;
182
+ force?: boolean;
183
+ abortSignal?: AbortSignal;
184
+ }): Promise<Result<void, FileError>>;
185
+ /** Create a temporary directory and return its absolute path. Defaults: `prefix: "tmp-"`, no abort signal. */
186
+ createTempDir(prefix?: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
187
+ /** Create a temporary file and return its absolute path. Defaults: `prefix: ""`, `suffix: ""`, no abort signal. */
188
+ createTempFile(options?: {
189
+ prefix?: string;
190
+ suffix?: string;
191
+ abortSignal?: AbortSignal;
192
+ }): Promise<Result<string, FileError>>;
193
+ /** Release filesystem resources. Must be best-effort and must not throw or reject. */
194
+ cleanup(): Promise<void>;
195
+ }
196
+ /** Shell execution capability used by the harness. */
197
+ export interface Shell {
198
+ /** Execute a shell command in {@link FileSystem.cwd} unless `options.cwd` is provided. */
199
+ exec(command: string, options?: ExecutionEnvExecOptions): Promise<Result<{
200
+ stdout: string;
201
+ stderr: string;
202
+ exitCode: number;
203
+ }, ExecutionError>>;
204
+ /** Release shell resources. Must be best-effort and must not throw or reject. */
205
+ cleanup(): Promise<void>;
206
+ }
207
+ /** Filesystem and process execution environment used by the harness. */
208
+ export interface ExecutionEnv extends FileSystem, Shell {
209
+ }
210
+ export interface SessionTreeEntryBase {
211
+ type: string;
212
+ id: string;
213
+ parentId: string | null;
214
+ timestamp: string;
215
+ }
216
+ export interface MessageEntry extends SessionTreeEntryBase {
217
+ type: "message";
218
+ message: AgentMessage;
219
+ }
220
+ export interface ThinkingLevelChangeEntry extends SessionTreeEntryBase {
221
+ type: "thinking_level_change";
222
+ thinkingLevel: string;
223
+ }
224
+ export interface ModelChangeEntry extends SessionTreeEntryBase {
225
+ type: "model_change";
226
+ provider: string;
227
+ modelId: string;
228
+ }
229
+ export interface CompactionEntry<T = unknown> extends SessionTreeEntryBase {
230
+ type: "compaction";
231
+ summary: string;
232
+ firstKeptEntryId: string;
233
+ tokensBefore: number;
234
+ details?: T;
235
+ fromHook?: boolean;
236
+ }
237
+ export interface BranchSummaryEntry<T = unknown> extends SessionTreeEntryBase {
238
+ type: "branch_summary";
239
+ fromId: string;
240
+ summary: string;
241
+ details?: T;
242
+ fromHook?: boolean;
243
+ }
244
+ export interface CustomEntry<T = unknown> extends SessionTreeEntryBase {
245
+ type: "custom";
246
+ customType: string;
247
+ data?: T;
248
+ }
249
+ export interface CustomMessageEntry<T = unknown> extends SessionTreeEntryBase {
250
+ type: "custom_message";
251
+ customType: string;
252
+ content: string | (TextContent | ImageContent)[];
253
+ details?: T;
254
+ display: boolean;
255
+ }
256
+ export interface LabelEntry extends SessionTreeEntryBase {
257
+ type: "label";
258
+ targetId: string;
259
+ label: string | undefined;
260
+ }
261
+ export interface SessionInfoEntry extends SessionTreeEntryBase {
262
+ type: "session_info";
263
+ name?: string;
264
+ }
265
+ export type SessionTreeEntry = MessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry;
266
+ export interface SessionContext {
267
+ messages: AgentMessage[];
268
+ thinkingLevel: string;
269
+ model: {
270
+ provider: string;
271
+ modelId: string;
272
+ } | null;
273
+ }
274
+ export interface SessionMetadata {
275
+ id: string;
276
+ createdAt: string;
277
+ }
278
+ export interface JsonlSessionMetadata extends SessionMetadata {
279
+ cwd: string;
280
+ path: string;
281
+ parentSessionPath?: string;
282
+ }
283
+ export interface SessionStorage<TMetadata extends SessionMetadata = SessionMetadata> {
284
+ getMetadata(): Promise<TMetadata>;
285
+ getLeafId(): Promise<string | null>;
286
+ setLeafId(leafId: string | null): Promise<void>;
287
+ createEntryId(): Promise<string>;
288
+ appendEntry(entry: SessionTreeEntry): Promise<void>;
289
+ getEntry(id: string): Promise<SessionTreeEntry | undefined>;
290
+ findEntries<TType extends SessionTreeEntry["type"]>(type: TType): Promise<Array<Extract<SessionTreeEntry, {
291
+ type: TType;
292
+ }>>>;
293
+ getLabel(id: string): Promise<string | undefined>;
294
+ getPathToRoot(leafId: string | null): Promise<SessionTreeEntry[]>;
295
+ getEntries(): Promise<SessionTreeEntry[]>;
296
+ }
297
+ export type { Session } from "./session/session.js";
298
+ export interface SessionCreateOptions {
299
+ id?: string;
300
+ }
301
+ export interface SessionForkOptions {
302
+ entryId?: string;
303
+ position?: "before" | "at";
304
+ id?: string;
305
+ }
306
+ export interface SessionRepo<TMetadata extends SessionMetadata = SessionMetadata, TCreateOptions extends SessionCreateOptions = SessionCreateOptions, TListOptions = void> {
307
+ create(options: TCreateOptions): Promise<Session<TMetadata>>;
308
+ open(metadata: TMetadata): Promise<Session<TMetadata>>;
309
+ list(options?: TListOptions): Promise<TMetadata[]>;
310
+ delete(metadata: TMetadata): Promise<void>;
311
+ fork(source: TMetadata, options: SessionForkOptions & TCreateOptions): Promise<Session<TMetadata>>;
312
+ }
313
+ export interface JsonlSessionCreateOptions extends SessionCreateOptions {
314
+ cwd: string;
315
+ parentSessionPath?: string;
316
+ }
317
+ export interface JsonlSessionListOptions {
318
+ cwd?: string;
319
+ }
320
+ export interface JsonlSessionRepoApi extends SessionRepo<JsonlSessionMetadata, JsonlSessionCreateOptions, JsonlSessionListOptions> {
321
+ }
322
+ export type AgentHarnessPhase = "idle" | "turn" | "compaction" | "branch_summary" | "retry";
323
+ export type PendingSessionWrite = SessionTreeEntry extends infer TEntry ? TEntry extends SessionTreeEntry ? Omit<TEntry, "id" | "parentId" | "timestamp"> : never : never;
324
+ export interface QueueUpdateEvent {
325
+ type: "queue_update";
326
+ steer: AgentMessage[];
327
+ followUp: AgentMessage[];
328
+ nextTurn: AgentMessage[];
329
+ }
330
+ export interface SavePointEvent {
331
+ type: "save_point";
332
+ hadPendingMutations: boolean;
333
+ }
334
+ export interface AbortEvent {
335
+ type: "abort";
336
+ clearedSteer: AgentMessage[];
337
+ clearedFollowUp: AgentMessage[];
338
+ }
339
+ export interface SettledEvent {
340
+ type: "settled";
341
+ nextTurnCount: number;
342
+ }
343
+ export interface BeforeAgentStartEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
344
+ type: "before_agent_start";
345
+ prompt: string;
346
+ images?: ImageContent[];
347
+ systemPrompt: string;
348
+ resources: AgentHarnessResources<TSkill, TPromptTemplate>;
349
+ }
350
+ export interface ContextEvent {
351
+ type: "context";
352
+ messages: AgentMessage[];
353
+ }
354
+ export interface BeforeProviderRequestEvent {
355
+ type: "before_provider_request";
356
+ model: Model<any>;
357
+ sessionId: string;
358
+ streamOptions: AgentHarnessStreamOptions;
359
+ }
360
+ export interface BeforeProviderPayloadEvent {
361
+ type: "before_provider_payload";
362
+ model: Model<any>;
363
+ payload: unknown;
364
+ }
365
+ export interface AfterProviderResponseEvent {
366
+ type: "after_provider_response";
367
+ status: number;
368
+ headers: Record<string, string>;
369
+ }
370
+ export interface ToolCallEvent {
371
+ type: "tool_call";
372
+ toolCallId: string;
373
+ toolName: string;
374
+ input: Record<string, unknown>;
375
+ }
376
+ export interface ToolResultEvent {
377
+ type: "tool_result";
378
+ toolCallId: string;
379
+ toolName: string;
380
+ input: Record<string, unknown>;
381
+ content: Array<TextContent | ImageContent>;
382
+ details: unknown;
383
+ isError: boolean;
384
+ }
385
+ export interface SessionBeforeCompactEvent {
386
+ type: "session_before_compact";
387
+ preparation: CompactionPreparation;
388
+ branchEntries: SessionTreeEntry[];
389
+ customInstructions?: string;
390
+ signal: AbortSignal;
391
+ }
392
+ export interface SessionCompactEvent {
393
+ type: "session_compact";
394
+ compactionEntry: CompactionEntry;
395
+ fromHook: boolean;
396
+ }
397
+ export interface SessionBeforeTreeEvent {
398
+ type: "session_before_tree";
399
+ preparation: TreePreparation;
400
+ signal: AbortSignal;
401
+ }
402
+ export interface SessionTreeEvent {
403
+ type: "session_tree";
404
+ newLeafId: string | null;
405
+ oldLeafId: string | null;
406
+ summaryEntry?: BranchSummaryEntry;
407
+ fromHook?: boolean;
408
+ }
409
+ export interface ModelSelectEvent {
410
+ type: "model_select";
411
+ model: Model<any>;
412
+ previousModel: Model<any> | undefined;
413
+ source: "set" | "restore";
414
+ }
415
+ export interface ThinkingLevelSelectEvent {
416
+ type: "thinking_level_select";
417
+ level: ThinkingLevel;
418
+ previousLevel: ThinkingLevel;
419
+ }
420
+ export interface ResourcesUpdateEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
421
+ type: "resources_update";
422
+ resources: AgentHarnessResources<TSkill, TPromptTemplate>;
423
+ previousResources: AgentHarnessResources<TSkill, TPromptTemplate>;
424
+ }
425
+ export type AgentHarnessOwnEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> = QueueUpdateEvent | SavePointEvent | AbortEvent | SettledEvent | BeforeAgentStartEvent<TSkill, TPromptTemplate> | ContextEvent | BeforeProviderRequestEvent | BeforeProviderPayloadEvent | AfterProviderResponseEvent | ToolCallEvent | ToolResultEvent | SessionBeforeCompactEvent | SessionCompactEvent | SessionBeforeTreeEvent | SessionTreeEvent | ModelSelectEvent | ThinkingLevelSelectEvent | ResourcesUpdateEvent<TSkill, TPromptTemplate>;
426
+ export type AgentHarnessEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> = AgentEvent | AgentHarnessOwnEvent<TSkill, TPromptTemplate>;
427
+ export interface BeforeAgentStartResult {
428
+ messages?: AgentMessage[];
429
+ systemPrompt?: string;
430
+ }
431
+ export interface ContextResult {
432
+ messages: AgentMessage[];
433
+ }
434
+ export interface BeforeProviderRequestResult {
435
+ streamOptions?: AgentHarnessStreamOptionsPatch;
436
+ }
437
+ export interface BeforeProviderPayloadResult {
438
+ payload: unknown;
439
+ }
440
+ export interface ToolCallResult {
441
+ block?: boolean;
442
+ reason?: string;
443
+ }
444
+ export interface ToolResultPatch {
445
+ content?: Array<TextContent | ImageContent>;
446
+ details?: unknown;
447
+ isError?: boolean;
448
+ terminate?: boolean;
449
+ }
450
+ export interface SessionBeforeCompactResult {
451
+ cancel?: boolean;
452
+ compaction?: CompactResult;
453
+ }
454
+ export interface SessionBeforeTreeResult {
455
+ cancel?: boolean;
456
+ summary?: {
457
+ summary: string;
458
+ details?: unknown;
459
+ };
460
+ customInstructions?: string;
461
+ replaceInstructions?: boolean;
462
+ label?: string;
463
+ }
464
+ export type AgentHarnessEventResultMap = {
465
+ before_agent_start: BeforeAgentStartResult | undefined;
466
+ context: ContextResult | undefined;
467
+ before_provider_request: BeforeProviderRequestResult | undefined;
468
+ before_provider_payload: BeforeProviderPayloadResult | undefined;
469
+ after_provider_response: undefined;
470
+ tool_call: ToolCallResult | undefined;
471
+ tool_result: ToolResultPatch | undefined;
472
+ session_before_compact: SessionBeforeCompactResult | undefined;
473
+ session_compact: undefined;
474
+ session_before_tree: SessionBeforeTreeResult | undefined;
475
+ session_tree: undefined;
476
+ model_select: undefined;
477
+ thinking_level_select: undefined;
478
+ resources_update: undefined;
479
+ queue_update: undefined;
480
+ save_point: undefined;
481
+ abort: undefined;
482
+ settled: undefined;
483
+ };
484
+ export interface AgentHarnessPromptOptions {
485
+ images?: ImageContent[];
486
+ }
487
+ export interface AbortResult {
488
+ clearedSteer: AgentMessage[];
489
+ clearedFollowUp: AgentMessage[];
490
+ }
491
+ export interface CompactResult {
492
+ summary: string;
493
+ firstKeptEntryId: string;
494
+ tokensBefore: number;
495
+ details?: unknown;
496
+ }
497
+ export interface NavigateTreeResult {
498
+ cancelled: boolean;
499
+ editorText?: string;
500
+ summaryEntry?: BranchSummaryEntry;
501
+ }
502
+ export interface CompactionSettings {
503
+ enabled: boolean;
504
+ reserveTokens: number;
505
+ keepRecentTokens: number;
506
+ }
507
+ export interface CompactionPreparation {
508
+ firstKeptEntryId: string;
509
+ messagesToSummarize: AgentMessage[];
510
+ turnPrefixMessages: AgentMessage[];
511
+ isSplitTurn: boolean;
512
+ tokensBefore: number;
513
+ previousSummary?: string;
514
+ fileOps: FileOperations;
515
+ settings: CompactionSettings;
516
+ }
517
+ export interface FileOperations {
518
+ read: Set<string>;
519
+ written: Set<string>;
520
+ edited: Set<string>;
521
+ }
522
+ export interface TreePreparation {
523
+ targetId: string;
524
+ oldLeafId: string | null;
525
+ commonAncestorId: string | null;
526
+ entriesToSummarize: SessionTreeEntry[];
527
+ userWantsSummary: boolean;
528
+ customInstructions?: string;
529
+ replaceInstructions?: boolean;
530
+ label?: string;
531
+ }
532
+ export interface GenerateBranchSummaryOptions {
533
+ model: Model<any>;
534
+ apiKey: string;
535
+ headers?: Record<string, string>;
536
+ signal: AbortSignal;
537
+ customInstructions?: string;
538
+ replaceInstructions?: boolean;
539
+ reserveTokens?: number;
540
+ }
541
+ export interface BranchSummaryResult {
542
+ summary?: string;
543
+ readFiles?: string[];
544
+ modifiedFiles?: string[];
545
+ aborted?: boolean;
546
+ error?: string;
547
+ }
548
+ export interface AgentHarnessOptions<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate, TTool extends AgentTool = AgentTool> {
549
+ env: ExecutionEnv;
550
+ session: Session;
551
+ tools?: TTool[];
552
+ /**
553
+ * Concrete resources available to explicit invocation methods and system-prompt callbacks.
554
+ * Applications own loading/reloading resources and should call `setResources()` with new values.
555
+ */
556
+ resources?: AgentHarnessResources<TSkill, TPromptTemplate>;
557
+ systemPrompt?: string | ((context: {
558
+ env: ExecutionEnv;
559
+ session: Session;
560
+ model: Model<any>;
561
+ thinkingLevel: ThinkingLevel;
562
+ activeTools: TTool[];
563
+ resources: AgentHarnessResources<TSkill, TPromptTemplate>;
564
+ }) => string | Promise<string>);
565
+ getApiKeyAndHeaders?: (model: Model<any>) => Promise<{
566
+ apiKey: string;
567
+ headers?: Record<string, string>;
568
+ } | undefined>;
569
+ /** Curated stream/provider request options. Snapshotted at turn start. */
570
+ streamOptions?: AgentHarnessStreamOptions;
571
+ model: Model<any>;
572
+ thinkingLevel?: ThinkingLevel;
573
+ activeToolNames?: string[];
574
+ steeringMode?: QueueMode;
575
+ followUpMode?: QueueMode;
576
+ }
577
+ export type { AgentHarness } from "./agent-harness.js";
578
+ //# sourceMappingURL=types.d.ts.map