@vinhnt-sdk/core 0.1.1 → 0.1.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.
Files changed (179) hide show
  1. package/README.md +194 -12
  2. package/dist/agent/agent-factory.d.ts +11 -0
  3. package/dist/agent/agent-factory.d.ts.map +1 -1
  4. package/dist/agent/agent-factory.js +11 -2
  5. package/dist/agent/agent-factory.js.map +1 -1
  6. package/dist/agent/agent-registry.d.ts +3 -0
  7. package/dist/agent/agent-registry.d.ts.map +1 -1
  8. package/dist/agent/agent-registry.js.map +1 -1
  9. package/dist/agent/create-agent-tool.d.ts +13 -13
  10. package/dist/agent/create-agent-tool.d.ts.map +1 -1
  11. package/dist/agent/delegate-batch-tool.d.ts.map +1 -1
  12. package/dist/agent/delegate-batch-tool.js +1 -1
  13. package/dist/agent/delegate-batch-tool.js.map +1 -1
  14. package/dist/agent/delegate-tool.js +1 -1
  15. package/dist/agent/delegate-tool.js.map +1 -1
  16. package/dist/agent/execution-engine.d.ts +1 -1
  17. package/dist/agent/execution-engine.d.ts.map +1 -1
  18. package/dist/agent/spawn-agent-tool.d.ts +10 -10
  19. package/dist/agent/spawn-agent-tool.d.ts.map +1 -1
  20. package/dist/event-bus/bridge.d.ts +2 -3
  21. package/dist/event-bus/bridge.d.ts.map +1 -1
  22. package/dist/event-bus/bridge.js +12 -5
  23. package/dist/event-bus/bridge.js.map +1 -1
  24. package/dist/event-bus/global-bus.d.ts +8 -0
  25. package/dist/event-bus/global-bus.d.ts.map +1 -1
  26. package/dist/event-bus/global-bus.js +48 -0
  27. package/dist/event-bus/global-bus.js.map +1 -1
  28. package/dist/event-bus/in-memory-bus.d.ts +14 -0
  29. package/dist/event-bus/in-memory-bus.d.ts.map +1 -1
  30. package/dist/event-bus/in-memory-bus.js +53 -0
  31. package/dist/event-bus/in-memory-bus.js.map +1 -1
  32. package/dist/event-bus/types.d.ts +17 -0
  33. package/dist/event-bus/types.d.ts.map +1 -1
  34. package/dist/fakes/fake-approval-store.d.ts +2 -2
  35. package/dist/fakes/fake-approval-store.d.ts.map +1 -1
  36. package/dist/fakes/fake-approval-store.js +28 -6
  37. package/dist/fakes/fake-approval-store.js.map +1 -1
  38. package/dist/fakes/fake-model.d.ts.map +1 -1
  39. package/dist/fakes/fake-model.js +2 -1
  40. package/dist/fakes/fake-model.js.map +1 -1
  41. package/dist/fakes/fake-store.d.ts +4 -1
  42. package/dist/fakes/fake-store.d.ts.map +1 -1
  43. package/dist/fakes/fake-store.js +33 -0
  44. package/dist/fakes/fake-store.js.map +1 -1
  45. package/dist/index.d.ts +232 -109
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +191 -66
  48. package/dist/index.js.map +1 -1
  49. package/dist/kernel/approval-handler.d.ts +1 -1
  50. package/dist/kernel/approval-handler.d.ts.map +1 -1
  51. package/dist/kernel/approval-handler.js +5 -1
  52. package/dist/kernel/approval-handler.js.map +1 -1
  53. package/dist/kernel/circuit-breaker.d.ts +19 -1
  54. package/dist/kernel/circuit-breaker.d.ts.map +1 -1
  55. package/dist/kernel/circuit-breaker.js +54 -10
  56. package/dist/kernel/circuit-breaker.js.map +1 -1
  57. package/dist/kernel/kernel-error.d.ts +3 -2
  58. package/dist/kernel/kernel-error.d.ts.map +1 -1
  59. package/dist/kernel/kernel-error.js +5 -6
  60. package/dist/kernel/kernel-error.js.map +1 -1
  61. package/dist/kernel/kernel-session.d.ts +13 -5
  62. package/dist/kernel/kernel-session.d.ts.map +1 -1
  63. package/dist/kernel/kernel-session.js +71 -13
  64. package/dist/kernel/kernel-session.js.map +1 -1
  65. package/dist/kernel/kernel-types.d.ts +82 -9
  66. package/dist/kernel/kernel-types.d.ts.map +1 -1
  67. package/dist/kernel/kernel-types.js.map +1 -1
  68. package/dist/kernel/kernel.d.ts +94 -20
  69. package/dist/kernel/kernel.d.ts.map +1 -1
  70. package/dist/kernel/kernel.js +591 -70
  71. package/dist/kernel/kernel.js.map +1 -1
  72. package/dist/kernel/model-caller.d.ts +30 -2
  73. package/dist/kernel/model-caller.d.ts.map +1 -1
  74. package/dist/kernel/model-caller.js +55 -20
  75. package/dist/kernel/model-caller.js.map +1 -1
  76. package/dist/kernel/permission-gate.d.ts +6 -4
  77. package/dist/kernel/permission-gate.d.ts.map +1 -1
  78. package/dist/kernel/permission-gate.js +16 -6
  79. package/dist/kernel/permission-gate.js.map +1 -1
  80. package/dist/kernel/run-context.d.ts +26 -0
  81. package/dist/kernel/run-context.d.ts.map +1 -0
  82. package/dist/kernel/run-context.js +13 -0
  83. package/dist/kernel/run-context.js.map +1 -0
  84. package/dist/kernel/run-loop.d.ts +35 -14
  85. package/dist/kernel/run-loop.d.ts.map +1 -1
  86. package/dist/kernel/run-loop.js +295 -87
  87. package/dist/kernel/run-loop.js.map +1 -1
  88. package/dist/kernel/self-correction.d.ts +2 -2
  89. package/dist/kernel/self-correction.d.ts.map +1 -1
  90. package/dist/kernel/self-correction.js +3 -2
  91. package/dist/kernel/self-correction.js.map +1 -1
  92. package/dist/kernel/state-machine.d.ts +2 -0
  93. package/dist/kernel/state-machine.d.ts.map +1 -1
  94. package/dist/kernel/state-machine.js +2 -0
  95. package/dist/kernel/state-machine.js.map +1 -1
  96. package/dist/kernel/step-executor.d.ts +11 -3
  97. package/dist/kernel/step-executor.d.ts.map +1 -1
  98. package/dist/kernel/step-executor.js +54 -24
  99. package/dist/kernel/step-executor.js.map +1 -1
  100. package/dist/kernel/sub-agent-runner.d.ts +10 -7
  101. package/dist/kernel/sub-agent-runner.d.ts.map +1 -1
  102. package/dist/kernel/sub-agent-runner.js +105 -31
  103. package/dist/kernel/sub-agent-runner.js.map +1 -1
  104. package/dist/kernel/tool-context-builder.d.ts +7 -2
  105. package/dist/kernel/tool-context-builder.d.ts.map +1 -1
  106. package/dist/kernel/tool-context-builder.js +23 -6
  107. package/dist/kernel/tool-context-builder.js.map +1 -1
  108. package/dist/kernel/tool-error-router.d.ts +1 -1
  109. package/dist/kernel/tool-error-router.d.ts.map +1 -1
  110. package/dist/kernel/tool-error-router.js +4 -3
  111. package/dist/kernel/tool-error-router.js.map +1 -1
  112. package/dist/logger.d.ts +5 -0
  113. package/dist/logger.d.ts.map +1 -1
  114. package/dist/logger.js +3 -0
  115. package/dist/logger.js.map +1 -1
  116. package/dist/model.d.ts +3 -1
  117. package/dist/model.d.ts.map +1 -1
  118. package/dist/model.js +2 -0
  119. package/dist/model.js.map +1 -1
  120. package/dist/plugin/manager.d.ts +3 -1
  121. package/dist/plugin/manager.d.ts.map +1 -1
  122. package/dist/plugin/manager.js +51 -3
  123. package/dist/plugin/manager.js.map +1 -1
  124. package/dist/plugin/plugin-file-loader.js +2 -2
  125. package/dist/plugin/plugin-file-loader.js.map +1 -1
  126. package/dist/plugin.d.ts +50 -4
  127. package/dist/plugin.d.ts.map +1 -1
  128. package/dist/plugin.js +14 -1
  129. package/dist/plugin.js.map +1 -1
  130. package/dist/session/null-store.d.ts +1 -0
  131. package/dist/session/null-store.d.ts.map +1 -1
  132. package/dist/session/null-store.js +7 -0
  133. package/dist/session/null-store.js.map +1 -1
  134. package/dist/session/run-coordinator.d.ts +9 -3
  135. package/dist/session/run-coordinator.d.ts.map +1 -1
  136. package/dist/session/run-coordinator.js +4 -0
  137. package/dist/session/run-coordinator.js.map +1 -1
  138. package/dist/skill/create-skill-tool.d.ts +5 -4
  139. package/dist/skill/create-skill-tool.d.ts.map +1 -1
  140. package/dist/skill/create-skill-tool.js +8 -5
  141. package/dist/skill/create-skill-tool.js.map +1 -1
  142. package/dist/skill/skill-def-registry.d.ts +6 -0
  143. package/dist/skill/skill-def-registry.d.ts.map +1 -1
  144. package/dist/skill/skill-def-registry.js +4 -0
  145. package/dist/skill/skill-def-registry.js.map +1 -1
  146. package/dist/system-context/sources/instructions-source.js +1 -1
  147. package/dist/system-context/sources/instructions-source.js.map +1 -1
  148. package/dist/tool/bridge.d.ts +7 -1
  149. package/dist/tool/bridge.d.ts.map +1 -1
  150. package/dist/tool/bridge.js +5 -0
  151. package/dist/tool/bridge.js.map +1 -1
  152. package/dist/tool/builtin-provider.d.ts +35 -0
  153. package/dist/tool/builtin-provider.d.ts.map +1 -0
  154. package/dist/tool/builtin-provider.js +75 -0
  155. package/dist/tool/builtin-provider.js.map +1 -0
  156. package/dist/tool/index.d.ts +21 -23
  157. package/dist/tool/index.d.ts.map +1 -1
  158. package/dist/tool/index.js +19 -18
  159. package/dist/tool/index.js.map +1 -1
  160. package/dist/tool/provider-helpers.d.ts.map +1 -1
  161. package/dist/tool/provider-helpers.js +3 -2
  162. package/dist/tool/provider-helpers.js.map +1 -1
  163. package/dist/tool/runtime.d.ts +23 -2
  164. package/dist/tool/runtime.d.ts.map +1 -1
  165. package/dist/tool/runtime.js +20 -16
  166. package/dist/tool/runtime.js.map +1 -1
  167. package/dist/tracer.d.ts +5 -0
  168. package/dist/tracer.d.ts.map +1 -1
  169. package/dist/tracer.js +4 -0
  170. package/dist/tracer.js.map +1 -1
  171. package/dist/workflow/agent-graph.js +3 -3
  172. package/dist/workflow/agent-graph.js.map +1 -1
  173. package/dist/workflow/workflow-helpers.js +2 -2
  174. package/dist/workflow/workflow-helpers.js.map +1 -1
  175. package/dist/workspace.d.ts +7 -0
  176. package/dist/workspace.d.ts.map +1 -1
  177. package/dist/workspace.js +4 -0
  178. package/dist/workspace.js.map +1 -1
  179. package/package.json +18 -62
