@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,772 +0,0 @@
1
- import {
2
- createSessionId,
3
- type HubScheduleCreateInput,
4
- type HubScheduleUpdateInput,
5
- type ScheduleExecutionRecord,
6
- type ScheduleExecutionStatus,
7
- type ScheduleRecord,
8
- } from "@clinebot/shared";
9
-
10
- function createHubId(prefix: string): string {
11
- return createSessionId(`${prefix}_`);
12
- }
13
-
14
- function parseCronField(
15
- token: string,
16
- min: number,
17
- max: number,
18
- names?: readonly string[],
19
- ): number[] {
20
- const results = new Set<number>();
21
-
22
- function resolveValue(raw: string): number {
23
- const lower = raw.toLowerCase();
24
- if (names) {
25
- const index = names.indexOf(lower);
26
- if (index !== -1) {
27
- return index + min;
28
- }
29
- }
30
- const value = Number(raw);
31
- if (!Number.isInteger(value) || value < min || value > max) {
32
- throw new Error(`Invalid cron value "${raw}" for range [${min}-${max}]`);
33
- }
34
- return value;
35
- }
36
-
37
- for (const part of token.split(",")) {
38
- if (part === "*") {
39
- for (let value = min; value <= max; value += 1) {
40
- results.add(value);
41
- }
42
- continue;
43
- }
44
-
45
- const stepSeparator = part.indexOf("/");
46
- if (stepSeparator !== -1) {
47
- const rangePart = part.slice(0, stepSeparator);
48
- const step = Number(part.slice(stepSeparator + 1));
49
- if (!Number.isInteger(step) || step < 1) {
50
- throw new Error(`Invalid step "${part.slice(stepSeparator + 1)}"`);
51
- }
52
- let from = min;
53
- let to = max;
54
- if (rangePart !== "*") {
55
- const dashIndex = rangePart.indexOf("-");
56
- if (dashIndex !== -1) {
57
- from = resolveValue(rangePart.slice(0, dashIndex));
58
- to = resolveValue(rangePart.slice(dashIndex + 1));
59
- } else {
60
- from = resolveValue(rangePart);
61
- }
62
- }
63
- if (from > to) {
64
- throw new Error(`Invalid cron range "${rangePart}"`);
65
- }
66
- for (let value = from; value <= to; value += step) {
67
- results.add(value);
68
- }
69
- continue;
70
- }
71
-
72
- const dashIndex = part.indexOf("-");
73
- if (dashIndex !== -1) {
74
- const from = resolveValue(part.slice(0, dashIndex));
75
- const to = resolveValue(part.slice(dashIndex + 1));
76
- if (from > to) {
77
- throw new Error(`Invalid cron range "${part}"`);
78
- }
79
- for (let value = from; value <= to; value += 1) {
80
- results.add(value);
81
- }
82
- continue;
83
- }
84
-
85
- results.add(resolveValue(part));
86
- }
87
-
88
- return [...results].sort((left, right) => left - right);
89
- }
90
-
91
- const MONTH_NAMES = [
92
- "jan",
93
- "feb",
94
- "mar",
95
- "apr",
96
- "may",
97
- "jun",
98
- "jul",
99
- "aug",
100
- "sep",
101
- "oct",
102
- "nov",
103
- "dec",
104
- ] as const;
105
-
106
- const DOW_NAMES = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] as const;
107
-
108
- export interface ParsedCron {
109
- minutes: number[];
110
- hours: number[];
111
- daysOfMonth: number[];
112
- months: number[];
113
- daysOfWeek: number[];
114
- }
115
-
116
- interface CronDateParts {
117
- month: number;
118
- dayOfMonth: number;
119
- dayOfWeek: number;
120
- hour: number;
121
- minute: number;
122
- }
123
-
124
- function getRequiredField(
125
- fields: readonly string[],
126
- index: number,
127
- pattern: string,
128
- ): string {
129
- const value = fields[index];
130
- if (typeof value !== "string") {
131
- throw new Error(
132
- `Invalid cron pattern "${pattern}": missing field ${index + 1}`,
133
- );
134
- }
135
- return value;
136
- }
137
-
138
- function getFirstCronValue(values: readonly number[], label: string): number {
139
- const value = values[0];
140
- if (typeof value !== "number") {
141
- throw new Error(`Invalid cron pattern: no values parsed for ${label}`);
142
- }
143
- return value;
144
- }
145
-
146
- export function parseCron(pattern: string): ParsedCron {
147
- const fields = pattern.trim().split(/\s+/);
148
- if (fields.length !== 5) {
149
- throw new Error(
150
- `Invalid cron pattern "${pattern}": expected 5 fields, got ${fields.length}`,
151
- );
152
- }
153
- return {
154
- minutes: parseCronField(getRequiredField(fields, 0, pattern), 0, 59),
155
- hours: parseCronField(getRequiredField(fields, 1, pattern), 0, 23),
156
- daysOfMonth: parseCronField(getRequiredField(fields, 2, pattern), 1, 31),
157
- months: parseCronField(
158
- getRequiredField(fields, 3, pattern),
159
- 1,
160
- 12,
161
- MONTH_NAMES,
162
- ),
163
- daysOfWeek: parseCronField(
164
- getRequiredField(fields, 4, pattern),
165
- 0,
166
- 6,
167
- DOW_NAMES,
168
- ),
169
- };
170
- }
171
-
172
- export function validateCronPattern(pattern: string): void {
173
- parseCron(pattern);
174
- }
175
-
176
- export function validateCronSchedule(
177
- pattern: string,
178
- timezone?: string,
179
- after: number = Date.now(),
180
- ): void {
181
- getNextCronTime(pattern, after, timezone);
182
- }
183
-
184
- const TIMEZONE_FORMATTERS = new Map<string, Intl.DateTimeFormat>();
185
- const DOW_BY_SHORT_NAME = new Map(
186
- DOW_NAMES.map((name, index) => [name, index] as const),
187
- );
188
-
189
- function normalizeTimezone(timezone: string | undefined): string | undefined {
190
- const trimmed = timezone?.trim();
191
- return trimmed ? trimmed : undefined;
192
- }
193
-
194
- function getTimezoneFormatter(timezone: string): Intl.DateTimeFormat {
195
- const existing = TIMEZONE_FORMATTERS.get(timezone);
196
- if (existing) return existing;
197
- const formatter = new Intl.DateTimeFormat("en-US", {
198
- timeZone: timezone,
199
- calendar: "gregory",
200
- numberingSystem: "latn",
201
- year: "numeric",
202
- month: "2-digit",
203
- day: "2-digit",
204
- weekday: "short",
205
- hour: "2-digit",
206
- minute: "2-digit",
207
- hourCycle: "h23",
208
- });
209
- TIMEZONE_FORMATTERS.set(timezone, formatter);
210
- return formatter;
211
- }
212
-
213
- export function validateTimezone(timezone: string | undefined): void {
214
- const normalized = normalizeTimezone(timezone);
215
- if (!normalized) return;
216
- getTimezoneFormatter(normalized).format(new Date());
217
- }
218
-
219
- function getZonedCronDateParts(
220
- timestampMs: number,
221
- timezone: string,
222
- ): CronDateParts {
223
- const parts = getTimezoneFormatter(timezone).formatToParts(
224
- new Date(timestampMs),
225
- );
226
- const byType = new Map(parts.map((part) => [part.type, part.value]));
227
- const weekdayRaw = byType.get("weekday")?.toLowerCase().slice(0, 3) ?? "";
228
- const dayOfWeek = DOW_BY_SHORT_NAME.get(
229
- weekdayRaw as (typeof DOW_NAMES)[number],
230
- );
231
- if (dayOfWeek === undefined) {
232
- throw new Error(`Unable to resolve weekday for timezone "${timezone}"`);
233
- }
234
- return {
235
- month: Number(byType.get("month")),
236
- dayOfMonth: Number(byType.get("day")),
237
- dayOfWeek,
238
- hour: Number(byType.get("hour")),
239
- minute: Number(byType.get("minute")),
240
- };
241
- }
242
-
243
- function getLocalCronDateParts(timestampMs: number): CronDateParts {
244
- const date = new Date(timestampMs);
245
- return {
246
- month: date.getMonth() + 1,
247
- dayOfMonth: date.getDate(),
248
- dayOfWeek: date.getDay(),
249
- hour: date.getHours(),
250
- minute: date.getMinutes(),
251
- };
252
- }
253
-
254
- function cronMatchesParts(cron: ParsedCron, parts: CronDateParts): boolean {
255
- return (
256
- cron.months.includes(parts.month) &&
257
- cron.daysOfMonth.includes(parts.dayOfMonth) &&
258
- cron.daysOfWeek.includes(parts.dayOfWeek) &&
259
- cron.hours.includes(parts.hour) &&
260
- cron.minutes.includes(parts.minute)
261
- );
262
- }
263
-
264
- function getNextCronTimeByMinuteScan(
265
- pattern: string,
266
- after: number,
267
- timezone: string,
268
- ): number {
269
- const cron = parseCron(pattern);
270
- const next = new Date(after);
271
- next.setSeconds(0, 0);
272
- let nextMs = next.getTime() + 60_000;
273
-
274
- const limit = new Date(after);
275
- limit.setFullYear(limit.getFullYear() + 4);
276
- const limitMs = limit.getTime();
277
-
278
- while (nextMs <= limitMs) {
279
- if (cronMatchesParts(cron, getZonedCronDateParts(nextMs, timezone))) {
280
- return nextMs;
281
- }
282
- nextMs += 60_000;
283
- }
284
-
285
- throw new Error(
286
- `No cron occurrence found within 4 years for pattern "${pattern}" in timezone "${timezone}"`,
287
- );
288
- }
289
-
290
- export function getNextCronTime(
291
- pattern: string,
292
- after: number,
293
- timezone?: string,
294
- ): number {
295
- const normalizedTimezone = normalizeTimezone(timezone);
296
- if (normalizedTimezone) {
297
- validateTimezone(normalizedTimezone);
298
- return getNextCronTimeByMinuteScan(pattern, after, normalizedTimezone);
299
- }
300
-
301
- const cron = parseCron(pattern);
302
- let next = new Date(after);
303
- next.setSeconds(0, 0);
304
- next = new Date(next.getTime() + 60_000);
305
-
306
- const limit = new Date(after);
307
- limit.setFullYear(limit.getFullYear() + 4);
308
-
309
- while (next <= limit) {
310
- const { month, dayOfMonth, dayOfWeek, hour, minute } =
311
- getLocalCronDateParts(next.getTime());
312
-
313
- if (!cron.months.includes(month)) {
314
- const targetMonth =
315
- cron.months.find((value) => value > month) ??
316
- getFirstCronValue(cron.months, "months");
317
- const yearDelta = targetMonth <= month ? 1 : 0;
318
- next = new Date(
319
- next.getFullYear() + yearDelta,
320
- targetMonth - 1,
321
- 1,
322
- 0,
323
- 0,
324
- 0,
325
- 0,
326
- );
327
- continue;
328
- }
329
-
330
- if (
331
- !cron.daysOfMonth.includes(dayOfMonth) ||
332
- !cron.daysOfWeek.includes(dayOfWeek)
333
- ) {
334
- next = new Date(
335
- next.getFullYear(),
336
- next.getMonth(),
337
- dayOfMonth + 1,
338
- 0,
339
- 0,
340
- 0,
341
- 0,
342
- );
343
- continue;
344
- }
345
-
346
- if (!cron.hours.includes(hour)) {
347
- const targetHour =
348
- cron.hours.find((value) => value > hour) ??
349
- getFirstCronValue(cron.hours, "hours");
350
- const dayDelta = targetHour <= hour ? 1 : 0;
351
- next = new Date(
352
- next.getFullYear(),
353
- next.getMonth(),
354
- next.getDate() + dayDelta,
355
- targetHour,
356
- 0,
357
- 0,
358
- 0,
359
- );
360
- continue;
361
- }
362
-
363
- if (!cron.minutes.includes(minute)) {
364
- const targetMinute =
365
- cron.minutes.find((value) => value > minute) ??
366
- getFirstCronValue(cron.minutes, "minutes");
367
- const hourDelta = targetMinute <= minute ? 1 : 0;
368
- next = new Date(
369
- next.getFullYear(),
370
- next.getMonth(),
371
- next.getDate(),
372
- next.getHours() + hourDelta,
373
- targetMinute,
374
- 0,
375
- 0,
376
- );
377
- continue;
378
- }
379
-
380
- return next.getTime();
381
- }
382
-
383
- throw new Error(
384
- `No cron occurrence found within 4 years for pattern "${pattern}"`,
385
- );
386
- }
387
-
388
- export class ScheduleStore {
389
- private schedules = new Map<string, ScheduleRecord>();
390
- private executions = new Map<string, ScheduleExecutionRecord>();
391
-
392
- load(
393
- schedules: ScheduleRecord[] | undefined,
394
- executions: ScheduleExecutionRecord[] | undefined,
395
- ): void {
396
- this.schedules.clear();
397
- this.executions.clear();
398
- for (const schedule of schedules ?? []) {
399
- this.schedules.set(schedule.scheduleId, { ...schedule });
400
- }
401
- for (const execution of executions ?? []) {
402
- this.executions.set(execution.executionId, { ...execution });
403
- }
404
- }
405
-
406
- snapshotSchedules(): ScheduleRecord[] {
407
- return [...this.schedules.values()].map((record) => ({ ...record }));
408
- }
409
-
410
- snapshotExecutions(): ScheduleExecutionRecord[] {
411
- return [...this.executions.values()].map((record) => ({ ...record }));
412
- }
413
-
414
- create(input: HubScheduleCreateInput, now: number): ScheduleRecord {
415
- validateCronPattern(input.cronPattern);
416
- const nextRunAt = getNextCronTime(input.cronPattern, now);
417
- const record: ScheduleRecord = {
418
- scheduleId: createHubId("sched"),
419
- name: input.name,
420
- cronPattern: input.cronPattern,
421
- prompt: input.prompt,
422
- workspaceRoot: input.workspaceRoot,
423
- enabled: input.enabled ?? true,
424
- createdAt: now,
425
- updatedAt: now,
426
- nextRunAt,
427
- runtimeOptions: input.runtimeOptions
428
- ? { ...input.runtimeOptions }
429
- : undefined,
430
- metadata: input.metadata ? { ...input.metadata } : undefined,
431
- };
432
- this.schedules.set(record.scheduleId, record);
433
- return { ...record };
434
- }
435
-
436
- get(scheduleId: string): ScheduleRecord | undefined {
437
- const record = this.schedules.get(scheduleId);
438
- return record ? { ...record } : undefined;
439
- }
440
-
441
- list(): ScheduleRecord[] {
442
- return [...this.schedules.values()].map((record) => ({ ...record }));
443
- }
444
-
445
- update(input: HubScheduleUpdateInput, now: number): ScheduleRecord {
446
- const existing = this.schedules.get(input.scheduleId);
447
- if (!existing) {
448
- throw new Error(`Schedule "${input.scheduleId}" not found`);
449
- }
450
- const cronPattern = input.cronPattern ?? existing.cronPattern;
451
- if (input.cronPattern) {
452
- validateCronPattern(input.cronPattern);
453
- }
454
- const enabled = input.enabled ?? existing.enabled;
455
- const nextRunAt =
456
- (input.cronPattern || input.enabled !== undefined) && enabled
457
- ? getNextCronTime(cronPattern, now)
458
- : enabled
459
- ? existing.nextRunAt
460
- : undefined;
461
- const updated: ScheduleRecord = {
462
- ...existing,
463
- name: input.name ?? existing.name,
464
- cronPattern,
465
- prompt: input.prompt ?? existing.prompt,
466
- enabled,
467
- updatedAt: now,
468
- nextRunAt,
469
- runtimeOptions:
470
- input.runtimeOptions !== undefined
471
- ? { ...input.runtimeOptions }
472
- : existing.runtimeOptions,
473
- metadata:
474
- input.metadata !== undefined
475
- ? { ...input.metadata }
476
- : existing.metadata,
477
- };
478
- this.schedules.set(updated.scheduleId, updated);
479
- return { ...updated };
480
- }
481
-
482
- setEnabled(
483
- scheduleId: string,
484
- enabled: boolean,
485
- now: number,
486
- ): ScheduleRecord {
487
- const existing = this.schedules.get(scheduleId);
488
- if (!existing) {
489
- throw new Error(`Schedule "${scheduleId}" not found`);
490
- }
491
- const updated: ScheduleRecord = {
492
- ...existing,
493
- enabled,
494
- updatedAt: now,
495
- nextRunAt: enabled
496
- ? getNextCronTime(existing.cronPattern, now)
497
- : undefined,
498
- };
499
- this.schedules.set(scheduleId, updated);
500
- return { ...updated };
501
- }
502
-
503
- delete(scheduleId: string): void {
504
- if (!this.schedules.has(scheduleId)) {
505
- throw new Error(`Schedule "${scheduleId}" not found`);
506
- }
507
- this.schedules.delete(scheduleId);
508
- }
509
-
510
- recordTriggered(scheduleId: string, now: number): ScheduleRecord {
511
- const existing = this.schedules.get(scheduleId);
512
- if (!existing) {
513
- throw new Error(`Schedule "${scheduleId}" not found`);
514
- }
515
- const updated: ScheduleRecord = {
516
- ...existing,
517
- lastRunAt: now,
518
- updatedAt: now,
519
- nextRunAt: getNextCronTime(existing.cronPattern, now),
520
- };
521
- this.schedules.set(scheduleId, updated);
522
- return { ...updated };
523
- }
524
-
525
- getDueSchedules(now: number): ScheduleRecord[] {
526
- return [...this.schedules.values()]
527
- .filter(
528
- (record) =>
529
- record.enabled &&
530
- record.nextRunAt !== undefined &&
531
- record.nextRunAt <= now,
532
- )
533
- .map((record) => ({ ...record }));
534
- }
535
-
536
- startExecution(
537
- scheduleId: string,
538
- sessionId: string,
539
- now: number,
540
- ): ScheduleExecutionRecord {
541
- const record: ScheduleExecutionRecord = {
542
- executionId: createHubId("sexec"),
543
- scheduleId,
544
- sessionId,
545
- triggeredAt: now,
546
- startedAt: now,
547
- status: "running",
548
- };
549
- this.executions.set(record.executionId, record);
550
- return { ...record };
551
- }
552
-
553
- completeExecution(
554
- executionId: string,
555
- status: Exclude<ScheduleExecutionStatus, "running">,
556
- now: number,
557
- errorMessage?: string,
558
- ): ScheduleExecutionRecord {
559
- const existing = this.executions.get(executionId);
560
- if (!existing) {
561
- throw new Error(`Execution "${executionId}" not found`);
562
- }
563
- const updated: ScheduleExecutionRecord = {
564
- ...existing,
565
- status,
566
- endedAt: now,
567
- ...(errorMessage ? { errorMessage } : {}),
568
- };
569
- this.executions.set(executionId, updated);
570
- return { ...updated };
571
- }
572
-
573
- listExecutions(scheduleId?: string): ScheduleExecutionRecord[] {
574
- const records = [...this.executions.values()];
575
- return (
576
- scheduleId
577
- ? records.filter((record) => record.scheduleId === scheduleId)
578
- : records
579
- )
580
- .map((record) => ({ ...record }))
581
- .sort((left, right) => right.triggeredAt - left.triggeredAt);
582
- }
583
- }
584
-
585
- export interface SchedulerTriggerContext {
586
- scheduleId: string;
587
- sessionId: string;
588
- executionId: string;
589
- }
590
-
591
- export interface SchedulerCallbacks {
592
- onTrigger(record: ScheduleRecord): Promise<{ sessionId: string }>;
593
- onExecutionCompleted(
594
- context: SchedulerTriggerContext,
595
- execution: ScheduleExecutionRecord,
596
- ): void;
597
- onExecutionFailed(
598
- context: SchedulerTriggerContext,
599
- execution: ScheduleExecutionRecord,
600
- error: unknown,
601
- ): void;
602
- onScheduleUpdated(record: ScheduleRecord): void;
603
- onPersist(): Promise<void>;
604
- }
605
-
606
- export interface HubSchedulerOptions {
607
- store: ScheduleStore;
608
- callbacks: SchedulerCallbacks;
609
- now?: () => number;
610
- pollIntervalMs?: number;
611
- }
612
-
613
- const DEFAULT_POLL_INTERVAL_MS = 15_000;
614
-
615
- export class HubScheduler {
616
- private readonly store: ScheduleStore;
617
- private readonly callbacks: SchedulerCallbacks;
618
- private readonly now: () => number;
619
- private readonly pollIntervalMs: number;
620
- private timer: ReturnType<typeof setInterval> | undefined;
621
- private readonly runningExecutions = new Map<
622
- string,
623
- SchedulerTriggerContext
624
- >();
625
-
626
- constructor(options: HubSchedulerOptions) {
627
- this.store = options.store;
628
- this.callbacks = options.callbacks;
629
- this.now = options.now ?? (() => Date.now());
630
- this.pollIntervalMs = Math.max(
631
- 1_000,
632
- Math.floor(options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS),
633
- );
634
- }
635
-
636
- start(): void {
637
- if (this.timer !== undefined) {
638
- return;
639
- }
640
- this.timer = setInterval(() => {
641
- void this.poll();
642
- }, this.pollIntervalMs);
643
- void this.poll();
644
- }
645
-
646
- stop(): void {
647
- if (this.timer === undefined) {
648
- return;
649
- }
650
- clearInterval(this.timer);
651
- this.timer = undefined;
652
- }
653
-
654
- async triggerNow(scheduleId: string): Promise<ScheduleExecutionRecord> {
655
- const record = this.store.get(scheduleId);
656
- if (!record) {
657
- throw new Error(`Schedule "${scheduleId}" not found`);
658
- }
659
- return await this.executeSchedule(record);
660
- }
661
-
662
- async notifySessionCompleted(
663
- sessionId: string,
664
- failed: boolean,
665
- errorMessage?: string,
666
- ): Promise<void> {
667
- const entry = [...this.runningExecutions.entries()].find(
668
- ([, context]) => context.sessionId === sessionId,
669
- );
670
- if (!entry) {
671
- return;
672
- }
673
- const [executionId, context] = entry;
674
- this.runningExecutions.delete(executionId);
675
- const status: Exclude<ScheduleExecutionStatus, "running"> = failed
676
- ? "failed"
677
- : "completed";
678
- const execution = this.store.completeExecution(
679
- executionId,
680
- status,
681
- this.now(),
682
- errorMessage,
683
- );
684
- if (failed) {
685
- this.callbacks.onExecutionFailed(
686
- context,
687
- execution,
688
- new Error(errorMessage),
689
- );
690
- } else {
691
- this.callbacks.onExecutionCompleted(context, execution);
692
- }
693
- await this.callbacks.onPersist();
694
- }
695
-
696
- get scheduleStore(): ScheduleStore {
697
- return this.store;
698
- }
699
-
700
- private async poll(): Promise<void> {
701
- const due = this.store.getDueSchedules(this.now());
702
- for (const record of due) {
703
- const alreadyRunning = [...this.runningExecutions.values()].some(
704
- (context) => context.scheduleId === record.scheduleId,
705
- );
706
- if (alreadyRunning) {
707
- continue;
708
- }
709
- void this.executeSchedule(record);
710
- }
711
- }
712
-
713
- private async executeSchedule(
714
- record: ScheduleRecord,
715
- ): Promise<ScheduleExecutionRecord> {
716
- const startedAt = this.now();
717
-
718
- let sessionId: string;
719
- try {
720
- const result = await this.callbacks.onTrigger(record);
721
- sessionId = result.sessionId;
722
- } catch (error) {
723
- const execution = this.store.startExecution(
724
- record.scheduleId,
725
- "",
726
- startedAt,
727
- );
728
- const failed = this.store.completeExecution(
729
- execution.executionId,
730
- "failed",
731
- this.now(),
732
- error instanceof Error ? error.message : String(error),
733
- );
734
- const updatedSchedule = this.store.recordTriggered(
735
- record.scheduleId,
736
- startedAt,
737
- );
738
- this.callbacks.onScheduleUpdated(updatedSchedule);
739
- this.callbacks.onExecutionFailed(
740
- {
741
- scheduleId: record.scheduleId,
742
- sessionId: "",
743
- executionId: execution.executionId,
744
- },
745
- failed,
746
- error,
747
- );
748
- await this.callbacks.onPersist();
749
- return failed;
750
- }
751
-
752
- const execution = this.store.startExecution(
753
- record.scheduleId,
754
- sessionId,
755
- startedAt,
756
- );
757
- this.runningExecutions.set(execution.executionId, {
758
- scheduleId: record.scheduleId,
759
- sessionId,
760
- executionId: execution.executionId,
761
- });
762
-
763
- const updatedSchedule = this.store.recordTriggered(
764
- record.scheduleId,
765
- startedAt,
766
- );
767
- this.callbacks.onScheduleUpdated(updatedSchedule);
768
- await this.callbacks.onPersist();
769
-
770
- return execution;
771
- }
772
- }