@clinebot/core 0.0.37 → 0.0.38

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 (617) hide show
  1. package/README.md +11 -1
  2. package/dist/ClineCore.d.ts +18 -214
  3. package/dist/account/cline-account-service.d.ts +0 -1
  4. package/dist/account/index.d.ts +0 -1
  5. package/dist/account/rpc.d.ts +0 -1
  6. package/dist/account/types.d.ts +0 -1
  7. package/dist/auth/bounded-ttl-cache.d.ts +0 -1
  8. package/dist/auth/client.d.ts +0 -1
  9. package/dist/auth/cline.d.ts +0 -5
  10. package/dist/auth/codex.d.ts +0 -1
  11. package/dist/auth/oca.d.ts +0 -1
  12. package/dist/auth/server.d.ts +0 -1
  13. package/dist/auth/types.d.ts +0 -1
  14. package/dist/auth/utils.d.ts +0 -1
  15. package/dist/cline-core/automation.d.ts +34 -0
  16. package/dist/cline-core/runtime-services.d.ts +5 -0
  17. package/dist/cline-core/start-input.d.ts +10 -0
  18. package/dist/cline-core/telemetry.d.ts +10 -0
  19. package/dist/cline-core/types.d.ts +221 -0
  20. package/dist/cron/{cron-event-ingress.d.ts → events/cron-event-ingress.d.ts} +1 -2
  21. package/dist/cron/{cron-report-writer.d.ts → reports/cron-report-writer.d.ts} +1 -2
  22. package/dist/cron/{cron-materializer.d.ts → runner/cron-materializer.d.ts} +1 -2
  23. package/dist/cron/{cron-runner.d.ts → runner/cron-runner.d.ts} +6 -4
  24. package/dist/cron/{resource-limiter.d.ts → runner/resource-limiter.d.ts} +0 -1
  25. package/dist/cron/schedule/scheduler.d.ts +12 -0
  26. package/dist/cron/{cron-service.d.ts → service/cron-service.d.ts} +4 -5
  27. package/dist/cron/{schedule-command-service.d.ts → service/schedule-command-service.d.ts} +0 -1
  28. package/dist/cron/{schedule-service.d.ts → service/schedule-service.d.ts} +20 -22
  29. package/dist/cron/{cron-reconciler.d.ts → specs/cron-reconciler.d.ts} +1 -2
  30. package/dist/cron/{cron-spec-parser.d.ts → specs/cron-spec-parser.d.ts} +0 -1
  31. package/dist/cron/{cron-watcher.d.ts → specs/cron-watcher.d.ts} +0 -1
  32. package/dist/cron/{cron-schema.d.ts → store/cron-schema.d.ts} +0 -1
  33. package/dist/cron/{sqlite-cron-store.d.ts → store/sqlite-cron-store.d.ts} +12 -2
  34. package/dist/extensions/config/index.d.ts +4 -7
  35. package/dist/extensions/config/runtime-commands.d.ts +0 -1
  36. package/dist/extensions/config/skill-frontmatter-toggle.d.ts +11 -0
  37. package/dist/extensions/config/unified-config-file-watcher.d.ts +0 -1
  38. package/dist/extensions/config/user-instruction-config-loader.d.ts +0 -1
  39. package/dist/extensions/config/user-instruction-plugin.d.ts +25 -0
  40. package/dist/extensions/config/user-instruction-service.d.ts +23 -0
  41. package/dist/extensions/context/agentic-compaction.d.ts +0 -1
  42. package/dist/extensions/context/basic-compaction.d.ts +0 -1
  43. package/dist/extensions/context/compaction-shared.d.ts +0 -1
  44. package/dist/extensions/context/compaction.d.ts +0 -1
  45. package/dist/extensions/index.d.ts +0 -1
  46. package/dist/extensions/mcp/client.d.ts +0 -1
  47. package/dist/extensions/mcp/config-loader.d.ts +0 -1
  48. package/dist/extensions/mcp/index.d.ts +0 -1
  49. package/dist/extensions/mcp/manager.d.ts +0 -1
  50. package/dist/extensions/mcp/name-transform.d.ts +0 -1
  51. package/dist/extensions/mcp/policies.d.ts +0 -1
  52. package/dist/extensions/mcp/tools.d.ts +2 -3
  53. package/dist/extensions/mcp/types.d.ts +3 -4
  54. package/dist/extensions/plugin/plugin-config-loader.d.ts +0 -1
  55. package/dist/extensions/plugin/plugin-load-report.d.ts +0 -1
  56. package/dist/extensions/plugin/plugin-loader.d.ts +0 -1
  57. package/dist/extensions/plugin/plugin-module-import.d.ts +0 -1
  58. package/dist/extensions/plugin/plugin-sandbox.d.ts +0 -1
  59. package/dist/extensions/plugin/plugin-targeting.d.ts +0 -1
  60. package/dist/extensions/plugin-sandbox-bootstrap.js +1 -446
  61. package/dist/extensions/tools/constants.d.ts +0 -1
  62. package/dist/extensions/tools/definitions.d.ts +13 -14
  63. package/dist/extensions/tools/executors/apply-patch-parser.d.ts +0 -1
  64. package/dist/extensions/tools/executors/apply-patch.d.ts +0 -1
  65. package/dist/extensions/tools/executors/bash.d.ts +0 -1
  66. package/dist/extensions/tools/executors/editor.d.ts +0 -1
  67. package/dist/extensions/tools/executors/file-read.d.ts +0 -1
  68. package/dist/extensions/tools/executors/index.d.ts +0 -1
  69. package/dist/extensions/tools/executors/search.d.ts +0 -1
  70. package/dist/extensions/tools/executors/web-fetch.d.ts +0 -1
  71. package/dist/extensions/tools/helpers.d.ts +0 -1
  72. package/dist/extensions/tools/index.d.ts +2 -3
  73. package/dist/extensions/tools/model-tool-routing.d.ts +0 -1
  74. package/dist/extensions/tools/presets.d.ts +4 -5
  75. package/dist/extensions/tools/runtime.d.ts +0 -1
  76. package/dist/extensions/tools/schemas.d.ts +0 -1
  77. package/dist/extensions/tools/team/delegated-agent.d.ts +3 -4
  78. package/dist/extensions/tools/team/index.d.ts +0 -1
  79. package/dist/extensions/tools/team/multi-agent.d.ts +1 -2
  80. package/dist/extensions/tools/team/projections.d.ts +0 -1
  81. package/dist/extensions/tools/team/runtime.d.ts +0 -1
  82. package/dist/extensions/tools/team/spawn-agent-tool.d.ts +4 -5
  83. package/dist/extensions/tools/team/subagent-prompts.d.ts +0 -1
  84. package/dist/extensions/tools/team/team-tools.d.ts +7 -8
  85. package/dist/extensions/tools/types.d.ts +11 -12
  86. package/dist/hooks/checkpoint-hooks.d.ts +9 -2
  87. package/dist/hooks/hook-extension.d.ts +2 -0
  88. package/dist/{extensions/config/hooks-config-loader.d.ts → hooks/hook-file-config.d.ts} +1 -2
  89. package/dist/hooks/hook-file-hooks.d.ts +2 -2
  90. package/dist/hooks/index.d.ts +3 -1
  91. package/dist/hooks/subprocess-runner.d.ts +0 -1
  92. package/dist/hooks/subprocess.d.ts +0 -1
  93. package/dist/hub/{connect.d.ts → client/connect.d.ts} +1 -2
  94. package/dist/hub/{client.d.ts → client/index.d.ts} +41 -4
  95. package/dist/hub/{session-client.d.ts → client/session-client.d.ts} +41 -13
  96. package/dist/hub/{ui-client.d.ts → client/ui-client.d.ts} +1 -1
  97. package/dist/hub/daemon/entry.d.ts +1 -0
  98. package/dist/hub/daemon/entry.js +720 -0
  99. package/dist/hub/{daemon.d.ts → daemon/index.d.ts} +6 -3
  100. package/dist/hub/{runtime-handlers.d.ts → daemon/runtime-handlers.d.ts} +3 -2
  101. package/dist/hub/{start-shared-server.d.ts → daemon/start-shared-server.d.ts} +1 -2
  102. package/dist/hub/{defaults.d.ts → discovery/defaults.d.ts} +0 -1
  103. package/dist/hub/{discovery.d.ts → discovery/index.d.ts} +2 -1
  104. package/dist/hub/{workspace.d.ts → discovery/workspace.d.ts} +1 -2
  105. package/dist/hub/index.d.ts +28 -11
  106. package/dist/hub/index.js +484 -1061
  107. package/dist/hub/runtime-host/hub-runtime-host.d.ts +73 -0
  108. package/dist/{transports/remote.d.ts → hub/runtime-host/remote-runtime-host.d.ts} +1 -2
  109. package/dist/hub/{browser-websocket.d.ts → server/browser-websocket.d.ts} +1 -2
  110. package/dist/hub/{transport.d.ts → server/command-transport.d.ts} +0 -1
  111. package/dist/hub/server/handlers/approval-handlers.d.ts +17 -0
  112. package/dist/hub/server/handlers/capability-handlers.d.ts +12 -0
  113. package/dist/hub/server/handlers/client-handlers.d.ts +6 -0
  114. package/dist/hub/server/handlers/context.d.ts +56 -0
  115. package/dist/hub/server/handlers/run-handlers.d.ts +5 -0
  116. package/dist/hub/server/handlers/session-event-projector.d.ts +7 -0
  117. package/dist/hub/server/handlers/session-handlers.d.ts +20 -0
  118. package/dist/hub/server/hub-client-contributions.d.ts +19 -0
  119. package/dist/hub/server/hub-notifications.d.ts +7 -0
  120. package/dist/hub/server/hub-schedule-events.d.ts +2 -0
  121. package/dist/hub/server/hub-server-logging.d.ts +2 -0
  122. package/dist/hub/server/hub-server-options.d.ts +55 -0
  123. package/dist/hub/server/hub-server-transport.d.ts +34 -0
  124. package/dist/hub/server/hub-session-records.d.ts +8 -0
  125. package/dist/hub/server/hub-websocket-server.d.ts +6 -0
  126. package/dist/hub/server/index.d.ts +4 -0
  127. package/dist/hub/{native-transport.d.ts → server/native-transport.d.ts} +1 -2
  128. package/dist/index.d.ts +51 -41
  129. package/dist/index.js +214 -872
  130. package/dist/runtime/capabilities/index.d.ts +2 -0
  131. package/dist/runtime/capabilities/normalize-runtime-capabilities.d.ts +2 -0
  132. package/dist/runtime/capabilities/runtime-capabilities.d.ts +6 -0
  133. package/dist/runtime/config/agent-message-codec.d.ts +6 -0
  134. package/dist/runtime/{agent-runtime-config-builder.d.ts → config/agent-runtime-config-builder.d.ts} +12 -21
  135. package/dist/runtime/host/history.d.ts +18 -0
  136. package/dist/runtime/{host.d.ts → host/host.d.ts} +3 -4
  137. package/dist/runtime/host/local/agent-event-bridge.d.ts +29 -0
  138. package/dist/runtime/host/local/session-record.d.ts +6 -0
  139. package/dist/runtime/host/local/session-service-invoker.d.ts +4 -0
  140. package/dist/runtime/host/local/spawn-tool.d.ts +15 -0
  141. package/dist/runtime/host/local/user-files.d.ts +1 -0
  142. package/dist/runtime/host/local-runtime-host.d.ts +118 -0
  143. package/dist/{transports → runtime/host}/runtime-host-support.d.ts +3 -5
  144. package/dist/runtime/{runtime-host.d.ts → host/runtime-host.d.ts} +66 -31
  145. package/dist/runtime/{runtime-builder.d.ts → orchestration/runtime-builder.d.ts} +0 -1
  146. package/dist/runtime/{runtime-event-adapter.d.ts → orchestration/runtime-event-adapter.d.ts} +0 -1
  147. package/dist/runtime/{runtime-oauth-token-manager.d.ts → orchestration/runtime-oauth-token-manager.d.ts} +1 -2
  148. package/dist/runtime/{session-runtime-orchestrator.d.ts → orchestration/session-runtime-orchestrator.d.ts} +20 -63
  149. package/dist/runtime/{session-runtime.d.ts → orchestration/session-runtime.d.ts} +14 -12
  150. package/dist/runtime/{user-input-builder.d.ts → orchestration/user-input-builder.d.ts} +2 -11
  151. package/dist/runtime/{loop-detection.d.ts → safety/loop-detection.d.ts} +0 -1
  152. package/dist/runtime/{mistake-tracker.d.ts → safety/mistake-tracker.d.ts} +0 -1
  153. package/dist/runtime/{rules.d.ts → safety/rules.d.ts} +1 -2
  154. package/dist/runtime/{subprocess-sandbox.d.ts → tools/subprocess-sandbox.d.ts} +15 -1
  155. package/dist/runtime/{tool-approval.d.ts → tools/tool-approval.d.ts} +0 -1
  156. package/dist/runtime/turn-queue/pending-prompt-service.d.ts +64 -0
  157. package/dist/services/agent-events.d.ts +1 -2
  158. package/dist/services/config.d.ts +0 -1
  159. package/dist/services/global-settings.d.ts +27 -5
  160. package/dist/{llms → services/llms}/cline-recommended-models.d.ts +1 -2
  161. package/dist/{llms → services/llms}/configured-provider-registry.d.ts +0 -1
  162. package/dist/services/llms/handler-factory.d.ts +3 -0
  163. package/dist/{llms → services/llms}/provider-defaults.d.ts +2 -1
  164. package/dist/{llms → services/llms}/provider-settings.d.ts +5 -3
  165. package/dist/{llms → services/llms}/runtime-config.d.ts +0 -1
  166. package/dist/{llms → services/llms}/runtime-registry.d.ts +0 -1
  167. package/dist/{llms → services/llms}/runtime-types.d.ts +0 -1
  168. package/dist/services/local-runtime-bootstrap.d.ts +7 -9
  169. package/dist/services/plugin-tools.d.ts +0 -1
  170. package/dist/services/providers/local-provider-registry.d.ts +9 -10
  171. package/dist/services/providers/local-provider-service.d.ts +36 -3
  172. package/dist/services/providers/model-source.d.ts +3 -0
  173. package/dist/services/session-artifacts.d.ts +0 -1
  174. package/dist/services/session-data.d.ts +2 -3
  175. package/dist/services/session-telemetry.d.ts +0 -1
  176. package/dist/services/storage/file-team-store.d.ts +0 -1
  177. package/dist/services/storage/provider-settings-legacy-migration.d.ts +0 -1
  178. package/dist/services/storage/provider-settings-manager.d.ts +3 -4
  179. package/dist/services/storage/sqlite-session-store.d.ts +0 -1
  180. package/dist/services/storage/sqlite-team-store.d.ts +0 -1
  181. package/dist/services/storage/team-store.d.ts +0 -1
  182. package/dist/services/telemetry/ITelemetryAdapter.d.ts +0 -1
  183. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts +0 -1
  184. package/dist/services/telemetry/OpenTelemetryProvider.d.ts +32 -1
  185. package/dist/services/telemetry/TelemetryLoggerSink.d.ts +0 -1
  186. package/dist/services/telemetry/TelemetryService.d.ts +0 -1
  187. package/dist/services/telemetry/core-events.d.ts +46 -3
  188. package/dist/services/telemetry/distinct-id.d.ts +0 -1
  189. package/dist/services/telemetry/index.d.ts +1 -2
  190. package/dist/services/telemetry/index.js +1 -0
  191. package/dist/services/usage.d.ts +10 -2
  192. package/dist/services/workspace/file-indexer.d.ts +0 -1
  193. package/dist/services/workspace/index.d.ts +0 -1
  194. package/dist/services/workspace/mention-enricher.d.ts +0 -1
  195. package/dist/{session → services/workspace}/workspace-manager.d.ts +0 -1
  196. package/dist/services/{workspace-manifest.d.ts → workspace/workspace-manifest.d.ts} +20 -5
  197. package/dist/services/workspace/workspace-telemetry.d.ts +18 -0
  198. package/dist/session/checkpoint-restore.d.ts +20 -0
  199. package/dist/session/{session-graph.d.ts → models/session-graph.d.ts} +2 -3
  200. package/dist/session/{session-manifest.d.ts → models/session-manifest.d.ts} +0 -1
  201. package/dist/session/{session-row.d.ts → models/session-row.d.ts} +2 -3
  202. package/dist/session/{file-session-service.d.ts → services/file-session-service.d.ts} +1 -2
  203. package/dist/session/{message-builder.d.ts → services/message-builder.d.ts} +7 -16
  204. package/dist/session/{persistence-service.d.ts → services/persistence-service.d.ts} +10 -11
  205. package/dist/session/{session-service.d.ts → services/session-service.d.ts} +4 -5
  206. package/dist/session/session-snapshot.d.ts +57 -0
  207. package/dist/session/session-versioning-service.d.ts +48 -0
  208. package/dist/session/{conversation-store.d.ts → stores/conversation-store.d.ts} +0 -1
  209. package/dist/session/{session-manifest-store.d.ts → stores/session-manifest-store.d.ts} +3 -4
  210. package/dist/session/{team-persistence-store.d.ts → stores/team-persistence-store.d.ts} +2 -3
  211. package/dist/session/team/index.d.ts +2 -0
  212. package/dist/session/{subagent-session-manager.d.ts → team/team-child-session-manager.d.ts} +7 -8
  213. package/dist/session/{session-team-coordination.d.ts → team/team-session-coordinator.d.ts} +3 -4
  214. package/dist/settings/index.d.ts +2 -0
  215. package/dist/settings/settings-service.d.ts +6 -0
  216. package/dist/settings/types.d.ts +42 -0
  217. package/dist/types/chat-schema.d.ts +24 -7
  218. package/dist/types/common.d.ts +0 -1
  219. package/dist/types/config.d.ts +2 -3
  220. package/dist/types/events.d.ts +8 -1
  221. package/dist/types/provider-settings.d.ts +2 -3
  222. package/dist/types/session.d.ts +22 -6
  223. package/dist/types/sessions.d.ts +0 -1
  224. package/dist/types/storage.d.ts +0 -1
  225. package/dist/types.d.ts +17 -14
  226. package/dist/version.d.ts +0 -1
  227. package/package.json +16 -12
  228. package/dist/ClineCore.d.ts.map +0 -1
  229. package/dist/account/cline-account-service.d.ts.map +0 -1
  230. package/dist/account/index.d.ts.map +0 -1
  231. package/dist/account/rpc.d.ts.map +0 -1
  232. package/dist/account/types.d.ts.map +0 -1
  233. package/dist/auth/bounded-ttl-cache.d.ts.map +0 -1
  234. package/dist/auth/client.d.ts.map +0 -1
  235. package/dist/auth/cline.d.ts.map +0 -1
  236. package/dist/auth/codex.d.ts.map +0 -1
  237. package/dist/auth/oca.d.ts.map +0 -1
  238. package/dist/auth/server.d.ts.map +0 -1
  239. package/dist/auth/types.d.ts.map +0 -1
  240. package/dist/auth/utils.d.ts.map +0 -1
  241. package/dist/cron/cron-event-ingress.d.ts.map +0 -1
  242. package/dist/cron/cron-materializer.d.ts.map +0 -1
  243. package/dist/cron/cron-reconciler.d.ts.map +0 -1
  244. package/dist/cron/cron-report-writer.d.ts.map +0 -1
  245. package/dist/cron/cron-runner.d.ts.map +0 -1
  246. package/dist/cron/cron-schema.d.ts.map +0 -1
  247. package/dist/cron/cron-service.d.ts.map +0 -1
  248. package/dist/cron/cron-spec-parser.d.ts.map +0 -1
  249. package/dist/cron/cron-watcher.d.ts.map +0 -1
  250. package/dist/cron/resource-limiter.d.ts.map +0 -1
  251. package/dist/cron/schedule-command-service.d.ts.map +0 -1
  252. package/dist/cron/schedule-service.d.ts.map +0 -1
  253. package/dist/cron/scheduler.d.ts +0 -68
  254. package/dist/cron/scheduler.d.ts.map +0 -1
  255. package/dist/cron/sqlite-cron-store.d.ts.map +0 -1
  256. package/dist/cron/sqlite-schedule-store.d.ts +0 -52
  257. package/dist/cron/sqlite-schedule-store.d.ts.map +0 -1
  258. package/dist/extensions/config/agent-config-loader.d.ts +0 -20
  259. package/dist/extensions/config/agent-config-loader.d.ts.map +0 -1
  260. package/dist/extensions/config/agent-config-parser.d.ts +0 -29
  261. package/dist/extensions/config/agent-config-parser.d.ts.map +0 -1
  262. package/dist/extensions/config/hooks-config-loader.d.ts.map +0 -1
  263. package/dist/extensions/config/index.d.ts.map +0 -1
  264. package/dist/extensions/config/runtime-commands.d.ts.map +0 -1
  265. package/dist/extensions/config/unified-config-file-watcher.d.ts.map +0 -1
  266. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +0 -1
  267. package/dist/extensions/context/agentic-compaction.d.ts.map +0 -1
  268. package/dist/extensions/context/basic-compaction.d.ts.map +0 -1
  269. package/dist/extensions/context/compaction-shared.d.ts.map +0 -1
  270. package/dist/extensions/context/compaction.d.ts.map +0 -1
  271. package/dist/extensions/index.d.ts.map +0 -1
  272. package/dist/extensions/mcp/client.d.ts.map +0 -1
  273. package/dist/extensions/mcp/config-loader.d.ts.map +0 -1
  274. package/dist/extensions/mcp/index.d.ts.map +0 -1
  275. package/dist/extensions/mcp/manager.d.ts.map +0 -1
  276. package/dist/extensions/mcp/name-transform.d.ts.map +0 -1
  277. package/dist/extensions/mcp/policies.d.ts.map +0 -1
  278. package/dist/extensions/mcp/tools.d.ts.map +0 -1
  279. package/dist/extensions/mcp/types.d.ts.map +0 -1
  280. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +0 -1
  281. package/dist/extensions/plugin/plugin-load-report.d.ts.map +0 -1
  282. package/dist/extensions/plugin/plugin-loader.d.ts.map +0 -1
  283. package/dist/extensions/plugin/plugin-module-import.d.ts.map +0 -1
  284. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +0 -1
  285. package/dist/extensions/plugin/plugin-targeting.d.ts.map +0 -1
  286. package/dist/extensions/tools/constants.d.ts.map +0 -1
  287. package/dist/extensions/tools/definitions.d.ts.map +0 -1
  288. package/dist/extensions/tools/executors/apply-patch-parser.d.ts.map +0 -1
  289. package/dist/extensions/tools/executors/apply-patch.d.ts.map +0 -1
  290. package/dist/extensions/tools/executors/bash.d.ts.map +0 -1
  291. package/dist/extensions/tools/executors/editor.d.ts.map +0 -1
  292. package/dist/extensions/tools/executors/file-read.d.ts.map +0 -1
  293. package/dist/extensions/tools/executors/index.d.ts.map +0 -1
  294. package/dist/extensions/tools/executors/search.d.ts.map +0 -1
  295. package/dist/extensions/tools/executors/web-fetch.d.ts.map +0 -1
  296. package/dist/extensions/tools/helpers.d.ts.map +0 -1
  297. package/dist/extensions/tools/index.d.ts.map +0 -1
  298. package/dist/extensions/tools/model-tool-routing.d.ts.map +0 -1
  299. package/dist/extensions/tools/presets.d.ts.map +0 -1
  300. package/dist/extensions/tools/runtime.d.ts.map +0 -1
  301. package/dist/extensions/tools/schemas.d.ts.map +0 -1
  302. package/dist/extensions/tools/team/delegated-agent.d.ts.map +0 -1
  303. package/dist/extensions/tools/team/index.d.ts.map +0 -1
  304. package/dist/extensions/tools/team/multi-agent.d.ts.map +0 -1
  305. package/dist/extensions/tools/team/projections.d.ts.map +0 -1
  306. package/dist/extensions/tools/team/runtime.d.ts.map +0 -1
  307. package/dist/extensions/tools/team/spawn-agent-tool.d.ts.map +0 -1
  308. package/dist/extensions/tools/team/subagent-prompts.d.ts.map +0 -1
  309. package/dist/extensions/tools/team/team-tools.d.ts.map +0 -1
  310. package/dist/extensions/tools/types.d.ts.map +0 -1
  311. package/dist/hooks/checkpoint-hooks.d.ts.map +0 -1
  312. package/dist/hooks/hook-bridge.d.ts +0 -118
  313. package/dist/hooks/hook-bridge.d.ts.map +0 -1
  314. package/dist/hooks/hook-file-hooks.d.ts.map +0 -1
  315. package/dist/hooks/hook-registry.d.ts +0 -16
  316. package/dist/hooks/hook-registry.d.ts.map +0 -1
  317. package/dist/hooks/index.d.ts.map +0 -1
  318. package/dist/hooks/subprocess-runner.d.ts.map +0 -1
  319. package/dist/hooks/subprocess.d.ts.map +0 -1
  320. package/dist/hub/browser-websocket.d.ts.map +0 -1
  321. package/dist/hub/client.d.ts.map +0 -1
  322. package/dist/hub/connect.d.ts.map +0 -1
  323. package/dist/hub/daemon-entry.d.ts +0 -2
  324. package/dist/hub/daemon-entry.d.ts.map +0 -1
  325. package/dist/hub/daemon-entry.js +0 -1305
  326. package/dist/hub/daemon.d.ts.map +0 -1
  327. package/dist/hub/defaults.d.ts.map +0 -1
  328. package/dist/hub/discovery.d.ts.map +0 -1
  329. package/dist/hub/index.d.ts.map +0 -1
  330. package/dist/hub/native-transport.d.ts.map +0 -1
  331. package/dist/hub/runtime-handlers.d.ts.map +0 -1
  332. package/dist/hub/server.d.ts +0 -104
  333. package/dist/hub/server.d.ts.map +0 -1
  334. package/dist/hub/session-client.d.ts.map +0 -1
  335. package/dist/hub/start-shared-server.d.ts.map +0 -1
  336. package/dist/hub/transport.d.ts.map +0 -1
  337. package/dist/hub/ui-client.d.ts.map +0 -1
  338. package/dist/hub/workspace.d.ts.map +0 -1
  339. package/dist/index.d.ts.map +0 -1
  340. package/dist/llms/cline-recommended-models.d.ts.map +0 -1
  341. package/dist/llms/configured-provider-registry.d.ts.map +0 -1
  342. package/dist/llms/handler-factory.d.ts +0 -16
  343. package/dist/llms/handler-factory.d.ts.map +0 -1
  344. package/dist/llms/provider-defaults.d.ts.map +0 -1
  345. package/dist/llms/provider-settings.d.ts.map +0 -1
  346. package/dist/llms/runtime-config.d.ts.map +0 -1
  347. package/dist/llms/runtime-registry.d.ts.map +0 -1
  348. package/dist/llms/runtime-types.d.ts.map +0 -1
  349. package/dist/runtime/agent-config-adapter.d.ts +0 -148
  350. package/dist/runtime/agent-config-adapter.d.ts.map +0 -1
  351. package/dist/runtime/agent-runtime-config-builder.d.ts.map +0 -1
  352. package/dist/runtime/history.d.ts +0 -10
  353. package/dist/runtime/history.d.ts.map +0 -1
  354. package/dist/runtime/host.d.ts.map +0 -1
  355. package/dist/runtime/loop-detection.d.ts.map +0 -1
  356. package/dist/runtime/mistake-tracker.d.ts.map +0 -1
  357. package/dist/runtime/rules.d.ts.map +0 -1
  358. package/dist/runtime/runtime-builder.d.ts.map +0 -1
  359. package/dist/runtime/runtime-event-adapter.d.ts.map +0 -1
  360. package/dist/runtime/runtime-host.d.ts.map +0 -1
  361. package/dist/runtime/runtime-oauth-token-manager.d.ts.map +0 -1
  362. package/dist/runtime/session-runtime-orchestrator.d.ts.map +0 -1
  363. package/dist/runtime/session-runtime.d.ts.map +0 -1
  364. package/dist/runtime/subprocess-sandbox.d.ts.map +0 -1
  365. package/dist/runtime/tool-approval.d.ts.map +0 -1
  366. package/dist/runtime/user-input-builder.d.ts.map +0 -1
  367. package/dist/services/agent-events.d.ts.map +0 -1
  368. package/dist/services/config.d.ts.map +0 -1
  369. package/dist/services/global-settings.d.ts.map +0 -1
  370. package/dist/services/index.js +0 -28
  371. package/dist/services/local-runtime-bootstrap.d.ts.map +0 -1
  372. package/dist/services/plugin-tools.d.ts.map +0 -1
  373. package/dist/services/providers/local-provider-registry.d.ts.map +0 -1
  374. package/dist/services/providers/local-provider-service.d.ts.map +0 -1
  375. package/dist/services/session-artifacts.d.ts.map +0 -1
  376. package/dist/services/session-data.d.ts.map +0 -1
  377. package/dist/services/session-telemetry.d.ts.map +0 -1
  378. package/dist/services/storage/file-team-store.d.ts.map +0 -1
  379. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +0 -1
  380. package/dist/services/storage/provider-settings-manager.d.ts.map +0 -1
  381. package/dist/services/storage/sqlite-session-store.d.ts.map +0 -1
  382. package/dist/services/storage/sqlite-team-store.d.ts.map +0 -1
  383. package/dist/services/storage/team-store.d.ts.map +0 -1
  384. package/dist/services/telemetry/ITelemetryAdapter.d.ts.map +0 -1
  385. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts.map +0 -1
  386. package/dist/services/telemetry/OpenTelemetryProvider.d.ts.map +0 -1
  387. package/dist/services/telemetry/TelemetryLoggerSink.d.ts.map +0 -1
  388. package/dist/services/telemetry/TelemetryService.d.ts.map +0 -1
  389. package/dist/services/telemetry/core-events.d.ts.map +0 -1
  390. package/dist/services/telemetry/distinct-id.d.ts.map +0 -1
  391. package/dist/services/telemetry/index.d.ts.map +0 -1
  392. package/dist/services/usage.d.ts.map +0 -1
  393. package/dist/services/workspace/file-indexer.d.ts.map +0 -1
  394. package/dist/services/workspace/index.d.ts.map +0 -1
  395. package/dist/services/workspace/mention-enricher.d.ts.map +0 -1
  396. package/dist/services/workspace-manifest.d.ts.map +0 -1
  397. package/dist/session/conversation-store.d.ts.map +0 -1
  398. package/dist/session/file-session-service.d.ts.map +0 -1
  399. package/dist/session/message-builder.d.ts.map +0 -1
  400. package/dist/session/persistence-service.d.ts.map +0 -1
  401. package/dist/session/session-graph.d.ts.map +0 -1
  402. package/dist/session/session-manifest-store.d.ts.map +0 -1
  403. package/dist/session/session-manifest.d.ts.map +0 -1
  404. package/dist/session/session-row.d.ts.map +0 -1
  405. package/dist/session/session-service.d.ts.map +0 -1
  406. package/dist/session/session-team-coordination.d.ts.map +0 -1
  407. package/dist/session/subagent-session-manager.d.ts.map +0 -1
  408. package/dist/session/team-persistence-store.d.ts.map +0 -1
  409. package/dist/session/workspace-manager.d.ts.map +0 -1
  410. package/dist/transports/hub.d.ts +0 -58
  411. package/dist/transports/hub.d.ts.map +0 -1
  412. package/dist/transports/local.d.ts +0 -119
  413. package/dist/transports/local.d.ts.map +0 -1
  414. package/dist/transports/remote.d.ts.map +0 -1
  415. package/dist/transports/runtime-host-support.d.ts.map +0 -1
  416. package/dist/types/chat-schema.d.ts.map +0 -1
  417. package/dist/types/common.d.ts.map +0 -1
  418. package/dist/types/config.d.ts.map +0 -1
  419. package/dist/types/events.d.ts.map +0 -1
  420. package/dist/types/provider-settings.d.ts.map +0 -1
  421. package/dist/types/session.d.ts.map +0 -1
  422. package/dist/types/sessions.d.ts.map +0 -1
  423. package/dist/types/storage.d.ts.map +0 -1
  424. package/dist/types.d.ts.map +0 -1
  425. package/dist/version.d.ts.map +0 -1
  426. package/src/ClineCore.ts +0 -1026
  427. package/src/account/cline-account-service.ts +0 -338
  428. package/src/account/index.ts +0 -24
  429. package/src/account/rpc.ts +0 -185
  430. package/src/account/types.ts +0 -108
  431. package/src/auth/bounded-ttl-cache.ts +0 -53
  432. package/src/auth/client.ts +0 -46
  433. package/src/auth/cline.ts +0 -724
  434. package/src/auth/codex.ts +0 -491
  435. package/src/auth/oca.ts +0 -588
  436. package/src/auth/server.ts +0 -265
  437. package/src/auth/types.ts +0 -110
  438. package/src/auth/utils.ts +0 -247
  439. package/src/cron/cron-event-ingress.ts +0 -357
  440. package/src/cron/cron-materializer.ts +0 -97
  441. package/src/cron/cron-reconciler.ts +0 -241
  442. package/src/cron/cron-report-writer.ts +0 -153
  443. package/src/cron/cron-runner.ts +0 -495
  444. package/src/cron/cron-schema.ts +0 -127
  445. package/src/cron/cron-service.ts +0 -163
  446. package/src/cron/cron-spec-parser.ts +0 -489
  447. package/src/cron/cron-watcher.ts +0 -102
  448. package/src/cron/index.ts +0 -15
  449. package/src/cron/resource-limiter.ts +0 -46
  450. package/src/cron/schedule-command-service.ts +0 -193
  451. package/src/cron/schedule-service.ts +0 -703
  452. package/src/cron/scheduler.ts +0 -772
  453. package/src/cron/sqlite-cron-store.ts +0 -1286
  454. package/src/cron/sqlite-schedule-store.ts +0 -708
  455. package/src/extensions/config/agent-config-loader.ts +0 -114
  456. package/src/extensions/config/agent-config-parser.ts +0 -198
  457. package/src/extensions/config/hooks-config-loader.ts +0 -117
  458. package/src/extensions/config/index.ts +0 -77
  459. package/src/extensions/config/runtime-commands.ts +0 -82
  460. package/src/extensions/config/unified-config-file-watcher.ts +0 -496
  461. package/src/extensions/config/user-instruction-config-loader.ts +0 -549
  462. package/src/extensions/context/agentic-compaction.ts +0 -131
  463. package/src/extensions/context/basic-compaction.ts +0 -300
  464. package/src/extensions/context/compaction-shared.ts +0 -459
  465. package/src/extensions/context/compaction.ts +0 -226
  466. package/src/extensions/index.ts +0 -18
  467. package/src/extensions/mcp/client.ts +0 -420
  468. package/src/extensions/mcp/config-loader.ts +0 -219
  469. package/src/extensions/mcp/index.ts +0 -42
  470. package/src/extensions/mcp/manager.ts +0 -260
  471. package/src/extensions/mcp/name-transform.ts +0 -33
  472. package/src/extensions/mcp/policies.ts +0 -47
  473. package/src/extensions/mcp/tools.ts +0 -47
  474. package/src/extensions/mcp/types.ts +0 -116
  475. package/src/extensions/plugin/plugin-config-loader.ts +0 -140
  476. package/src/extensions/plugin/plugin-load-report.ts +0 -20
  477. package/src/extensions/plugin/plugin-loader.ts +0 -220
  478. package/src/extensions/plugin/plugin-module-import.ts +0 -276
  479. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +0 -662
  480. package/src/extensions/plugin/plugin-sandbox.ts +0 -586
  481. package/src/extensions/plugin/plugin-targeting.ts +0 -32
  482. package/src/extensions/tools/constants.ts +0 -37
  483. package/src/extensions/tools/definitions.ts +0 -738
  484. package/src/extensions/tools/executors/apply-patch-parser.ts +0 -520
  485. package/src/extensions/tools/executors/apply-patch.ts +0 -348
  486. package/src/extensions/tools/executors/bash.ts +0 -207
  487. package/src/extensions/tools/executors/editor.ts +0 -220
  488. package/src/extensions/tools/executors/file-read.ts +0 -135
  489. package/src/extensions/tools/executors/index.ts +0 -87
  490. package/src/extensions/tools/executors/search.ts +0 -470
  491. package/src/extensions/tools/executors/web-fetch.ts +0 -259
  492. package/src/extensions/tools/helpers.ts +0 -154
  493. package/src/extensions/tools/index.ts +0 -183
  494. package/src/extensions/tools/model-tool-routing.ts +0 -134
  495. package/src/extensions/tools/presets.ts +0 -190
  496. package/src/extensions/tools/runtime.ts +0 -261
  497. package/src/extensions/tools/schemas.ts +0 -343
  498. package/src/extensions/tools/team/delegated-agent.ts +0 -136
  499. package/src/extensions/tools/team/index.ts +0 -5
  500. package/src/extensions/tools/team/multi-agent.ts +0 -1845
  501. package/src/extensions/tools/team/projections.ts +0 -283
  502. package/src/extensions/tools/team/runtime.ts +0 -54
  503. package/src/extensions/tools/team/spawn-agent-tool.ts +0 -201
  504. package/src/extensions/tools/team/subagent-prompts.ts +0 -41
  505. package/src/extensions/tools/team/team-tools.ts +0 -902
  506. package/src/extensions/tools/types.ts +0 -354
  507. package/src/hooks/checkpoint-hooks.ts +0 -238
  508. package/src/hooks/hook-bridge.ts +0 -489
  509. package/src/hooks/hook-file-hooks.ts +0 -934
  510. package/src/hooks/hook-registry.ts +0 -257
  511. package/src/hooks/index.ts +0 -18
  512. package/src/hooks/subprocess-runner.ts +0 -196
  513. package/src/hooks/subprocess.ts +0 -469
  514. package/src/hub/browser-websocket.ts +0 -159
  515. package/src/hub/client.ts +0 -633
  516. package/src/hub/connect.ts +0 -156
  517. package/src/hub/daemon-entry.ts +0 -122
  518. package/src/hub/daemon.ts +0 -284
  519. package/src/hub/defaults.ts +0 -70
  520. package/src/hub/discovery.ts +0 -247
  521. package/src/hub/index.ts +0 -14
  522. package/src/hub/native-transport.ts +0 -31
  523. package/src/hub/runtime-handlers.ts +0 -141
  524. package/src/hub/server.ts +0 -2317
  525. package/src/hub/session-client.ts +0 -502
  526. package/src/hub/start-shared-server.ts +0 -61
  527. package/src/hub/transport.ts +0 -14
  528. package/src/hub/ui-client.ts +0 -126
  529. package/src/hub/workspace.ts +0 -19
  530. package/src/index.ts +0 -688
  531. package/src/llms/cline-recommended-models.ts +0 -167
  532. package/src/llms/configured-provider-registry.ts +0 -193
  533. package/src/llms/handler-factory.ts +0 -56
  534. package/src/llms/provider-defaults.ts +0 -653
  535. package/src/llms/provider-settings.ts +0 -310
  536. package/src/llms/runtime-config.ts +0 -43
  537. package/src/llms/runtime-registry.ts +0 -172
  538. package/src/llms/runtime-types.ts +0 -121
  539. package/src/runtime/agent-config-adapter.ts +0 -636
  540. package/src/runtime/agent-runtime-config-builder.ts +0 -205
  541. package/src/runtime/error-feedback.ts +0 -142
  542. package/src/runtime/history.ts +0 -374
  543. package/src/runtime/host.ts +0 -222
  544. package/src/runtime/index.ts +0 -23
  545. package/src/runtime/loop-detection.ts +0 -162
  546. package/src/runtime/mistake-tracker.ts +0 -221
  547. package/src/runtime/rules.ts +0 -49
  548. package/src/runtime/runtime-builder.ts +0 -814
  549. package/src/runtime/runtime-event-adapter.ts +0 -412
  550. package/src/runtime/runtime-host.ts +0 -250
  551. package/src/runtime/runtime-oauth-token-manager.ts +0 -268
  552. package/src/runtime/session-runtime-orchestrator.ts +0 -1253
  553. package/src/runtime/session-runtime.ts +0 -69
  554. package/src/runtime/subprocess-sandbox.ts +0 -255
  555. package/src/runtime/tool-approval.ts +0 -102
  556. package/src/runtime/user-input-builder.ts +0 -167
  557. package/src/services/agent-events.ts +0 -256
  558. package/src/services/config.ts +0 -5
  559. package/src/services/global-settings.ts +0 -122
  560. package/src/services/local-runtime-bootstrap.ts +0 -424
  561. package/src/services/plugin-tools.ts +0 -86
  562. package/src/services/providers/local-provider-registry.ts +0 -456
  563. package/src/services/providers/local-provider-service.ts +0 -772
  564. package/src/services/session-artifacts.ts +0 -138
  565. package/src/services/session-data.ts +0 -398
  566. package/src/services/session-telemetry.ts +0 -89
  567. package/src/services/storage/artifact-store.ts +0 -1
  568. package/src/services/storage/file-team-store.ts +0 -250
  569. package/src/services/storage/index.ts +0 -11
  570. package/src/services/storage/provider-settings-legacy-migration.ts +0 -789
  571. package/src/services/storage/provider-settings-manager.ts +0 -167
  572. package/src/services/storage/session-store.ts +0 -1
  573. package/src/services/storage/sqlite-session-store.ts +0 -270
  574. package/src/services/storage/sqlite-team-store.ts +0 -537
  575. package/src/services/storage/team-store.ts +0 -36
  576. package/src/services/telemetry/ITelemetryAdapter.ts +0 -94
  577. package/src/services/telemetry/OpenTelemetryAdapter.ts +0 -348
  578. package/src/services/telemetry/OpenTelemetryProvider.ts +0 -415
  579. package/src/services/telemetry/TelemetryLoggerSink.ts +0 -121
  580. package/src/services/telemetry/TelemetryService.ts +0 -139
  581. package/src/services/telemetry/core-events.ts +0 -400
  582. package/src/services/telemetry/distinct-id.ts +0 -58
  583. package/src/services/telemetry/index.ts +0 -20
  584. package/src/services/usage.ts +0 -32
  585. package/src/services/workspace/file-indexer.ts +0 -351
  586. package/src/services/workspace/index.ts +0 -7
  587. package/src/services/workspace/mention-enricher.ts +0 -122
  588. package/src/services/workspace-manifest.ts +0 -72
  589. package/src/session/conversation-store.ts +0 -77
  590. package/src/session/file-session-service.ts +0 -282
  591. package/src/session/index.ts +0 -32
  592. package/src/session/message-builder.ts +0 -941
  593. package/src/session/persistence-service.ts +0 -559
  594. package/src/session/session-graph.ts +0 -92
  595. package/src/session/session-manifest-store.ts +0 -158
  596. package/src/session/session-manifest.ts +0 -29
  597. package/src/session/session-row.ts +0 -199
  598. package/src/session/session-service.ts +0 -324
  599. package/src/session/session-team-coordination.ts +0 -240
  600. package/src/session/subagent-session-manager.ts +0 -397
  601. package/src/session/team-persistence-store.ts +0 -176
  602. package/src/session/workspace-manager.ts +0 -100
  603. package/src/transports/hub.ts +0 -1081
  604. package/src/transports/local.ts +0 -1826
  605. package/src/transports/remote.ts +0 -27
  606. package/src/transports/runtime-host-support.ts +0 -140
  607. package/src/types/chat-schema.ts +0 -81
  608. package/src/types/common.ts +0 -26
  609. package/src/types/config.ts +0 -220
  610. package/src/types/events.ts +0 -80
  611. package/src/types/index.ts +0 -26
  612. package/src/types/provider-settings.ts +0 -54
  613. package/src/types/session.ts +0 -111
  614. package/src/types/sessions.ts +0 -37
  615. package/src/types/storage.ts +0 -56
  616. package/src/types.ts +0 -167
  617. package/src/version.ts +0 -3