package/dist/index.js CHANGED
@@ -1,77 +1,202 @@
1
1
  // @vinhnt-sdk/core
2
2
  // Core agent engine for building AI coding agents
3
- export { isAgentId, isRunId, isSessionId, isMessageId, isToolCallId, isTraceId, isRequestId, isRecord, assertAgentId, assertRunId, assertSessionId, assertMessageId, VntError, AgentNotFoundError, AgentValidationError, AgentPermissionDenied, ToolNotFoundError, ToolExecutionError, ToolPermissionDenied, RunNotFoundError, RunAbortedError, RunTimeoutError, APPROVAL_CATEGORY_LABELS, AGENT_STEP_LABELS, inferStepType, ok, fail, wildcardMatch, } from "@vinhnt-sdk/schema";
4
- // === Tool system ===
5
- export { defineTool, toolToDefinition, zodSchemaToNestedJsonSchema } from "@vinhnt-sdk/tools";
6
- export { lintToolDescription, lintToolDefinitions } from "@vinhnt-sdk/tools";
7
- export { ToolRegistry } from "@vinhnt-sdk/tools";
8
- export { ToolProviderRegistry } from "@vinhnt-sdk/tools";
9
- export { validateInput, ToolInputError } from "@vinhnt-sdk/tools";
10
- export { ToolSandbox, signalToToolContext, createSandbox } from "@vinhnt-sdk/tools";
11
- export { ToolRuntime } from "./tool/runtime.js";
12
- export { createKernelTools, createPluginToolHook } from "./tool/bridge.js";
13
- export { FileReadTracker } from "@vinhnt-sdk/tools";
14
- export { InMemoryFileHistory } from "@vinhnt-sdk/tools";
15
- export { createFileHistoryHook } from "@vinhnt-sdk/tools";
16
- export { generateDiff } from "@vinhnt-sdk/tools";
17
- export { readImageToContentParts, createReadImageTool } from "@vinhnt-sdk/tools";
18
- export { createReadFileTool, createWriteFileTool, createEditFileTool, createApplyPatchTool, createListDirectoryTool, createShellTool, createGitStatusTool, createGitDiffTool, createGitLogTool, createGitCommitTool, createGlobFilesTool, createGrepFilesTool, createWebFetchTool, createQuestionTool, createWebSearchTool, createTodoWriteTool } from "@vinhnt-sdk/tools";
19
- export { createCodingDomain } from "@vinhnt-sdk/tools";
20
- // === Event bus ===
21
- export { InMemoryEventBus } from "./event-bus/in-memory-bus.js";
22
- export { InMemorySessionState } from "./session/in-memory-session-state.js";
23
- export { restoreRunFromStore, findActiveSessionIds } from "./session/durable-reload.js";
24
- export { NullRunEventStore, NullSessionStore } from "./session/null-store.js";
25
- export { InMemorySessionTree } from "./session/session-tree.js";
26
- export { createDefaultSessionTitleGenerator } from "./session/title.js";
27
- export { SessionRunCoordinator, kernelAsRunHandler } from "./session/run-coordinator.js";
28
- export { InMemoryAgentRegistry } from "./agent/agent-registry.js";
29
- export { AgentParser } from "./agent/agent-parser.js";
30
- export { createAgent, createSubAgent, validateAgentConfig } from "./agent/agent-factory.js";
31
- export { ExecutionEngine } from "./agent/execution-engine.js";
32
- export { createSpawnAgentTool } from "./agent/spawn-agent-tool.js";
33
- export { createDelegateTool } from "./agent/delegate-tool.js";
34
- export { createDelegateBatchTool } from "./agent/delegate-batch-tool.js";
35
- export { createListAgentsTool } from "./agent/list-agents-tool.js";
36
- export { createCreateAgentTool } from "./agent/create-agent-tool.js";
37
- export { SkillParser } from "./skill/skill-parser.js";
38
- export { InMemorySkillDefRegistry } from "./skill/skill-def-registry.js";
39
- export { createSkillTool, createSkillSearchTool } from "./skill/skill-tool.js";
40
- export { createCreateSkillTool } from "./skill/create-skill-tool.js";
41
- // === Permission system ===
42
- export { checkRiskAllowed, resolveEffectivePermissions, mergeRulesets, normalizePermissions, evaluatePermission } from "./permission/checker.js";
43
- export { matchPermission, buildPermissionRules } from "./permission/evaluator.js";
44
- export { createContextRegistry } from "./system-context/registry.js";
45
- export { createDateSource } from "./system-context/sources/date-source.js";
46
- export { createWorkspaceSource } from "./system-context/sources/workspace-source.js";
47
- export { createInstructionsSource } from "./system-context/sources/instructions-source.js";
48
- export { createAgentSource } from "./system-context/sources/agent-source.js";
49
- export { createSystemPromptSource } from "./system-context/prompts/system-prompt-source.js";
50
- export { createSkillGuidanceSource } from "./system-context/sources/skill-guidance-source.js";
51
- // === Knowledge system ===
52
- export { InMemoryMemoryStore, SessionMemory, BoundedMemory, ContextCompressor, LlmCompactor, WriteApprovalQueue, BackgroundReview, LearningEngine, createMemorySearchTool, buildPrompt } from "@vinhnt-sdk/knowledge";
3
+ //
4
+ // PUBLIC API - Only essential exports for users
5
+ // Internal implementation details are NOT exported here
6
+ /**
7
+ * Core agent kernel for building AI coding agents.
8
+ *
9
+ * The kernel manages agent lifecycle, tool execution, permissions, and LLM interactions.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { AgentKernel } from "@vinhnt-sdk/core";
14
+ *
15
+ * const kernel = new AgentKernel({
16
+ * workspaceRoot: "/path/to/project",
17
+ * maxConcurrent: 3,
18
+ * });
19
+ *
20
+ * await kernel.start();
21
+ * ```
22
+ */
53
23
  // === Kernel (core runtime) ===
