erosolar-cli 1.7.263 → 1.7.264

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 (321) hide show
  1. package/README.md +24 -148
  2. package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -1
  3. package/dist/capabilities/agentSpawningCapability.js +56 -31
  4. package/dist/capabilities/agentSpawningCapability.js.map +1 -1
  5. package/dist/contracts/agent-schemas.json +0 -15
  6. package/dist/contracts/tools.schema.json +0 -9
  7. package/dist/core/agent.d.ts +2 -2
  8. package/dist/core/agent.d.ts.map +1 -1
  9. package/dist/core/agent.js.map +1 -1
  10. package/dist/core/customCommands.d.ts +1 -0
  11. package/dist/core/customCommands.d.ts.map +1 -1
  12. package/dist/core/customCommands.js +3 -0
  13. package/dist/core/customCommands.js.map +1 -1
  14. package/dist/core/hooks.d.ts +113 -0
  15. package/dist/core/hooks.d.ts.map +1 -0
  16. package/dist/core/hooks.js +267 -0
  17. package/dist/core/hooks.js.map +1 -0
  18. package/dist/core/metricsTracker.d.ts +122 -0
  19. package/dist/core/metricsTracker.d.ts.map +1 -0
  20. package/dist/{alpha-zero → core}/metricsTracker.js +2 -5
  21. package/dist/core/metricsTracker.js.map +1 -0
  22. package/dist/core/securityAssessment.d.ts +91 -0
  23. package/dist/core/securityAssessment.d.ts.map +1 -0
  24. package/dist/core/securityAssessment.js +580 -0
  25. package/dist/core/securityAssessment.js.map +1 -0
  26. package/dist/core/toolPreconditions.d.ts.map +1 -1
  27. package/dist/core/toolPreconditions.js +0 -14
  28. package/dist/core/toolPreconditions.js.map +1 -1
  29. package/dist/core/toolRuntime.d.ts +22 -1
  30. package/dist/core/toolRuntime.d.ts.map +1 -1
  31. package/dist/core/toolRuntime.js +0 -5
  32. package/dist/core/toolRuntime.js.map +1 -1
  33. package/dist/core/toolValidation.d.ts.map +1 -1
  34. package/dist/core/toolValidation.js +14 -3
  35. package/dist/core/toolValidation.js.map +1 -1
  36. package/dist/core/validationRunner.d.ts +1 -3
  37. package/dist/core/validationRunner.d.ts.map +1 -1
  38. package/dist/core/validationRunner.js.map +1 -1
  39. package/dist/core/verification.d.ts +137 -0
  40. package/dist/core/verification.d.ts.map +1 -0
  41. package/dist/core/verification.js +323 -0
  42. package/dist/core/verification.js.map +1 -0
  43. package/dist/headless/headlessApp.d.ts.map +1 -1
  44. package/dist/headless/headlessApp.js +21 -0
  45. package/dist/headless/headlessApp.js.map +1 -1
  46. package/dist/mcp/sseClient.d.ts.map +1 -1
  47. package/dist/mcp/sseClient.js +9 -18
  48. package/dist/mcp/sseClient.js.map +1 -1
  49. package/dist/plugins/tools/build/buildPlugin.d.ts +0 -6
  50. package/dist/plugins/tools/build/buildPlugin.d.ts.map +1 -1
  51. package/dist/plugins/tools/build/buildPlugin.js +4 -10
  52. package/dist/plugins/tools/build/buildPlugin.js.map +1 -1
  53. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  54. package/dist/plugins/tools/nodeDefaults.js +0 -2
  55. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  56. package/dist/runtime/agentSession.d.ts +2 -2
  57. package/dist/runtime/agentSession.d.ts.map +1 -1
  58. package/dist/runtime/agentSession.js +2 -2
  59. package/dist/runtime/agentSession.js.map +1 -1
  60. package/dist/shell/interactiveShell.d.ts +11 -7
  61. package/dist/shell/interactiveShell.d.ts.map +1 -1
  62. package/dist/shell/interactiveShell.js +190 -153
  63. package/dist/shell/interactiveShell.js.map +1 -1
  64. package/dist/shell/shellApp.d.ts +2 -0
  65. package/dist/shell/shellApp.d.ts.map +1 -1
  66. package/dist/shell/shellApp.js +36 -1
  67. package/dist/shell/shellApp.js.map +1 -1
  68. package/dist/shell/systemPrompt.d.ts.map +1 -1
  69. package/dist/shell/systemPrompt.js +1 -4
  70. package/dist/shell/systemPrompt.js.map +1 -1
  71. package/dist/shell/terminalInput.d.ts +67 -147
  72. package/dist/shell/terminalInput.d.ts.map +1 -1
  73. package/dist/shell/terminalInput.js +454 -689
  74. package/dist/shell/terminalInput.js.map +1 -1
  75. package/dist/shell/terminalInputAdapter.d.ts +20 -20
  76. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  77. package/dist/shell/terminalInputAdapter.js +14 -29
  78. package/dist/shell/terminalInputAdapter.js.map +1 -1
  79. package/dist/subagents/agentConfig.d.ts +27 -0
  80. package/dist/subagents/agentConfig.d.ts.map +1 -0
  81. package/dist/subagents/agentConfig.js +89 -0
  82. package/dist/subagents/agentConfig.js.map +1 -0
  83. package/dist/subagents/agentRegistry.d.ts +33 -0
  84. package/dist/subagents/agentRegistry.d.ts.map +1 -0
  85. package/dist/subagents/agentRegistry.js +162 -0
  86. package/dist/subagents/agentRegistry.js.map +1 -0
  87. package/dist/subagents/taskRunner.d.ts +7 -1
  88. package/dist/subagents/taskRunner.d.ts.map +1 -1
  89. package/dist/subagents/taskRunner.js +180 -47
  90. package/dist/subagents/taskRunner.js.map +1 -1
  91. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  92. package/dist/ui/ShellUIAdapter.js +13 -12
  93. package/dist/ui/ShellUIAdapter.js.map +1 -1
  94. package/dist/ui/display.d.ts +19 -0
  95. package/dist/ui/display.d.ts.map +1 -1
  96. package/dist/ui/display.js +131 -33
  97. package/dist/ui/display.js.map +1 -1
  98. package/dist/ui/theme.d.ts.map +1 -1
  99. package/dist/ui/theme.js +6 -8
  100. package/dist/ui/theme.js.map +1 -1
  101. package/dist/ui/toolDisplay.d.ts +0 -158
  102. package/dist/ui/toolDisplay.d.ts.map +1 -1
  103. package/dist/ui/toolDisplay.js +0 -348
  104. package/dist/ui/toolDisplay.js.map +1 -1
  105. package/dist/ui/unified/layout.d.ts +1 -0
  106. package/dist/ui/unified/layout.d.ts.map +1 -1
  107. package/dist/ui/unified/layout.js +15 -25
  108. package/dist/ui/unified/layout.js.map +1 -1
  109. package/dist/utils/frontmatter.d.ts +10 -0
  110. package/dist/utils/frontmatter.d.ts.map +1 -0
  111. package/dist/utils/frontmatter.js +78 -0
  112. package/dist/utils/frontmatter.js.map +1 -0
  113. package/package.json +1 -1
  114. package/dist/alpha-zero/agentWrapper.d.ts +0 -84
  115. package/dist/alpha-zero/agentWrapper.d.ts.map +0 -1
  116. package/dist/alpha-zero/agentWrapper.js +0 -171
  117. package/dist/alpha-zero/agentWrapper.js.map +0 -1
  118. package/dist/alpha-zero/codeEvaluator.d.ts +0 -25
  119. package/dist/alpha-zero/codeEvaluator.d.ts.map +0 -1
  120. package/dist/alpha-zero/codeEvaluator.js +0 -273
  121. package/dist/alpha-zero/codeEvaluator.js.map +0 -1
  122. package/dist/alpha-zero/competitiveRunner.d.ts +0 -66
  123. package/dist/alpha-zero/competitiveRunner.d.ts.map +0 -1
  124. package/dist/alpha-zero/competitiveRunner.js +0 -224
  125. package/dist/alpha-zero/competitiveRunner.js.map +0 -1
  126. package/dist/alpha-zero/index.d.ts +0 -67
  127. package/dist/alpha-zero/index.d.ts.map +0 -1
  128. package/dist/alpha-zero/index.js +0 -99
  129. package/dist/alpha-zero/index.js.map +0 -1
  130. package/dist/alpha-zero/introspection.d.ts +0 -128
  131. package/dist/alpha-zero/introspection.d.ts.map +0 -1
  132. package/dist/alpha-zero/introspection.js +0 -300
  133. package/dist/alpha-zero/introspection.js.map +0 -1
  134. package/dist/alpha-zero/metricsTracker.d.ts +0 -71
  135. package/dist/alpha-zero/metricsTracker.d.ts.map +0 -1
  136. package/dist/alpha-zero/metricsTracker.js.map +0 -1
  137. package/dist/alpha-zero/security/core.d.ts +0 -125
  138. package/dist/alpha-zero/security/core.d.ts.map +0 -1
  139. package/dist/alpha-zero/security/core.js +0 -271
  140. package/dist/alpha-zero/security/core.js.map +0 -1
  141. package/dist/alpha-zero/security/google.d.ts +0 -125
  142. package/dist/alpha-zero/security/google.d.ts.map +0 -1
  143. package/dist/alpha-zero/security/google.js +0 -311
  144. package/dist/alpha-zero/security/google.js.map +0 -1
  145. package/dist/alpha-zero/security/googleLoader.d.ts +0 -17
  146. package/dist/alpha-zero/security/googleLoader.d.ts.map +0 -1
  147. package/dist/alpha-zero/security/googleLoader.js +0 -41
  148. package/dist/alpha-zero/security/googleLoader.js.map +0 -1
  149. package/dist/alpha-zero/security/index.d.ts +0 -29
  150. package/dist/alpha-zero/security/index.d.ts.map +0 -1
  151. package/dist/alpha-zero/security/index.js +0 -32
  152. package/dist/alpha-zero/security/index.js.map +0 -1
  153. package/dist/alpha-zero/security/simulation.d.ts +0 -124
  154. package/dist/alpha-zero/security/simulation.d.ts.map +0 -1
  155. package/dist/alpha-zero/security/simulation.js +0 -277
  156. package/dist/alpha-zero/security/simulation.js.map +0 -1
  157. package/dist/alpha-zero/selfModification.d.ts +0 -109
  158. package/dist/alpha-zero/selfModification.d.ts.map +0 -1
  159. package/dist/alpha-zero/selfModification.js +0 -233
  160. package/dist/alpha-zero/selfModification.js.map +0 -1
  161. package/dist/alpha-zero/types.d.ts +0 -170
  162. package/dist/alpha-zero/types.d.ts.map +0 -1
  163. package/dist/alpha-zero/types.js +0 -31
  164. package/dist/alpha-zero/types.js.map +0 -1
  165. package/dist/capabilities/securityTestingCapability.d.ts +0 -13
  166. package/dist/capabilities/securityTestingCapability.d.ts.map +0 -1
  167. package/dist/capabilities/securityTestingCapability.js +0 -25
  168. package/dist/capabilities/securityTestingCapability.js.map +0 -1
  169. package/dist/core/aiFlowOptimizer.d.ts +0 -26
  170. package/dist/core/aiFlowOptimizer.d.ts.map +0 -1
  171. package/dist/core/aiFlowOptimizer.js +0 -31
  172. package/dist/core/aiFlowOptimizer.js.map +0 -1
  173. package/dist/core/aiOptimizationEngine.d.ts +0 -158
  174. package/dist/core/aiOptimizationEngine.d.ts.map +0 -1
  175. package/dist/core/aiOptimizationEngine.js +0 -428
  176. package/dist/core/aiOptimizationEngine.js.map +0 -1
  177. package/dist/core/aiOptimizationIntegration.d.ts +0 -93
  178. package/dist/core/aiOptimizationIntegration.d.ts.map +0 -1
  179. package/dist/core/aiOptimizationIntegration.js +0 -250
  180. package/dist/core/aiOptimizationIntegration.js.map +0 -1
  181. package/dist/core/enhancedErrorRecovery.d.ts +0 -100
  182. package/dist/core/enhancedErrorRecovery.d.ts.map +0 -1
  183. package/dist/core/enhancedErrorRecovery.js +0 -345
  184. package/dist/core/enhancedErrorRecovery.js.map +0 -1
  185. package/dist/core/hooksSystem.d.ts +0 -65
  186. package/dist/core/hooksSystem.d.ts.map +0 -1
  187. package/dist/core/hooksSystem.js +0 -273
  188. package/dist/core/hooksSystem.js.map +0 -1
  189. package/dist/core/memorySystem.d.ts +0 -48
  190. package/dist/core/memorySystem.d.ts.map +0 -1
  191. package/dist/core/memorySystem.js +0 -271
  192. package/dist/core/memorySystem.js.map +0 -1
  193. package/dist/core/unified/errors.d.ts +0 -189
  194. package/dist/core/unified/errors.d.ts.map +0 -1
  195. package/dist/core/unified/errors.js +0 -497
  196. package/dist/core/unified/errors.js.map +0 -1
  197. package/dist/core/unified/index.d.ts +0 -19
  198. package/dist/core/unified/index.d.ts.map +0 -1
  199. package/dist/core/unified/index.js +0 -68
  200. package/dist/core/unified/index.js.map +0 -1
  201. package/dist/core/unified/schema.d.ts +0 -101
  202. package/dist/core/unified/schema.d.ts.map +0 -1
  203. package/dist/core/unified/schema.js +0 -350
  204. package/dist/core/unified/schema.js.map +0 -1
  205. package/dist/core/unified/toolRuntime.d.ts +0 -179
  206. package/dist/core/unified/toolRuntime.d.ts.map +0 -1
  207. package/dist/core/unified/toolRuntime.js +0 -517
  208. package/dist/core/unified/toolRuntime.js.map +0 -1
  209. package/dist/core/unified/tools.d.ts +0 -127
  210. package/dist/core/unified/tools.d.ts.map +0 -1
  211. package/dist/core/unified/tools.js +0 -1333
  212. package/dist/core/unified/tools.js.map +0 -1
  213. package/dist/core/unified/types.d.ts +0 -352
  214. package/dist/core/unified/types.d.ts.map +0 -1
  215. package/dist/core/unified/types.js +0 -12
  216. package/dist/core/unified/types.js.map +0 -1
  217. package/dist/core/unified/version.d.ts +0 -209
  218. package/dist/core/unified/version.d.ts.map +0 -1
  219. package/dist/core/unified/version.js +0 -454
  220. package/dist/core/unified/version.js.map +0 -1
  221. package/dist/plugins/tools/security/securityPlugin.d.ts +0 -3
  222. package/dist/plugins/tools/security/securityPlugin.d.ts.map +0 -1
  223. package/dist/plugins/tools/security/securityPlugin.js +0 -12
  224. package/dist/plugins/tools/security/securityPlugin.js.map +0 -1
  225. package/dist/security/active-stack-security.d.ts +0 -112
  226. package/dist/security/active-stack-security.d.ts.map +0 -1
  227. package/dist/security/active-stack-security.js +0 -296
  228. package/dist/security/active-stack-security.js.map +0 -1
  229. package/dist/security/advanced-persistence-research.d.ts +0 -92
  230. package/dist/security/advanced-persistence-research.d.ts.map +0 -1
  231. package/dist/security/advanced-persistence-research.js +0 -195
  232. package/dist/security/advanced-persistence-research.js.map +0 -1
  233. package/dist/security/advanced-targeting.d.ts +0 -119
  234. package/dist/security/advanced-targeting.d.ts.map +0 -1
  235. package/dist/security/advanced-targeting.js +0 -233
  236. package/dist/security/advanced-targeting.js.map +0 -1
  237. package/dist/security/assessment/vulnerabilityAssessment.d.ts +0 -104
  238. package/dist/security/assessment/vulnerabilityAssessment.d.ts.map +0 -1
  239. package/dist/security/assessment/vulnerabilityAssessment.js +0 -315
  240. package/dist/security/assessment/vulnerabilityAssessment.js.map +0 -1
  241. package/dist/security/authorization/securityAuthorization.d.ts +0 -88
  242. package/dist/security/authorization/securityAuthorization.d.ts.map +0 -1
  243. package/dist/security/authorization/securityAuthorization.js +0 -172
  244. package/dist/security/authorization/securityAuthorization.js.map +0 -1
  245. package/dist/security/comprehensive-targeting.d.ts +0 -85
  246. package/dist/security/comprehensive-targeting.d.ts.map +0 -1
  247. package/dist/security/comprehensive-targeting.js +0 -438
  248. package/dist/security/comprehensive-targeting.js.map +0 -1
  249. package/dist/security/global-security-integration.d.ts +0 -91
  250. package/dist/security/global-security-integration.d.ts.map +0 -1
  251. package/dist/security/global-security-integration.js +0 -218
  252. package/dist/security/global-security-integration.js.map +0 -1
  253. package/dist/security/index.d.ts +0 -38
  254. package/dist/security/index.d.ts.map +0 -1
  255. package/dist/security/index.js +0 -47
  256. package/dist/security/index.js.map +0 -1
  257. package/dist/security/persistence-analyzer.d.ts +0 -56
  258. package/dist/security/persistence-analyzer.d.ts.map +0 -1
  259. package/dist/security/persistence-analyzer.js +0 -187
  260. package/dist/security/persistence-analyzer.js.map +0 -1
  261. package/dist/security/persistence-cli.d.ts +0 -36
  262. package/dist/security/persistence-cli.d.ts.map +0 -1
  263. package/dist/security/persistence-cli.js +0 -160
  264. package/dist/security/persistence-cli.js.map +0 -1
  265. package/dist/security/persistence-research.d.ts +0 -92
  266. package/dist/security/persistence-research.d.ts.map +0 -1
  267. package/dist/security/persistence-research.js +0 -364
  268. package/dist/security/persistence-research.js.map +0 -1
  269. package/dist/security/research/persistenceResearch.d.ts +0 -97
  270. package/dist/security/research/persistenceResearch.d.ts.map +0 -1
  271. package/dist/security/research/persistenceResearch.js +0 -282
  272. package/dist/security/research/persistenceResearch.js.map +0 -1
  273. package/dist/security/security-integration.d.ts +0 -74
  274. package/dist/security/security-integration.d.ts.map +0 -1
  275. package/dist/security/security-integration.js +0 -137
  276. package/dist/security/security-integration.js.map +0 -1
  277. package/dist/security/security-testing-framework.d.ts +0 -112
  278. package/dist/security/security-testing-framework.d.ts.map +0 -1
  279. package/dist/security/security-testing-framework.js +0 -364
  280. package/dist/security/security-testing-framework.js.map +0 -1
  281. package/dist/security/simulation/attackSimulation.d.ts +0 -93
  282. package/dist/security/simulation/attackSimulation.d.ts.map +0 -1
  283. package/dist/security/simulation/attackSimulation.js +0 -341
  284. package/dist/security/simulation/attackSimulation.js.map +0 -1
  285. package/dist/security/strategic-operations.d.ts +0 -100
  286. package/dist/security/strategic-operations.d.ts.map +0 -1
  287. package/dist/security/strategic-operations.js +0 -276
  288. package/dist/security/strategic-operations.js.map +0 -1
  289. package/dist/security/tool-security-wrapper.d.ts +0 -58
  290. package/dist/security/tool-security-wrapper.d.ts.map +0 -1
  291. package/dist/security/tool-security-wrapper.js +0 -156
  292. package/dist/security/tool-security-wrapper.js.map +0 -1
  293. package/dist/shell/claudeCodeStreamHandler.d.ts +0 -145
  294. package/dist/shell/claudeCodeStreamHandler.d.ts.map +0 -1
  295. package/dist/shell/claudeCodeStreamHandler.js +0 -322
  296. package/dist/shell/claudeCodeStreamHandler.js.map +0 -1
  297. package/dist/shell/inputQueueManager.d.ts +0 -144
  298. package/dist/shell/inputQueueManager.d.ts.map +0 -1
  299. package/dist/shell/inputQueueManager.js +0 -290
  300. package/dist/shell/inputQueueManager.js.map +0 -1
  301. package/dist/shell/metricsTracker.d.ts +0 -60
  302. package/dist/shell/metricsTracker.d.ts.map +0 -1
  303. package/dist/shell/metricsTracker.js +0 -119
  304. package/dist/shell/metricsTracker.js.map +0 -1
  305. package/dist/shell/streamingOutputManager.d.ts +0 -115
  306. package/dist/shell/streamingOutputManager.d.ts.map +0 -1
  307. package/dist/shell/streamingOutputManager.js +0 -225
  308. package/dist/shell/streamingOutputManager.js.map +0 -1
  309. package/dist/tools/securityTools.d.ts +0 -22
  310. package/dist/tools/securityTools.d.ts.map +0 -1
  311. package/dist/tools/securityTools.js +0 -448
  312. package/dist/tools/securityTools.js.map +0 -1
  313. package/dist/ui/persistentPrompt.d.ts +0 -50
  314. package/dist/ui/persistentPrompt.d.ts.map +0 -1
  315. package/dist/ui/persistentPrompt.js +0 -92
  316. package/dist/ui/persistentPrompt.js.map +0 -1
  317. package/dist/ui/terminalUISchema.d.ts +0 -195
  318. package/dist/ui/terminalUISchema.d.ts.map +0 -1
  319. package/dist/ui/terminalUISchema.js +0 -113
  320. package/dist/ui/terminalUISchema.js.map +0 -1
  321. package/scripts/deploy-security-capabilities.js +0 -178
