goatchain 0.0.24 → 0.0.26

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 (54) hide show
  1. package/README.md +247 -72
  2. package/dist/agent/agent.d.ts +4 -4
  3. package/dist/agent/hooks/index.d.ts +1 -1
  4. package/dist/agent/hooks/manager.d.ts +10 -3
  5. package/dist/agent/hooks/types.d.ts +95 -8
  6. package/dist/agent/index.d.ts +3 -2
  7. package/dist/agent/middleware.d.ts +31 -2
  8. package/dist/agent/tokenCounter.d.ts +48 -2
  9. package/dist/agent/types.d.ts +15 -1
  10. package/dist/index.d.ts +12 -4
  11. package/dist/index.js +618 -467
  12. package/dist/lib/access-control/index.d.ts +1 -1
  13. package/dist/lib/access-control/policies.d.ts +10 -0
  14. package/dist/lib/session-blob.d.ts +50 -0
  15. package/dist/mcp-client/manager.d.ts +2 -0
  16. package/dist/middleware/attachmentMiddleware.d.ts +34 -0
  17. package/dist/middleware/commitModeMiddleware.d.ts +1 -1
  18. package/dist/middleware/contextCompressionMiddleware.d.ts +28 -2
  19. package/dist/middleware/envInfoMiddleware.d.ts +6 -0
  20. package/dist/middleware/gitUtils.d.ts +4 -0
  21. package/dist/middleware/longRunningMiddleware.d.ts +100 -0
  22. package/dist/middleware/parallelSubagentMiddleware.d.ts +2 -2
  23. package/dist/middleware/planModeMiddleware.d.ts +3 -3
  24. package/dist/middleware/reviewMiddleware.d.ts +1 -1
  25. package/dist/middleware/skillsMiddleware.d.ts +8 -0
  26. package/dist/model/anthropic/createAnthropicAdapter.d.ts +1 -1
  27. package/dist/model/codex/createCodexAdapter.d.ts +1 -1
  28. package/dist/model/index.d.ts +2 -0
  29. package/dist/model/openai/createOpenAIResponsesAdapter.d.ts +28 -0
  30. package/dist/session/completion/composite.d.ts +25 -0
  31. package/dist/session/completion/index.d.ts +8 -0
  32. package/dist/session/completion/strategies/reflection-decision-tool.d.ts +51 -0
  33. package/dist/session/completion/strategies/rule-based.d.ts +16 -0
  34. package/dist/session/completion/strategies/self-reflection.d.ts +54 -0
  35. package/dist/session/completion/strategies/todo-based.d.ts +17 -0
  36. package/dist/session/completion/types.d.ts +53 -0
  37. package/dist/session/executors/ToolExecutor.d.ts +4 -4
  38. package/dist/session/session.d.ts +9 -0
  39. package/dist/state/types.d.ts +3 -2
  40. package/dist/subagent/index.d.ts +1 -0
  41. package/dist/subagent/self-reflection-critic.d.ts +35 -0
  42. package/dist/tool/builtin/bash.d.ts +24 -0
  43. package/dist/tool/builtin/edit.d.ts +12 -0
  44. package/dist/tool/builtin/index.d.ts +2 -2
  45. package/dist/tool/builtin/pathProtection.d.ts +25 -0
  46. package/dist/tool/builtin/read.d.ts +69 -112
  47. package/dist/tool/builtin/task.d.ts +8 -0
  48. package/dist/tool/builtin/webFetch.d.ts +27 -4
  49. package/dist/tool/builtin/write.d.ts +15 -0
  50. package/dist/tool/index.d.ts +2 -2
  51. package/dist/types/common.d.ts +35 -0
  52. package/dist/types/event.d.ts +55 -3
  53. package/dist/types/snapshot.d.ts +1 -1
  54. package/package.json +4 -2
@@ -1,23 +1,110 @@
1
+ import type { ModelStopReason } from '../../model/types';
1
2
  import type { ToolExecutionContext } from '../../tool';