54
- export { AgentKernel, KernelError, CircuitBreaker, CircuitBreakerOpenError } from "./kernel/kernel.js";
55
- export { normalizeConfig } from "./kernel/kernel-types.js";
56
- export { RunStateMachine } from "./kernel/run-state.js";
57
- export { PermissionGate } from "./kernel/permission-gate.js";
58
- export { ModelCaller } from "./kernel/model-caller.js";
59
- export { evaluateStopConditions, toToolCallOutcome } from "./kernel/termination.js";
60
- export { LifecycleManager } from "./kernel/lifecycle-manager.js";
24
+ /**
25
+ * Main agent kernel class - manages agent lifecycle and execution.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const kernel = new AgentKernel({
30
+ * workspaceRoot: "/path/to/project",
31
+ * maxConcurrent: 3,
32
+ * toolRegistry: myToolRegistry,
33
+ * });
34
+ *
35
+ * const run = await kernel.startRun({
36
+ * agentId: "coder",
37
+ * prompt: "Write a hello world program",
38
+ * });
39
+ * ```
40
+ */
41
+ export { AgentKernel, KernelError } from "./kernel/kernel.js";
61
42
  export { canTransitionRun, terminalRunStatuses } from "./kernel/state-machine.js";
62
- export { ToolSaga } from "./kernel/tool-saga.js";
63
- export { DefaultPluginManager } from "./plugin/manager.js";
64
- // === Workspace ===
65
- export { WorkspaceManager } from "./workspace.js";
66
- // === Model ===
43
+ export { RunStateMachine } from "@vinhnt-sdk/step-executor";
44
+ // === Agent system ===
45
+ /**
46
+ * Factory function for creating agent configurations.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const agent = createAgent({
51
+ * id: "coder",
52
+ * name: "Coder Agent",
53
+ * model: "gpt-4",
54
+ * systemPrompt: "You are a helpful coding assistant.",
55
+ * });
56
+ * ```
57
+ */
58
+ export { createAgent } from "./agent/agent-factory.js";
59
+ // === Event bus ===
60
+ /**
61
+ * In-memory event bus for publishing and subscribing to events.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const bus = new InMemoryEventBus();
66
+ *
67
+ * bus.on("tool.executed", (event) => {
68
+ * console.log("Tool executed:", event.toolId);
69
+ * });
70
+ *
71
+ * await bus.publish({
72
+ * type: "tool.executed",
73
+ * toolId: "read_file",
74
+ * timestamp: Date.now(),
75
+ * });
76
+ * ```
77
+ */
78
+ export { InMemoryEventBus } from "@vinhnt-sdk/event";
79
+ // === Session management ===
80
+ /**
81
+ * In-memory session state management.
82
+ */
83
+ export { InMemorySessionState } from "@vinhnt-sdk/session";
84
+ /**
85
+ * Coordinates multiple runs within a session.
86
+ */
87
+ export { SessionRunCoordinator } from "./session/run-coordinator.js";
88
+ // === Agent registry ===
89
+ /**
90
+ * In-memory agent registry for managing agent configurations.
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * const registry = new InMemoryAgentRegistry();
95
+ * registry.register({
96
+ * id: "coder",
97
+ * name: "Coder Agent",
98
+ * model: "gpt-4",
99
+ * });
100
+ *
101
+ * const agent = registry.get("coder");
102
+ * ```
103
+ */
104
+ export { InMemoryAgentRegistry } from "./agent/agent-registry.js";
105
+ // === Model registry ===
106
+ /**
107
+ * In-memory model registry for managing model providers.
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const registry = new InMemoryModelRegistry();
112
+ * registry.register({
113
+ * id: "openai",
114
+ * name: "OpenAI",
115
+ * baseUrl: "https://api.openai.com",
116
+ * });
117
+ * ```
118
+ */
67
119
  export { InMemoryModelRegistry } from "./model.js";
