@clinebot/core 0.0.35 → 0.0.37

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 (441) hide show
  1. package/README.md +1 -2
  2. package/dist/ClineCore.d.ts +362 -39
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/account/cline-account-service.d.ts.map +1 -1
  5. package/dist/account/index.d.ts +1 -1
  6. package/dist/account/index.d.ts.map +1 -1
  7. package/dist/account/rpc.d.ts +6 -6
  8. package/dist/account/rpc.d.ts.map +1 -1
  9. package/dist/cron/cron-event-ingress.d.ts +38 -0
  10. package/dist/cron/cron-event-ingress.d.ts.map +1 -0
  11. package/dist/cron/cron-materializer.d.ts +36 -0
  12. package/dist/cron/cron-materializer.d.ts.map +1 -0
  13. package/dist/cron/cron-reconciler.d.ts +62 -0
  14. package/dist/cron/cron-reconciler.d.ts.map +1 -0
  15. package/dist/cron/cron-report-writer.d.ts +41 -0
  16. package/dist/cron/cron-report-writer.d.ts.map +1 -0
  17. package/dist/cron/cron-runner.d.ts +43 -0
  18. package/dist/cron/cron-runner.d.ts.map +1 -0
  19. package/dist/cron/cron-schema.d.ts +3 -0
  20. package/dist/cron/cron-schema.d.ts.map +1 -0
  21. package/dist/cron/cron-service.d.ts +57 -0
  22. package/dist/cron/cron-service.d.ts.map +1 -0
  23. package/dist/cron/cron-spec-parser.d.ts +27 -0
  24. package/dist/cron/cron-spec-parser.d.ts.map +1 -0
  25. package/dist/cron/cron-watcher.d.ts +23 -0
  26. package/dist/cron/cron-watcher.d.ts.map +1 -0
  27. package/dist/cron/resource-limiter.d.ts +9 -0
  28. package/dist/cron/resource-limiter.d.ts.map +1 -0
  29. package/dist/cron/schedule-command-service.d.ts +10 -0
  30. package/dist/cron/schedule-command-service.d.ts.map +1 -0
  31. package/dist/cron/schedule-service.d.ts +100 -0
  32. package/dist/cron/schedule-service.d.ts.map +1 -0
  33. package/dist/cron/scheduler.d.ts +68 -0
  34. package/dist/cron/scheduler.d.ts.map +1 -0
  35. package/dist/cron/sqlite-cron-store.d.ts +230 -0
  36. package/dist/cron/sqlite-cron-store.d.ts.map +1 -0
  37. package/dist/cron/sqlite-schedule-store.d.ts +52 -0
  38. package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
  39. package/dist/extensions/config/agent-config-loader.d.ts +4 -3
  40. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  41. package/dist/extensions/config/runtime-commands.d.ts +1 -0
  42. package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
  43. package/dist/extensions/config/user-instruction-config-loader.d.ts +1 -0
  44. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  45. package/dist/extensions/context/agentic-compaction.d.ts +2 -2
  46. package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
  47. package/dist/extensions/context/compaction-shared.d.ts +5 -4
  48. package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
  49. package/dist/extensions/context/compaction.d.ts.map +1 -1
  50. package/dist/extensions/plugin/plugin-config-loader.d.ts +15 -2
  51. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  52. package/dist/extensions/plugin/plugin-loader.d.ts +13 -7
  53. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  54. package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
  55. package/dist/extensions/plugin/plugin-sandbox.d.ts +21 -2
  56. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  57. package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
  58. package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
  59. package/dist/extensions/plugin-sandbox-bootstrap.js +237 -276
  60. package/dist/extensions/tools/constants.d.ts +1 -0
  61. package/dist/extensions/tools/constants.d.ts.map +1 -1
  62. package/dist/extensions/tools/definitions.d.ts +3 -4
  63. package/dist/extensions/tools/definitions.d.ts.map +1 -1
  64. package/dist/extensions/tools/executors/apply-patch.d.ts +3 -1
  65. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -1
  66. package/dist/extensions/tools/executors/editor.d.ts.map +1 -1
  67. package/dist/extensions/tools/executors/search.d.ts +1 -1
  68. package/dist/extensions/tools/executors/search.d.ts.map +1 -1
  69. package/dist/extensions/tools/helpers.d.ts +1 -0
  70. package/dist/extensions/tools/helpers.d.ts.map +1 -1
  71. package/dist/extensions/tools/index.d.ts +3 -2
  72. package/dist/extensions/tools/index.d.ts.map +1 -1
  73. package/dist/extensions/tools/presets.d.ts +27 -44
  74. package/dist/extensions/tools/presets.d.ts.map +1 -1
  75. package/dist/extensions/tools/runtime.d.ts +25 -0
  76. package/dist/extensions/tools/runtime.d.ts.map +1 -0
  77. package/dist/extensions/tools/schemas.d.ts +25 -3
  78. package/dist/extensions/tools/schemas.d.ts.map +1 -1
  79. package/dist/extensions/tools/team/delegated-agent.d.ts +2 -2
  80. package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -1
  81. package/dist/extensions/tools/team/multi-agent.d.ts +7 -3
  82. package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -1
  83. package/dist/extensions/tools/team/team-tools.d.ts +1 -0
  84. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -1
  85. package/dist/extensions/tools/types.d.ts +0 -5
  86. package/dist/extensions/tools/types.d.ts.map +1 -1
  87. package/dist/hooks/hook-bridge.d.ts +118 -0
  88. package/dist/hooks/hook-bridge.d.ts.map +1 -0
  89. package/dist/hooks/hook-file-hooks.d.ts +6 -2
  90. package/dist/hooks/hook-file-hooks.d.ts.map +1 -1
  91. package/dist/hooks/hook-registry.d.ts +16 -0
  92. package/dist/hooks/hook-registry.d.ts.map +1 -0
  93. package/dist/hooks/index.d.ts +0 -1
  94. package/dist/hooks/index.d.ts.map +1 -1
  95. package/dist/hooks/subprocess.d.ts +8 -1
  96. package/dist/hooks/subprocess.d.ts.map +1 -1
  97. package/dist/hub/browser-websocket.d.ts +18 -0
  98. package/dist/hub/browser-websocket.d.ts.map +1 -0
  99. package/dist/hub/client.d.ts +51 -0
  100. package/dist/hub/client.d.ts.map +1 -0
  101. package/dist/hub/connect.d.ts +15 -0
  102. package/dist/hub/connect.d.ts.map +1 -0
  103. package/dist/hub/daemon-entry.d.ts +2 -0
  104. package/dist/hub/daemon-entry.d.ts.map +1 -0
  105. package/dist/hub/daemon-entry.js +1305 -0
  106. package/dist/hub/daemon.d.ts +5 -0
  107. package/dist/hub/daemon.d.ts.map +1 -0
  108. package/dist/hub/defaults.d.ts +17 -0
  109. package/dist/hub/defaults.d.ts.map +1 -0
  110. package/dist/hub/discovery.d.ts +29 -0
  111. package/dist/hub/discovery.d.ts.map +1 -0
  112. package/dist/hub/index.d.ts +15 -0
  113. package/dist/hub/index.d.ts.map +1 -0
  114. package/dist/hub/index.js +1294 -0
  115. package/dist/hub/native-transport.d.ts +17 -0
  116. package/dist/hub/native-transport.d.ts.map +1 -0
  117. package/dist/hub/runtime-handlers.d.ts +11 -0
  118. package/dist/hub/runtime-handlers.d.ts.map +1 -0
  119. package/dist/hub/server.d.ts +104 -0
  120. package/dist/hub/server.d.ts.map +1 -0
  121. package/dist/hub/session-client.d.ts +90 -0
  122. package/dist/hub/session-client.d.ts.map +1 -0
  123. package/dist/hub/start-shared-server.d.ts +19 -0
  124. package/dist/hub/start-shared-server.d.ts.map +1 -0
  125. package/dist/hub/transport.d.ts +8 -0
  126. package/dist/hub/transport.d.ts.map +1 -0
  127. package/dist/hub/ui-client.d.ts +45 -0
  128. package/dist/hub/ui-client.d.ts.map +1 -0
  129. package/dist/hub/workspace.d.ts +4 -0
  130. package/dist/hub/workspace.d.ts.map +1 -0
  131. package/dist/index.d.ts +29 -16
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +782 -471
  134. package/dist/llms/cline-recommended-models.d.ts +20 -0
  135. package/dist/llms/cline-recommended-models.d.ts.map +1 -0
  136. package/dist/llms/configured-provider-registry.d.ts +28 -0
  137. package/dist/llms/configured-provider-registry.d.ts.map +1 -0
  138. package/dist/llms/handler-factory.d.ts +16 -0
  139. package/dist/llms/handler-factory.d.ts.map +1 -0
  140. package/dist/llms/provider-defaults.d.ts +27 -0
  141. package/dist/llms/provider-defaults.d.ts.map +1 -0
  142. package/dist/llms/provider-settings.d.ts +245 -0
  143. package/dist/llms/provider-settings.d.ts.map +1 -0
  144. package/dist/llms/runtime-config.d.ts +4 -0
  145. package/dist/llms/runtime-config.d.ts.map +1 -0
  146. package/dist/llms/runtime-registry.d.ts +20 -0
  147. package/dist/llms/runtime-registry.d.ts.map +1 -0
  148. package/dist/llms/runtime-types.d.ts +85 -0
  149. package/dist/llms/runtime-types.d.ts.map +1 -0
  150. package/dist/runtime/agent-config-adapter.d.ts +148 -0
  151. package/dist/runtime/agent-config-adapter.d.ts.map +1 -0
  152. package/dist/runtime/agent-runtime-config-builder.d.ts +96 -0
  153. package/dist/runtime/agent-runtime-config-builder.d.ts.map +1 -0
  154. package/dist/runtime/history.d.ts +6 -0
  155. package/dist/runtime/history.d.ts.map +1 -1
  156. package/dist/runtime/host.d.ts +1 -2
  157. package/dist/runtime/host.d.ts.map +1 -1
  158. package/dist/runtime/loop-detection.d.ts +59 -0
  159. package/dist/runtime/loop-detection.d.ts.map +1 -0
  160. package/dist/runtime/mistake-tracker.d.ts +69 -0
  161. package/dist/runtime/mistake-tracker.d.ts.map +1 -0
  162. package/dist/runtime/rules.d.ts +1 -0
  163. package/dist/runtime/rules.d.ts.map +1 -1
  164. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  165. package/dist/runtime/runtime-event-adapter.d.ts +102 -0
  166. package/dist/runtime/runtime-event-adapter.d.ts.map +1 -0
  167. package/dist/runtime/runtime-host.d.ts +49 -26
  168. package/dist/runtime/runtime-host.d.ts.map +1 -1
  169. package/dist/runtime/runtime-oauth-token-manager.d.ts.map +1 -1
  170. package/dist/runtime/session-runtime-orchestrator.d.ts +261 -0
  171. package/dist/runtime/session-runtime-orchestrator.d.ts.map +1 -0
  172. package/dist/runtime/session-runtime.d.ts +16 -21
  173. package/dist/runtime/session-runtime.d.ts.map +1 -1
  174. package/dist/runtime/user-input-builder.d.ts +24 -0
  175. package/dist/runtime/user-input-builder.d.ts.map +1 -0
  176. package/dist/services/global-settings.d.ts +12 -0
  177. package/dist/services/global-settings.d.ts.map +1 -0
  178. package/dist/services/index.js +28 -0
  179. package/dist/services/local-runtime-bootstrap.d.ts +9 -3
  180. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -1
  181. package/dist/services/plugin-tools.d.ts +16 -0
  182. package/dist/services/plugin-tools.d.ts.map +1 -0
  183. package/dist/services/providers/local-provider-registry.d.ts +199 -23
  184. package/dist/services/providers/local-provider-registry.d.ts.map +1 -1
  185. package/dist/services/providers/local-provider-service.d.ts +15 -13
  186. package/dist/services/providers/local-provider-service.d.ts.map +1 -1
  187. package/dist/services/session-data.d.ts +1 -1
  188. package/dist/services/session-data.d.ts.map +1 -1
  189. package/dist/services/session-telemetry.d.ts +7 -2
  190. package/dist/services/session-telemetry.d.ts.map +1 -1
  191. package/dist/services/storage/file-team-store.d.ts.map +1 -1
  192. package/dist/services/storage/provider-settings-legacy-migration.d.ts +1 -1
  193. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -1
  194. package/dist/services/storage/provider-settings-manager.d.ts +1 -0
  195. package/dist/services/storage/provider-settings-manager.d.ts.map +1 -1
  196. package/dist/services/storage/sqlite-team-store.d.ts.map +1 -1
  197. package/dist/services/workspace-manifest.d.ts +11 -0
  198. package/dist/services/workspace-manifest.d.ts.map +1 -1
  199. package/dist/session/conversation-store.d.ts +30 -0
  200. package/dist/session/conversation-store.d.ts.map +1 -0
  201. package/dist/session/message-builder.d.ts +65 -0
  202. package/dist/session/message-builder.d.ts.map +1 -0
  203. package/dist/session/persistence-service.d.ts +11 -23
  204. package/dist/session/persistence-service.d.ts.map +1 -1
  205. package/dist/session/session-manifest-store.d.ts +22 -0
  206. package/dist/session/session-manifest-store.d.ts.map +1 -0
  207. package/dist/session/session-manifest.d.ts +1 -1
  208. package/dist/session/session-row.d.ts +93 -0
  209. package/dist/session/session-row.d.ts.map +1 -0
  210. package/dist/session/session-service.d.ts +2 -102
  211. package/dist/session/session-service.d.ts.map +1 -1
  212. package/dist/session/subagent-session-manager.d.ts +36 -0
  213. package/dist/session/subagent-session-manager.d.ts.map +1 -0
  214. package/dist/session/team-persistence-store.d.ts +24 -0
  215. package/dist/session/team-persistence-store.d.ts.map +1 -0
  216. package/dist/transports/hub.d.ts +58 -0
  217. package/dist/transports/hub.d.ts.map +1 -0
  218. package/dist/transports/local.d.ts +23 -9
  219. package/dist/transports/local.d.ts.map +1 -1
  220. package/dist/transports/remote.d.ts +10 -0
  221. package/dist/transports/remote.d.ts.map +1 -0
  222. package/dist/transports/runtime-host-support.d.ts +3 -2
  223. package/dist/transports/runtime-host-support.d.ts.map +1 -1
  224. package/dist/types/chat-schema.d.ts +15 -17
  225. package/dist/types/chat-schema.d.ts.map +1 -1
  226. package/dist/types/config.d.ts +17 -7
  227. package/dist/types/config.d.ts.map +1 -1
  228. package/dist/types/events.d.ts +7 -6
  229. package/dist/types/events.d.ts.map +1 -1
  230. package/dist/types/provider-settings.d.ts +4 -5
  231. package/dist/types/provider-settings.d.ts.map +1 -1
  232. package/dist/types/session.d.ts +7 -3
  233. package/dist/types/session.d.ts.map +1 -1
  234. package/dist/types.d.ts +11 -4
  235. package/dist/types.d.ts.map +1 -1
  236. package/package.json +20 -6
  237. package/src/ClineCore.ts +757 -44
  238. package/src/account/cline-account-service.ts +44 -6
  239. package/src/account/index.ts +3 -3
  240. package/src/account/rpc.ts +12 -12
  241. package/src/cron/cron-event-ingress.ts +357 -0
  242. package/src/cron/cron-materializer.ts +97 -0
  243. package/src/cron/cron-reconciler.ts +241 -0
  244. package/src/cron/cron-report-writer.ts +153 -0
  245. package/src/cron/cron-runner.ts +495 -0
  246. package/src/cron/cron-schema.ts +127 -0
  247. package/src/cron/cron-service.ts +163 -0
  248. package/src/cron/cron-spec-parser.ts +489 -0
  249. package/src/cron/cron-watcher.ts +102 -0
  250. package/src/cron/index.ts +15 -0
  251. package/src/cron/resource-limiter.ts +46 -0
  252. package/src/cron/schedule-command-service.ts +193 -0
  253. package/src/cron/schedule-service.ts +703 -0
  254. package/src/cron/scheduler.ts +772 -0
  255. package/src/cron/sqlite-cron-store.ts +1286 -0
  256. package/src/cron/sqlite-schedule-store.ts +708 -0
  257. package/src/extensions/config/agent-config-loader.ts +17 -7
  258. package/src/extensions/config/runtime-commands.ts +6 -0
  259. package/src/extensions/config/user-instruction-config-loader.ts +1 -0
  260. package/src/extensions/context/agentic-compaction.ts +3 -3
  261. package/src/extensions/context/basic-compaction.ts +2 -2
  262. package/src/extensions/context/compaction-shared.ts +5 -4
  263. package/src/extensions/context/compaction.ts +3 -3
  264. package/src/extensions/plugin/plugin-config-loader.ts +37 -2
  265. package/src/extensions/plugin/plugin-loader.ts +69 -9
  266. package/src/extensions/plugin/plugin-module-import.ts +0 -2
  267. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +243 -39
  268. package/src/extensions/plugin/plugin-sandbox.ts +173 -29
  269. package/src/extensions/plugin/plugin-targeting.ts +32 -0
  270. package/src/extensions/tools/constants.ts +2 -0
  271. package/src/extensions/tools/definitions.ts +61 -71
  272. package/src/extensions/tools/executors/apply-patch.ts +69 -80
  273. package/src/extensions/tools/executors/editor.ts +4 -3
  274. package/src/extensions/tools/executors/search.ts +195 -3
  275. package/src/extensions/tools/helpers.ts +24 -0
  276. package/src/extensions/tools/index.ts +11 -2
  277. package/src/extensions/tools/presets.ts +32 -47
  278. package/src/extensions/tools/runtime.ts +261 -0
  279. package/src/extensions/tools/schemas.ts +17 -20
  280. package/src/extensions/tools/team/delegated-agent.ts +8 -3
  281. package/src/extensions/tools/team/multi-agent.ts +135 -19
  282. package/src/extensions/tools/team/team-tools.ts +172 -91
  283. package/src/extensions/tools/types.ts +0 -6
  284. package/src/hooks/hook-bridge.ts +489 -0
  285. package/src/hooks/hook-file-hooks.ts +66 -5
  286. package/src/hooks/hook-registry.ts +257 -0
  287. package/src/hooks/index.ts +0 -7
  288. package/src/hooks/subprocess-runner.ts +1 -1
  289. package/src/hooks/subprocess.ts +9 -0
  290. package/src/hub/browser-websocket.ts +159 -0
  291. package/src/hub/client.ts +633 -0
  292. package/src/hub/connect.ts +156 -0
  293. package/src/hub/daemon-entry.ts +122 -0
  294. package/src/hub/daemon.ts +284 -0
  295. package/src/hub/defaults.ts +70 -0
  296. package/src/hub/discovery.ts +247 -0
  297. package/src/hub/index.ts +14 -0
  298. package/src/hub/native-transport.ts +31 -0
  299. package/src/hub/runtime-handlers.ts +141 -0
  300. package/src/hub/server.ts +2317 -0
  301. package/src/hub/session-client.ts +502 -0
  302. package/src/hub/start-shared-server.ts +61 -0
  303. package/src/hub/transport.ts +14 -0
  304. package/src/hub/ui-client.ts +126 -0
  305. package/src/hub/workspace.ts +19 -0
  306. package/src/index.ts +169 -68
  307. package/src/llms/cline-recommended-models.ts +167 -0
  308. package/src/llms/configured-provider-registry.ts +193 -0
  309. package/src/llms/handler-factory.ts +56 -0
  310. package/src/llms/provider-defaults.ts +653 -0
  311. package/src/llms/provider-settings.ts +310 -0
  312. package/src/llms/runtime-config.ts +43 -0
  313. package/src/llms/runtime-registry.ts +172 -0
  314. package/src/llms/runtime-types.ts +121 -0
  315. package/src/runtime/agent-config-adapter.ts +636 -0
  316. package/src/runtime/agent-runtime-config-builder.ts +205 -0
  317. package/src/runtime/error-feedback.ts +142 -0
  318. package/src/runtime/history.ts +137 -0
  319. package/src/runtime/host.ts +127 -267
  320. package/src/runtime/index.ts +1 -0
  321. package/src/runtime/loop-detection.ts +162 -0
  322. package/src/runtime/mistake-tracker.ts +221 -0
  323. package/src/runtime/rules.ts +12 -0
  324. package/src/runtime/runtime-builder.ts +85 -13
  325. package/src/runtime/runtime-event-adapter.ts +412 -0
  326. package/src/runtime/runtime-host.ts +134 -62
  327. package/src/runtime/runtime-oauth-token-manager.ts +11 -15
  328. package/src/runtime/session-runtime-orchestrator.ts +1253 -0
  329. package/src/runtime/session-runtime.ts +16 -26
  330. package/src/runtime/user-input-builder.ts +167 -0
  331. package/src/services/global-settings.ts +122 -0
  332. package/src/services/local-runtime-bootstrap.ts +175 -31
  333. package/src/services/plugin-tools.ts +86 -0
  334. package/src/services/providers/local-provider-registry.ts +277 -61
  335. package/src/services/providers/local-provider-service.ts +109 -44
  336. package/src/services/session-data.ts +18 -10
  337. package/src/services/session-telemetry.ts +6 -15
  338. package/src/services/storage/file-team-store.ts +1 -5
  339. package/src/services/storage/provider-settings-legacy-migration.ts +14 -51
  340. package/src/services/storage/provider-settings-manager.ts +17 -2
  341. package/src/services/storage/sqlite-team-store.ts +1 -5
  342. package/src/services/workspace-manifest.ts +18 -0
  343. package/src/session/conversation-store.ts +77 -0
  344. package/src/session/file-session-service.ts +1 -1
  345. package/src/session/index.ts +6 -27
  346. package/src/session/message-builder.ts +941 -0
  347. package/src/session/persistence-service.ts +119 -504
  348. package/src/session/session-manifest-store.ts +158 -0
  349. package/src/session/session-row.ts +199 -0
  350. package/src/session/session-service.ts +17 -376
  351. package/src/session/session-team-coordination.ts +1 -1
  352. package/src/session/subagent-session-manager.ts +397 -0
  353. package/src/session/team-persistence-store.ts +176 -0
  354. package/src/transports/hub.ts +1081 -0
  355. package/src/transports/local.ts +419 -93
  356. package/src/transports/remote.ts +27 -0
  357. package/src/transports/runtime-host-support.ts +63 -9
  358. package/src/types/chat-schema.ts +4 -5
  359. package/src/types/config.ts +17 -7
  360. package/src/types/events.ts +8 -6
  361. package/src/types/index.ts +3 -0
  362. package/src/types/provider-settings.ts +18 -7
  363. package/src/types/session.ts +7 -6
  364. package/src/types.ts +42 -2
  365. package/dist/hooks/persistent.d.ts +0 -64
  366. package/dist/hooks/persistent.d.ts.map +0 -1
  367. package/dist/runtime/rpc-runtime-ensure.d.ts +0 -65
  368. package/dist/runtime/rpc-runtime-ensure.d.ts.map +0 -1
  369. package/dist/runtime/rpc-spawn-lease.d.ts +0 -8
  370. package/dist/runtime/rpc-spawn-lease.d.ts.map +0 -1
  371. package/dist/services/telemetry/index.js +0 -15
  372. package/dist/session/rpc-session-service.d.ts +0 -16
  373. package/dist/session/rpc-session-service.d.ts.map +0 -1
  374. package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
  375. package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
  376. package/dist/transports/rpc.d.ts +0 -51
  377. package/dist/transports/rpc.d.ts.map +0 -1
  378. package/src/ClineCore.test.ts +0 -226
  379. package/src/account/cline-account-service.test.ts +0 -185
  380. package/src/account/featurebase-token.test.ts +0 -175
  381. package/src/account/rpc.test.ts +0 -63
  382. package/src/auth/bounded-ttl-cache.test.ts +0 -38
  383. package/src/auth/client.test.ts +0 -69
  384. package/src/auth/cline.test.ts +0 -267
  385. package/src/auth/codex.test.ts +0 -170
  386. package/src/auth/oca.test.ts +0 -340
  387. package/src/auth/server.test.ts +0 -287
  388. package/src/auth/utils.test.ts +0 -128
  389. package/src/extensions/config/agent-config-loader.test.ts +0 -236
  390. package/src/extensions/config/hooks-config-loader.test.ts +0 -20
  391. package/src/extensions/config/runtime-commands.test.ts +0 -115
  392. package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
  393. package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
  394. package/src/extensions/context/compaction.test.ts +0 -483
  395. package/src/extensions/mcp/config-loader.test.ts +0 -238
  396. package/src/extensions/mcp/manager.test.ts +0 -105
  397. package/src/extensions/plugin/plugin-config-loader.test.ts +0 -184
  398. package/src/extensions/plugin/plugin-loader.test.ts +0 -292
  399. package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
  400. package/src/extensions/tools/definitions.test.ts +0 -780
  401. package/src/extensions/tools/executors/bash.test.ts +0 -87
  402. package/src/extensions/tools/executors/editor.test.ts +0 -35
  403. package/src/extensions/tools/executors/file-read.test.ts +0 -125
  404. package/src/extensions/tools/model-tool-routing.test.ts +0 -86
  405. package/src/extensions/tools/presets.test.ts +0 -70
  406. package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +0 -455
  407. package/src/extensions/tools/team/spawn-agent-tool.test.ts +0 -381
  408. package/src/extensions/tools/team/team-tools.test.ts +0 -918
  409. package/src/hooks/checkpoint-hooks.test.ts +0 -168
  410. package/src/hooks/hook-file-hooks.test.ts +0 -311
  411. package/src/hooks/persistent.ts +0 -661
  412. package/src/runtime/history.test.ts +0 -114
  413. package/src/runtime/host.test.ts +0 -230
  414. package/src/runtime/rpc-runtime-ensure.test.ts +0 -123
  415. package/src/runtime/rpc-runtime-ensure.ts +0 -659
  416. package/src/runtime/rpc-spawn-lease.test.ts +0 -81
  417. package/src/runtime/rpc-spawn-lease.ts +0 -156
  418. package/src/runtime/runtime-builder.team-persistence.test.ts +0 -245
  419. package/src/runtime/runtime-builder.test.ts +0 -615
  420. package/src/runtime/runtime-oauth-token-manager.test.ts +0 -137
  421. package/src/runtime/runtime-parity.test.ts +0 -143
  422. package/src/services/providers/local-provider-service.test.ts +0 -1062
  423. package/src/services/session-data.test.ts +0 -160
  424. package/src/services/storage/provider-settings-legacy-migration.test.ts +0 -424
  425. package/src/services/storage/provider-settings-manager.test.ts +0 -191
  426. package/src/services/telemetry/OpenTelemetryAdapter.test.ts +0 -157
  427. package/src/services/telemetry/OpenTelemetryProvider.test.ts +0 -326
  428. package/src/services/telemetry/TelemetryLoggerSink.test.ts +0 -42
  429. package/src/services/telemetry/TelemetryService.test.ts +0 -134
  430. package/src/services/telemetry/distinct-id.test.ts +0 -57
  431. package/src/services/workspace/file-indexer.d.ts +0 -11
  432. package/src/services/workspace/file-indexer.test.ts +0 -156
  433. package/src/services/workspace/mention-enricher.test.ts +0 -106
  434. package/src/session/persistence-service.test.ts +0 -300
  435. package/src/session/rpc-session-service.ts +0 -114
  436. package/src/session/session-service.team-persistence.test.ts +0 -48
  437. package/src/session/sqlite-rpc-session-backend.ts +0 -301
  438. package/src/transports/local.e2e.test.ts +0 -380
  439. package/src/transports/local.test.ts +0 -2559
  440. package/src/transports/rpc.test.ts +0 -82
  441. package/src/transports/rpc.ts +0 -665