2
- import type { ToolCall } from '../../types';
3
- export interface HookContext {
3
+ import type { Message, MessageContent, ToolCall, Usage } from '../../types';
4
+ export interface BaseHookContext {
4
5
  sessionId: string;
6
+ }
7
+ /**
8
+ * Context for tool-level hooks (PermissionRequest, PreToolUse, PostToolUse, PostToolUseFailure).
9
+ * Also exported as `HookContext` for backward compatibility.
10
+ */
11
+ export interface ToolHookContext extends BaseHookContext {
5
12
  toolCall: ToolCall;
6
13
  toolContext: ToolExecutionContext;
7
14
  }
8
- export interface PreToolUseResult {
15
+ /** @deprecated Use `ToolHookContext` instead. Kept for backward compatibility. */
16
+ export type HookContext = ToolHookContext;
17
+ export interface SessionStartContext extends BaseHookContext {
18
+ /** Whether this run starts from a new session or a resumed state/checkpoint. */
19
+ startReason: 'new' | 'resume';
20
+ /** Existing conversation messages at the time session start fires (excludes system prompt). */
21
+ messages: Message[];
22
+ }
23
+ export interface StopContext extends BaseHookContext {
24
+ stopReason: 'max_iterations' | 'final_response' | 'error' | 'cancelled' | 'approval_required' | 'max_follow_ups';
9
25
  /**
10
- * If true, allows the tool to execute and skips the approval flow.
26
+ * Stop reason reported by the latest model response, when available.
27
+ * Useful for distinguishing `tool_call` vs `final` in per-LLM stop hooks.
28
+ */
29
+ modelStopReason?: ModelStopReason;
30
+ finalResponse?: string;
31
+ usage: Usage;
32
+ error?: {
33
+ code?: string;
34
+ message: string;
35
+ };
36
+ /** Full conversation messages at the time of stop (excludes system prompt). */
37
+ messages: Message[];
38
+ }
39
+ export interface SubagentStopContext extends BaseHookContext {
40
+ subagentId: string;
41
+ subagentType: string;
42
+ result?: unknown;
43
+ error?: Error;
44
+ durationMs: number;
45
+ usage?: Usage;
46
+ /** Full conversation messages from the subagent's session (excludes system prompt). */
47
+ messages: Message[];
48
+ }
49
+ export interface SubagentStartContext extends BaseHookContext {
50
+ subagentId: string;
51
+ subagentType: string;
52
+ taskDescription?: string;
53
+ prompt: string;
54
+ }
55
+ export interface UserPromptSubmitContext extends BaseHookContext {
56
+ input: MessageContent;
57
+ }
58
+ export interface SessionEndContext extends BaseHookContext {
59
+ stopReason: StopContext['stopReason'];
60
+ finalResponse?: string;
61
+ usage: Usage;
62
+ durationMs: number;
63
+ error?: {
64
+ code?: string;
65
+ message: string;
66
+ };
67
+ /** Full conversation messages at the time of session end (excludes system prompt). */
68
+ messages: Message[];
69
+ }
70
+ export interface PermissionRequestResult {
71
+ /**
72
+ * If true, passes permission checks and skips the approval flow.
73
+ * The tool still goes through normal middleware/disabled checks.
11
74
  * If false, blocks the tool execution immediately.
12
75
  */
13
76
  allow: boolean;
14
77
  modifiedToolCall?: ToolCall;
15
78
  }
16
- export type PreToolUseHook = (ctx: HookContext) => Promise<PreToolUseResult>;
17
- export type PostToolUseHook = (ctx: HookContext, result: unknown) => Promise<void>;
18
- export type PostToolUseFailureHook = (ctx: HookContext, error: Error) => Promise<void>;
19
- export interface ToolHooks {
79
+ export interface PreToolUseResult {
80
+ /** Optionally modify the tool call before execution. */
81
+ modifiedToolCall?: ToolCall;
82
+ }
83
+ export interface UserPromptSubmitResult {
84
+ allow: boolean;
85
+ modifiedInput?: MessageContent;
86
+ }
87
+ export type PermissionRequestHook = (ctx: ToolHookContext) => Promise<PermissionRequestResult>;
88
+ export type PreToolUseHook = (ctx: ToolHookContext) => Promise<PreToolUseResult | void>;
89
+ export type PostToolUseHook = (ctx: ToolHookContext, result: unknown) => Promise<void>;
90
+ export type PostToolUseFailureHook = (ctx: ToolHookContext, error: Error) => Promise<void>;
91
+ export type StopHook = (ctx: StopContext) => Promise<void>;
92
+ export type SessionStartHook = (ctx: SessionStartContext) => Promise<void>;
93
+ export type SessionEndHook = (ctx: SessionEndContext) => Promise<void>;
94
+ export type SubagentStartHook = (ctx: SubagentStartContext) => Promise<void>;
95
+ export type SubagentStopHook = (ctx: SubagentStopContext) => Promise<void>;
96
+ export type UserPromptSubmitHook = (ctx: UserPromptSubmitContext) => Promise<UserPromptSubmitResult>;
97
+ export interface AgentHooks {
98
+ sessionStart?: SessionStartHook;
99
+ permissionRequest?: PermissionRequestHook;
20
100
  preToolUse?: PreToolUseHook;
21
101
  postToolUse?: PostToolUseHook;
22
102
  postToolUseFailure?: PostToolUseFailureHook;
103
+ sessionEnd?: SessionEndHook;
104
+ stop?: StopHook;
105
+ subagentStart?: SubagentStartHook;
106
+ subagentStop?: SubagentStopHook;
107
+ userPromptSubmit?: UserPromptSubmitHook;
23
108
  }
109
+ /** @deprecated Use `AgentHooks` instead. Kept for backward compatibility. */
110
+ export type ToolHooks = AgentHooks;
@@ -6,9 +6,10 @@ export type { ToCheckpointOptions } from '../session/handlers/CheckpointManager'
6
6
  export { Agent } from './agent';
7
7
  export { AgentAbortError, AgentMaxIterationsError, AgentPauseError, ensureNotAborted } from './errors';
8
8
  export { HookManager } from './hooks';
9
- export type { HookContext, PostToolUseFailureHook, PostToolUseHook, PreToolUseHook, PreToolUseResult, ToolHooks, } from './hooks';
9
+ export type { AgentHooks, BaseHookContext, HookContext, PermissionRequestHook, PermissionRequestResult, PostToolUseFailureHook, PostToolUseHook, PreToolUseHook, PreToolUseResult, SessionEndContext, SessionEndHook, SessionStartContext, SessionStartHook, StopContext, StopHook, SubagentStartContext, SubagentStartHook, SubagentStopContext, SubagentStopHook, ToolHookContext, ToolHooks, UserPromptSubmitContext, UserPromptSubmitHook, UserPromptSubmitResult, } from './hooks';
10
10
  export { compose } from './middleware';
11
11
  export type { Middleware, NamedMiddleware, NextFunction } from './middleware';
12
- export { countContentTokens, countMessagesTokens, countMessageTokens, countTokens, estimateTokens, } from './tokenCounter';
12
+ export { countContentTokens, countMessagesTokens, countMessageTokens, countTokens, createCachedTokenCounter, estimateMessagesTokens, estimateTokens, } from './tokenCounter';
13
+ export type { CachedTokenCounter } from './tokenCounter';
13
14
  export { createInitialLoopState } from './types';
14
15
  export type { AgentInput, AgentLoopState, AgentOptions, CreateSessionOptions, SendOptions, SessionHandleOptions, ToolCallWithResult, } from './types';
@@ -62,7 +62,7 @@ export interface Middleware<State = AgentLoopState> {
62
62
  * // middleware logic...
63
63
  * return next(state);
64
64
  * };
65
- * middleware.__middlewareName = 'plan-mode';
65
+ * middleware.__middlewareName = 'plan_mode';
66
66
  * middleware.__createTools = () => [
67
67
  * new EnterPlanModeTool(),
68
68
  * new ExitPlanModeTool()
@@ -86,7 +86,7 @@ export interface Middleware<State = AgentLoopState> {
86
86
  * const middleware: Middleware = async (state, next) => {
87
87
  * return next(state);
88
88
  * };
89
- * middleware.__middlewareName = 'plan-mode';
89
+ * middleware.__middlewareName = 'plan_mode';
90
90
  * middleware.__getBlockedTools = (state) => {
91
91
  * // Only block tools when plan mode is active
92
92
  * return state.metadata?.planMode
@@ -96,6 +96,35 @@ export interface Middleware<State = AgentLoopState> {
96
96
  * ```
97
97
  */
98
98
  __getBlockedTools?: (state: State) => string[] | Set<string>;
99
+ /**
100
+ * Optional middleware function that runs AFTER the model response
101
+ * when there are no tool calls (the loop would normally stop).
102
+ *
103
+ * Receives state with `currentResponse`, `pendingToolCalls`, and
104
+ * `lastModelStopReason` already populated from the model call.
105
+ * Can set `shouldContinue = true` and inject follow-up messages
106
+ * into `messages` to continue the loop.
107
+ *
108
+ * Multiple middleware `__afterResponse` functions are composed using
109
+ * the same onion-model `compose()` pattern as the main middleware.
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * const middleware: Middleware = async (state, next) => {
114
+ * return next(state);
115
+ * };
116
+ * middleware.__afterResponse = async (state, next) => {
117
+ * const result = await next(state);
118
+ * // Inspect model response and decide continuation
119
+ * if (looksIncomplete(result.currentResponse)) {
120
+ * result.messages.push({ role: 'user', content: 'Please continue.' });
121
+ * result.shouldContinue = true;
122
+ * }
123
+ * return result;
124
+ * };
125
+ * ```
126
+ */
127
+ __afterResponse?: Middleware<State>;
99
128
  }
100
129
  /**
101
130
  * Named middleware wrapper
@@ -53,13 +53,59 @@ export declare function countMessageTokens(message: Message, model?: TiktokenMod
53
53
  */
54
54
  export declare function countMessagesTokens(messages: Message[], model?: TiktokenModel): number;
55
55
  /**
56
- * Estimate tokens from a string length.
57
- * Useful for quick estimates without calling tiktoken.
56
+ * Estimate tokens from a string using a multi-strategy heuristic.
57
+ *
58
+ * Takes the maximum of three estimates to conservatively estimate high
59
+ * for any language:
60
+ * - `byChars`: chars / 4 (English-optimized)
61
+ * - `byBytes`: UTF-8 bytes / 3 (CJK-optimized, 3 bytes per CJK char ~ 1 token)
62
+ * - `byMixed`: ASCII chars / 4 + non-ASCII chars * 0.9
58
63
  *
59
64
  * @param text - The text to estimate
60
65
  * @returns Estimated token count
61
66
  */
62
67
  export declare function estimateTokens(text: string): number;
68
+ export declare function estimateMessagesTokens(messages: Message[]): number;
69
+ /**
70
+ * A cached token counter that reuses a singleton tiktoken encoder
71
+ * and caches results per text string and per message reference.
72
+ *
73
+ * Use this for UI display paths where accurate counts are needed
74
+ * without the per-call overhead of creating/destroying encoders.
75
+ */
76
+ export interface CachedTokenCounter {
77
+ /** Count tokens in a string (cached by content). */
78
+ countTokens: (text: string) => number;
79
+ /** Count tokens in a single message (cached by object reference). */
80
+ countMessageTokens: (message: Message) => number;
81
+ /** Count tokens in a message array (sums per-message cached counts). */
82
+ countMessagesTokens: (messages: Message[]) => number;
83
+ /** Clear all caches. */
84
+ clearCache: () => void;
85
+ /** Free the tiktoken encoder and all caches. */
86
+ dispose: () => void;
87
+ }
88
+ /**
89
+ * Create a cached token counter with a singleton tiktoken encoder.
90
+ *
91
+ * The encoder is lazy-initialized on first use and reused for all
92
+ * subsequent calls, eliminating WASM instantiation overhead.
93
+ * Results are cached per text (LRU) and per message (WeakMap).
94
+ *
95
+ * Falls back to CJK-aware `estimateTokens` if tiktoken cannot be loaded.
96
+ *
97
+ * @param options - Optional cached counter configuration.
98
+ * @param options.model - Model name for encoding (default: gpt-4o)
99
+ * @param options.maxCacheSize - Maximum LRU cache entries (default: 500)
100
+ * @param options.maxCachableLength - Strings longer than this are counted
101
+ * but not cached, to avoid holding large tool outputs in memory (default: 4096)
102
+ */
103
+ export declare function createCachedTokenCounter(options?: {
104
+ model?: TiktokenModel;
105
+ maxCacheSize?: number;
106
+ /** Strings longer than this (in chars) are counted but not cached. Default: 4096. */
107
+ maxCachableLength?: number;
108
+ }): CachedTokenCounter;
63
109
  /**
64
110
  * @deprecated Use countTokens directly - encoder is now created and freed per call.
65
111
  */
@@ -73,7 +73,7 @@ export interface AgentLoopState {
73
73
  /**
74
74
  * Stop reason for debugging/logging.
75
75
  */
76
- stopReason?: 'max_iterations' | 'final_response' | 'error' | 'cancelled' | 'approval_required';
76
+ stopReason?: 'max_iterations' | 'final_response' | 'error' | 'cancelled' | 'approval_required' | 'max_follow_ups';
77
77
  /**
78
78
  * The stop reason reported by the most recent model call (if available).
79
79
  *
@@ -100,6 +100,20 @@ export interface AgentLoopState {
100
100
  * - planMode: boolean - Whether plan mode is active
101
101
  */
102
102
  metadata: Record<string, unknown>;
103
+ /**
104
+ * Number of follow-up rounds that have occurred in long_running mode.
105
+ * Incremented each time the completion assessor says "not complete"
106
+ * and a follow-up message is injected.
107
+ *
108
+ * Defaults to 0 when not set (backward compatible with existing code
109
+ * that constructs AgentLoopState manually without this field).
110
+ */
111
+ followUpRound?: number;
112
+ /**
113
+ * The original user input that started this run.
114
+ * Preserved for completion assessors to compare against.
115
+ */
116
+ originalInput?: MessageContent;
103
117
  /**
104
118
  * Flag to skip message snapshot restoration in checkpoint.
105
119
  * When true, Session will use `state.messages` directly for checkpoint persistence.
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  export * from './acp-adapter';
2
2
  export { Agent, AgentAbortError, AgentMaxIterationsError, compose, compressSessionManually, createContextCompressionMiddleware, createInitialLoopState, ensureNotAborted, extractPersistentMetadata, extractPersistentState, fromLoopCheckpoint, HookManager, toLoopCheckpoint, } from './agent';
3
- export type { AgentInput, AgentLoopState, AgentOptions, CompressionStats, ContextCompressionOptions, CreateSessionOptions, HookContext, ManualCompressionOptions, ManualCompressionResult, Middleware, NextFunction, PostToolUseFailureHook, PostToolUseHook, PreToolUseHook, PreToolUseResult, SendOptions, SessionHandleOptions, ToCheckpointOptions, ToolCallWithResult, ToolHooks, } from './agent';
3
+ export type { AgentHooks, AgentInput, AgentLoopState, AgentOptions, BaseHookContext, CompressionStats, ContextCompressionOptions, CreateSessionOptions, HookContext, ManualCompressionOptions, ManualCompressionResult, Middleware, NextFunction, PermissionRequestHook, PermissionRequestResult, PostToolUseFailureHook, PostToolUseHook, PreToolUseHook, PreToolUseResult, SessionEndContext, SessionEndHook, SessionStartContext, SessionStartHook, SendOptions, SessionHandleOptions, StopContext, StopHook, SubagentStartContext, SubagentStartHook, SubagentStopContext, SubagentStopHook, ToCheckpointOptions, ToolCallWithResult, ToolHookContext, ToolHooks, UserPromptSubmitContext, UserPromptSubmitHook, UserPromptSubmitResult, } from './agent';
4
4
  export { applyCcMockSystemPrompt, CCMOCK_SYSTEM_PROMPT_PREFIX, isCcMockEnabled, readCcMockFlag, } from './ccmock';
5
5
  export * from './mcp-client';
6
6
  export { createAgentRulesMiddleware } from './middleware/agentRulesMiddleware';
7
7
  export type { AgentRulesMiddlewareOptions } from './middleware/agentRulesMiddleware';
8
8
  export { createCommitModeMiddleware } from './middleware/commitModeMiddleware';
9
9
  export type { CommitModeMiddlewareOptions } from './middleware/commitModeMiddleware';
10
+ export { createAttachmentMiddleware } from './middleware/attachmentMiddleware';
11
+ export type { AttachmentMiddlewareOptions } from './middleware/attachmentMiddleware';
10
12
  export { createEnvInfoMiddleware } from './middleware/envInfoMiddleware';
11
13
  export type { EnvInfoMiddlewareOptions } from './middleware/envInfoMiddleware';
12
14
  export { createParallelSubagentMiddleware } from './middleware/parallelSubagentMiddleware';
@@ -17,16 +19,22 @@ export { createReviewModeMiddleware } from './middleware/reviewMiddleware';
17
19
  export type { ReviewModeMiddlewareOptions } from './middleware/reviewMiddleware';
18
20
  export { createSkillsMiddleware, parseSkillFile, scanMultipleSkillsDirectories, scanSkillsDirectory } from './middleware/skillsMiddleware';
19
21
  export type { ParsedSkill, SkillsMiddlewareOptions } from './middleware/skillsMiddleware';
22
+ export { createLongRunningMiddleware } from './middleware/longRunningMiddleware';
23
+ export type { LongRunningMiddlewareOptions, SelfReflectionOptions } from './middleware/longRunningMiddleware';
20
24
  export { injectSystemReminderToLastUserMessage, } from './middleware/utils';
21
25
  export * from './model';
22
26
  export type { OpenAITool } from './model';
23
27
  export { BaseSession, BaseSessionManager, Session } from './session';
28
+ export { CompositeAssessor, ReflectionDecisionTool, RuleBasedAssessor, SelfReflectionAssessor, TodoBasedAssessor, } from './session/completion';
29
+ export type { CompletionAssessment, CompletionAssessor, CompletionContext, ReflectionDecision, ReflectionDecisionCallback, SelfReflectionAssessorOptions, } from './session/completion';
24
30
  export { FileStateStore, InMemoryStateStore, StateKeys, StateStore, } from './state';
25
31
  export type { CompressionState, FileStateStoreOptions, StateKey, StateStoreOptions, } from './state';
26
32
  export * from './subagent';
27
33
  export { BaseTool, errorContent, FilteredToolRegistry, imageContent, textContent, ToolRegistry } from './tool';
28
- export { AskUserTool, BashTool, EditTool, GlobTool, GrepTool, ReadTool, TodoPlanTool, TodoWriteTool, WebFetchTool, WebSearchTool, WriteTool, } from './tool';
34
+ export { AskUserTool, BashTool, EditTool, GlobTool, GrepTool, ReadTool, TodoPlanTool, TodoWriteTool, softWrapLines, WebFetchTool, WebSearchTool, WriteTool, } from './tool';
29
35
  export type { BashArgs, BashResult, RiskLevel, ToolApprovalResult, ToolApprovalSettings, ToolApprovalStrategy, ToolExecutionContext, ToolExecutionContextInput, ToolRunUsage, } from './tool';
30
- export type { AskUserArgs, AskUserResult, EditArgs, EditResult, FetchFormat, GlobArgs, GlobResult, GrepArgs, GrepOutputMode, GrepResult, Question, QuestionOption, ReadArgs, ReadResult, TodoItem, TodoPlanArgs, TodoPlanResult, TodoStatus, TodoWriteArgs, TodoWriteResult, WebFetchArgs, WebFetchResult, WebSearchArgs, WebSearchResult, WriteArgs, WriteResult, } from './tool';
36
+ export type { AskUserArgs, AskUserResult, EditArgs, EditResult, DeliveryMode, FetchFormat, GlobArgs, GlobResult, GrepArgs, GrepOutputMode, GrepResult, Question, QuestionOption, ReadArgs, ReadResult, TodoItem, TodoPlanArgs, TodoPlanResult, TodoStatus, TodoWriteArgs, TodoWriteResult, WebFetchArgs, WebFetchResult, WebSearchArgs, WebSearchResult, WriteArgs, WriteResult, } from './tool';
31
37
  export * from './tool/converters';
32
- export type { AgentEvent, AgentEventType, AgentLoopCheckpoint, AssistantMessage, BaseEvent, CallToolResult, ContentBlock, DoneEvent, ImageContent, IterationEndEvent, IterationStartEvent, JSONSchemaProperty, Message, MessageContent, MessageRole, SystemMessage, TextContent, TextDeltaEvent, TextEndEvent, TextStartEvent, ThinkingDeltaEvent, Tool, ToolCall, ToolCallDeltaEvent, ToolCallEndEvent, ToolCallStartEvent, ToolMessage, ToolResultEvent, Usage, UserMessage, } from './types';
38
+ export { cacheTextToSessionBlob, cleanupExpiredSessionCaches, cleanupSessionCache, deleteSessionBlobByPath, normalizeSessionId, readBlobMeta, relocateSessionBlobPath, resolveBlobPathFromFileId, resolveSessionCacheDir, resolveStateDir, writeSessionBlob, } from './lib/session-blob';
39
+ export type { BlobLogger, SessionBlobWriteResult } from './lib/session-blob';
40
+ export type { AgentEvent, AgentEventType, AgentLoopCheckpoint, AssistantMessage, BaseEvent, CallToolResult, CompletionAssessedEvent, CompressionEndEvent, CompressionStartEvent, ContentBlock, DoneEvent, ImageContent, IterationEndEvent, IterationStartEvent, JSONSchemaProperty, Message, MessageContent, MessageRole, SystemMessage, TextContent, TextDeltaEvent, TextEndEvent, TextStartEvent, ThinkingDeltaEvent, Tool, ToolCall, ToolCallDeltaEvent, ToolCallEndEvent, ToolCallStartEvent, ToolMessage, ToolResultEvent, Usage, UserMessage, } from './types';