120
+ export { getTextContent } from "./model.js";
68
121
  // === Permission stores ===
69
- export { InMemoryApprovalStore } from "./permission/saved.js";
122
+ /**
123
+ * In-memory approval store for managing permission approvals.
124
+ */
125
+ export { InMemoryApprovalStore } from "@vinhnt-sdk/permission";
126
+ // === Workspace ===
127
+ /**
128
+ * Workspace manager for handling file operations and workspace context.
129
+ */
130
+ export { WorkspaceManager } from "./workspace.js";
131
+ // === Skill system ===
132
+ /**
133
+ * In-memory skill definition registry.
134
+ */
135
+ export { InMemorySkillDefRegistry } from "./skill/skill-def-registry.js";
70
136
  // === Tracing ===
137
+ /**
138
+ * Request tracing for monitoring and debugging.
139
+ */
71
140
  export { Tracer } from "./tracer.js";
72
141
  // === Logger ===
142
+ /**
143
+ * Set the global logger instance.
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * import { setLogger } from "@vinhnt-sdk/core";
148
+ *
149
+ * setLogger({
150
+ * info: (msg, ...args) => console.log(msg, ...args),
151
+ * warn: (msg, ...args) => console.warn(msg, ...args),
152
+ * error: (msg, ...args) => console.error(msg, ...args),
153
+ * debug: (msg, ...args) => console.debug(msg, ...args),
154
+ * });
155
+ * ```
156
+ */
73
157
  export { setLogger, setLogLevel, getLogger } from "./logger.js";