@@ -1,615 +0,0 @@
1
- import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
2
- import { tmpdir } from "node:os";
3
- import { join } from "node:path";
4
- import type { Tool } from "@clinebot/shared";
5
- import { describe, expect, it } from "vitest";
6
- import { TelemetryService } from "../services/telemetry/TelemetryService";
7
- import type { CoreSessionConfig } from "../types/config";
8
- import { DefaultRuntimeBuilder } from "./runtime-builder";
9
-
10
- function makeSpawnTool(): Tool {
11
- return {
12
- name: "spawn_agent",
13
- description: "Spawn a subagent",
14
- inputSchema: { type: "object", properties: {}, required: [] },
15
- execute: async () => ({ ok: true }),
16
- };
17
- }
18
-
19
- function makeBaseConfig(
20
- overrides: Partial<CoreSessionConfig> = {},
21
- ): CoreSessionConfig {
22
- return {
23
- providerId: "anthropic",
24
- modelId: "claude-sonnet-4-6",
25
- apiKey: "key",
26
- systemPrompt: "test",
27
- cwd: process.cwd(),
28
- enableTools: true,
29
- enableSpawnAgent: false,
30
- enableAgentTeams: false,
31
- ...overrides,
32
- };
33
- }
34
-
35
- describe("DefaultRuntimeBuilder", () => {
36
- it("includes builtin tools when enabled", async () => {
37
- const runtime = await new DefaultRuntimeBuilder().build({
38
- config: makeBaseConfig(),
39
- });
40
-
41
- const names = runtime.tools.map((tool) => tool.name);
42
- expect(names.length).toBeGreaterThan(0);
43
- expect(names).not.toContain("spawn_agent");
44
- });
45
-
46
- it("forwards runtime logger for downstream agent creation", async () => {
47
- const logger = {
48
- debug: () => {},
49
- log: () => {},
50
- };
51
- const runtime = await new DefaultRuntimeBuilder().build({
52
- config: makeBaseConfig({
53
- enableTools: false,
54
- logger,
55
- }),
56
- });
57
-
58
- expect(runtime.logger).toBe(logger);
59
- });
60
-
61
- it("forwards telemetry for downstream runtime consumers", async () => {
62
- const telemetry = new TelemetryService();
63
- const runtime = await new DefaultRuntimeBuilder().build({
64
- config: makeBaseConfig({
65
- enableTools: false,
66
- telemetry,
67
- }),
68
- });
69
-
70
- expect(runtime.telemetry).toBe(telemetry);
71
- });
72
-
73
- it("uses readonly preset in plan mode", async () => {
74
- const runtime = await new DefaultRuntimeBuilder().build({
75
- config: makeBaseConfig({
76
- mode: "plan",
77
- }),
78
- });
79
-
80
- expect(runtime.tools.map((tool) => tool.name)).not.toContain("editor");
81
- });
82
-
83
- it("uses yolo preset only when yolo mode is explicit", async () => {
84
- const runtime = await new DefaultRuntimeBuilder().build({
85
- config: makeBaseConfig({
86
- mode: "yolo",
87
- }),
88
- defaultToolExecutors: {
89
- submit: async () => "submitted",
90
- },
91
- });
92
-
93
- const names = runtime.tools.map((tool) => tool.name);
94
- expect(names).not.toContain("ask_question");
95
- expect(names).toContain("submit_and_exit");
96
- });
97
-
98
- it("does not infer yolo preset from auto-approval alone", async () => {
99
- const runtime = await new DefaultRuntimeBuilder().build({
100
- config: makeBaseConfig({
101
- mode: "act",
102
- toolPolicies: {
103
- "*": { autoApprove: true },
104
- },
105
- }),
106
- defaultToolExecutors: {
107
- submit: async () => "submitted",
108
- askQuestion: async () => "question",
109
- },
110
- });
111
-
112
- const names = runtime.tools.map((tool) => tool.name);
113
- expect(names).toContain("ask_question");
114
- expect(names).not.toContain("submit_and_exit");
115
- });
116
-
117
- it("uses yolo preset runtime defaults for spawn and teams", async () => {
118
- const runtime = await new DefaultRuntimeBuilder().build({
119
- config: {
120
- ...makeBaseConfig({
121
- enableTools: false,
122
- mode: "yolo",
123
- }),
124
- } as CoreSessionConfig,
125
- createSpawnTool: makeSpawnTool,
126
- });
127
-
128
- expect(runtime.tools.map((tool) => tool.name)).not.toContain("spawn_agent");
129
- });
130
-
131
- it("uses apply_patch instead of editor for codex/gpt model IDs in act mode", async () => {
132
- const runtime = await new DefaultRuntimeBuilder().build({
133
- config: makeBaseConfig({
134
- providerId: "openai",
135
- modelId: "openai/gpt-5.4",
136
- mode: "act",
137
- }),
138
- });
139
-
140
- const names = runtime.tools.map((tool) => tool.name);
141
- expect(names).toContain("apply_patch");
142
- expect(names).not.toContain("editor");
143
- });
144
-
145
- it("keeps editor for non-codex/non-gpt model IDs in act mode", async () => {
146
- const runtime = await new DefaultRuntimeBuilder().build({
147
- config: makeBaseConfig({
148
- mode: "act",
149
- }),
150
- });
151
-
152
- const names = runtime.tools.map((tool) => tool.name);
153
- expect(names).toContain("editor");
154
- expect(names).not.toContain("apply_patch");
155
- });
156
-
157
- it("applies custom tool routing rules from session config", async () => {
158
- const runtime = await new DefaultRuntimeBuilder().build({
159
- config: makeBaseConfig({
160
- mode: "act",
161
- toolRoutingRules: [
162
- {
163
- mode: "act",
164
- providerIdIncludes: ["anthropic"],
165
- modelIdIncludes: ["claude"],
166
- enableTools: ["apply_patch"],
167
- disableTools: ["editor"],
168
- },
169
- ],
170
- }),
171
- });
172
-
173
- const names = runtime.tools.map((tool) => tool.name);
174
- expect(names).toContain("apply_patch");
175
- expect(names).not.toContain("editor");
176
- });
177
-
178
- it("omits builtin tools when disabled", async () => {
179
- const runtime = await new DefaultRuntimeBuilder().build({
180
- config: makeBaseConfig({
181
- enableTools: false,
182
- }),
183
- });
184
-
185
- expect(runtime.tools).toEqual([]);
186
- });
187
-
188
- it("omits tools disabled by policy from the advertised runtime tool list", async () => {
189
- const runtime = await new DefaultRuntimeBuilder().build({
190
- config: makeBaseConfig({
191
- toolPolicies: {
192
- run_commands: { enabled: false },
193
- read_files: { enabled: false },
194
- },
195
- }),
196
- });
197
-
198
- const names = runtime.tools.map((tool) => tool.name);
199
- expect(names).not.toContain("run_commands");
200
- expect(names).not.toContain("read_files");
201
- expect(names).toContain("search_codebase");
202
- });
203
-
204
- it("adds spawn tool when enabled", async () => {
205
- const runtime = await new DefaultRuntimeBuilder().build({
206
- config: makeBaseConfig({
207
- enableTools: false,
208
- enableSpawnAgent: true,
209
- }),
210
- createSpawnTool: makeSpawnTool,
211
- });
212
-
213
- expect(runtime.tools.map((tool) => tool.name)).toContain("spawn_agent");
214
- });
215
-
216
- it("provides a shutdown helper", async () => {
217
- const runtime = await new DefaultRuntimeBuilder().build({
218
- config: makeBaseConfig({
219
- enableTools: false,
220
- }),
221
- });
222
-
223
- await expect(runtime.shutdown("test")).resolves.toBeUndefined();
224
- });
225
-
226
- it("includes MCP tools from configured servers", async () => {
227
- const tempRoot = mkdtempSync(join(tmpdir(), "runtime-builder-mcp-"));
228
- const serverPath = join(tempRoot, "mock-mcp-server.js");
229
- const settingsPath = join(tempRoot, "cline_mcp_settings.json");
230
- const previousSettingsPath = process.env.CLINE_MCP_SETTINGS_PATH;
231
-
232
- writeFileSync(
233
- serverPath,
234
- `let buffer = "";
235
- function write(payload) {
236
- const body = JSON.stringify(payload);
237
- process.stdout.write("Content-Length: " + Buffer.byteLength(body, "utf8") + "\\r\\n\\r\\n" + body);
238
- }
239
- function handle(message) {
240
- if (message.method === "initialize") {
241
- write({ jsonrpc: "2.0", id: message.id, result: { protocolVersion: "2024-11-05", capabilities: { tools: {} }, serverInfo: { name: "mock", version: "1.0.0" } } });
242
- return;
243
- }
244
- if (message.method === "tools/list") {
245
- write({ jsonrpc: "2.0", id: message.id, result: { tools: [{ name: "echo", description: "Echo tool", inputSchema: { type: "object", properties: { value: { type: "string" } }, required: [] } }] } });
246
- return;
247
- }
248
- if (message.method === "tools/call") {
249
- write({ jsonrpc: "2.0", id: message.id, result: { echoed: message.params?.arguments?.value ?? null } });
250
- }
251
- }
252
- process.stdin.on("data", (chunk) => {
253
- buffer += chunk.toString("utf8");
254
- while (true) {
255
- const separator = buffer.indexOf("\\r\\n\\r\\n");
256
- if (separator < 0) break;
257
- const header = buffer.slice(0, separator);
258
- const match = header.match(/Content-Length:\\s*(\\d+)/i);
259
- if (!match) throw new Error("missing content length");
260
- const length = Number(match[1]);
261
- const start = separator + 4;
262
- const end = start + length;
263
- if (buffer.length < end) break;
264
- const body = buffer.slice(start, end);
265
- buffer = buffer.slice(end);
266
- const message = JSON.parse(body);
267
- if (message.method === "notifications/initialized") continue;
268
- handle(message);
269
- }
270
- });`,
271
- "utf8",
272
- );
273
- writeFileSync(
274
- settingsPath,
275
- JSON.stringify(
276
- {
277
- mcpServers: {
278
- mock: {
279
- command: process.execPath,
280
- args: [serverPath],
281
- },
282
- },
283
- },
284
- null,
285
- 2,
286
- ),
287
- "utf8",
288
- );
289
-
290
- process.env.CLINE_MCP_SETTINGS_PATH = settingsPath;
291
- try {
292
- const runtime = await new DefaultRuntimeBuilder().build({
293
- config: makeBaseConfig(),
294
- });
295
- expect(runtime.tools.map((tool) => tool.name)).toContain("mock__echo");
296
- await runtime.shutdown("test");
297
- } finally {
298
- process.env.CLINE_MCP_SETTINGS_PATH = previousSettingsPath;
299
- }
300
- });
301
-
302
- it("skips MCP settings tools when disableMcpSettingsTools is true", async () => {
303
- const tempRoot = mkdtempSync(
304
- join(tmpdir(), "runtime-builder-mcp-disabled-"),
305
- );
306
- const serverPath = join(tempRoot, "mock-mcp-server.js");
307
- const settingsPath = join(tempRoot, "cline_mcp_settings.json");
308
- const previousSettingsPath = process.env.CLINE_MCP_SETTINGS_PATH;
309
-
310
- writeFileSync(
311
- serverPath,
312
- `let buffer = "";
313
- function write(payload) {
314
- const body = JSON.stringify(payload);
315
- process.stdout.write("Content-Length: " + Buffer.byteLength(body, "utf8") + "\\r\\n\\r\\n" + body);
316
- }
317
- function handle(message) {
318
- if (message.method === "initialize") {
319
- write({ jsonrpc: "2.0", id: message.id, result: { protocolVersion: "2024-11-05", capabilities: { tools: {} }, serverInfo: { name: "mock", version: "1.0.0" } } });
320
- return;
321
- }
322
- if (message.method === "tools/list") {
323
- write({ jsonrpc: "2.0", id: message.id, result: { tools: [{ name: "echo", description: "Echo tool", inputSchema: { type: "object", properties: { value: { type: "string" } }, required: [] } }] } });
324
- return;
325
- }
326
- if (message.method === "tools/call") {
327
- write({ jsonrpc: "2.0", id: message.id, result: { echoed: message.params?.arguments?.value ?? null } });
328
- }
329
- }
330
- process.stdin.on("data", (chunk) => {
331
- buffer += chunk.toString("utf8");
332
- while (true) {
333
- const separator = buffer.indexOf("\\r\\n\\r\\n");
334
- if (separator < 0) break;
335
- const header = buffer.slice(0, separator);
336
- const match = header.match(/Content-Length:\\s*(\\d+)/i);
337
- if (!match) throw new Error("missing content length");
338
- const length = Number(match[1]);
339
- const start = separator + 4;
340
- const end = start + length;
341
- if (buffer.length < end) break;
342
- const body = buffer.slice(start, end);
343
- buffer = buffer.slice(end);
344
- const message = JSON.parse(body);
345
- if (message.method === "notifications/initialized") continue;
346
- handle(message);
347
- }
348
- });`,
349
- "utf8",
350
- );
351
- writeFileSync(
352
- settingsPath,
353
- JSON.stringify(
354
- {
355
- mcpServers: {
356
- mock: {
357
- command: process.execPath,
358
- args: [serverPath],
359
- },
360
- },
361
- },
362
- null,
363
- 2,
364
- ),
365
- "utf8",
366
- );
367
-
368
- process.env.CLINE_MCP_SETTINGS_PATH = settingsPath;
369
- try {
370
- const runtime = await new DefaultRuntimeBuilder().build({
371
- config: makeBaseConfig({
372
- disableMcpSettingsTools: true,
373
- }),
374
- });
375
- expect(runtime.tools.map((tool) => tool.name)).not.toContain(
376
- "mock__echo",
377
- );
378
- await runtime.shutdown("test");
379
- } finally {
380
- process.env.CLINE_MCP_SETTINGS_PATH = previousSettingsPath;
381
- }
382
- });
383
-
384
- it("skips broken MCP servers without crashing", async () => {
385
- const tempRoot = mkdtempSync(join(tmpdir(), "runtime-builder-mcp-bad-"));
386
- const serverPath = join(tempRoot, "malformed-mcp-server.js");
387
- const settingsPath = join(tempRoot, "cline_mcp_settings.json");
388
- const previousSettingsPath = process.env.CLINE_MCP_SETTINGS_PATH;
389
-
390
- writeFileSync(
391
- serverPath,
392
- `process.stdin.once("data", () => {
393
- process.stdout.write("Content-Length: 2\\r\\n\\r\\n{]");
394
- });`,
395
- "utf8",
396
- );
397
- writeFileSync(
398
- settingsPath,
399
- JSON.stringify(
400
- {
401
- mcpServers: {
402
- broken: {
403
- command: process.execPath,
404
- args: [serverPath],
405
- },
406
- },
407
- },
408
- null,
409
- 2,
410
- ),
411
- "utf8",
412
- );
413
-
414
- process.env.CLINE_MCP_SETTINGS_PATH = settingsPath;
415
- try {
416
- const runtime = await new DefaultRuntimeBuilder().build({
417
- config: makeBaseConfig(),
418
- });
419
- const mcpTools = runtime.tools.filter((t) =>
420
- t.name.startsWith("broken__"),
421
- );
422
- expect(mcpTools).toEqual([]);
423
- await runtime.shutdown("test");
424
- } finally {
425
- process.env.CLINE_MCP_SETTINGS_PATH = previousSettingsPath;
426
- }
427
- });
428
-
429
- it("skips invalid MCP settings file without crashing", async () => {
430
- const tempRoot = mkdtempSync(
431
- join(tmpdir(), "runtime-builder-mcp-invalid-"),
432
- );
433
- const settingsPath = join(tempRoot, "cline_mcp_settings.json");
434
- const previousSettingsPath = process.env.CLINE_MCP_SETTINGS_PATH;
435
-
436
- writeFileSync(settingsPath, "{ not valid json !!!", "utf8");
437
-
438
- process.env.CLINE_MCP_SETTINGS_PATH = settingsPath;
439
- try {
440
- const runtime = await new DefaultRuntimeBuilder().build({
441
- config: makeBaseConfig(),
442
- });
443
- const mcpTools = runtime.tools.filter((t) => t.name.includes("__"));
444
- expect(mcpTools).toEqual([]);
445
- await runtime.shutdown("test");
446
- } finally {
447
- process.env.CLINE_MCP_SETTINGS_PATH = previousSettingsPath;
448
- }
449
- });
450
-
451
- it("includes skills tool when workspace skills are available", async () => {
452
- const cwd = mkdtempSync(join(tmpdir(), "runtime-builder-skills-"));
453
- const skillDir = join(cwd, ".cline", "skills", "commit");
454
- mkdirSync(skillDir, { recursive: true });
455
- writeFileSync(
456
- join(skillDir, "SKILL.md"),
457
- `---
458
- name: commit
459
- description: Create commit message
460
- ---
461
- Use conventional commits.`,
462
- "utf8",
463
- );
464
-
465
- const runtime = await new DefaultRuntimeBuilder().build({
466
- config: makeBaseConfig({ cwd }),
467
- });
468
-
469
- expect(runtime.tools.map((tool) => tool.name)).toContain("skills");
470
- await runtime.shutdown("test");
471
- });
472
-
473
- it("allows tool routing rules to disable skills even when skills exist", async () => {
474
- const cwd = mkdtempSync(
475
- join(tmpdir(), "runtime-builder-skills-routing-disabled-"),
476
- );
477
- const skillDir = join(cwd, ".cline", "skills", "commit");
478
- mkdirSync(skillDir, { recursive: true });
479
- writeFileSync(
480
- join(skillDir, "SKILL.md"),
481
- `---
482
- name: commit
483
- description: Create commit message
484
- ---
485
- Use conventional commits.`,
486
- "utf8",
487
- );
488
-
489
- const runtime = await new DefaultRuntimeBuilder().build({
490
- config: makeBaseConfig({
491
- providerId: "openrouter",
492
- modelId: "google/gemini-3-flash-preview",
493
- cwd,
494
- toolRoutingRules: [
495
- {
496
- mode: "act",
497
- providerIdIncludes: ["openrouter"],
498
- modelIdIncludes: ["gemini"],
499
- disableTools: ["skills"],
500
- },
501
- ],
502
- }),
503
- });
504
-
505
- expect(runtime.tools.map((tool) => tool.name)).not.toContain("skills");
506
- await runtime.shutdown("test");
507
- });
508
-
509
- it("marks configured but disabled skills in executor metadata", async () => {
510
- const cwd = mkdtempSync(join(tmpdir(), "runtime-builder-skills-disabled-"));
511
- const enabledDir = join(cwd, ".cline", "skills", "commit");
512
- const disabledDir = join(cwd, ".cline", "skills", "review");
513
- mkdirSync(enabledDir, { recursive: true });
514
- mkdirSync(disabledDir, { recursive: true });
515
- writeFileSync(
516
- join(enabledDir, "SKILL.md"),
517
- `---
518
- name: commit
519
- ---
520
- Enabled skill.`,
521
- "utf8",
522
- );
523
- writeFileSync(
524
- join(disabledDir, "SKILL.md"),
525
- `---
526
- name: review
527
- disabled: true
528
- ---
529
- Disabled skill.`,
530
- "utf8",
531
- );
532
-
533
- const runtime = await new DefaultRuntimeBuilder().build({
534
- config: makeBaseConfig({ cwd }),
535
- });
536
-
537
- const skillsTool = runtime.tools.find((tool) => tool.name === "skills");
538
- expect(skillsTool).toBeDefined();
539
- if (!skillsTool) {
540
- throw new Error("Expected skills tool.");
541
- }
542
-
543
- const disabledResult = await skillsTool.execute(
544
- { skill: "review" },
545
- {
546
- agentId: "agent-1",
547
- conversationId: "conv-1",
548
- iteration: 1,
549
- },
550
- );
551
- expect(disabledResult).toContain("configured but disabled");
552
-
553
- await runtime.shutdown("test");
554
- });
555
-
556
- it("scopes skills tool to session-configured skills", async () => {
557
- const cwd = mkdtempSync(join(tmpdir(), "runtime-builder-skills-scoped-"));
558
- const commitDir = join(cwd, ".cline", "skills", "commit");
559
- const reviewDir = join(cwd, ".cline", "skills", "review");
560
- mkdirSync(commitDir, { recursive: true });
561
- mkdirSync(reviewDir, { recursive: true });
562
- writeFileSync(
563
- join(commitDir, "SKILL.md"),
564
- `---
565
- name: commit
566
- ---
567
- Commit skill.`,
568
- "utf8",
569
- );
570
- writeFileSync(
571
- join(reviewDir, "SKILL.md"),
572
- `---
573
- name: review
574
- ---
575
- Review skill.`,
576
- "utf8",
577
- );
578
-
579
- const runtime = await new DefaultRuntimeBuilder().build({
580
- config: makeBaseConfig({
581
- cwd,
582
- skills: ["commit"],
583
- }),
584
- });
585
-
586
- const skillsTool = runtime.tools.find((tool) => tool.name === "skills");
587
- expect(skillsTool).toBeDefined();
588
- if (!skillsTool) {
589
- throw new Error("Expected skills tool.");
590
- }
591
-
592
- const known = await skillsTool.execute(
593
- { skill: "commit" },
594
- {
595
- agentId: "agent-1",
596
- conversationId: "conv-1",
597
- iteration: 1,
598
- },
599
- );
600
- expect(known).toContain("<command-name>commit</command-name>");
601
-
602
- const blocked = await skillsTool.execute(
603
- { skill: "review" },
604
- {
605
- agentId: "agent-1",
606
- conversationId: "conv-1",
607
- iteration: 1,
608
- },
609
- );
610
- expect(blocked).toContain('Skill "review" not found.');
611
- expect(blocked).toContain("Available skills: commit");
612
-
613
- await runtime.shutdown("test");
614
- });
615
- });