@clinebot/core 0.0.35 → 0.0.36

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 (335) hide show
  1. package/README.md +1 -2
  2. package/dist/ClineCore.d.ts +53 -39
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/account/index.d.ts +1 -1
  5. package/dist/account/index.d.ts.map +1 -1
  6. package/dist/account/rpc.d.ts +6 -6
  7. package/dist/account/rpc.d.ts.map +1 -1
  8. package/dist/cron/index.d.ts +6 -0
  9. package/dist/cron/index.d.ts.map +1 -0
  10. package/dist/cron/resource-limiter.d.ts +9 -0
  11. package/dist/cron/resource-limiter.d.ts.map +1 -0
  12. package/dist/cron/schedule-command-service.d.ts +10 -0
  13. package/dist/cron/schedule-command-service.d.ts.map +1 -0
  14. package/dist/cron/schedule-service.d.ts +100 -0
  15. package/dist/cron/schedule-service.d.ts.map +1 -0
  16. package/dist/cron/scheduler.d.ts +66 -0
  17. package/dist/cron/scheduler.d.ts.map +1 -0
  18. package/dist/cron/sqlite-schedule-store.d.ts +52 -0
  19. package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
  20. package/dist/extensions/config/agent-config-loader.d.ts +4 -3
  21. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  22. package/dist/extensions/config/runtime-commands.d.ts +1 -0
  23. package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
  24. package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
  25. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  26. package/dist/extensions/context/agentic-compaction.d.ts +2 -2
  27. package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
  28. package/dist/extensions/context/compaction-shared.d.ts +5 -4
  29. package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
  30. package/dist/extensions/context/compaction.d.ts.map +1 -1
  31. package/dist/extensions/plugin/plugin-config-loader.d.ts +9 -2
  32. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  33. package/dist/extensions/plugin/plugin-loader.d.ts +5 -3
  34. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  35. package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
  36. package/dist/extensions/plugin/plugin-sandbox.d.ts +15 -2
  37. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  38. package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
  39. package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
  40. package/dist/extensions/plugin-sandbox-bootstrap.js +211 -211
  41. package/dist/extensions/tools/definitions.d.ts +1 -1
  42. package/dist/extensions/tools/definitions.d.ts.map +1 -1
  43. package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
  44. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
  45. package/dist/extensions/tools/executors/search.d.ts +1 -1
  46. package/dist/extensions/tools/executors/search.d.ts.map +1 -1
  47. package/dist/extensions/tools/index.d.ts +2 -0
  48. package/dist/extensions/tools/index.d.ts.map +1 -1
  49. package/dist/extensions/tools/presets.d.ts +26 -43
  50. package/dist/extensions/tools/presets.d.ts.map +1 -1
  51. package/dist/extensions/tools/runtime.d.ts +25 -0
  52. package/dist/extensions/tools/runtime.d.ts.map +1 -0
  53. package/dist/extensions/tools/schemas.d.ts.map +1 -1
  54. package/dist/extensions/tools/team/team-tools.d.ts +1 -0
  55. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
  56. package/dist/hooks/hook-file-hooks.d.ts +4 -1
  57. package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
  58. package/dist/hooks/index.d.ts +0 -1
  59. package/dist/hooks/index.d.ts.map +1 -1
  60. package/dist/hooks/subprocess.d.ts +8 -1
  61. package/dist/hooks/subprocess.d.ts.map +1 -1
  62. package/dist/hub/browser-websocket.d.ts +18 -0
  63. package/dist/hub/browser-websocket.d.ts.map +1 -0
  64. package/dist/hub/client.d.ts +45 -0
  65. package/dist/hub/client.d.ts.map +1 -0
  66. package/dist/hub/connect.d.ts +15 -0
  67. package/dist/hub/connect.d.ts.map +1 -0
  68. package/dist/hub/daemon-entry.d.ts +2 -0
  69. package/dist/hub/daemon-entry.d.ts.map +1 -0
  70. package/dist/hub/daemon-entry.js +1045 -0
  71. package/dist/hub/daemon.d.ts +5 -0
  72. package/dist/hub/daemon.d.ts.map +1 -0
  73. package/dist/hub/defaults.d.ts +13 -0
  74. package/dist/hub/defaults.d.ts.map +1 -0
  75. package/dist/hub/discovery.d.ts +29 -0
  76. package/dist/hub/discovery.d.ts.map +1 -0
  77. package/dist/hub/index.d.ts +15 -0
  78. package/dist/hub/index.d.ts.map +1 -0
  79. package/dist/hub/index.js +1044 -0
  80. package/dist/hub/native-transport.d.ts +17 -0
  81. package/dist/hub/native-transport.d.ts.map +1 -0
  82. package/dist/hub/runtime-handlers.d.ts +11 -0
  83. package/dist/hub/runtime-handlers.d.ts.map +1 -0
  84. package/dist/hub/server.d.ts +86 -0
  85. package/dist/hub/server.d.ts.map +1 -0
  86. package/dist/hub/session-client.d.ts +87 -0
  87. package/dist/hub/session-client.d.ts.map +1 -0
  88. package/dist/hub/start-shared-server.d.ts +19 -0
  89. package/dist/hub/start-shared-server.d.ts.map +1 -0
  90. package/dist/hub/transport.d.ts +8 -0
  91. package/dist/hub/transport.d.ts.map +1 -0
  92. package/dist/hub/ui-client.d.ts +44 -0
  93. package/dist/hub/ui-client.d.ts.map +1 -0
  94. package/dist/hub/workspace.d.ts +4 -0
  95. package/dist/hub/workspace.d.ts.map +1 -0
  96. package/dist/index.d.ts +26 -15
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +498 -476
  99. package/dist/llms/configured-provider-registry.d.ts +28 -0
  100. package/dist/llms/configured-provider-registry.d.ts.map +1 -0
  101. package/dist/llms/provider-defaults.d.ts +27 -0
  102. package/dist/llms/provider-defaults.d.ts.map +1 -0
  103. package/dist/llms/provider-settings.d.ts +202 -0
  104. package/dist/llms/provider-settings.d.ts.map +1 -0
  105. package/dist/llms/runtime-config.d.ts +4 -0
  106. package/dist/llms/runtime-config.d.ts.map +1 -0
  107. package/dist/llms/runtime-registry.d.ts +20 -0
  108. package/dist/llms/runtime-registry.d.ts.map +1 -0
  109. package/dist/llms/runtime-types.d.ts +85 -0
  110. package/dist/llms/runtime-types.d.ts.map +1 -0
  111. package/dist/runtime/host.d.ts +1 -2
  112. package/dist/runtime/host.d.ts.map +1 -1
  113. package/dist/runtime/rules.d.ts +1 -0
  114. package/dist/runtime/rules.d.ts.map +1 -1
  115. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  116. package/dist/runtime/runtime-host.d.ts +22 -24
  117. package/dist/runtime/runtime-host.d.ts.map +1 -1
  118. package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
  119. package/dist/runtime/session-runtime.d.ts +1 -19
  120. package/dist/runtime/session-runtime.d.ts.map +1 -1
  121. package/dist/services/global-settings.d.ts +12 -0
  122. package/dist/services/global-settings.d.ts.map +1 -0
  123. package/dist/services/local-runtime-bootstrap.d.ts +9 -3
  124. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
  125. package/dist/services/plugin-tools.d.ts +16 -0
  126. package/dist/services/plugin-tools.d.ts.map +1 -0
  127. package/dist/services/providers/local-provider-registry.d.ts +4 -4
  128. package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
  129. package/dist/services/providers/local-provider-service.d.ts +13 -13
  130. package/dist/services/providers/local-provider-service.d.ts.map +1 -1
  131. package/dist/services/session-data.d.ts +1 -1
  132. package/dist/services/session-data.d.ts.map +1 -1
  133. package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
  134. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
  135. package/dist/services/telemetry/index.js +28 -15
  136. package/dist/services/workspace-manifest.d.ts +11 -0
  137. package/dist/services/workspace-manifest.d.ts.map +1 -1
  138. package/dist/session/persistence-service.d.ts +11 -23
  139. package/dist/session/persistence-service.d.ts.map +1 -1
  140. package/dist/session/session-manifest-store.d.ts +22 -0
  141. package/dist/session/session-manifest-store.d.ts.map +1 -0
  142. package/dist/session/session-row.d.ts +93 -0
  143. package/dist/session/session-row.d.ts.map +1 -0
  144. package/dist/session/session-service.d.ts +2 -102
  145. package/dist/session/session-service.d.ts.map +1 -1
  146. package/dist/session/subagent-session-manager.d.ts +36 -0
  147. package/dist/session/subagent-session-manager.d.ts.map +1 -0
  148. package/dist/session/team-persistence-store.d.ts +24 -0
  149. package/dist/session/team-persistence-store.d.ts.map +1 -0
  150. package/dist/transports/hub.d.ts +47 -0
  151. package/dist/transports/hub.d.ts.map +1 -0
  152. package/dist/transports/local.d.ts +10 -6
  153. package/dist/transports/local.d.ts.map +1 -1
  154. package/dist/transports/remote.d.ts +10 -0
  155. package/dist/transports/remote.d.ts.map +1 -0
  156. package/dist/transports/runtime-host-support.d.ts +3 -2
  157. package/dist/transports/runtime-host-support.d.ts.map +1 -1
  158. package/dist/types/chat-schema.d.ts +10 -12
  159. package/dist/types/chat-schema.d.ts.map +1 -1
  160. package/dist/types/config.d.ts +8 -7
  161. package/dist/types/config.d.ts.map +1 -1
  162. package/dist/types/provider-settings.d.ts +4 -5
  163. package/dist/types/provider-settings.d.ts.map +1 -1
  164. package/dist/types/session.d.ts +2 -1
  165. package/dist/types/session.d.ts.map +1 -1
  166. package/dist/types.d.ts +8 -1
  167. package/dist/types.d.ts.map +1 -1
  168. package/package.json +20 -6
  169. package/src/ClineCore.ts +68 -40
  170. package/src/account/index.ts +3 -3
  171. package/src/account/rpc.ts +12 -12
  172. package/src/cron/index.ts +5 -0
  173. package/src/cron/resource-limiter.ts +46 -0
  174. package/src/cron/schedule-command-service.ts +193 -0
  175. package/src/cron/schedule-service.ts +703 -0
  176. package/src/cron/scheduler.ts +637 -0
  177. package/src/cron/sqlite-schedule-store.ts +708 -0
  178. package/src/extensions/config/agent-config-loader.ts +17 -7
  179. package/src/extensions/config/runtime-commands.ts +6 -0
  180. package/src/extensions/config/user-instruction-config-loader.ts +1 -0
  181. package/src/extensions/context/agentic-compaction.ts +3 -3
  182. package/src/extensions/context/basic-compaction.ts +2 -2
  183. package/src/extensions/context/compaction-shared.ts +5 -4
  184. package/src/extensions/context/compaction.ts +3 -3
  185. package/src/extensions/plugin/plugin-config-loader.ts +17 -2
  186. package/src/extensions/plugin/plugin-loader.ts +48 -4
  187. package/src/extensions/plugin/plugin-module-import.ts +0 -2
  188. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +93 -39
  189. package/src/extensions/plugin/plugin-sandbox.ts +47 -27
  190. package/src/extensions/plugin/plugin-targeting.ts +32 -0
  191. package/src/extensions/tools/definitions.ts +30 -49
  192. package/src/extensions/tools/executors/apply-patch.ts +69 -80
  193. package/src/extensions/tools/executors/search.ts +195 -3
  194. package/src/extensions/tools/index.ts +10 -0
  195. package/src/extensions/tools/presets.ts +31 -46
  196. package/src/extensions/tools/runtime.ts +261 -0
  197. package/src/extensions/tools/schemas.ts +4 -2
  198. package/src/extensions/tools/team/team-tools.ts +21 -0
  199. package/src/hooks/hook-file-hooks.ts +8 -2
  200. package/src/hooks/index.ts +0 -7
  201. package/src/hooks/subprocess-runner.ts +1 -1
  202. package/src/hooks/subprocess.ts +9 -0
  203. package/src/hub/browser-websocket.ts +137 -0
  204. package/src/hub/client.ts +574 -0
  205. package/src/hub/connect.ts +156 -0
  206. package/src/hub/daemon-entry.ts +87 -0
  207. package/src/hub/daemon.ts +181 -0
  208. package/src/hub/defaults.ts +43 -0
  209. package/src/hub/discovery.ts +247 -0
  210. package/src/hub/index.ts +14 -0
  211. package/src/hub/native-transport.ts +31 -0
  212. package/src/hub/runtime-handlers.ts +140 -0
  213. package/src/hub/server.ts +1888 -0
  214. package/src/hub/session-client.ts +460 -0
  215. package/src/hub/start-shared-server.ts +58 -0
  216. package/src/hub/transport.ts +14 -0
  217. package/src/hub/ui-client.ts +122 -0
  218. package/src/hub/workspace.ts +19 -0
  219. package/src/index.ts +124 -68
  220. package/src/llms/configured-provider-registry.ts +193 -0
  221. package/src/llms/provider-defaults.ts +637 -0
  222. package/src/llms/provider-settings.ts +263 -0
  223. package/src/llms/runtime-config.ts +43 -0
  224. package/src/llms/runtime-registry.ts +171 -0
  225. package/src/llms/runtime-types.ts +121 -0
  226. package/src/runtime/host.ts +107 -269
  227. package/src/runtime/index.ts +1 -0
  228. package/src/runtime/rules.ts +12 -0
  229. package/src/runtime/runtime-builder.ts +24 -8
  230. package/src/runtime/runtime-host.ts +89 -61
  231. package/src/runtime/runtime-oauth-token-manager.ts +11 -15
  232. package/src/runtime/session-runtime.ts +0 -24
  233. package/src/services/global-settings.ts +122 -0
  234. package/src/services/local-runtime-bootstrap.ts +51 -13
  235. package/src/services/plugin-tools.ts +85 -0
  236. package/src/services/providers/local-provider-registry.ts +6 -6
  237. package/src/services/providers/local-provider-service.ts +42 -37
  238. package/src/services/session-data.ts +15 -9
  239. package/src/services/storage/provider-settings-legacy-migration.ts +6 -4
  240. package/src/services/storage/provider-settings-manager.ts +1 -1
  241. package/src/services/workspace-manifest.ts +18 -0
  242. package/src/session/file-session-service.ts +1 -1
  243. package/src/session/index.ts +6 -27
  244. package/src/session/persistence-service.ts +119 -504
  245. package/src/session/session-manifest-store.ts +158 -0
  246. package/src/session/session-row.ts +199 -0
  247. package/src/session/session-service.ts +17 -376
  248. package/src/session/session-team-coordination.ts +1 -1
  249. package/src/session/subagent-session-manager.ts +397 -0
  250. package/src/session/team-persistence-store.ts +176 -0
  251. package/src/transports/hub.ts +656 -0
  252. package/src/transports/local.ts +135 -40
  253. package/src/transports/remote.ts +26 -0
  254. package/src/transports/runtime-host-support.ts +63 -9
  255. package/src/types/chat-schema.ts +4 -5
  256. package/src/types/config.ts +8 -7
  257. package/src/types/provider-settings.ts +11 -7
  258. package/src/types/session.ts +2 -4
  259. package/src/types.ts +27 -1
  260. package/dist/hooks/persistent.d.ts +0 -64
  261. package/dist/hooks/persistent.d.ts.map +0 -1
  262. package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
  263. package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
  264. package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
  265. package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
  266. package/dist/session/rpc-session-service.d.ts +0 -16
  267. package/dist/session/rpc-session-service.d.ts.map +0 -1
  268. package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
  269. package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
  270. package/dist/transports/rpc.d.ts +0 -51
  271. package/dist/transports/rpc.d.ts.map +0 -1
  272. package/src/ClineCore.test.ts +0 -226
  273. package/src/account/cline-account-service.test.ts +0 -185
  274. package/src/account/featurebase-token.test.ts +0 -175
  275. package/src/account/rpc.test.ts +0 -63
  276. package/src/auth/bounded-ttl-cache.test.ts +0 -38
  277. package/src/auth/client.test.ts +0 -69
  278. package/src/auth/cline.test.ts +0 -267
  279. package/src/auth/codex.test.ts +0 -170
  280. package/src/auth/oca.test.ts +0 -340
  281. package/src/auth/server.test.ts +0 -287
  282. package/src/auth/utils.test.ts +0 -128
  283. package/src/extensions/config/agent-config-loader.test.ts +0 -236
  284. package/src/extensions/config/hooks-config-loader.test.ts +0 -20
  285. package/src/extensions/config/runtime-commands.test.ts +0 -115
  286. package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
  287. package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
  288. package/src/extensions/context/compaction.test.ts +0 -483
  289. package/src/extensions/mcp/config-loader.test.ts +0 -238
  290. package/src/extensions/mcp/manager.test.ts +0 -105
  291. package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
  292. package/src/extensions/plugin/plugin-loader.test.ts +0 -292
  293. package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
  294. package/src/extensions/tools/definitions.test.ts +0 -780
  295. package/src/extensions/tools/executors/bash.test.ts +0 -87
  296. package/src/extensions/tools/executors/editor.test.ts +0 -35
  297. package/src/extensions/tools/executors/file-read.test.ts +0 -125
  298. package/src/extensions/tools/model-tool-routing.test.ts +0 -86
  299. package/src/extensions/tools/presets.test.ts +0 -70
  300. package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
  301. package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
  302. package/src/extensions/tools/team/team-tools.test.ts +0 -918
  303. package/src/hooks/checkpoint-hooks.test.ts +0 -168
  304. package/src/hooks/hook-file-hooks.test.ts +0 -311
  305. package/src/hooks/persistent.ts +0 -661
  306. package/src/runtime/history.test.ts +0 -114
  307. package/src/runtime/host.test.ts +0 -230
  308. package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
  309. package/src/runtime/rpc-runtime-ensure.ts +0 -659
  310. package/src/runtime/rpc-spawn-lease.test.ts +0 -81
  311. package/src/runtime/rpc-spawn-lease.ts +0 -156
  312. package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
  313. package/src/runtime/runtime-builder.test.ts +0 -615
  314. package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
  315. package/src/runtime/runtime-parity.test.ts +0 -143
  316. package/src/services/providers/local-provider-service.test.ts +0 -1062
  317. package/src/services/session-data.test.ts +0 -160
  318. package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
  319. package/src/services/storage/provider-settings-manager.test.ts +0 -191
  320. package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
  321. package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
  322. package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
  323. package/src/services/telemetry/TelemetryService.test.ts +0 -134
  324. package/src/services/telemetry/distinct-id.test.ts +0 -57
  325. package/src/services/workspace/file-indexer.d.ts +0 -11
  326. package/src/services/workspace/file-indexer.test.ts +0 -156
  327. package/src/services/workspace/mention-enricher.test.ts +0 -106
  328. package/src/session/persistence-service.test.ts +0 -300
  329. package/src/session/rpc-session-service.ts +0 -114
  330. package/src/session/session-service.team-persistence.test.ts +0 -48
  331. package/src/session/sqlite-rpc-session-backend.ts +0 -301
  332. package/src/transports/local.e2e.test.ts +0 -380
  333. package/src/transports/local.test.ts +0 -2559
  334. package/src/transports/rpc.test.ts +0 -82
  335. package/src/transports/rpc.ts +0 -665