74
- // === Security ===
75
- export { sanitizeForLLM, validateToolOutput, detectInjectionPatterns } from "@vinhnt-sdk/security";
76
- export { redactSecrets, detectSecrets, createRedactingLogger } from "@vinhnt-sdk/security";
158
+ export { createDisposable } from "./plugin.js";
159
+ /**
160
+ * Error classes for the SDK.
161
+ *
162
+ * All errors extend VntError and include error codes and retryable flags.
163
+ */
164
+ export { VntError, AgentNotFoundError, AgentValidationError, AgentPermissionDenied, ToolNotFoundError, ToolExecutionError, ToolPermissionDenied, RunNotFoundError, RunAbortedError, RunTimeoutError, CircuitBreakerOpenError, ToolInputError, PermissionDeniedError, ValidationError, TimeoutError, NetworkError, RateLimitError, AuthenticationError, ConfigurationError, PluginError, } from "@vinhnt-sdk/schema";
165
+ // === Re-export essential types from tools ===
166
+ /**
167
+ * Define a custom tool.
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * import { defineTool } from "@vinhnt-sdk/core";
172
+ * import { z } from "zod";
173
+ *
174
+ * const myTool = defineTool({
175
+ * name: "my_tool",
176
+ * description: "A custom tool",
177
+ * risk: "read",
178
+ * input: z.object({
179
+ * query: z.string(),
180
+ * }),
181
+ * async execute(input, ctx) {
182
+ * return `Result: ${input.query}`;
183
+ * },
184
+ * });
185
+ * ```
186
+ */
187
+ export { ToolRegistry, LazyToolRegistry, ToolProviderRegistry, defineTool, toolToDefinition, zodSchemaToNestedJsonSchema, createCodingDomain, generateDiff, createReadFileTool, createWriteFileTool, createEditFileTool, createApplyPatchTool, createListDirectoryTool, createReadImageTool, readImageToContentParts, FileReadTracker, InMemoryFileHistory, createFileHistoryHook, createShellTool, ToolSandbox, signalToToolContext, createSandbox, createWebFetchTool, createWebSearchTool, TavilySearchProvider, SerperSearchProvider, createGitStatusTool, createGitDiffTool, createGitLogTool, createGitCommitTool, createGlobFilesTool, createGrepFilesTool, createToolSearchTool, createQuestionTool, createTodoWriteTool, AgentToolProvider, SkillToolProvider, ToolFileProvider, ToolFileLoader, } from "@vinhnt-sdk/tools";
188
+ export { BuiltinToolProvider } from "./tool/builtin-provider.js";
189
+ export { ToolRuntime } from "./tool/runtime.js";
190
+ export { createKernelTools, createPluginToolHook } from "./tool/bridge.js";
191
+ export { createToolProviderRegistry, createToolProvider, registerProviderTools } from "./tool/provider-helpers.js";
192
+ // === Re-export essential types from knowledge ===
193
+ /**
194
+ * Bounded memory store with size limits.
195
+ */
196
+ export { BoundedMemory, ContextCompressor } from "@vinhnt-sdk/knowledge";
197
+ // === Re-export essential types from security ===
198
+ /**
199
+ * Redact secrets from text.
200
+ */
201
+ export { redactSecrets, detectSecrets } from "@vinhnt-sdk/security";
77
202
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,5 @@ export interface ApprovalHandlerDeps {
13
13
  readonly pluginManager: PluginManager | undefined;
14
14
  currentAgent: AgentConfig | undefined;
15
15
  }