@@ -1,934 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { appendFileSync, readFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import type { AgentHooks } from "@clinebot/shared";
5
- import {
6
- augmentNodeCommandForDebug,
7
- type BasicLogger,
8
- type HookSessionContext,
9
- type WorkspaceInfo,
10
- withResolvedClineBuildEnv,
11
- } from "@clinebot/shared";
12
- import { ensureHookLogDir } from "@clinebot/shared/storage";
13
- import { listHookConfigFiles } from "../extensions/config/hooks-config-loader";
14
- import type { HookEventName, HookEventPayload } from "../hooks";
15
-
16
- type HookContextBase = {
17
- agentId: string;
18
- conversationId: string;
19
- parentAgentId: string | null;
20
- };
21
-
22
- type AgentHookControl = NonNullable<
23
- Awaited<ReturnType<NonNullable<AgentHooks["onToolCallStart"]>>>
24
- >;
25
- type AgentHookRunStartContext = Parameters<
26
- NonNullable<AgentHooks["onRunStart"]>
27
- >[0];
28
- type AgentHookToolCallStartContext = Parameters<
29
- NonNullable<AgentHooks["onToolCallStart"]>
30
- >[0];
31
- type AgentHookToolCallEndContext = Parameters<
32
- NonNullable<AgentHooks["onToolCallEnd"]>
33
- >[0];
34
- type AgentHookTurnEndContext = Parameters<
35
- NonNullable<AgentHooks["onTurnEnd"]>
36
- >[0];
37
- type AgentHookStopErrorContext = Parameters<
38
- NonNullable<AgentHooks["onStopError"]>
39
- >[0];
40
- type AgentHookSessionShutdownContext = Parameters<
41
- NonNullable<AgentHooks["onSessionShutdown"]>
42
- >[0];
43
-
44
- type HookRuntimeOptions = {
45
- cwd: string;
46
- workspacePath: string;
47
- rootSessionId?: string;
48
- logger?: BasicLogger;
49
- toolCallTimeoutMs?: number;
50
- /** Structured git + path metadata forwarded into every hook payload. */
51
- workspaceInfo?: WorkspaceInfo;
52
- };
53
-
54
- function mapParams(input: unknown): Record<string, string> {
55
- if (!input || typeof input !== "object") {
56
- return {};
57
- }
58
- const output: Record<string, string> = {};
59
- for (const [key, value] of Object.entries(input as Record<string, unknown>)) {
60
- output[key] = typeof value === "string" ? value : JSON.stringify(value);
61
- }
62
- return output;
63
- }
64
-
65
- function logHookError(
66
- logger: BasicLogger | undefined,
67
- message: string,
68
- error?: unknown,
69
- ): void {
70
- const detail = error instanceof Error ? `: ${error.message}` : "";
71
- const text = `${message}${detail}`;
72
- if (logger) {
73
- try {
74
- logger.log(text, {
75
- severity: "warn",
76
- ...(error !== undefined ? { error } : {}),
77
- });
78
- } catch {
79
- // Logging failures must not break hook execution.
80
- }
81
- return;
82
- }
83
- console.warn(text);
84
- }
85
-
86
- function mergeHookControls(
87
- current: AgentHookControl | undefined,
88
- next: AgentHookControl | undefined,
89
- ): AgentHookControl | undefined {
90
- if (!next) {
91
- return current;
92
- }
93
- if (!current) {
94
- return { ...next };
95
- }
96
- const contexts = [current.context, next.context]
97
- .filter(
98
- (value): value is string => typeof value === "string" && value.length > 0,
99
- )
100
- .join("\n");
101
- const appendMessages = [
102
- ...(current.appendMessages ?? []),
103
- ...(next.appendMessages ?? []),
104
- ];
105
- return {
106
- cancel: current.cancel === true || next.cancel === true ? true : undefined,
107
- review: current.review === true || next.review === true ? true : undefined,
108
- context: contexts || undefined,
109
- overrideInput:
110
- next.overrideInput !== undefined
111
- ? next.overrideInput
112
- : current.overrideInput,
113
- systemPrompt:
114
- next.systemPrompt !== undefined
115
- ? next.systemPrompt
116
- : current.systemPrompt,
117
- appendMessages: appendMessages.length > 0 ? appendMessages : undefined,
118
- };
119
- }
120
-
121
- function parseHookControl(value: unknown): AgentHookControl | undefined {
122
- if (!value || typeof value !== "object") {
123
- return undefined;
124
- }
125
- const record = value as Record<string, unknown>;
126
- const context =
127
- typeof record.context === "string"
128
- ? record.context
129
- : typeof record.contextModification === "string"
130
- ? record.contextModification
131
- : typeof record.errorMessage === "string"
132
- ? record.errorMessage
133
- : undefined;
134
- return {
135
- cancel: typeof record.cancel === "boolean" ? record.cancel : undefined,
136
- review: typeof record.review === "boolean" ? record.review : undefined,
137
- context,
138
- overrideInput: Object.hasOwn(record, "overrideInput")
139
- ? record.overrideInput
140
- : undefined,
141
- };
142
- }
143
-
144
- function isAbortReason(reason?: string): boolean {
145
- const value = String(reason ?? "").toLowerCase();
146
- return (
147
- value.includes("cancel") ||
148
- value.includes("abort") ||
149
- value.includes("interrupt")
150
- );
151
- }
152
-
153
- function createPayloadBase(
154
- ctx: HookContextBase,
155
- options: HookRuntimeOptions,
156
- ): Omit<HookEventPayload, "hookName"> {
157
- const userId =
158
- process.env.CLINE_USER_ID?.trim() || process.env.USER?.trim() || "unknown";
159
- const sessionContext: HookSessionContext = {
160
- rootSessionId: options.rootSessionId || ctx.conversationId,
161
- };
162
- return {
163
- clineVersion: process.env.CLINE_VERSION?.trim() || "",
164
- timestamp: new Date().toISOString(),
165
- taskId: ctx.conversationId,
166
- sessionContext,
167
- workspaceRoots: options.workspacePath ? [options.workspacePath] : [],
168
- workspaceInfo: options.workspaceInfo,
169
- userId,
170
- agent_id: ctx.agentId,
171
- parent_agent_id: ctx.parentAgentId,
172
- } as Omit<HookEventPayload, "hookName">;
173
- }
174
-
175
- type HookCommandMap = Partial<Record<HookEventName, string[][]>>;
176
-
177
- interface HookCommandResult {
178
- exitCode: number | null;
179
- stdout: string;
180
- stderr: string;
181
- parsedJson?: unknown;
182
- parseError?: string;
183
- timedOut?: boolean;
184
- }
185
-
186
- function parseHookStdout(stdout: string): {
187
- parsedJson?: unknown;
188
- parseError?: string;
189
- } {
190
- const trimmed = stdout.trim();
191
- if (!trimmed) {
192
- return {};
193
- }
194
- const lines = trimmed
195
- .split("\n")
196
- .map((line) => line.trim())
197
- .filter(Boolean);
198
- const prefixed = lines
199
- .filter((line) => line.startsWith("HOOK_CONTROL\t"))
200
- .map((line) => line.slice("HOOK_CONTROL\t".length));
201
- const candidate =
202
- prefixed.length > 0 ? prefixed[prefixed.length - 1] : trimmed;
203
- try {
204
- return { parsedJson: JSON.parse(candidate) };
205
- } catch (error) {
206
- return {
207
- parseError:
208
- error instanceof Error
209
- ? error.message
210
- : "Failed to parse hook stdout JSON",
211
- };
212
- }
213
- }
214
-
215
- async function writeToChildStdin(
216
- child: ReturnType<typeof spawn>,
217
- body: string,
218
- ): Promise<void> {
219
- const stdin = child.stdin;
220
- if (!stdin) {
221
- throw new Error("hook command failed to create stdin");
222
- }
223
-
224
- await new Promise<void>((resolve, reject) => {
225
- let settled = false;
226
- const cleanup = () => {
227
- stdin.off("error", onError);
228
- stdin.off("finish", onFinish);
229
- child.off("close", onChildClose);
230
- };
231
- const finish = (error?: Error | null) => {
232
- if (settled) {
233
- return;
234
- }
235
- settled = true;
236
- cleanup();
237
- if (error) {
238
- const code = (error as Error & { code?: string }).code;
239
- if (code === "EPIPE" || code === "ERR_STREAM_DESTROYED") {
240
- resolve();
241
- return;
242
- }
243
- reject(error);
244
- return;
245
- }
246
- resolve();
247
- };
248
- const onError = (error: Error) => finish(error);
249
- const onFinish = () => finish();
250
- const onChildClose = () => finish();
251
- stdin.on("error", onError);
252
- stdin.once("finish", onFinish);
253
- child.once("close", onChildClose);
254
- try {
255
- stdin.end(body);
256
- } catch (error) {
257
- finish(error as Error);
258
- }
259
- });
260
- }
261
-
262
- async function runHookCommand(
263
- payload: HookEventPayload,
264
- options: {
265
- command: string[];
266
- cwd: string;
267
- env?: NodeJS.ProcessEnv;
268
- detached: boolean;
269
- timeoutMs?: number;
270
- },
271
- ): Promise<HookCommandResult | undefined> {
272
- if (options.command.length === 0) {
273
- throw new Error("runHookCommand requires non-empty command");
274
- }
275
- try {
276
- return await runHookCommandOnce(payload, options);
277
- } catch (error) {
278
- const fallbackCommand = getWindowsPythonFallbackCommand(
279
- options.command,
280
- process.platform,
281
- error,
282
- );
283
- if (!fallbackCommand) {
284
- throw error;
285
- }
286
- return await runHookCommandOnce(payload, {
287
- ...options,
288
- command: fallbackCommand,
289
- });
290
- }
291
- }
292
-
293
- async function runHookCommandOnce(
294
- payload: HookEventPayload,
295
- options: {
296
- command: string[];
297
- cwd: string;
298
- env?: NodeJS.ProcessEnv;
299
- detached: boolean;
300
- timeoutMs?: number;
301
- },
302
- ): Promise<HookCommandResult | undefined> {
303
- const command = augmentNodeCommandForDebug(options.command, {
304
- env: options.env,
305
- debugRole: "hook",
306
- });
307
- const child = spawn(command[0], command.slice(1), {
308
- cwd: options.cwd,
309
- env: withResolvedClineBuildEnv(options.env),
310
- stdio: options.detached
311
- ? ["pipe", "ignore", "ignore"]
312
- : ["pipe", "pipe", "pipe"],
313
- detached: options.detached,
314
- });
315
- const spawned = new Promise<void>((resolve) => {
316
- child.once("spawn", () => resolve());
317
- });
318
- const childError = new Promise<never>((_, reject) => {
319
- child.once("error", (error) => reject(error));
320
- });
321
-
322
- const body = JSON.stringify(payload);
323
- await Promise.race([spawned, childError]);
324
- await writeToChildStdin(child, body);
325
-
326
- if (options.detached) {
327
- child.unref();
328
- return;
329
- }
330
-
331
- if (!child.stdout || !child.stderr) {
332
- throw new Error("hook command failed to create stdout/stderr");
333
- }
334
- let stdout = "";
335
- let stderr = "";
336
- let timedOut = false;
337
- let timeoutId: NodeJS.Timeout | undefined;
338
- child.stdout.on("data", (chunk: Buffer | string) => {
339
- stdout += chunk.toString();
340
- });
341
- child.stderr.on("data", (chunk: Buffer | string) => {
342
- stderr += chunk.toString();
343
- });
344
-
345
- const result = new Promise<HookCommandResult>((resolve) => {
346
- if ((options.timeoutMs ?? 0) > 0) {
347
- timeoutId = setTimeout(() => {
348
- timedOut = true;
349
- child.kill("SIGKILL");
350
- }, options.timeoutMs);
351
- }
352
- child.once("close", (exitCode) => {
353
- if (timeoutId) {
354
- clearTimeout(timeoutId);
355
- }
356
- const { parsedJson, parseError } = parseHookStdout(stdout);
357
- resolve({
358
- exitCode,
359
- stdout,
360
- stderr,
361
- parsedJson,
362
- parseError,
363
- timedOut,
364
- });
365
- });
366
- });
367
- return await Promise.race([result, childError]);
368
- }
369
-
370
- function parseShebangCommand(path: string): string[] | undefined {
371
- try {
372
- const content = readFileSync(path, "utf8");
373
- const firstLine = content.split(/\r?\n/, 1)[0]?.trim();
374
- if (!firstLine?.startsWith("#!")) {
375
- return undefined;
376
- }
377
- const shebang = firstLine.slice(2).trim();
378
- if (!shebang) {
379
- return undefined;
380
- }
381
- const tokens = shebang.split(/\s+/).filter(Boolean);
382
- return tokens.length > 0 ? tokens : undefined;
383
- } catch {
384
- return undefined;
385
- }
386
- }
387
-
388
- function isMissingCommandError(error: unknown): boolean {
389
- return !!(
390
- error &&
391
- typeof error === "object" &&
392
- "code" in error &&
393
- (error as { code?: unknown }).code === "ENOENT"
394
- );
395
- }
396
-
397
- export function getWindowsPythonFallbackCommand(
398
- command: string[],
399
- platform = process.platform,
400
- error?: unknown,
401
- ): string[] | undefined {
402
- if (platform !== "win32" || !isMissingCommandError(error)) {
403
- return undefined;
404
- }
405
- if (command[0] !== "py" || command[1] !== "-3") {
406
- return undefined;
407
- }
408
- return ["python", ...command.slice(2)];
409
- }
410
-
411
- function normalizeHookInterpreter(tokens: string[]): string[] | undefined {
412
- if (tokens.length === 0) {
413
- return undefined;
414
- }
415
- const [rawCommand, ...rest] = tokens;
416
- const normalizedCommand = rawCommand.replace(/\\/g, "/").toLowerCase();
417
- const commandName = normalizedCommand.split("/").at(-1) ?? normalizedCommand;
418
-
419
- if (commandName === "env") {
420
- return normalizeHookInterpreter(rest);
421
- }
422
-
423
- if (commandName === "bash" || commandName === "sh" || commandName === "zsh") {
424
- return [commandName, ...rest];
425
- }
426
-
427
- if (commandName === "python3" || commandName === "python") {
428
- return process.platform === "win32"
429
- ? ["py", "-3", ...rest]
430
- : [commandName, ...rest];
431
- }
432
-
433
- return tokens;
434
- }
435
-
436
- function inferHookCommand(path: string): string[] {
437
- const shebang = parseShebangCommand(path);
438
- if (shebang && shebang.length > 0) {
439
- return [...(normalizeHookInterpreter(shebang) ?? shebang), path];
440
- }
441
- const lowered = path.toLowerCase();
442
- if (
443
- lowered.endsWith(".sh") ||
444
- lowered.endsWith(".bash") ||
445
- lowered.endsWith(".zsh")
446
- ) {
447
- return ["bash", path];
448
- }
449
- if (
450
- lowered.endsWith(".js") ||
451
- lowered.endsWith(".mjs") ||
452
- lowered.endsWith(".cjs")
453
- ) {
454
- return augmentNodeCommandForDebug(["node", path], {
455
- debugRole: "hook",
456
- });
457
- }
458
- if (
459
- lowered.endsWith(".ts") ||
460
- lowered.endsWith(".mts") ||
461
- lowered.endsWith(".cts")
462
- ) {
463
- return ["bun", "run", path];
464
- }
465
- if (lowered.endsWith(".py")) {
466
- return process.platform === "win32"
467
- ? ["py", "-3", path]
468
- : ["python3", path];
469
- }
470
- if (lowered.endsWith(".ps1")) {
471
- return [
472
- process.platform === "win32" ? "powershell" : "pwsh",
473
- "-File",
474
- path,
475
- ];
476
- }
477
- // Default to bash for legacy hook files with no extension/shebang.
478
- return ["bash", path];
479
- }
480
-
481
- function createHookCommandMap(workspacePath: string): HookCommandMap {
482
- const map: HookCommandMap = {};
483
- for (const file of listHookConfigFiles(workspacePath)) {
484
- if (!file.hookEventName) {
485
- continue;
486
- }
487
- const hookEventName = file.hookEventName;
488
- const existing = map[hookEventName] ?? [];
489
- existing.push(inferHookCommand(file.path));
490
- map[hookEventName] = existing;
491
- }
492
- return map;
493
- }
494
-
495
- async function runBlockingHookCommands(options: {
496
- commands: string[][];
497
- payload: HookEventPayload;
498
- cwd: string;
499
- logger?: BasicLogger;
500
- timeoutMs?: number;
501
- }): Promise<AgentHookControl | undefined> {
502
- let merged: AgentHookControl | undefined;
503
- for (const command of options.commands) {
504
- const commandLabel = command.join(" ");
505
- try {
506
- const result = await runHookCommand(options.payload, {
507
- command,
508
- cwd: options.cwd,
509
- env: withResolvedClineBuildEnv(process.env),
510
- detached: false,
511
- timeoutMs: options.timeoutMs,
512
- });
513
- if (result?.timedOut) {
514
- logHookError(options.logger, `hook command timed out: ${commandLabel}`);
515
- continue;
516
- }
517
- if (result?.parseError) {
518
- logHookError(
519
- options.logger,
520
- `hook command returned invalid JSON control output: ${commandLabel} (${result.parseError})`,
521
- );
522
- continue;
523
- }
524
- merged = mergeHookControls(merged, parseHookControl(result?.parsedJson));
525
- } catch (error) {
526
- logHookError(
527
- options.logger,
528
- `hook command failed: ${commandLabel}`,
529
- error,
530
- );
531
- }
532
- }
533
- return merged;
534
- }
535
-
536
- function runAsyncHookCommands(options: {
537
- commands: string[][];
538
- payload: HookEventPayload;
539
- cwd: string;
540
- logger?: BasicLogger;
541
- }): void {
542
- for (const command of options.commands) {
543
- const commandLabel = command.join(" ");
544
- void runHookCommand(options.payload, {
545
- command,
546
- cwd: options.cwd,
547
- env: withResolvedClineBuildEnv(process.env),
548
- detached: true,
549
- }).catch((error) => {
550
- logHookError(
551
- options.logger,
552
- `hook command failed: ${commandLabel}`,
553
- error,
554
- );
555
- });
556
- }
557
- }
558
-
559
- export function createHookAuditHooks(options: {
560
- rootSessionId?: string;
561
- workspacePath: string;
562
- workspaceInfo?: WorkspaceInfo;
563
- }): AgentHooks {
564
- const runtimeOptions: HookRuntimeOptions = {
565
- cwd: options.workspacePath,
566
- workspacePath: options.workspacePath,
567
- rootSessionId: options.rootSessionId,
568
- workspaceInfo: options.workspaceInfo,
569
- };
570
-
571
- const append = (payload: HookEventPayload): void => {
572
- const line = `${JSON.stringify({
573
- ts: new Date().toISOString(),
574
- ...payload,
575
- })}\n`;
576
- const envPath = process.env.CLINE_HOOKS_LOG_PATH?.trim() || undefined;
577
- const logPath = envPath ?? join(ensureHookLogDir(), "hooks.jsonl");
578
- ensureHookLogDir(logPath);
579
- appendFileSync(logPath, line, "utf8");
580
- };
581
-
582
- return {
583
- onRunStart: async (ctx: AgentHookRunStartContext) => {
584
- append({
585
- ...createPayloadBase(ctx, runtimeOptions),
586
- hookName: "agent_start",
587
- taskStart: { taskMetadata: {} },
588
- });
589
- append({
590
- ...createPayloadBase(ctx, runtimeOptions),
591
- hookName: "prompt_submit",
592
- userPromptSubmit: {
593
- prompt: ctx.userMessage,
594
- attachments: [],
595
- },
596
- });
597
- return undefined;
598
- },
599
- onToolCallStart: async (ctx: AgentHookToolCallStartContext) => {
600
- append({
601
- ...createPayloadBase(ctx, runtimeOptions),
602
- hookName: "tool_call",
603
- iteration: ctx.iteration,
604
- tool_call: {
605
- id: ctx.call.id,
606
- name: ctx.call.name,
607
- input: ctx.call.input,
608
- },
609
- preToolUse: {
610
- toolName: ctx.call.name,
611
- parameters: mapParams(ctx.call.input),
612
- },
613
- });
614
- return undefined;
615
- },
616
- onToolCallEnd: async (ctx: AgentHookToolCallEndContext) => {
617
- append({
618
- ...createPayloadBase(ctx, runtimeOptions),
619
- hookName: "tool_result",
620
- iteration: ctx.iteration,
621
- tool_result: ctx.record,
622
- postToolUse: {
623
- toolName: ctx.record.name,
624
- parameters: mapParams(ctx.record.input),
625
- result:
626
- typeof ctx.record.output === "string"
627
- ? ctx.record.output
628
- : JSON.stringify(ctx.record.output),
629
- success: !ctx.record.error,
630
- executionTimeMs: ctx.record.durationMs,
631
- },
632
- });
633
- return undefined;
634
- },
635
- onTurnEnd: async (ctx: AgentHookTurnEndContext) => {
636
- append({
637
- ...createPayloadBase(ctx, runtimeOptions),
638
- hookName: "agent_end",
639
- iteration: ctx.iteration,
640
- turn: ctx.turn,
641
- taskComplete: { taskMetadata: {} },
642
- });
643
- return undefined;
644
- },
645
- onStopError: async (ctx: AgentHookStopErrorContext) => {
646
- append({
647
- ...createPayloadBase(ctx, runtimeOptions),
648
- hookName: "agent_error",
649
- iteration: ctx.iteration,
650
- error: {
651
- name: ctx.error.name,
652
- message: ctx.error.message,
653
- stack: ctx.error.stack,
654
- },
655
- });
656
- return undefined;
657
- },
658
- onSessionShutdown: async (ctx: AgentHookSessionShutdownContext) => {
659
- if (isAbortReason(ctx.reason)) {
660
- append({
661
- ...createPayloadBase(ctx, runtimeOptions),
662
- hookName: "agent_abort",
663
- reason: ctx.reason,
664
- taskCancel: { taskMetadata: {} },
665
- });
666
- }
667
- append({
668
- ...createPayloadBase(ctx, runtimeOptions),
669
- hookName: "session_shutdown",
670
- reason: ctx.reason,
671
- });
672
- return undefined;
673
- },
674
- };
675
- }
676
-
677
- export function createHookConfigFileHooks(
678
- options: HookRuntimeOptions,
679
- ): AgentHooks | undefined {
680
- const commandMap = createHookCommandMap(options.workspacePath);
681
- const hasAnyHooks = Object.values(commandMap).some(
682
- (paths) => (paths?.length ?? 0) > 0,
683
- );
684
- if (!hasAnyHooks) {
685
- return undefined;
686
- }
687
-
688
- const runStartPayload = async (
689
- ctx: AgentHookRunStartContext,
690
- ): Promise<void> => {
691
- const agentStart = commandMap.agent_start ?? [];
692
- if (agentStart.length > 0) {
693
- runAsyncHookCommands({
694
- commands: agentStart,
695
- cwd: options.cwd,
696
- logger: options.logger,
697
- payload: {
698
- ...createPayloadBase(ctx, options),
699
- hookName: "agent_start",
700
- taskStart: { taskMetadata: {} },
701
- },
702
- });
703
- }
704
-
705
- const promptSubmit = commandMap.prompt_submit ?? [];
706
- if (promptSubmit.length > 0) {
707
- runAsyncHookCommands({
708
- commands: promptSubmit,
709
- cwd: options.cwd,
710
- logger: options.logger,
711
- payload: {
712
- ...createPayloadBase(ctx, options),
713
- hookName: "prompt_submit",
714
- userPromptSubmit: {
715
- prompt: ctx.userMessage,
716
- attachments: [],
717
- },
718
- },
719
- });
720
- }
721
- };
722
-
723
- const runToolCallStart = async (
724
- ctx: AgentHookToolCallStartContext,
725
- ): Promise<AgentHookControl | undefined> => {
726
- const commandPaths = commandMap.tool_call ?? [];
727
- if (commandPaths.length === 0) {
728
- return undefined;
729
- }
730
- return runBlockingHookCommands({
731
- commands: commandPaths,
732
- cwd: options.cwd,
733
- logger: options.logger,
734
- timeoutMs: options.toolCallTimeoutMs ?? 120000,
735
- payload: {
736
- ...createPayloadBase(ctx, options),
737
- hookName: "tool_call",
738
- iteration: ctx.iteration,
739
- tool_call: {
740
- id: ctx.call.id,
741
- name: ctx.call.name,
742
- input: ctx.call.input,
743
- },
744
- preToolUse: {
745
- toolName: ctx.call.name,
746
- parameters: mapParams(ctx.call.input),
747
- },
748
- },
749
- });
750
- };
751
-
752
- const runToolCallEnd = async (
753
- ctx: AgentHookToolCallEndContext,
754
- ): Promise<void> => {
755
- const commandPaths = commandMap.tool_result ?? [];
756
- if (commandPaths.length === 0) {
757
- return;
758
- }
759
- runAsyncHookCommands({
760
- commands: commandPaths,
761
- cwd: options.cwd,
762
- logger: options.logger,
763
- payload: {
764
- ...createPayloadBase(ctx, options),
765
- hookName: "tool_result",
766
- iteration: ctx.iteration,
767
- tool_result: ctx.record,
768
- postToolUse: {
769
- toolName: ctx.record.name,
770
- parameters: mapParams(ctx.record.input),
771
- result:
772
- typeof ctx.record.output === "string"
773
- ? ctx.record.output
774
- : JSON.stringify(ctx.record.output),
775
- success: !ctx.record.error,
776
- executionTimeMs: ctx.record.durationMs,
777
- },
778
- },
779
- });
780
- };
781
-
782
- const runTurnEnd = async (ctx: AgentHookTurnEndContext): Promise<void> => {
783
- const commandPaths = commandMap.agent_end ?? [];
784
- if (commandPaths.length === 0) {
785
- return;
786
- }
787
- runAsyncHookCommands({
788
- commands: commandPaths,
789
- cwd: options.cwd,
790
- logger: options.logger,
791
- payload: {
792
- ...createPayloadBase(ctx, options),
793
- hookName: "agent_end",
794
- iteration: ctx.iteration,
795
- turn: ctx.turn,
796
- taskComplete: { taskMetadata: {} },
797
- },
798
- });
799
- };
800
-
801
- const runStopError = async (
802
- ctx: AgentHookStopErrorContext,
803
- ): Promise<void> => {
804
- const commandPaths = commandMap.agent_error ?? [];
805
- if (commandPaths.length === 0) {
806
- return;
807
- }
808
- runAsyncHookCommands({
809
- commands: commandPaths,
810
- cwd: options.cwd,
811
- logger: options.logger,
812
- payload: {
813
- ...createPayloadBase(ctx, options),
814
- hookName: "agent_error",
815
- iteration: ctx.iteration,
816
- error: {
817
- name: ctx.error.name,
818
- message: ctx.error.message,
819
- stack: ctx.error.stack,
820
- },
821
- },
822
- });
823
- };
824
-
825
- const runSessionShutdown = async (
826
- ctx: AgentHookSessionShutdownContext,
827
- ): Promise<void> => {
828
- if (isAbortReason(ctx.reason)) {
829
- const abortCommands = commandMap.agent_abort ?? [];
830
- if (abortCommands.length > 0) {
831
- runAsyncHookCommands({
832
- commands: abortCommands,
833
- cwd: options.cwd,
834
- logger: options.logger,
835
- payload: {
836
- ...createPayloadBase(ctx, options),
837
- hookName: "agent_abort",
838
- reason: ctx.reason,
839
- taskCancel: { taskMetadata: {} },
840
- },
841
- });
842
- }
843
- }
844
- const shutdownCommands = commandMap.session_shutdown ?? [];
845
- if (shutdownCommands.length === 0) {
846
- return;
847
- }
848
- runAsyncHookCommands({
849
- commands: shutdownCommands,
850
- cwd: options.cwd,
851
- logger: options.logger,
852
- payload: {
853
- ...createPayloadBase(ctx, options),
854
- hookName: "session_shutdown",
855
- reason: ctx.reason,
856
- },
857
- });
858
- };
859
-
860
- return {
861
- onRunStart: async (ctx: AgentHookRunStartContext) => {
862
- await runStartPayload(ctx);
863
- return undefined;
864
- },
865
- onToolCallStart: async (ctx: AgentHookToolCallStartContext) =>
866
- runToolCallStart(ctx),
867
- onToolCallEnd: async (ctx: AgentHookToolCallEndContext) => {
868
- await runToolCallEnd(ctx);
869
- return undefined;
870
- },
871
- onTurnEnd: async (ctx: AgentHookTurnEndContext) => {
872
- await runTurnEnd(ctx);
873
- return undefined;
874
- },
875
- onStopError: async (ctx: AgentHookStopErrorContext) => {
876
- await runStopError(ctx);
877
- return undefined;
878
- },
879
- onSessionShutdown: async (ctx: AgentHookSessionShutdownContext) => {
880
- await runSessionShutdown(ctx);
881
- return undefined;
882
- },
883
- };
884
- }
885
-
886
- function mergeHookFunction<K extends keyof AgentHooks>(
887
- layers: AgentHooks[],
888
- key: K,
889
- ): AgentHooks[K] | undefined {
890
- const handlers = layers
891
- .map((layer) => layer[key])
892
- .filter((handler) => typeof handler === "function");
893
- if (handlers.length === 0) {
894
- return undefined;
895
- }
896
- return (async (ctx: unknown) => {
897
- let control: AgentHookControl | undefined;
898
- for (const handler of handlers) {
899
- const next = await (handler as (arg: unknown) => unknown)(ctx);
900
- control = mergeHookControls(
901
- control,
902
- next as AgentHookControl | undefined,
903
- );
904
- }
905
- return control;
906
- }) as AgentHooks[K];
907
- }
908
-
909
- export function mergeAgentHooks(
910
- layers: Array<AgentHooks | undefined>,
911
- ): AgentHooks | undefined {
912
- const activeLayers = layers.filter(
913
- (layer): layer is AgentHooks => layer !== undefined,
914
- );
915
- if (activeLayers.length === 0) {
916
- return undefined;
917
- }
918
-
919
- return {
920
- onSessionStart: mergeHookFunction(activeLayers, "onSessionStart"),
921
- onRunStart: mergeHookFunction(activeLayers, "onRunStart"),
922
- onRunEnd: mergeHookFunction(activeLayers, "onRunEnd"),
923
- onIterationStart: mergeHookFunction(activeLayers, "onIterationStart"),
924
- onIterationEnd: mergeHookFunction(activeLayers, "onIterationEnd"),
925
- onTurnStart: mergeHookFunction(activeLayers, "onTurnStart"),
926
- onBeforeAgentStart: mergeHookFunction(activeLayers, "onBeforeAgentStart"),
927
- onTurnEnd: mergeHookFunction(activeLayers, "onTurnEnd"),
928
- onStopError: mergeHookFunction(activeLayers, "onStopError"),
929
- onToolCallStart: mergeHookFunction(activeLayers, "onToolCallStart"),
930
- onToolCallEnd: mergeHookFunction(activeLayers, "onToolCallEnd"),
931
- onSessionShutdown: mergeHookFunction(activeLayers, "onSessionShutdown"),
932
- onError: mergeHookFunction(activeLayers, "onError"),
933
- };
934
- }