@@ -29,6 +29,7 @@ import type { HookEventPayload } from "../hooks";
29
29
  import { DefaultRuntimeBuilder } from "../runtime/runtime-builder";
30
30
  import type {
31
31
  RuntimeHost,
32
+ RuntimeHostSubscribeOptions,
32
33
  SendSessionInput,
33
34
  SessionAccumulatedUsage,
34
35
  StartSessionInput,
@@ -47,6 +48,7 @@ import {
47
48
  handleAgentEvent,
48
49
  } from "../services/agent-events";
49
50
  import { resolveWorkspacePath } from "../services/config";
51
+ import { filterDisabledTools } from "../services/global-settings";
50
52
  import { prepareLocalRuntimeBootstrap } from "../services/local-runtime-bootstrap";
51
53
  import { nowIso } from "../services/session-artifacts";
52
54
  import {
@@ -73,15 +75,14 @@ import {
73
75
  } from "../services/usage";
74
76
  import { enrichPromptWithMentions } from "../services/workspace";
75
77
  import type { FileSessionService } from "../session/file-session-service";
76
- import type { RpcCoreSessionService } from "../session/rpc-session-service";
77
78
  import {
78
79
  type SessionManifest,
79
80
  SessionManifestSchema,
80
81
  } from "../session/session-manifest";
82
+ import type { SessionRow } from "../session/session-row";
81
83
  import type {
82
84
  CoreSessionService,
83
85
  RootSessionArtifacts,
84
- SessionRow,
85
86
  } from "../session/session-service";
86
87
  import {
87
88
  buildTeamRunContinuationPrompt,
@@ -106,10 +107,7 @@ import {
106
107
  replaySubagentHookEvent,
107
108
  } from "./runtime-host-support";
108
109
 
109
- type SessionBackend =
110
- | CoreSessionService
111
- | RpcCoreSessionService
112
- | FileSessionService;
110
+ type SessionBackend = CoreSessionService | FileSessionService;
113
111
 
114
112
  const MAX_SCAN_LIMIT = 5000;
115
113
  const MAX_USER_FILE_BYTES = 20 * 1_000 * 1_024;
@@ -129,13 +127,57 @@ async function loadUserFileContent(path: string): Promise<string> {
129
127
  return content;
130
128
  }
131
129
 
130
+ function toActiveSessionRecord(session: ActiveSession): SessionRecord {
131
+ return {
132
+ sessionId: session.sessionId,
133
+ source: session.source,
134
+ pid: process.pid,
135
+ startedAt: session.startedAt,
136
+ endedAt: null,
137
+ exitCode: null,
138
+ status: "running",
139
+ interactive: session.interactive,
140
+ provider: session.config.providerId,
141
+ model: session.config.modelId,
142
+ cwd: session.config.cwd,
143
+ workspaceRoot: resolveWorkspacePath(session.config),
144
+ teamName: session.config.teamName?.trim() || undefined,
145
+ enableTools: session.config.enableTools,
146
+ enableSpawn: session.config.enableSpawnAgent,
147
+ enableTeams: session.config.enableAgentTeams,
148
+ parentSessionId:
149
+ typeof session.sessionMetadata?.parentSessionId === "string"
150
+ ? session.sessionMetadata.parentSessionId
151
+ : undefined,
152
+ parentAgentId:
153
+ typeof session.sessionMetadata?.parentAgentId === "string"
154
+ ? session.sessionMetadata.parentAgentId
155
+ : undefined,
156
+ agentId:
157
+ typeof session.sessionMetadata?.agentId === "string"
158
+ ? session.sessionMetadata.agentId
159
+ : undefined,
160
+ conversationId:
161
+ typeof session.sessionMetadata?.conversationId === "string"
162
+ ? session.sessionMetadata.conversationId
163
+ : undefined,
164
+ isSubagent:
165
+ typeof session.sessionMetadata?.isSubagent === "boolean"
166
+ ? session.sessionMetadata.isSubagent
167
+ : false,
168
+ prompt: session.pendingPrompt,
169
+ metadata: session.sessionMetadata,
170
+ messagesPath: session.artifacts?.messagesPath,
171
+ updatedAt: session.startedAt,
172
+ };
173
+ }
174
+
132
175
  export interface LocalRuntimeHostOptions {
133
176
  distinctId?: string;
134
177
  sessionService: SessionBackend;
135
178
  runtimeBuilder?: RuntimeBuilder;
136
179
  createAgent?: (config: AgentConfig) => Agent;
137
180
  defaultToolExecutors?: Partial<ToolExecutors>;
138
- teamToolsFactory?: import("../runtime/session-runtime").TeamToolsFactory;
139
181
  toolPolicies?: AgentConfig["toolPolicies"];
140
182
  providerSettingsManager?: ProviderSettingsManager;
141
183
  oauthTokenManager?: RuntimeOAuthTokenManager;
@@ -143,6 +185,12 @@ export interface LocalRuntimeHostOptions {
143
185
  requestToolApproval?: (
144
186
  request: ToolApprovalRequest,
145
187
  ) => Promise<ToolApprovalResult>;
188
+ /**
189
+ * Default custom `fetch` implementation threaded into every
190
+ * `ProviderConfig.fetch` built during local session bootstrap. Used by
191
+ * the AI gateway providers when issuing HTTP requests.
192
+ */
193
+ fetch?: typeof fetch;
146
194
  }
147
195
 
148
196
  export class LocalRuntimeHost implements RuntimeHost {
@@ -151,11 +199,11 @@ export class LocalRuntimeHost implements RuntimeHost {
151
199
  private readonly runtimeBuilder: RuntimeBuilder;
152
200
  private readonly createAgentInstance: (config: AgentConfig) => Agent;
153
201
  private readonly defaultToolExecutors?: Partial<ToolExecutors>;
154
- private readonly teamToolsFactory?: import("../runtime/session-runtime").TeamToolsFactory;
155
202
  private readonly defaultToolPolicies?: AgentConfig["toolPolicies"];
156
203
  private readonly providerSettingsManager: ProviderSettingsManager;
157
204
  private readonly oauthTokenManager: RuntimeOAuthTokenManager;
158
205
  private readonly defaultTelemetry?: ITelemetryService;
206
+ private readonly defaultFetch?: typeof fetch;
159
207
  private readonly defaultRequestToolApproval?: (
160
208
  request: ToolApprovalRequest,
161
209
  ) => Promise<ToolApprovalResult>;
@@ -176,7 +224,6 @@ export class LocalRuntimeHost implements RuntimeHost {
176
224
  this.createAgentInstance =
177
225
  options.createAgent ?? ((config) => new Agent(config));
178
226
  this.defaultToolExecutors = options.defaultToolExecutors;
179
- this.teamToolsFactory = options.teamToolsFactory;
180
227
  this.defaultToolPolicies = options.toolPolicies;
181
228
  this.providerSettingsManager =
182
229
  options.providerSettingsManager ?? new ProviderSettingsManager();
@@ -188,6 +235,7 @@ export class LocalRuntimeHost implements RuntimeHost {
188
235
  });
189
236
  this.defaultTelemetry = options.telemetry;
190
237
  this.defaultTelemetry?.setDistinctId(distinctId);
238
+ this.defaultFetch = options.fetch;
191
239
  this.defaultRequestToolApproval = options.requestToolApproval;
192
240
  }
193
241
 
@@ -198,21 +246,7 @@ export class LocalRuntimeHost implements RuntimeHost {
198
246
  const startedAt = nowIso();
199
247
  const requestedSessionId = input.config.sessionId?.trim() ?? "";
200
248
  const sessionId = requestedSessionId || createSessionId();
201
- const resumedRow = requestedSessionId
202
- ? await this.getRow(sessionId)
203
- : undefined;
204
- const startInput: StartSessionInput =
205
- resumedRow &&
206
- !input.config.teamName?.trim() &&
207
- resumedRow.teamName?.trim()
208
- ? {
209
- ...input,
210
- config: {
211
- ...input.config,
212
- teamName: resumedRow.teamName,
213
- },
214
- }
215
- : input;
249
+ const startInput: StartSessionInput = input;
216
250
  this.usageBySession.set(sessionId, createInitialAccumulatedUsage());
217
251
 
218
252
  const sessionsDir =
@@ -250,6 +284,8 @@ export class LocalRuntimeHost implements RuntimeHost {
250
284
  messages_path: messagesPath,
251
285
  });
252
286
 
287
+ const sessionToolExecutors =
288
+ input.localRuntime?.defaultToolExecutors ?? this.defaultToolExecutors;
253
289
  let bootstrap!: Awaited<ReturnType<typeof prepareLocalRuntimeBootstrap>>;
254
290
  bootstrap = await prepareLocalRuntimeBootstrap({
255
291
  input: startInput,
@@ -257,16 +293,17 @@ export class LocalRuntimeHost implements RuntimeHost {
257
293
  sessionId,
258
294
  providerSettingsManager: this.providerSettingsManager,
259
295
  defaultTelemetry: this.defaultTelemetry,
260
- defaultToolExecutors: this.defaultToolExecutors,
261
- teamToolsFactory: this.teamToolsFactory,
296
+ defaultToolExecutors: sessionToolExecutors,
262
297
  defaultToolPolicies: this.defaultToolPolicies,
263
298
  defaultRequestToolApproval: this.defaultRequestToolApproval,
299
+ defaultFetch: this.defaultFetch,
264
300
  onPluginEvent: (event) => void this.handlePluginEvent(sessionId, event),
265
301
  onTeamEvent: (event: TeamEvent) => {
266
302
  void this.handleTeamEvent(sessionId, event);
267
303
  bootstrap.config.onTeamEvent?.(event);
268
304
  },
269
- createSpawnTool: () => this.createSpawnTool(bootstrap.config, sessionId),
305
+ createSpawnTool: () =>
306
+ this.createSpawnTool(bootstrap.config, sessionId, sessionToolExecutors),
270
307
  readSessionMetadata: async () =>
271
308
  (await this.get(sessionId))?.metadata as
272
309
  | Record<string, unknown>
@@ -404,6 +441,18 @@ export class LocalRuntimeHost implements RuntimeHost {
404
441
 
405
442
  async send(input: SendSessionInput): Promise<AgentResult | undefined> {
406
443
  const session = this.getSessionOrThrow(input.sessionId);
444
+ const canStartRun =
445
+ typeof (session.agent as Agent & { canStartRun?: () => boolean })
446
+ .canStartRun === "function"
447
+ ? (
448
+ session.agent as Agent & {
449
+ canStartRun: () => boolean;
450
+ }
451
+ ).canStartRun()
452
+ : true;
453
+ const delivery =
454
+ input.delivery ??
455
+ (session.interactive && !canStartRun ? ("queue" as const) : undefined);
407
456
  session.config.telemetry?.capture({
408
457
  event: "session.input_sent",
409
458
  properties: {
@@ -411,13 +460,13 @@ export class LocalRuntimeHost implements RuntimeHost {
411
460
  promptLength: input.prompt.length,
412
461
  userImageCount: input.userImages?.length ?? 0,
413
462
  userFileCount: input.userFiles?.length ?? 0,
414
- delivery: input.delivery ?? "immediate",
463
+ delivery: delivery ?? "immediate",
415
464
  },
416
465
  });
417
- if (input.delivery === "queue" || input.delivery === "steer") {
466
+ if (delivery === "queue" || delivery === "steer") {
418
467
  this.enqueuePendingPrompt(input.sessionId, {
419
468
  prompt: input.prompt,
420
- delivery: input.delivery,
469
+ delivery,
421
470
  userImages: input.userImages,
422
471
  userFiles: input.userFiles,
423
472
  });
@@ -506,13 +555,25 @@ export class LocalRuntimeHost implements RuntimeHost {
506
555
  }
507
556
 
508
557
  async get(sessionId: string): Promise<SessionRecord | undefined> {
558
+ const active = this.sessions.get(sessionId);
559
+ if (active) {
560
+ return toActiveSessionRecord(active);
561
+ }
509
562
  const row = await this.getRow(sessionId);
510
563
  return row ? toSessionRecord(row) : undefined;
511
564
  }
512
565
 
513
566
  async list(limit = 200): Promise<SessionRecord[]> {
514
567
  const rows = await this.listRows(limit);
515
- return rows.map(toSessionRecord);
568
+ const persisted = rows.map(toSessionRecord);
569
+ const seen = new Set(persisted.map((row) => row.sessionId));
570
+ for (const active of this.sessions.values()) {
571
+ if (seen.has(active.sessionId)) {
572
+ continue;
573
+ }
574
+ persisted.unshift(toActiveSessionRecord(active));
575
+ }
576
+ return persisted.slice(0, limit);
516
577
  }
517
578
 
518
579
  async delete(sessionId: string): Promise<boolean> {
@@ -570,8 +631,11 @@ export class LocalRuntimeHost implements RuntimeHost {
570
631
  });
571
632
  }
572
633
 
573
- subscribe(listener: (event: CoreSessionEvent) => void): () => void {
574
- return this.events.subscribe(listener);
634
+ subscribe(
635
+ listener: (event: CoreSessionEvent) => void,
636
+ options?: RuntimeHostSubscribeOptions,
637
+ ): () => void {
638
+ return this.events.subscribe(listener, options);
575
639
  }
576
640
 
577
641
  async updateSessionModel(sessionId: string, modelId: string): Promise<void> {
@@ -844,12 +908,39 @@ export class LocalRuntimeHost implements RuntimeHost {
844
908
  }
845
909
  notifyTeamRunWaiters(session);
846
910
 
911
+ const cleanupErrors: unknown[] = [];
912
+ const recordCleanupError = (stage: string, error: unknown) => {
913
+ cleanupErrors.push(error);
914
+ session.config.logger?.log("Session shutdown cleanup failed", {
915
+ sessionId: session.sessionId,
916
+ stage,
917
+ error,
918
+ severity: "warn",
919
+ });
920
+ };
921
+
847
922
  if (session.artifacts) {
848
- await this.updateStatus(session, input.status, input.exitCode);
849
- await session.agent.shutdown(input.shutdownReason);
923
+ try {
924
+ await this.updateStatus(session, input.status, input.exitCode);
925
+ } catch (error) {
926
+ recordCleanupError("update_status", error);
927
+ }
928
+ try {
929
+ await session.agent.shutdown(input.shutdownReason);
930
+ } catch (error) {
931
+ recordCleanupError("agent_shutdown", error);
932
+ }
933
+ }
934
+ try {
935
+ await Promise.resolve(session.runtime.shutdown(input.shutdownReason));
936
+ } catch (error) {
937
+ recordCleanupError("runtime_shutdown", error);
938
+ }
939
+ try {
940
+ await session.pluginSandboxShutdown?.();
941
+ } catch (error) {
942
+ recordCleanupError("plugin_sandbox_shutdown", error);
850
943
  }
851
- await Promise.resolve(session.runtime.shutdown(input.shutdownReason));
852
- await session.pluginSandboxShutdown?.();
853
944
  this.sessions.delete(session.sessionId);
854
945
  this.emit({
855
946
  type: "ended",
@@ -859,6 +950,9 @@ export class LocalRuntimeHost implements RuntimeHost {
859
950
  ts: Date.now(),
860
951
  },
861
952
  });
953
+ if (cleanupErrors.length > 0 && input.status === "failed") {
954
+ throw cleanupErrors[0];
955
+ }
862
956
  }
863
957
 
864
958
  private async updateStatus(
@@ -1142,6 +1236,7 @@ export class LocalRuntimeHost implements RuntimeHost {
1142
1236
  private createSpawnTool(
1143
1237
  config: CoreSessionConfig,
1144
1238
  rootSessionId: string,
1239
+ toolExecutors?: Partial<ToolExecutors>,
1145
1240
  ): Tool {
1146
1241
  const createSubAgentTools = () => {
1147
1242
  const tools: Tool[] = config.enableTools
@@ -1152,13 +1247,13 @@ export class LocalRuntimeHost implements RuntimeHost {
1152
1247
  mode: config.mode,
1153
1248
  })
1154
1249
  ],
1155
- executors: this.defaultToolExecutors,
1250
+ executors: toolExecutors,
1156
1251
  })
1157
1252
  : [];
1158
1253
  if (config.enableSpawnAgent) {
1159
- tools.push(this.createSpawnTool(config, rootSessionId));
1254
+ tools.push(this.createSpawnTool(config, rootSessionId, toolExecutors));
1160
1255
  }
1161
- return tools;
1256
+ return filterDisabledTools(tools);
1162
1257
  };
1163
1258
 
1164
1259
  return createSpawnAgentTool({
@@ -0,0 +1,26 @@
1
+ import { normalizeHubWebSocketUrl } from "../hub/client";
2
+ import { HubRuntimeHost, type HubRuntimeHostOptions } from "./hub";
3
+
4
+ export interface RemoteRuntimeHostOptions
5
+ extends Omit<HubRuntimeHostOptions, "url"> {
6
+ endpoint: string;
7
+ workspaceRoot?: string;
8
+ cwd?: string;
9
+ }
10
+
11
+ export class RemoteRuntimeHost extends HubRuntimeHost {
12
+ constructor(options: RemoteRuntimeHostOptions) {
13
+ super(
14
+ {
15
+ url: normalizeHubWebSocketUrl(options.endpoint),
16
+ authToken: options.authToken,
17
+ clientType: options.clientType ?? "core-remote-runtime",
18
+ displayName: options.displayName ?? "core remote runtime",
19
+ },
20
+ {
21
+ workspaceRoot: options.workspaceRoot,
22
+ cwd: options.cwd,
23
+ },
24
+ );
25
+ }
26
+ }
@@ -1,23 +1,41 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import type * as LlmsProviders from "@clinebot/llms";
4
+ import { formatDisplayUserInput } from "@clinebot/shared";
4
5
  import type { HookEventPayload } from "../hooks";
5
- import type { SessionAccumulatedUsage } from "../runtime/runtime-host";
6
+ import type {
7
+ RuntimeHostSubscribeOptions,
8
+ SessionAccumulatedUsage,
9
+ } from "../runtime/runtime-host";
6
10
  import type { CoreSessionEvent } from "../types/events";
7
11
 
8
12
  export class RuntimeHostEventBus {
9
- private readonly listeners = new Set<(event: CoreSessionEvent) => void>();
13
+ private readonly listeners = new Set<{
14
+ listener: (event: CoreSessionEvent) => void;
15
+ sessionId?: string;
16
+ }>();
10
17
 
11
- subscribe(listener: (event: CoreSessionEvent) => void): () => void {
12
- this.listeners.add(listener);
18
+ subscribe(
19
+ listener: (event: CoreSessionEvent) => void,
20
+ options?: RuntimeHostSubscribeOptions,
21
+ ): () => void {
22
+ const entry = {
23
+ listener,
24
+ sessionId: options?.sessionId?.trim() || undefined,
25
+ };
26
+ this.listeners.add(entry);
13
27
  return () => {
14
- this.listeners.delete(listener);
28
+ this.listeners.delete(entry);
15
29
  };
16
30
  }
17
31
 
18
32
  emit(event: CoreSessionEvent): void {
19
- for (const listener of this.listeners) {
20
- listener(event);
33
+ const sessionId = event.payload.sessionId?.trim();
34
+ for (const entry of this.listeners) {
35
+ if (entry.sessionId && entry.sessionId !== sessionId) {
36
+ continue;
37
+ }
38
+ entry.listener(event);
21
39
  }
22
40
  }
23
41
 
@@ -35,10 +53,14 @@ export async function readPersistedMessagesFile(
35
53
  const raw = (await readFile(path, "utf8")).trim();
36
54
  if (!raw) return [];
37
55
  const parsed = JSON.parse(raw) as unknown;
38
- if (Array.isArray(parsed)) return parsed as LlmsProviders.Message[];
56
+ if (Array.isArray(parsed)) {
57
+ return sanitizeDisplayMessages(parsed as LlmsProviders.Message[]);
58
+ }
39
59
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
40
60
  const messages = (parsed as { messages?: unknown }).messages;
41
- if (Array.isArray(messages)) return messages as LlmsProviders.Message[];
61
+ if (Array.isArray(messages)) {
62
+ return sanitizeDisplayMessages(messages as LlmsProviders.Message[]);
63
+ }
42
64
  }
43
65
  return [];
44
66
  } catch {
@@ -46,6 +68,38 @@ export async function readPersistedMessagesFile(
46
68
  }
47
69
  }
48
70
 
71
+ function sanitizeDisplayMessage(
72
+ message: LlmsProviders.Message,
73
+ ): LlmsProviders.Message {
74
+ if (message.role !== "user") {
75
+ return message;
76
+ }
77
+ if (typeof message.content === "string") {
78
+ return {
79
+ ...message,
80
+ content: formatDisplayUserInput(message.content),
81
+ };
82
+ }
83
+ return {
84
+ ...message,
85
+ content: message.content.map((part) => {
86
+ if (part.type !== "text" || typeof part.text !== "string") {
87
+ return part;
88
+ }
89
+ return {
90
+ ...part,
91
+ text: formatDisplayUserInput(part.text),
92
+ };
93
+ }),
94
+ };
95
+ }
96
+
97
+ export function sanitizeDisplayMessages(
98
+ messages: LlmsProviders.Message[],
99
+ ): LlmsProviders.Message[] {
100
+ return messages.map(sanitizeDisplayMessage);
101
+ }
102
+
49
103
  export function cloneAccumulatedUsage(
50
104
  usage: SessionAccumulatedUsage | undefined,
51
105
  ): SessionAccumulatedUsage | undefined {
@@ -11,12 +11,11 @@ export const ChatSessionConfigSchema = z.object({
11
11
  rules: z.string().optional(),
12
12
  maxIterations: z.number().int().positive().optional(),
13
13
  enableTools: z.boolean(),
14
- enableSpawn: z.boolean(),
15
- enableTeams: z.boolean(),
14
+ enableSpawn: z.boolean().optional(),
15
+ enableTeams: z.boolean().optional(),
16
16
  autoApproveTools: z.boolean().optional(),
17
- teamName: z.string().min(1),
18
- missionStepInterval: z.number().int().positive(),
19
- missionTimeIntervalMs: z.number().int().positive(),
17
+ missionStepInterval: z.number().int().positive().optional(),
18
+ missionTimeIntervalMs: z.number().int().positive().optional(),
20
19
  });
21
20
 
22
21
  export const ChatSessionStatusSchema = z.enum([
@@ -1,4 +1,4 @@
1
- import type * as LlmsProviders from "@clinebot/llms";
1
+ import type { ModelInfo } from "@clinebot/llms";
2
2
  import type {
3
3
  AgentConfig,
4
4
  AgentHooks,
@@ -17,6 +17,7 @@ import type {
17
17
  } from "@clinebot/shared";
18
18
  import type { ToolRoutingRule } from "../extensions/tools/model-tool-routing";
19
19
  import type { TeamEvent } from "../extensions/tools/team";
20
+ import type { ProviderConfig } from "./provider-settings";
20
21
 
21
22
  export type CoreAgentMode = AgentMode;
22
23
 
@@ -26,8 +27,8 @@ export interface CoreModelConfig {
26
27
  apiKey?: string;
27
28
  baseUrl?: string;
28
29
  headers?: Record<string, string>;
29
- providerConfig?: LlmsProviders.ProviderConfig;
30
- knownModels?: Record<string, LlmsProviders.ModelInfo>;
30
+ providerConfig?: ProviderConfig;
31
+ knownModels?: Record<string, ModelInfo>;
31
32
  /**
32
33
  * Request model-side thinking/reasoning when supported.
33
34
  */
@@ -35,7 +36,7 @@ export interface CoreModelConfig {
35
36
  /**
36
37
  * Explicit reasoning effort override for capable models.
37
38
  */
38
- reasoningEffort?: LlmsProviders.ProviderConfig["reasoningEffort"];
39
+ reasoningEffort?: ProviderConfig["reasoningEffort"];
39
40
  }
40
41
 
41
42
  export interface CoreRuntimeFeatures {
@@ -55,7 +56,7 @@ export interface CoreCompactionContext {
55
56
  model: {
56
57
  id: string;
57
58
  provider: string;
58
- info?: LlmsProviders.ModelInfo;
59
+ info?: ModelInfo;
59
60
  };
60
61
  contextWindowTokens: number;
61
62
  triggerTokens: number;
@@ -73,8 +74,8 @@ export interface CoreCompactionSummarizerConfig {
73
74
  apiKey?: string;
74
75
  baseUrl?: string;
75
76
  headers?: Record<string, string>;
76
- knownModels?: Record<string, LlmsProviders.ModelInfo>;
77
- providerConfig?: LlmsProviders.ProviderConfig;
77
+ knownModels?: Record<string, ModelInfo>;
78
+ providerConfig?: ProviderConfig;
78
79
  maxOutputTokens?: number;
79
80
  }
80
81
 
@@ -1,11 +1,15 @@
1
- import * as LlmsProviders from "@clinebot/llms";
2
1
  import { z } from "zod";
2
+ import {
3
+ type ProviderConfig,
4
+ type ProviderSettings,
5
+ ProviderSettingsSchema,
6
+ toProviderConfig,
7
+ } from "../llms/provider-settings";
3
8
 
4
- export type ProviderConfig = LlmsProviders.ProviderConfig;
5
- export type ProviderSettings = LlmsProviders.ProviderSettings;
6
- export const ProviderSettingsSchema: z.ZodType<ProviderSettings> =
7
- LlmsProviders.ProviderSettingsSchema;
8
- export const toProviderConfig = LlmsProviders.toProviderConfig;
9
+ export type { ProviderConfig, ProviderSettings };
10
+ export const ProviderSettingsSchemaTyped: z.ZodType<ProviderSettings> =
11
+ ProviderSettingsSchema;
12
+ export { toProviderConfig };
9
13
 
10
14
  export type ProviderTokenSource = "manual" | "oauth" | "migration";
11
15
 
@@ -23,7 +27,7 @@ export interface StoredProviderSettings {
23
27
 
24
28
  export const StoredProviderSettingsEntrySchema: z.ZodType<StoredProviderSettingsEntry> =
25
29
  z.object({
26
- settings: LlmsProviders.ProviderSettingsSchema,
30
+ settings: ProviderSettingsSchema,
27
31
  updatedAt: z.string().datetime(),
28
32
  tokenSource: z.enum(["manual", "oauth", "migration"]).default("manual"),
29
33
  });
@@ -2,10 +2,8 @@ import type { Agent } from "@clinebot/agents";
2
2
  import type * as LlmsProviders from "@clinebot/llms";
3
3
  import type { SessionAccumulatedUsage } from "../runtime/runtime-host";
4
4
  import type { BuiltRuntime } from "../runtime/session-runtime";
5
- import type {
6
- RootSessionArtifacts,
7
- SessionRow,
8
- } from "../session/session-service";
5
+ import type { SessionRow } from "../session/session-row";
6
+ import type { RootSessionArtifacts } from "../session/session-service";
9
7
  import type { SessionSource, SessionStatus } from "./common";
10
8
  import type { CoreSessionConfig } from "./config";
11
9
 
package/src/types.ts CHANGED
@@ -3,7 +3,8 @@ export {
3
3
  ClineCore,
4
4
  type ClineCoreOptions,
5
5
  type ClineCoreStartInput,
6
- type RpcOptions,
6
+ type HubOptions,
7
+ type RemoteOptions,
7
8
  } from "./ClineCore";
8
9
  export type {
9
10
  LoadAgentPluginFromPathOptions,
@@ -66,6 +67,18 @@ export {
66
67
  UnifiedConfigFileWatcher,
67
68
  WORKFLOWS_CONFIG_DIRECTORY_NAME,
68
69
  } from "./extensions/config";
70
+ export type {
71
+ BuiltinToolAvailabilityContext,
72
+ ToolCatalogEntry,
73
+ } from "./extensions/tools";
74
+ export {
75
+ getCoreAcpToolNames,
76
+ getCoreBuiltinToolCatalog,
77
+ getCoreDefaultEnabledToolIds,
78
+ getCoreHeadlessToolNames,
79
+ resolveCoreSelectedToolIds,
80
+ TEAM_TOOL_NAMES,
81
+ } from "./extensions/tools";
69
82
  export type { SessionBackend } from "./runtime/host";
70
83
  export type {
71
84
  RuntimeHost,
@@ -87,7 +100,20 @@ export type {
87
100
  SubprocessSandboxOptions,
88
101
  } from "./runtime/subprocess-sandbox";
89
102
  export { SubprocessSandbox } from "./runtime/subprocess-sandbox";
103
+ export type { GlobalSettings } from "./services/global-settings";
104
+ export {
105
+ filterDisabledTools,
106
+ filterExtensionToolRegistrations,
107
+ isToolDisabledGlobally,
108
+ readGlobalSettings,
109
+ resolveDisabledToolNames,
110
+ toggleDisabledTool,
111
+ writeGlobalSettings,
112
+ } from "./services/global-settings";
113
+ export type { PluginToolSummary } from "./services/plugin-tools";
114
+ export { listPluginTools } from "./services/plugin-tools";
90
115
  export type { SessionManifest } from "./session/session-manifest";
116
+ export type { SessionRow } from "./session/session-row";
91
117
  export type {
92
118
  CreateRootSessionWithArtifactsInput,
93
119
  RootSessionArtifacts,