16
- export declare function handleApproval(permResult: PermissionCheckResult, tc: ToolExecutionPlan, toolCtx: ToolContext, runId: RunId, ctx: RequestContext, _sessionId: string | undefined, messages: ChatMessage[], deps: ApprovalHandlerDeps): Promise<boolean>;
16
+ export declare function handleApproval(permResult: PermissionCheckResult, tc: ToolExecutionPlan, toolCtx: ToolContext, runId: RunId, ctx: RequestContext, _sessionId: string | undefined, messages: ChatMessage[], deps: ApprovalHandlerDeps, selfApproving?: boolean): Promise<boolean>;
17
17
  //# sourceMappingURL=approval-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval-handler.d.ts","sourceRoot":"","sources":["../../src/kernel/approval-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,oBAAoB,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACrI,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;CACvC;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
1
+ {"version":3,"file":"approval-handler.d.ts","sourceRoot":"","sources":["../../src/kernel/approval-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,oBAAoB,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACrI,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;CACvC;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,EAAE,mBAAmB,EACzB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,CAAC,CA+BlB"}
@@ -1,7 +1,11 @@
1
1
  import { toolDomain } from "./kernel-utils.js";
2
- export async function handleApproval(permResult, tc, toolCtx, runId, ctx, _sessionId, messages, deps) {
2
+ export async function handleApproval(permResult, tc, toolCtx, runId, ctx, _sessionId, messages, deps, selfApproving) {
3
3
  if (!permResult.needsApproval || permResult.allowed)
4
4
  return true;
5
+ // Single approval path: self-approving tools ask via their own `ctx.ask`
6
+ // (which persists savePatterns on "always"). Defer the gate-level ask.
7
+ if (selfApproving)
8
+ return true;
5
9
  const savedOk = deps.permissionGate.checkSavedApproval(tc.toolName, deps.currentAgent?.id);
6
10
  if (savedOk)
7
11
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"approval-handler.js","sourceRoot":"","sources":["../../src/kernel/approval-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAiC,EACjC,EAAqB,EACrB,OAAoB,EACpB,KAAY,EACZ,GAAmB,EACnB,UAA8B,EAC9B,QAAuB,EACvB,IAAyB;IAEzB,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAEjE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3F,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9B,UAAU,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,MAAM,EAAE,UAAU,CAAC,MAAO;KAC3B,CAAC,CAAC;IAEH,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa;YACnD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO;YAC1D,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,oBAAoB,EAAE;SACvJ,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,QAAQ,oBAAoB,EAAE,CAAC,CAAC;QACjH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"approval-handler.js","sourceRoot":"","sources":["../../src/kernel/approval-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAiC,EACjC,EAAqB,EACrB,OAAoB,EACpB,KAAY,EACZ,GAAmB,EACnB,UAA8B,EAC9B,QAAuB,EACvB,IAAyB,EACzB,aAAuB;IAEvB,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAEjE,yEAAyE;IACzE,uEAAuE;IACvE,IAAI,aAAa;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3F,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9B,UAAU,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,MAAM,EAAE,UAAU,CAAC,MAAO;KAC3B,CAAC,CAAC;IAEH,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa;YACnD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO;YAC1D,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,oBAAoB,EAAE;SACvJ,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,QAAQ,oBAAoB,EAAE,CAAC,CAAC;QACjH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -4,6 +4,12 @@ export interface CircuitBreakerOptions {
4
4
  successThreshold?: number;
5
5
  resetTimeoutMs?: number;
6
6
  isFailure?: (err: unknown) => boolean;
7
+ /** Maximum number of retries for transient failures. Default: 3 */
8
+ maxRetries?: number;
9
+ /** Base delay for exponential backoff in ms. Default: 1000 */
10
+ backoffMs?: number;
11
+ /** Maximum delay for backoff in ms. Default: 30000 */
12
+ maxBackoffMs?: number;
7
13
  }
8
14
  export declare class CircuitBreaker {
9
15
  private state;
@@ -13,10 +19,22 @@ export declare class CircuitBreaker {
13
19
  private readonly options;
14
20
  constructor(options?: CircuitBreakerOptions);
15
21
  getState(): CircuitState;
16
- call<T>(fn: () => Promise<T>): Promise<T>;
22
+ /**
23
+ * Execute a function with circuit breaker and retry logic.
24
+ * Retries on transient failures with exponential backoff.
25
+ *
26
+ * @param fn - The async function to execute
27
+ * @param signal - Optional AbortSignal for cancellation
28
+ * @returns The result of the function
29
+ * @throws CircuitBreakerOpenError if circuit is open
30
+ * @throws The original error if all retries fail
31
+ */
32
+ call<T>(fn: () => Promise<T>, signal?: AbortSignal): Promise<T>;
17
33
  private onSuccess;
18
34
  private onFailure;
19
35
  reset(): void;
36
+ /** Get the current configuration options. */
37
+ getOptions(): Readonly<Required<CircuitBreakerOptions>>;
20
38
  }
21
39
  export declare class CircuitBreakerOpenError extends Error {
22
40
  readonly remainingMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/kernel/circuit-breaker.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;CACvC;AAeD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE9C,OAAO,CAAC,EAAE,qBAAqB;IAI3C,QAAQ,IAAI,YAAY;IAQlB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgB/C,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,SAAS;IAcjB,KAAK,IAAI,IAAI;CAMd;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,cAAc,EAAE,MAAM;CAKnC"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/kernel/circuit-breaker.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IACtC,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAkBD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE9C,OAAO,CAAC,EAAE,qBAAqB;IAO3C,QAAQ,IAAI,YAAY;IAQxB;;;;;;;;;OASG;IACG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAoDrE,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,SAAS;IAcjB,KAAK,IAAI,IAAI;IAOb,6CAA6C;IAC7C,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CAGxD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,cAAc,EAAE,MAAM;CAKnC"}
@@ -2,6 +2,9 @@ const DEFAULT_OPTIONS = {
2
2
  failureThreshold: 5,
3
3
  successThreshold: 2,
4
4
  resetTimeoutMs: 30_000,
5
+ maxRetries: 3,
6
+ backoffMs: 1000,
7
+ maxBackoffMs: 30_000,
5
8
  isFailure: (err) => {
6
9
  const msg = err instanceof Error ? err.message.toLowerCase() : String(err).toLowerCase();
7
10
  if (msg.includes("auth") || msg.includes("unauthorized") || msg.includes("invalid api key"))
@@ -20,7 +23,10 @@ export class CircuitBreaker {
20
23
  halfOpenSuccesses = 0;
21
24
  options;
22
25
  constructor(options) {
23
- this.options = { ...DEFAULT_OPTIONS, ...options };
26
+ this.options = {
27
+ ...DEFAULT_OPTIONS,
28
+ ...Object.fromEntries(Object.entries(options ?? {}).filter(([, v]) => v !== undefined)),
29
+ };
24
30
  }
25
31
  getState() {
26
32
  if (this.state === "open" && Date.now() - this.lastFailureTime >= this.options.resetTimeoutMs) {
@@ -29,20 +35,54 @@ export class CircuitBreaker {
29
35
  }
30
36
  return this.state;
31
37
  }
32
- async call(fn) {
38
+ /**
39
+ * Execute a function with circuit breaker and retry logic.
40
+ * Retries on transient failures with exponential backoff.
41
+ *
42
+ * @param fn - The async function to execute
43
+ * @param signal - Optional AbortSignal for cancellation
44
+ * @returns The result of the function
45
+ * @throws CircuitBreakerOpenError if circuit is open
46
+ * @throws The original error if all retries fail
47
+ */
48
+ async call(fn, signal) {
33
49
  const state = this.getState();
34
50
  if (state === "open") {
35
51
  throw new CircuitBreakerOpenError(this.options.resetTimeoutMs);
36
52
  }
37
- try {
38
- const result = await fn();
39
- this.onSuccess();
40
- return result;
41
- }
42
- catch (err) {
43
- this.onFailure(err);
44
- throw err;
53
+ let lastError;
54
+ let attempt = 0;
55
+ while (attempt <= this.options.maxRetries) {
56
+ if (signal?.aborted) {
57
+ throw new DOMException("Aborted", "AbortError");
58
+ }
59
+ try {
60
+ const result = await fn();
61
+ this.onSuccess();
62
+ return result;
63
+ }
64
+ catch (err) {
65
+ lastError = err;
66
+ // Check if error is retryable
67
+ if (!this.options.isFailure(err)) {
68
+ throw err;
69
+ }
70
+ this.onFailure(err);
71
+ // Don't retry if we've hit the circuit breaker
72
+ if (this.getState() === "open") {
73
+ throw new CircuitBreakerOpenError(this.options.resetTimeoutMs);
74
+ }
75
+ // Don't retry on last attempt
76
+ if (attempt >= this.options.maxRetries) {
77
+ throw err;
78
+ }
79
+ // Calculate delay with exponential backoff
80
+ const delay = Math.min(this.options.backoffMs * Math.pow(2, attempt), this.options.maxBackoffMs);
81
+ await new Promise(resolve => setTimeout(resolve, delay));
82
+ attempt++;
83
+ }
45
84
  }
85
+ throw lastError;
46
86
  }
47
87
  onSuccess() {
48
88
  if (this.state === "half_open") {
@@ -76,6 +116,10 @@ export class CircuitBreaker {
76
116
  this.lastFailureTime = 0;
77
117
  this.halfOpenSuccesses = 0;
78
118
  }
119
+ /** Get the current configuration options. */
120
+ getOptions() {
121
+ return this.options;
122
+ }
79
123
  }
80
124
  export class CircuitBreakerOpenError extends Error {
81
125
  remainingMs;
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/kernel/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/kernel/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { VntError } from "@vinhnt-sdk/schema";
2
2
  export type KernelErrorCode = "session_busy" | "cancelled" | "max_steps_exceeded" | "max_tokens_exceeded" | "tool_failed" | "model_failed" | "session_store_failed" | "internal_error" | "timeout" | "model_unavailable";
3
3
  export declare class KernelError extends VntError {
4
- readonly code: KernelErrorCode;
5
- constructor(code: KernelErrorCode, message: string, inner?: Error);
4
+ readonly code: string;
5
+ readonly retryable = false;
6
+ constructor(kernelCode: KernelErrorCode, message: string, cause?: unknown);
6
7
  }
7
8
  //# sourceMappingURL=kernel-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-error.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,WAAW,GACX,oBAAoB,GACpB,qBAAqB,GACrB,aAAa,GACb,cAAc,GACd,sBAAsB,GACtB,gBAAgB,GAChB,SAAS,GACT,mBAAmB,CAAC;AAExB,qBAAa,WAAY,SAAQ,QAAQ;IACvC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;gBAEnB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAMlE"}
1
+ {"version":3,"file":"kernel-error.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,WAAW,GACX,oBAAoB,GACpB,qBAAqB,GACrB,aAAa,GACb,cAAc,GACd,sBAAsB,GACtB,gBAAgB,GAChB,SAAS,GACT,mBAAmB,CAAC;AAExB,qBAAa,WAAY,SAAQ,QAAQ;IACvC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,SAAS;gBAEtB,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK1E"}
@@ -1,12 +1,11 @@
1
1
  import { VntError } from "@vinhnt-sdk/schema";
2
2
  export class KernelError extends VntError {
3
3
  code;
4
- constructor(code, message, inner) {
5
- super(message);
6
- this.code = code;
7
- this.name = `KernelError.${code}`;
8
- if (inner)
9
- this.cause = inner;
4
+ retryable = false;
5
+ constructor(kernelCode, message, cause) {
6
+ super(message, { cause });
7
+ this.code = kernelCode;
8
+ this.name = `KernelError.${kernelCode}`;
10
9
  }
11
10
  }
12
11
  //# sourceMappingURL=kernel-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-error.js","sourceRoot":"","sources":["../../src/kernel/kernel-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAc9C,MAAM,OAAO,WAAY,SAAQ,QAAQ;IAC9B,IAAI,CAAkB;IAE/B,YAAY,IAAqB,EAAE,OAAe,EAAE,KAAa;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,eAAe,IAAI,EAAE,CAAC;QAClC,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"kernel-error.js","sourceRoot":"","sources":["../../src/kernel/kernel-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAc9C,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvB,IAAI,CAAS;IACb,SAAS,GAAG,KAAK,CAAC;IAElC,YAAY,UAA2B,EAAE,OAAe,EAAE,KAAe;QACvE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,eAAe,UAAU,EAAE,CAAC;IAC1C,CAAC;CACF"}
@@ -1,9 +1,9 @@
1
1
  import type { RequestContext, RunId, AgentConfig, KnownRunEvent } from "@vinhnt-sdk/schema";
2
- import type { RunEventStore, SessionStore } from "../session/store.js";
2
+ import type { EventBus } from "@vinhnt-sdk/event";
3
+ import type { RunEventStore, SessionStore } from "@vinhnt-sdk/session";
3
4
  import type { PluginManager } from "../plugin.js";
4
- import type { ModelCaller } from "./model-caller.js";
5
- import type { ToolSaga } from "./tool-saga.js";
6
- import type { EventBus } from "../event-bus/types.js";
5
+ import type { ModelCaller } from "@vinhnt-sdk/llm";
6
+ import type { ToolSaga } from "@vinhnt-sdk/tools";
7
7
  export interface KernelSessionDeps {
8
8
  store: RunEventStore;
9
9
  eventBus?: EventBus;
@@ -25,6 +25,14 @@ export declare function addSessionMessage(deps: KernelSessionDeps, sessionId: st
25
25
  cost?: number;
26
26
  }): Promise<void>;
27
27
  export declare function updateSessionOnComplete(deps: KernelSessionDeps, sessionId: string | undefined, runId: RunId, totalInputTokens: number, totalOutputTokens: number): Promise<void>;
28
- export declare function emitFail(deps: KernelSessionDeps, runId: RunId, ctx: RequestContext, reason: string, steps: number, sessionId?: string, totalInputTokens?: number, totalOutputTokens?: number, durationMs?: number): Promise<void>;
28
+ /**
29
+ * Atomically persist a terminal run event (e.g. `run.completed`) together with
30
+ * the session terminal stats (model/tokens/cost) when the store supports
31
+ * {@link RunEventStore.appendTransactional}. When it does not, the session is
32
+ * updated BEFORE the event is emitted — closing the crash gap where a process
33
+ * dies between the two writes and terminal stats are lost.
34
+ */
35
+ export declare function emitCompletedWithSession(deps: KernelSessionDeps, event: Omit<KnownRunEvent, "sequence">, sessionId: string | undefined, runId: RunId, totalInputTokens: number, totalOutputTokens: number, _status: string): Promise<void>;
36
+ export declare function emitFail(deps: KernelSessionDeps, runId: RunId, ctx: RequestContext, reason: string, steps: number, sessionId?: string, totalInputTokens?: number, totalOutputTokens?: number, durationMs?: number, cancelled?: boolean): Promise<void>;
29
37
  export declare function buildAgentIdentity(agent: AgentConfig | undefined): string;
30
38
  //# sourceMappingURL=kernel-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-session.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAEvH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,wBAAsB,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9H;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7H,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,SAAI,EACpB,iBAAiB,SAAI,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAOD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAqBzE"}
1
+ {"version":3,"file":"kernel-session.d.ts","sourceRoot":"","sources":["../../src/kernel/kernel-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AAEtG,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,wBAAsB,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9H;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7H,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf;AA6BD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,SAAI,EACpB,iBAAiB,SAAI,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,UAAQ,GAChB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAOD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAqBzE"}