@@ -1,179 +0,0 @@
1
- /**
2
- * Unified Tool Runtime
3
- *
4
- * Core tool execution engine with caching, validation, and lifecycle management.
5
- * Combines the best features from both TypeScript and Python implementations.
6
- *
7
- * Principal Investigator: Bo Shang
8
- * Framework: erosolar-cli
9
- */
10
- import type { ToolDefinition, ToolSuite, ToolRecord, ToolCallRequest, ToolCallResult, ProviderToolDefinition } from './types.js';
11
- import { ToolArgumentValidationError } from './schema.js';
12
- import { validateToolPreconditions, type PreflightWarning } from '../toolPreconditions.js';
13
- /**
14
- * Tools that can be safely cached based on their arguments
15
- */
16
- export declare const CACHEABLE_TOOLS: Set<string>;
17
- export interface ToolRuntimeConfig {
18
- enableCache: boolean;
19
- cacheTtlMs: number;
20
- maxCacheSize: number;
21
- defaultTimeoutMs: number;
22
- networkTimeoutMs: number;
23
- maxOutputLength: number;
24
- verbose: boolean;
25
- }
26
- export interface CacheEntry {
27
- output: string;
28
- timestamp: number;
29
- ttl: number;
30
- hitCount: number;
31
- }
32
- /**
33
- * Observer interface for tool lifecycle events
34
- */
35
- export interface ToolRuntimeObserver {
36
- onToolStart?(call: ToolCallRequest): void;
37
- onToolResult?(call: ToolCallRequest, result: ToolCallResult): void;
38
- onToolError?(call: ToolCallRequest, error: Error): void;
39
- onToolWarning?(call: ToolCallRequest, warning: PreflightWarning | string): void;
40
- onCacheHit?(call: ToolCallRequest, entry: CacheEntry): void;
41
- onCacheMiss?(call: ToolCallRequest): void;
42
- onValidationError?(call: ToolCallRequest, error: ToolArgumentValidationError): void;
43
- }
44
- /**
45
- * Unified Tool Runtime
46
- *
47
- * Manages tool registration, execution, caching, and validation.
48
- */
49
- export declare class ToolRuntime {
50
- private registry;
51
- private cache;
52
- private config;
53
- private observers;
54
- private executionStats;
55
- constructor(config?: Partial<ToolRuntimeConfig>);
56
- /**
57
- * Register a tool suite
58
- */
59
- registerSuite(suite: ToolSuite): void;
60
- /**
61
- * Register a single tool
62
- */
63
- registerTool(tool: ToolDefinition, suiteName?: string): void;
64
- /**
65
- * Unregister a tool
66
- */
67
- unregisterTool(name: string): boolean;
68
- /**
69
- * Get a tool by name
70
- */
71
- getTool(name: string): ToolRecord | undefined;
72
- /**
73
- * Check if a tool exists
74
- */
75
- hasTool(name: string): boolean;
76
- /**
77
- * Enable or disable a tool
78
- */
79
- setToolEnabled(name: string, enabled: boolean): boolean;
80
- /**
81
- * Execute a tool call
82
- */
83
- execute(call: ToolCallRequest): Promise<ToolCallResult>;
84
- /**
85
- * Execute with timeout
86
- */
87
- private executeWithTimeout;
88
- /**
89
- * Create an error result
90
- */
91
- private createErrorResult;
92
- /**
93
- * Check if a tool's results can be cached
94
- */
95
- private isCacheable;
96
- /**
97
- * Generate cache key for a tool call
98
- */
99
- private getCacheKey;
100
- /**
101
- * Check if a cache entry has expired
102
- */
103
- private isCacheExpired;
104
- /**
105
- * Cache a result
106
- */
107
- private cacheResult;
108
- /**
109
- * Evict oldest cache entries
110
- */
111
- private evictOldestCacheEntries;
112
- /**
113
- * Clear all cache entries
114
- */
115
- clearCache(): void;
116
- /**
117
- * Clear expired cache entries
118
- */
119
- clearExpiredCache(): number;
120
- /**
121
- * Truncate output if too long
122
- *
123
- * PERF: Uses efficient slicing - O(1) for length check, O(n) for truncation only when needed.
124
- * Binary search not applicable here as we need character boundaries, not search.
125
- */
126
- private truncateOutput;
127
- /**
128
- * Add an observer
129
- */
130
- addObserver(observer: ToolRuntimeObserver): void;
131
- /**
132
- * Remove an observer
133
- */
134
- removeObserver(observer: ToolRuntimeObserver): boolean;
135
- /**
136
- * Notify observers of an event
137
- */
138
- private notifyObservers;
139
- /**
140
- * Get tools in provider format
141
- */
142
- listProviderTools(): ProviderToolDefinition[];
143
- /**
144
- * Get tools for a specific category
145
- */
146
- getToolsByCategory(category: string): ToolRecord[];
147
- /**
148
- * Get execution statistics
149
- */
150
- getStats(): {
151
- totalCalls: number;
152
- cacheHits: number;
153
- cacheHitRate: number;
154
- errors: number;
155
- errorRate: number;
156
- avgExecutionTimeMs: number;
157
- registeredTools: number;
158
- cacheSize: number;
159
- };
160
- /**
161
- * Reset statistics
162
- */
163
- resetStats(): void;
164
- /**
165
- * Get tool execution counts
166
- */
167
- getToolExecutionCounts(): Map<string, number>;
168
- }
169
- /**
170
- * Create a tool runtime with default configuration
171
- */
172
- export declare function createToolRuntime(config?: Partial<ToolRuntimeConfig>): ToolRuntime;
173
- /**
174
- * Create a tool suite from definitions
175
- */
176
- export declare function createToolSuite(name: string, version: string, tools: ToolDefinition[], description?: string): ToolSuite;
177
- export { validateToolPreconditions };
178
- export type { PreflightWarning };
179
- //# sourceMappingURL=toolRuntime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolRuntime.d.ts","sourceRoot":"","sources":["../../../src/core/unified/toolRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyB,2BAA2B,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3F;;GAEG;AACH,eAAO,MAAM,eAAe,aAkB1B,CAAC;AAmBH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,YAAY,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACxD,aAAa,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC;IAChF,UAAU,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5D,WAAW,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,iBAAiB,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAAC;CACrF;AAMD;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,cAAc,CAKpB;gBAEU,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAQnD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAUrC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,SAAY,GAAG,IAAI;IAgB/D;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASrC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI7C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAWvD;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA4F7D;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAe3B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA+CtB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIhD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO;IAOtD;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,iBAAiB,IAAI,sBAAsB,EAAE;IAwB7C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBlD;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB;IAeD;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACH,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAa9C;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAElF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,EAAE,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,SAAS,CAOX;AAMD,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,517 +0,0 @@
1
- /**
2
- * Unified Tool Runtime
3
- *
4
- * Core tool execution engine with caching, validation, and lifecycle management.
5
- * Combines the best features from both TypeScript and Python implementations.
6
- *
7
- * Principal Investigator: Bo Shang
8
- * Framework: erosolar-cli
9
- */
10
- import { validateToolArguments, ToolArgumentValidationError } from './schema.js';
11
- import { validateToolPreconditions } from '../toolPreconditions.js';
12
- // ============================================================================
13
- // Constants
14
- // ============================================================================
15
- /**
16
- * Tools that can be safely cached based on their arguments
17
- */
18
- export const CACHEABLE_TOOLS = new Set([
19
- 'Read',
20
- 'read',
21
- 'read_file',
22
- 'Glob',
23
- 'glob',
24
- 'glob_search',
25
- 'Grep',
26
- 'grep',
27
- 'grep_search',
28
- 'WebSearch',
29
- 'web_search',
30
- 'WebFetch',
31
- 'web_fetch',
32
- 'find_definition',
33
- 'analyze_code_quality',
34
- 'analyze_complexity',
35
- 'find_dependencies',
36
- ]);
37
- /**
38
- * Default configuration
39
- */
40
- const DEFAULT_CONFIG = {
41
- enableCache: true,
42
- cacheTtlMs: 5 * 60 * 1000, // 5 minutes
43
- maxCacheSize: 1000,
44
- defaultTimeoutMs: 120_000, // 2 minutes
45
- networkTimeoutMs: 30_000, // 30 seconds
46
- maxOutputLength: 100_000, // 100k chars
47
- verbose: false,
48
- };
49
- // ============================================================================
50
- // Tool Runtime
51
- // ============================================================================
52
- /**
53
- * Unified Tool Runtime
54
- *
55
- * Manages tool registration, execution, caching, and validation.
56
- */
57
- export class ToolRuntime {
58
- registry = new Map();
59
- cache = new Map();
60
- config;
61
- observers = [];
62
- executionStats = {
63
- totalCalls: 0,
64
- cacheHits: 0,
65
- errors: 0,
66
- totalTimeMs: 0,
67
- };
68
- constructor(config = {}) {
69
- this.config = { ...DEFAULT_CONFIG, ...config };
70
- }
71
- // ==========================================================================
72
- // Registration
73
- // ==========================================================================
74
- /**
75
- * Register a tool suite
76
- */
77
- registerSuite(suite) {
78
- for (const tool of suite.tools) {
79
- this.registerTool(tool, suite.name);
80
- }
81
- if (this.config.verbose) {
82
- console.log(`[ToolRuntime] Registered suite: ${suite.name} (${suite.tools.length} tools)`);
83
- }
84
- }
85
- /**
86
- * Register a single tool
87
- */
88
- registerTool(tool, suiteName = 'default') {
89
- const record = {
90
- definition: tool,
91
- suite: suiteName,
92
- enabled: true,
93
- executionCount: 0,
94
- };
95
- this.registry.set(tool.name, record);
96
- // Also register lowercase version for case-insensitive lookup
97
- if (tool.name !== tool.name.toLowerCase()) {
98
- this.registry.set(tool.name.toLowerCase(), record);
99
- }
100
- }
101
- /**
102
- * Unregister a tool
103
- */
104
- unregisterTool(name) {
105
- const record = this.registry.get(name);
106
- if (!record)
107
- return false;
108
- this.registry.delete(name);
109
- this.registry.delete(name.toLowerCase());
110
- return true;
111
- }
112
- /**
113
- * Get a tool by name
114
- */
115
- getTool(name) {
116
- return this.registry.get(name) || this.registry.get(name.toLowerCase());
117
- }
118
- /**
119
- * Check if a tool exists
120
- */
121
- hasTool(name) {
122
- return this.registry.has(name) || this.registry.has(name.toLowerCase());
123
- }
124
- /**
125
- * Enable or disable a tool
126
- */
127
- setToolEnabled(name, enabled) {
128
- const record = this.getTool(name);
129
- if (!record)
130
- return false;
131
- record.enabled = enabled;
132
- return true;
133
- }
134
- // ==========================================================================
135
- // Execution
136
- // ==========================================================================
137
- /**
138
- * Execute a tool call
139
- */
140
- async execute(call) {
141
- const startTime = Date.now();
142
- this.executionStats.totalCalls++;
143
- // Look up tool
144
- const record = this.getTool(call.name);
145
- if (!record) {
146
- return this.createErrorResult(call, startTime, `Unknown tool: ${call.name}`);
147
- }
148
- if (!record.enabled) {
149
- return this.createErrorResult(call, startTime, `Tool is disabled: ${call.name}`);
150
- }
151
- const tool = record.definition;
152
- // Notify observers
153
- this.notifyObservers('onToolStart', call);
154
- // Check cache
155
- if (this.config.enableCache && this.isCacheable(tool)) {
156
- const cacheKey = this.getCacheKey(call);
157
- const cached = this.cache.get(cacheKey);
158
- if (cached && !this.isCacheExpired(cached)) {
159
- cached.hitCount++;
160
- this.executionStats.cacheHits++;
161
- this.notifyObservers('onCacheHit', call, cached);
162
- return {
163
- toolCallId: call.id,
164
- output: cached.output,
165
- success: true,
166
- cached: true,
167
- durationMs: Date.now() - startTime,
168
- };
169
- }
170
- this.notifyObservers('onCacheMiss', call);
171
- }
172
- // Validate arguments
173
- try {
174
- validateToolArguments(call.name, tool.parameters, call.arguments);
175
- }
176
- catch (error) {
177
- if (error instanceof ToolArgumentValidationError) {
178
- this.notifyObservers('onValidationError', call, error);
179
- return this.createErrorResult(call, startTime, error.message);
180
- }
181
- throw error;
182
- }
183
- // Pre-flight AI flow validation - catch common tool usage failures
184
- const preflightWarnings = validateToolPreconditions(call.name, call.arguments);
185
- for (const warning of preflightWarnings) {
186
- this.notifyObservers('onToolWarning', call, warning);
187
- }
188
- // Execute tool
189
- try {
190
- const output = await this.executeWithTimeout(tool, call.arguments);
191
- const truncatedOutput = this.truncateOutput(output, call.name);
192
- const durationMs = Date.now() - startTime;
193
- // Update stats
194
- record.executionCount++;
195
- record.lastExecuted = Date.now();
196
- this.executionStats.totalTimeMs += durationMs;
197
- // Cache result if cacheable
198
- if (this.config.enableCache && this.isCacheable(tool)) {
199
- this.cacheResult(call, truncatedOutput);
200
- }
201
- const result = {
202
- toolCallId: call.id,
203
- output: truncatedOutput,
204
- success: true,
205
- cached: false,
206
- durationMs,
207
- };
208
- this.notifyObservers('onToolResult', call, result);
209
- return result;
210
- }
211
- catch (error) {
212
- this.executionStats.errors++;
213
- const errorMessage = error instanceof Error ? error.message : String(error);
214
- this.notifyObservers('onToolError', call, error);
215
- return this.createErrorResult(call, startTime, errorMessage);
216
- }
217
- }
218
- /**
219
- * Execute with timeout
220
- */
221
- async executeWithTimeout(tool, args) {
222
- const timeoutMs = this.config.defaultTimeoutMs;
223
- return new Promise((resolve, reject) => {
224
- const timer = setTimeout(() => {
225
- reject(new Error(`Tool execution timed out after ${timeoutMs}ms`));
226
- }, timeoutMs);
227
- tool
228
- .execute(args)
229
- .then((result) => {
230
- clearTimeout(timer);
231
- resolve(result);
232
- })
233
- .catch((error) => {
234
- clearTimeout(timer);
235
- reject(error);
236
- });
237
- });
238
- }
239
- /**
240
- * Create an error result
241
- */
242
- createErrorResult(call, startTime, error) {
243
- return {
244
- toolCallId: call.id,
245
- output: `Error: ${error}`,
246
- success: false,
247
- cached: false,
248
- durationMs: Date.now() - startTime,
249
- error,
250
- };
251
- }
252
- // ==========================================================================
253
- // Caching
254
- // ==========================================================================
255
- /**
256
- * Check if a tool's results can be cached
257
- */
258
- isCacheable(tool) {
259
- if (tool.cacheable !== undefined) {
260
- return tool.cacheable;
261
- }
262
- return CACHEABLE_TOOLS.has(tool.name);
263
- }
264
- /**
265
- * Generate cache key for a tool call
266
- */
267
- getCacheKey(call) {
268
- const argsStr = JSON.stringify(call.arguments, Object.keys(call.arguments).sort());
269
- return `${call.name}:${argsStr}`;
270
- }
271
- /**
272
- * Check if a cache entry has expired
273
- */
274
- isCacheExpired(entry) {
275
- return Date.now() - entry.timestamp > entry.ttl;
276
- }
277
- /**
278
- * Cache a result
279
- */
280
- cacheResult(call, output) {
281
- // Enforce max cache size
282
- if (this.cache.size >= this.config.maxCacheSize) {
283
- this.evictOldestCacheEntries(Math.floor(this.config.maxCacheSize * 0.2));
284
- }
285
- const cacheKey = this.getCacheKey(call);
286
- this.cache.set(cacheKey, {
287
- output,
288
- timestamp: Date.now(),
289
- ttl: this.config.cacheTtlMs,
290
- hitCount: 0,
291
- });
292
- }
293
- /**
294
- * Evict oldest cache entries
295
- */
296
- evictOldestCacheEntries(count) {
297
- const entries = Array.from(this.cache.entries());
298
- entries.sort(([, a], [, b]) => a.timestamp - b.timestamp);
299
- for (let i = 0; i < Math.min(count, entries.length); i++) {
300
- const entry = entries[i];
301
- if (entry) {
302
- this.cache.delete(entry[0]);
303
- }
304
- }
305
- }
306
- /**
307
- * Clear all cache entries
308
- */
309
- clearCache() {
310
- this.cache.clear();
311
- }
312
- /**
313
- * Clear expired cache entries
314
- */
315
- clearExpiredCache() {
316
- let cleared = 0;
317
- for (const [key, entry] of Array.from(this.cache.entries())) {
318
- if (this.isCacheExpired(entry)) {
319
- this.cache.delete(key);
320
- cleared++;
321
- }
322
- }
323
- return cleared;
324
- }
325
- // ==========================================================================
326
- // Output Handling
327
- // ==========================================================================
328
- /**
329
- * Truncate output if too long
330
- *
331
- * PERF: Uses efficient slicing - O(1) for length check, O(n) for truncation only when needed.
332
- * Binary search not applicable here as we need character boundaries, not search.
333
- */
334
- truncateOutput(output, toolName) {
335
- const maxLength = this.config.maxOutputLength;
336
- const len = output.length;
337
- // Fast path: no truncation needed
338
- if (len <= maxLength) {
339
- return output;
340
- }
341
- const truncatedCount = len - maxLength;
342
- const toolLower = toolName.toLowerCase();
343
- // For file reads, keep head and tail for better context
344
- if (toolLower.includes('read') || toolLower === 'glob' || toolLower === 'grep') {
345
- // Keep 70% head, 30% tail (minus notice overhead)
346
- const noticeLen = 50;
347
- const usableLen = maxLength - noticeLen;
348
- const headSize = Math.floor(usableLen * 0.7);
349
- const tailSize = usableLen - headSize;
350
- return (output.slice(0, headSize) +
351
- `\n\n... [truncated ${truncatedCount} characters] ...\n\n` +
352
- output.slice(-tailSize));
353
- }
354
- // For bash/command output, keep more of the tail (errors usually at end)
355
- if (toolLower.includes('bash') || toolLower === 'execute') {
356
- const noticeLen = 50;
357
- const usableLen = maxLength - noticeLen;
358
- const tailSize = Math.floor(usableLen * 0.8);
359
- const headSize = usableLen - tailSize;
360
- return (output.slice(0, headSize) +
361
- `\n\n... [truncated ${truncatedCount} characters] ...\n\n` +
362
- output.slice(-tailSize));
363
- }
364
- // Default: keep head only (fastest)
365
- return output.slice(0, maxLength - 50) + `\n... [truncated ${truncatedCount} characters]`;
366
- }
367
- // ==========================================================================
368
- // Observers
369
- // ==========================================================================
370
- /**
371
- * Add an observer
372
- */
373
- addObserver(observer) {
374
- this.observers.push(observer);
375
- }
376
- /**
377
- * Remove an observer
378
- */
379
- removeObserver(observer) {
380
- const index = this.observers.indexOf(observer);
381
- if (index === -1)
382
- return false;
383
- this.observers.splice(index, 1);
384
- return true;
385
- }
386
- /**
387
- * Notify observers of an event
388
- */
389
- notifyObservers(event, ...args) {
390
- for (const observer of this.observers) {
391
- const handler = observer[event];
392
- if (handler) {
393
- try {
394
- handler.apply(observer, args);
395
- }
396
- catch (error) {
397
- if (this.config.verbose) {
398
- console.error(`[ToolRuntime] Observer error:`, error);
399
- }
400
- }
401
- }
402
- }
403
- }
404
- // ==========================================================================
405
- // Provider Integration
406
- // ==========================================================================
407
- /**
408
- * Get tools in provider format
409
- */
410
- listProviderTools() {
411
- const tools = [];
412
- const seen = new Set();
413
- for (const [, record] of Array.from(this.registry.entries())) {
414
- if (!record.enabled || seen.has(record.definition.name)) {
415
- continue;
416
- }
417
- seen.add(record.definition.name);
418
- const tool = record.definition;
419
- tools.push({
420
- type: 'function',
421
- function: {
422
- name: tool.name,
423
- description: tool.description,
424
- parameters: tool.parameters,
425
- },
426
- });
427
- }
428
- return tools;
429
- }
430
- /**
431
- * Get tools for a specific category
432
- */
433
- getToolsByCategory(category) {
434
- const tools = [];
435
- const seen = new Set();
436
- for (const record of Array.from(this.registry.values())) {
437
- if (record.definition.category === category &&
438
- record.enabled &&
439
- !seen.has(record.definition.name)) {
440
- seen.add(record.definition.name);
441
- tools.push(record);
442
- }
443
- }
444
- return tools;
445
- }
446
- // ==========================================================================
447
- // Statistics
448
- // ==========================================================================
449
- /**
450
- * Get execution statistics
451
- */
452
- getStats() {
453
- const totalCalls = this.executionStats.totalCalls;
454
- return {
455
- totalCalls,
456
- cacheHits: this.executionStats.cacheHits,
457
- cacheHitRate: totalCalls > 0 ? this.executionStats.cacheHits / totalCalls : 0,
458
- errors: this.executionStats.errors,
459
- errorRate: totalCalls > 0 ? this.executionStats.errors / totalCalls : 0,
460
- avgExecutionTimeMs: totalCalls > 0 ? this.executionStats.totalTimeMs / totalCalls : 0,
461
- registeredTools: new Set(Array.from(this.registry.values()).map((r) => r.definition.name))
462
- .size,
463
- cacheSize: this.cache.size,
464
- };
465
- }
466
- /**
467
- * Reset statistics
468
- */
469
- resetStats() {
470
- this.executionStats = {
471
- totalCalls: 0,
472
- cacheHits: 0,
473
- errors: 0,
474
- totalTimeMs: 0,
475
- };
476
- }
477
- /**
478
- * Get tool execution counts
479
- */
480
- getToolExecutionCounts() {
481
- const counts = new Map();
482
- const seen = new Set();
483
- for (const record of Array.from(this.registry.values())) {
484
- if (!seen.has(record.definition.name)) {
485
- seen.add(record.definition.name);
486
- counts.set(record.definition.name, record.executionCount);
487
- }
488
- }
489
- return counts;
490
- }
491
- }
492
- // ============================================================================
493
- // Factory Functions
494
- // ============================================================================
495
- /**
496
- * Create a tool runtime with default configuration
497
- */
498
- export function createToolRuntime(config) {
499
- return new ToolRuntime(config);
500
- }
501
- /**
502
- * Create a tool suite from definitions
503
- */
504
- export function createToolSuite(name, version, tools, description) {
505
- return {
506
- name,
507
- version,
508
- description,
509
- tools,
510
- };
511
- }
512
- // ============================================================================
513
- // AI Flow Pre-Flight Validation
514
- // ============================================================================
515
- // Re-export shared preflight validation to maintain unified runtime parity.
516
- export { validateToolPreconditions };
517
- //# sourceMappingURL=toolRuntime.js.map