charness 3.6.1 → 3.8.0

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 (828) hide show
  1. package/CHANGELOG.md +297 -0
  2. package/DEVELOPMENT.md +35 -5
  3. package/MIGRATION_RENAME_TO_CHARNESS.md +3 -2
  4. package/README.md +84 -782
  5. package/SETUP.md +48 -10
  6. package/agent-plugin/.claude-plugin/plugin.json +7 -0
  7. package/agent-plugin/README.md +35 -0
  8. package/agent-plugin/skills/charness-delegate-claude/SKILL.md +85 -0
  9. package/agent-plugin/skills/charness-delegate-claude/summarize-events.py +90 -0
  10. package/agent-plugin/skills/charness-delegate-opencode/SKILL.md +68 -0
  11. package/agent-plugin/skills/charness-manager/SKILL.md +152 -0
  12. package/dist/adapters/adapterNames.d.ts +6 -0
  13. package/dist/adapters/adapterNames.d.ts.map +1 -1
  14. package/dist/adapters/adapterNames.js +8 -2
  15. package/dist/adapters/adapterNames.js.map +1 -1
  16. package/dist/adapters/claudeCliAdapter.d.ts +8 -0
  17. package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
  18. package/dist/adapters/claudeCliAdapter.js +42 -5
  19. package/dist/adapters/claudeCliAdapter.js.map +1 -1
  20. package/dist/adapters/claudeJsonStreamAdapter.d.ts +10 -9
  21. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
  22. package/dist/adapters/claudeJsonStreamAdapter.js +53 -55
  23. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
  24. package/dist/adapters/createAdapter.d.ts +8 -0
  25. package/dist/adapters/createAdapter.d.ts.map +1 -1
  26. package/dist/adapters/createAdapter.js +14 -2
  27. package/dist/adapters/createAdapter.js.map +1 -1
  28. package/dist/adapters/openCodeAdapter.d.ts +43 -6
  29. package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
  30. package/dist/adapters/openCodeAdapter.js +97 -7
  31. package/dist/adapters/openCodeAdapter.js.map +1 -1
  32. package/dist/agentLogin/agentLogin.d.ts +1 -1
  33. package/dist/agentLogin/agentLogin.d.ts.map +1 -1
  34. package/dist/apiRetryKick.d.ts +4 -3
  35. package/dist/apiRetryKick.d.ts.map +1 -1
  36. package/dist/apiRetryKick.js +16 -9
  37. package/dist/apiRetryKick.js.map +1 -1
  38. package/dist/bot.d.ts.map +1 -1
  39. package/dist/bot.js +1360 -387
  40. package/dist/bot.js.map +1 -1
  41. package/dist/cli/claudeProfiles.d.ts +11 -6
  42. package/dist/cli/claudeProfiles.d.ts.map +1 -1
  43. package/dist/cli/claudeProfiles.js +50 -22
  44. package/dist/cli/claudeProfiles.js.map +1 -1
  45. package/dist/cli/hot.d.ts +5 -0
  46. package/dist/cli/hot.d.ts.map +1 -1
  47. package/dist/cli/hot.js +71 -25
  48. package/dist/cli/hot.js.map +1 -1
  49. package/dist/cli/tscWatchGuard.d.ts +95 -0
  50. package/dist/cli/tscWatchGuard.d.ts.map +1 -0
  51. package/dist/cli/tscWatchGuard.js +295 -0
  52. package/dist/cli/tscWatchGuard.js.map +1 -0
  53. package/dist/cli.js +55 -1
  54. package/dist/cli.js.map +1 -1
  55. package/dist/configDirFile.d.ts +7 -3
  56. package/dist/configDirFile.d.ts.map +1 -1
  57. package/dist/configDirFile.js +12 -5
  58. package/dist/configDirFile.js.map +1 -1
  59. package/dist/connectors/jira/answerSink.d.ts +10 -0
  60. package/dist/connectors/jira/answerSink.d.ts.map +1 -1
  61. package/dist/connectors/jira/answerSink.js +13 -0
  62. package/dist/connectors/jira/answerSink.js.map +1 -1
  63. package/dist/connectors/jira/config.d.ts +2 -0
  64. package/dist/connectors/jira/config.d.ts.map +1 -1
  65. package/dist/connectors/jira/config.js +9 -1
  66. package/dist/connectors/jira/config.js.map +1 -1
  67. package/dist/connectors/jira/connector.d.ts +11 -1
  68. package/dist/connectors/jira/connector.d.ts.map +1 -1
  69. package/dist/connectors/jira/connector.js +7 -0
  70. package/dist/connectors/jira/connector.js.map +1 -1
  71. package/dist/connectors/jira/inbound.d.ts +27 -4
  72. package/dist/connectors/jira/inbound.d.ts.map +1 -1
  73. package/dist/connectors/jira/inbound.js +69 -8
  74. package/dist/connectors/jira/inbound.js.map +1 -1
  75. package/dist/connectors/jira/issueBlocks.d.ts +5 -0
  76. package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
  77. package/dist/connectors/jira/issueBlocks.js +11 -0
  78. package/dist/connectors/jira/issueBlocks.js.map +1 -1
  79. package/dist/connectors/telegram/bindPicker.d.ts +5 -0
  80. package/dist/connectors/telegram/bindPicker.d.ts.map +1 -1
  81. package/dist/connectors/telegram/bindPicker.js +18 -1
  82. package/dist/connectors/telegram/bindPicker.js.map +1 -1
  83. package/dist/connectors/telegram/bindPickerClaims.d.ts +46 -0
  84. package/dist/connectors/telegram/bindPickerClaims.d.ts.map +1 -0
  85. package/dist/connectors/telegram/bindPickerClaims.js +83 -0
  86. package/dist/connectors/telegram/bindPickerClaims.js.map +1 -0
  87. package/dist/connectors/telegram/bindSweep.d.ts +32 -0
  88. package/dist/connectors/telegram/bindSweep.d.ts.map +1 -0
  89. package/dist/connectors/telegram/bindSweep.js +47 -0
  90. package/dist/connectors/telegram/bindSweep.js.map +1 -0
  91. package/dist/connectors/telegram/bindingWelcome.d.ts +23 -0
  92. package/dist/connectors/telegram/bindingWelcome.d.ts.map +1 -0
  93. package/dist/connectors/telegram/bindingWelcome.js +26 -0
  94. package/dist/connectors/telegram/bindingWelcome.js.map +1 -0
  95. package/dist/connectors/telegram/botApiConnection.d.ts +74 -0
  96. package/dist/connectors/telegram/botApiConnection.d.ts.map +1 -0
  97. package/dist/connectors/telegram/botApiConnection.js +201 -0
  98. package/dist/connectors/telegram/botApiConnection.js.map +1 -0
  99. package/dist/connectors/telegram/commands/botCore.d.ts +13 -3
  100. package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -1
  101. package/dist/connectors/telegram/commands/botSkills.d.ts +21 -0
  102. package/dist/connectors/telegram/commands/botSkills.d.ts.map +1 -0
  103. package/dist/connectors/telegram/commands/botSkills.js +133 -0
  104. package/dist/connectors/telegram/commands/botSkills.js.map +1 -0
  105. package/dist/connectors/telegram/commands/callbackMessage.d.ts +5 -0
  106. package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -1
  107. package/dist/connectors/telegram/commands/callbackMessage.js +9 -0
  108. package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -1
  109. package/dist/connectors/telegram/commands/compaction.d.ts +65 -3
  110. package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -1
  111. package/dist/connectors/telegram/commands/compaction.js +512 -94
  112. package/dist/connectors/telegram/commands/compaction.js.map +1 -1
  113. package/dist/connectors/telegram/commands/displayModes.d.ts +1 -1
  114. package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -1
  115. package/dist/connectors/telegram/commands/displayModes.js +6 -18
  116. package/dist/connectors/telegram/commands/displayModes.js.map +1 -1
  117. package/dist/connectors/telegram/commands/fallbackChain.js +5 -5
  118. package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -1
  119. package/dist/connectors/telegram/commands/reminders.d.ts +1 -1
  120. package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -1
  121. package/dist/connectors/telegram/commands/reminders.js +4 -15
  122. package/dist/connectors/telegram/commands/reminders.js.map +1 -1
  123. package/dist/connectors/telegram/commands/runners.d.ts +52 -0
  124. package/dist/connectors/telegram/commands/runners.d.ts.map +1 -0
  125. package/dist/connectors/telegram/commands/runners.js +486 -0
  126. package/dist/connectors/telegram/commands/runners.js.map +1 -0
  127. package/dist/connectors/telegram/commands/selfUpdate.d.ts.map +1 -1
  128. package/dist/connectors/telegram/commands/selfUpdate.js +1 -11
  129. package/dist/connectors/telegram/commands/selfUpdate.js.map +1 -1
  130. package/dist/connectors/telegram/commands/taskAgents.d.ts +22 -0
  131. package/dist/connectors/telegram/commands/taskAgents.d.ts.map +1 -0
  132. package/dist/connectors/telegram/commands/taskAgents.js +104 -0
  133. package/dist/connectors/telegram/commands/taskAgents.js.map +1 -0
  134. package/dist/connectors/telegram/commands/todo.d.ts +82 -0
  135. package/dist/connectors/telegram/commands/todo.d.ts.map +1 -0
  136. package/dist/connectors/telegram/commands/todo.js +384 -0
  137. package/dist/connectors/telegram/commands/todo.js.map +1 -0
  138. package/dist/connectors/telegram/commands/topicCommand.d.ts +6 -2
  139. package/dist/connectors/telegram/commands/topicCommand.d.ts.map +1 -1
  140. package/dist/connectors/telegram/commands/topicCommand.js +6 -9
  141. package/dist/connectors/telegram/commands/topicCommand.js.map +1 -1
  142. package/dist/connectors/telegram/openBindMessages.d.ts +45 -0
  143. package/dist/connectors/telegram/openBindMessages.d.ts.map +1 -0
  144. package/dist/connectors/telegram/openBindMessages.js +67 -0
  145. package/dist/connectors/telegram/openBindMessages.js.map +1 -0
  146. package/dist/connectors/telegram/outputFlushPlan.d.ts +49 -0
  147. package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -1
  148. package/dist/connectors/telegram/outputFlushPlan.js +46 -0
  149. package/dist/connectors/telegram/outputFlushPlan.js.map +1 -1
  150. package/dist/connectors/telegram/pendingTopicName.d.ts +26 -0
  151. package/dist/connectors/telegram/pendingTopicName.d.ts.map +1 -0
  152. package/dist/connectors/telegram/pendingTopicName.js +27 -0
  153. package/dist/connectors/telegram/pendingTopicName.js.map +1 -0
  154. package/dist/connectors/telegram/runnerPairingMessages.d.ts +27 -0
  155. package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -0
  156. package/dist/connectors/telegram/runnerPairingMessages.js +105 -0
  157. package/dist/connectors/telegram/runnerPairingMessages.js.map +1 -0
  158. package/dist/connectors/test/connector.d.ts.map +1 -1
  159. package/dist/connectors/test/connector.js +6 -1
  160. package/dist/connectors/test/connector.js.map +1 -1
  161. package/dist/i18n/de.d.ts.map +1 -1
  162. package/dist/i18n/de.js +148 -7
  163. package/dist/i18n/de.js.map +1 -1
  164. package/dist/i18n/en.d.ts.map +1 -1
  165. package/dist/i18n/en.js +148 -7
  166. package/dist/i18n/en.js.map +1 -1
  167. package/dist/i18n/es.d.ts.map +1 -1
  168. package/dist/i18n/es.js +148 -7
  169. package/dist/i18n/es.js.map +1 -1
  170. package/dist/i18n/fr.d.ts.map +1 -1
  171. package/dist/i18n/fr.js +148 -7
  172. package/dist/i18n/fr.js.map +1 -1
  173. package/dist/i18n/hi.d.ts.map +1 -1
  174. package/dist/i18n/hi.js +148 -7
  175. package/dist/i18n/hi.js.map +1 -1
  176. package/dist/i18n/ja.d.ts.map +1 -1
  177. package/dist/i18n/ja.js +148 -7
  178. package/dist/i18n/ja.js.map +1 -1
  179. package/dist/i18n/ka.d.ts.map +1 -1
  180. package/dist/i18n/ka.js +148 -7
  181. package/dist/i18n/ka.js.map +1 -1
  182. package/dist/i18n/pt.d.ts.map +1 -1
  183. package/dist/i18n/pt.js +148 -7
  184. package/dist/i18n/pt.js.map +1 -1
  185. package/dist/i18n/ru.d.ts.map +1 -1
  186. package/dist/i18n/ru.js +148 -7
  187. package/dist/i18n/ru.js.map +1 -1
  188. package/dist/i18n/uk.d.ts.map +1 -1
  189. package/dist/i18n/uk.js +148 -7
  190. package/dist/i18n/uk.js.map +1 -1
  191. package/dist/i18n/uz.d.ts.map +1 -1
  192. package/dist/i18n/uz.js +148 -7
  193. package/dist/i18n/uz.js.map +1 -1
  194. package/dist/i18n/zh.d.ts.map +1 -1
  195. package/dist/i18n/zh.js +148 -7
  196. package/dist/i18n/zh.js.map +1 -1
  197. package/dist/i18n.d.ts +1 -1
  198. package/dist/i18n.js +1 -1
  199. package/dist/installManager.d.ts +70 -1
  200. package/dist/installManager.d.ts.map +1 -1
  201. package/dist/installManager.js +125 -13
  202. package/dist/installManager.js.map +1 -1
  203. package/dist/instanceSettings.d.ts +50 -1
  204. package/dist/instanceSettings.d.ts.map +1 -1
  205. package/dist/instanceSettings.js +119 -26
  206. package/dist/instanceSettings.js.map +1 -1
  207. package/dist/openCodeQuestionFlow.d.ts +30 -0
  208. package/dist/openCodeQuestionFlow.d.ts.map +1 -1
  209. package/dist/openCodeQuestionFlow.js +43 -0
  210. package/dist/openCodeQuestionFlow.js.map +1 -1
  211. package/dist/outputTrace.d.ts +6 -0
  212. package/dist/outputTrace.d.ts.map +1 -1
  213. package/dist/outputTrace.js +24 -1
  214. package/dist/outputTrace.js.map +1 -1
  215. package/dist/postToSession.d.ts +20 -5
  216. package/dist/postToSession.d.ts.map +1 -1
  217. package/dist/postToSession.js +38 -7
  218. package/dist/postToSession.js.map +1 -1
  219. package/dist/remoteRun/cliArgs.d.ts +75 -0
  220. package/dist/remoteRun/cliArgs.d.ts.map +1 -0
  221. package/dist/remoteRun/cliArgs.js +206 -0
  222. package/dist/remoteRun/cliArgs.js.map +1 -0
  223. package/dist/remoteRun/commands.d.ts +77 -0
  224. package/dist/remoteRun/commands.d.ts.map +1 -0
  225. package/dist/remoteRun/commands.js +327 -0
  226. package/dist/remoteRun/commands.js.map +1 -0
  227. package/dist/remoteRun/depsPlan.d.ts +16 -0
  228. package/dist/remoteRun/depsPlan.d.ts.map +1 -0
  229. package/dist/remoteRun/depsPlan.js +82 -0
  230. package/dist/remoteRun/depsPlan.js.map +1 -0
  231. package/dist/remoteRun/exitCodes.d.ts +34 -0
  232. package/dist/remoteRun/exitCodes.d.ts.map +1 -0
  233. package/dist/remoteRun/exitCodes.js +38 -0
  234. package/dist/remoteRun/exitCodes.js.map +1 -0
  235. package/dist/remoteRun/foreground.d.ts +29 -0
  236. package/dist/remoteRun/foreground.d.ts.map +1 -0
  237. package/dist/remoteRun/foreground.js +159 -0
  238. package/dist/remoteRun/foreground.js.map +1 -0
  239. package/dist/remoteRun/interrupts.d.ts +27 -0
  240. package/dist/remoteRun/interrupts.d.ts.map +1 -0
  241. package/dist/remoteRun/interrupts.js +78 -0
  242. package/dist/remoteRun/interrupts.js.map +1 -0
  243. package/dist/remoteRun/jobFiles.d.ts +31 -0
  244. package/dist/remoteRun/jobFiles.d.ts.map +1 -0
  245. package/dist/remoteRun/jobFiles.js +84 -0
  246. package/dist/remoteRun/jobFiles.js.map +1 -0
  247. package/dist/remoteRun/jobFormat.d.ts +16 -0
  248. package/dist/remoteRun/jobFormat.d.ts.map +1 -0
  249. package/dist/remoteRun/jobFormat.js +130 -0
  250. package/dist/remoteRun/jobFormat.js.map +1 -0
  251. package/dist/remoteRun/jobId.d.ts +15 -0
  252. package/dist/remoteRun/jobId.d.ts.map +1 -0
  253. package/dist/remoteRun/jobId.js +85 -0
  254. package/dist/remoteRun/jobId.js.map +1 -0
  255. package/dist/remoteRun/jobMeta.d.ts +18 -0
  256. package/dist/remoteRun/jobMeta.d.ts.map +1 -0
  257. package/dist/remoteRun/jobMeta.js +33 -0
  258. package/dist/remoteRun/jobMeta.js.map +1 -0
  259. package/dist/remoteRun/jobQuery.d.ts +12 -0
  260. package/dist/remoteRun/jobQuery.d.ts.map +1 -0
  261. package/dist/remoteRun/jobQuery.js +22 -0
  262. package/dist/remoteRun/jobQuery.js.map +1 -0
  263. package/dist/remoteRun/jobRecords.d.ts +22 -0
  264. package/dist/remoteRun/jobRecords.d.ts.map +1 -0
  265. package/dist/remoteRun/jobRecords.js +145 -0
  266. package/dist/remoteRun/jobRecords.js.map +1 -0
  267. package/dist/remoteRun/jobState.d.ts +62 -0
  268. package/dist/remoteRun/jobState.d.ts.map +1 -0
  269. package/dist/remoteRun/jobState.js +132 -0
  270. package/dist/remoteRun/jobState.js.map +1 -0
  271. package/dist/remoteRun/leaseTiming.d.ts +18 -0
  272. package/dist/remoteRun/leaseTiming.d.ts.map +1 -0
  273. package/dist/remoteRun/leaseTiming.js +43 -0
  274. package/dist/remoteRun/leaseTiming.js.map +1 -0
  275. package/dist/remoteRun/output.d.ts +37 -0
  276. package/dist/remoteRun/output.d.ts.map +1 -0
  277. package/dist/remoteRun/output.js +127 -0
  278. package/dist/remoteRun/output.js.map +1 -0
  279. package/dist/remoteRun/pairedRunners.d.ts +51 -0
  280. package/dist/remoteRun/pairedRunners.d.ts.map +1 -0
  281. package/dist/remoteRun/pairedRunners.js +165 -0
  282. package/dist/remoteRun/pairedRunners.js.map +1 -0
  283. package/dist/remoteRun/pathPatterns.d.ts +33 -0
  284. package/dist/remoteRun/pathPatterns.d.ts.map +1 -0
  285. package/dist/remoteRun/pathPatterns.js +115 -0
  286. package/dist/remoteRun/pathPatterns.js.map +1 -0
  287. package/dist/remoteRun/probe.d.ts +78 -0
  288. package/dist/remoteRun/probe.d.ts.map +1 -0
  289. package/dist/remoteRun/probe.js +157 -0
  290. package/dist/remoteRun/probe.js.map +1 -0
  291. package/dist/remoteRun/project.d.ts +26 -0
  292. package/dist/remoteRun/project.d.ts.map +1 -0
  293. package/dist/remoteRun/project.js +159 -0
  294. package/dist/remoteRun/project.js.map +1 -0
  295. package/dist/remoteRun/projectConfig.d.ts +38 -0
  296. package/dist/remoteRun/projectConfig.d.ts.map +1 -0
  297. package/dist/remoteRun/projectConfig.js +87 -0
  298. package/dist/remoteRun/projectConfig.js.map +1 -0
  299. package/dist/remoteRun/remoteRunCli.d.ts +22 -0
  300. package/dist/remoteRun/remoteRunCli.d.ts.map +1 -0
  301. package/dist/remoteRun/remoteRunCli.js +119 -0
  302. package/dist/remoteRun/remoteRunCli.js.map +1 -0
  303. package/dist/remoteRun/remoteRunError.d.ts +14 -0
  304. package/dist/remoteRun/remoteRunError.d.ts.map +1 -0
  305. package/dist/remoteRun/remoteRunError.js +28 -0
  306. package/dist/remoteRun/remoteRunError.js.map +1 -0
  307. package/dist/remoteRun/rsync.d.ts +17 -0
  308. package/dist/remoteRun/rsync.d.ts.map +1 -0
  309. package/dist/remoteRun/rsync.js +39 -0
  310. package/dist/remoteRun/rsync.js.map +1 -0
  311. package/dist/remoteRun/runnerClient.d.ts +52 -0
  312. package/dist/remoteRun/runnerClient.d.ts.map +1 -0
  313. package/dist/remoteRun/runnerClient.js +143 -0
  314. package/dist/remoteRun/runnerClient.js.map +1 -0
  315. package/dist/remoteRun/runnerSummary.d.ts +24 -0
  316. package/dist/remoteRun/runnerSummary.d.ts.map +1 -0
  317. package/dist/remoteRun/runnerSummary.js +86 -0
  318. package/dist/remoteRun/runnerSummary.js.map +1 -0
  319. package/dist/remoteRun/runnerWait.d.ts +68 -0
  320. package/dist/remoteRun/runnerWait.d.ts.map +1 -0
  321. package/dist/remoteRun/runnerWait.js +137 -0
  322. package/dist/remoteRun/runnerWait.js.map +1 -0
  323. package/dist/remoteRun/runnerWaitTiming.d.ts +16 -0
  324. package/dist/remoteRun/runnerWaitTiming.d.ts.map +1 -0
  325. package/dist/remoteRun/runnerWaitTiming.js +37 -0
  326. package/dist/remoteRun/runnerWaitTiming.js.map +1 -0
  327. package/dist/remoteRun/runners.d.ts +57 -0
  328. package/dist/remoteRun/runners.d.ts.map +1 -0
  329. package/dist/remoteRun/runners.js +209 -0
  330. package/dist/remoteRun/runners.js.map +1 -0
  331. package/dist/remoteRun/runnersCatalog.d.ts +14 -0
  332. package/dist/remoteRun/runnersCatalog.d.ts.map +1 -0
  333. package/dist/remoteRun/runnersCatalog.js +68 -0
  334. package/dist/remoteRun/runnersCatalog.js.map +1 -0
  335. package/dist/remoteRun/runnersConfig.d.ts +53 -0
  336. package/dist/remoteRun/runnersConfig.d.ts.map +1 -0
  337. package/dist/remoteRun/runnersConfig.js +109 -0
  338. package/dist/remoteRun/runnersConfig.js.map +1 -0
  339. package/dist/remoteRun/safeCopy.d.ts +31 -0
  340. package/dist/remoteRun/safeCopy.d.ts.map +1 -0
  341. package/dist/remoteRun/safeCopy.js +137 -0
  342. package/dist/remoteRun/safeCopy.js.map +1 -0
  343. package/dist/remoteRun/sendPlan.d.ts +67 -0
  344. package/dist/remoteRun/sendPlan.d.ts.map +1 -0
  345. package/dist/remoteRun/sendPlan.js +139 -0
  346. package/dist/remoteRun/sendPlan.js.map +1 -0
  347. package/dist/remoteRun/ssh.d.ts +82 -0
  348. package/dist/remoteRun/ssh.d.ts.map +1 -0
  349. package/dist/remoteRun/ssh.js +236 -0
  350. package/dist/remoteRun/ssh.js.map +1 -0
  351. package/dist/remoteRun/submit.d.ts +29 -0
  352. package/dist/remoteRun/submit.d.ts.map +1 -0
  353. package/dist/remoteRun/submit.js +142 -0
  354. package/dist/remoteRun/submit.js.map +1 -0
  355. package/dist/requests/answerRequest.d.ts +5 -0
  356. package/dist/requests/answerRequest.d.ts.map +1 -1
  357. package/dist/requests/answerRequest.js +16 -1
  358. package/dist/requests/answerRequest.js.map +1 -1
  359. package/dist/requests/requestLedger.d.ts +13 -0
  360. package/dist/requests/requestLedger.d.ts.map +1 -1
  361. package/dist/requests/requestLedger.js +9 -0
  362. package/dist/requests/requestLedger.js.map +1 -1
  363. package/dist/requests/topicRequestSettle.d.ts +30 -0
  364. package/dist/requests/topicRequestSettle.d.ts.map +1 -0
  365. package/dist/requests/topicRequestSettle.js +23 -0
  366. package/dist/requests/topicRequestSettle.js.map +1 -0
  367. package/dist/requests/wakeUpEngine.d.ts +4 -0
  368. package/dist/requests/wakeUpEngine.d.ts.map +1 -1
  369. package/dist/requests/wakeUpEngine.js +5 -1
  370. package/dist/requests/wakeUpEngine.js.map +1 -1
  371. package/dist/runnerUtility/adminCheck.d.ts +11 -0
  372. package/dist/runnerUtility/adminCheck.d.ts.map +1 -0
  373. package/dist/runnerUtility/adminCheck.js +68 -0
  374. package/dist/runnerUtility/adminCheck.js.map +1 -0
  375. package/dist/runnerUtility/appInstall.d.ts +25 -0
  376. package/dist/runnerUtility/appInstall.d.ts.map +1 -0
  377. package/dist/runnerUtility/appInstall.js +147 -0
  378. package/dist/runnerUtility/appInstall.js.map +1 -0
  379. package/dist/runnerUtility/appUpdate.d.ts +39 -0
  380. package/dist/runnerUtility/appUpdate.d.ts.map +1 -0
  381. package/dist/runnerUtility/appUpdate.js +90 -0
  382. package/dist/runnerUtility/appUpdate.js.map +1 -0
  383. package/dist/runnerUtility/execEnv.d.ts +21 -0
  384. package/dist/runnerUtility/execEnv.d.ts.map +1 -0
  385. package/dist/runnerUtility/execEnv.js +109 -0
  386. package/dist/runnerUtility/execEnv.js.map +1 -0
  387. package/dist/runnerUtility/execSession.d.ts +13 -0
  388. package/dist/runnerUtility/execSession.d.ts.map +1 -0
  389. package/dist/runnerUtility/execSession.js +58 -0
  390. package/dist/runnerUtility/execSession.js.map +1 -0
  391. package/dist/runnerUtility/hubClient.d.ts +30 -0
  392. package/dist/runnerUtility/hubClient.d.ts.map +1 -0
  393. package/dist/runnerUtility/hubClient.js +127 -0
  394. package/dist/runnerUtility/hubClient.js.map +1 -0
  395. package/dist/runnerUtility/injectStream.d.ts +9 -0
  396. package/dist/runnerUtility/injectStream.d.ts.map +1 -0
  397. package/dist/runnerUtility/injectStream.js +12 -0
  398. package/dist/runnerUtility/injectStream.js.map +1 -0
  399. package/dist/runnerUtility/iosCheck.d.ts +62 -0
  400. package/dist/runnerUtility/iosCheck.d.ts.map +1 -0
  401. package/dist/runnerUtility/iosCheck.js +200 -0
  402. package/dist/runnerUtility/iosCheck.js.map +1 -0
  403. package/dist/runnerUtility/launcher.d.ts +5 -0
  404. package/dist/runnerUtility/launcher.d.ts.map +1 -0
  405. package/dist/runnerUtility/launcher.js +85 -0
  406. package/dist/runnerUtility/launcher.js.map +1 -0
  407. package/dist/runnerUtility/linkLoop.d.ts +47 -0
  408. package/dist/runnerUtility/linkLoop.d.ts.map +1 -0
  409. package/dist/runnerUtility/linkLoop.js +281 -0
  410. package/dist/runnerUtility/linkLoop.js.map +1 -0
  411. package/dist/runnerUtility/localLinkStop.d.ts +23 -0
  412. package/dist/runnerUtility/localLinkStop.d.ts.map +1 -0
  413. package/dist/runnerUtility/localLinkStop.js +79 -0
  414. package/dist/runnerUtility/localLinkStop.js.map +1 -0
  415. package/dist/runnerUtility/machineReport.d.ts +39 -0
  416. package/dist/runnerUtility/machineReport.d.ts.map +1 -0
  417. package/dist/runnerUtility/machineReport.js +161 -0
  418. package/dist/runnerUtility/machineReport.js.map +1 -0
  419. package/dist/runnerUtility/packageId.d.ts +5 -0
  420. package/dist/runnerUtility/packageId.d.ts.map +1 -0
  421. package/dist/runnerUtility/packageId.js +64 -0
  422. package/dist/runnerUtility/packageId.js.map +1 -0
  423. package/dist/runnerUtility/pairingRecovery.d.ts +31 -0
  424. package/dist/runnerUtility/pairingRecovery.d.ts.map +1 -0
  425. package/dist/runnerUtility/pairingRecovery.js +24 -0
  426. package/dist/runnerUtility/pairingRecovery.js.map +1 -0
  427. package/dist/runnerUtility/pueueDaemon.d.ts +36 -0
  428. package/dist/runnerUtility/pueueDaemon.d.ts.map +1 -0
  429. package/dist/runnerUtility/pueueDaemon.js +165 -0
  430. package/dist/runnerUtility/pueueDaemon.js.map +1 -0
  431. package/dist/runnerUtility/runnerCli.d.ts +18 -0
  432. package/dist/runnerUtility/runnerCli.d.ts.map +1 -0
  433. package/dist/runnerUtility/runnerCli.js +184 -0
  434. package/dist/runnerUtility/runnerCli.js.map +1 -0
  435. package/dist/runnerUtility/runnerCommands.d.ts +67 -0
  436. package/dist/runnerUtility/runnerCommands.d.ts.map +1 -0
  437. package/dist/runnerUtility/runnerCommands.js +418 -0
  438. package/dist/runnerUtility/runnerCommands.js.map +1 -0
  439. package/dist/runnerUtility/runnerConfig.d.ts +63 -0
  440. package/dist/runnerUtility/runnerConfig.d.ts.map +1 -0
  441. package/dist/runnerUtility/runnerConfig.js +153 -0
  442. package/dist/runnerUtility/runnerConfig.js.map +1 -0
  443. package/dist/runnerUtility/runnerFlags.d.ts +9 -0
  444. package/dist/runnerUtility/runnerFlags.d.ts.map +1 -0
  445. package/dist/runnerUtility/runnerFlags.js +53 -0
  446. package/dist/runnerUtility/runnerFlags.js.map +1 -0
  447. package/dist/runnerUtility/runnerHome.d.ts +30 -0
  448. package/dist/runnerUtility/runnerHome.d.ts.map +1 -0
  449. package/dist/runnerUtility/runnerHome.js +82 -0
  450. package/dist/runnerUtility/runnerHome.js.map +1 -0
  451. package/dist/runnerUtility/runnerKeys.d.ts +11 -0
  452. package/dist/runnerUtility/runnerKeys.d.ts.map +1 -0
  453. package/dist/runnerUtility/runnerKeys.js +80 -0
  454. package/dist/runnerUtility/runnerKeys.js.map +1 -0
  455. package/dist/runnerUtility/runnerServers.d.ts +40 -0
  456. package/dist/runnerUtility/runnerServers.d.ts.map +1 -0
  457. package/dist/runnerUtility/runnerServers.js +79 -0
  458. package/dist/runnerUtility/runnerServers.js.map +1 -0
  459. package/dist/runnerUtility/serviceManager.d.ts +54 -0
  460. package/dist/runnerUtility/serviceManager.d.ts.map +1 -0
  461. package/dist/runnerUtility/serviceManager.js +413 -0
  462. package/dist/runnerUtility/serviceManager.js.map +1 -0
  463. package/dist/runnerUtility/serviceUnits.d.ts +36 -0
  464. package/dist/runnerUtility/serviceUnits.d.ts.map +1 -0
  465. package/dist/runnerUtility/serviceUnits.js +169 -0
  466. package/dist/runnerUtility/serviceUnits.js.map +1 -0
  467. package/dist/runnerUtility/toolInstall.d.ts +95 -0
  468. package/dist/runnerUtility/toolInstall.d.ts.map +1 -0
  469. package/dist/runnerUtility/toolInstall.js +232 -0
  470. package/dist/runnerUtility/toolInstall.js.map +1 -0
  471. package/dist/runnerUtility/versionPollTiming.d.ts +16 -0
  472. package/dist/runnerUtility/versionPollTiming.d.ts.map +1 -0
  473. package/dist/runnerUtility/versionPollTiming.js +36 -0
  474. package/dist/runnerUtility/versionPollTiming.js.map +1 -0
  475. package/dist/runners/authorizedKeys.d.ts +52 -0
  476. package/dist/runners/authorizedKeys.d.ts.map +1 -0
  477. package/dist/runners/authorizedKeys.js +153 -0
  478. package/dist/runners/authorizedKeys.js.map +1 -0
  479. package/dist/runners/bootstrapLine.d.ts +4 -0
  480. package/dist/runners/bootstrapLine.d.ts.map +1 -0
  481. package/dist/runners/bootstrapLine.js +69 -0
  482. package/dist/runners/bootstrapLine.js.map +1 -0
  483. package/dist/runners/gate.d.ts +41 -0
  484. package/dist/runners/gate.d.ts.map +1 -0
  485. package/dist/runners/gate.js +216 -0
  486. package/dist/runners/gate.js.map +1 -0
  487. package/dist/runners/gateLink.d.ts +26 -0
  488. package/dist/runners/gateLink.d.ts.map +1 -0
  489. package/dist/runners/gateLink.js +240 -0
  490. package/dist/runners/gateLink.js.map +1 -0
  491. package/dist/runners/gateProtocol.d.ts +98 -0
  492. package/dist/runners/gateProtocol.d.ts.map +1 -0
  493. package/dist/runners/gateProtocol.js +149 -0
  494. package/dist/runners/gateProtocol.js.map +1 -0
  495. package/dist/runners/gateWrapper.d.ts +6 -0
  496. package/dist/runners/gateWrapper.d.ts.map +1 -0
  497. package/dist/runners/gateWrapper.js +70 -0
  498. package/dist/runners/gateWrapper.js.map +1 -0
  499. package/dist/runners/hubAddress.d.ts +33 -0
  500. package/dist/runners/hubAddress.d.ts.map +1 -0
  501. package/dist/runners/hubAddress.js +88 -0
  502. package/dist/runners/hubAddress.js.map +1 -0
  503. package/dist/runners/hubAddressCandidates.d.ts +16 -0
  504. package/dist/runners/hubAddressCandidates.d.ts.map +1 -0
  505. package/dist/runners/hubAddressCandidates.js +96 -0
  506. package/dist/runners/hubAddressCandidates.js.map +1 -0
  507. package/dist/runners/hubIds.d.ts +16 -0
  508. package/dist/runners/hubIds.d.ts.map +1 -0
  509. package/dist/runners/hubIds.js +25 -0
  510. package/dist/runners/hubIds.js.map +1 -0
  511. package/dist/runners/hubKey.d.ts +6 -0
  512. package/dist/runners/hubKey.d.ts.map +1 -0
  513. package/dist/runners/hubKey.js +78 -0
  514. package/dist/runners/hubKey.js.map +1 -0
  515. package/dist/runners/hubLock.d.ts +7 -0
  516. package/dist/runners/hubLock.d.ts.map +1 -0
  517. package/dist/runners/hubLock.js +230 -0
  518. package/dist/runners/hubLock.js.map +1 -0
  519. package/dist/runners/hubPackage.d.ts +23 -0
  520. package/dist/runners/hubPackage.d.ts.map +1 -0
  521. package/dist/runners/hubPackage.js +184 -0
  522. package/dist/runners/hubPackage.js.map +1 -0
  523. package/dist/runners/hubPairing.d.ts +63 -0
  524. package/dist/runners/hubPairing.d.ts.map +1 -0
  525. package/dist/runners/hubPairing.js +261 -0
  526. package/dist/runners/hubPairing.js.map +1 -0
  527. package/dist/runners/hubPaths.d.ts +38 -0
  528. package/dist/runners/hubPaths.d.ts.map +1 -0
  529. package/dist/runners/hubPaths.js +94 -0
  530. package/dist/runners/hubPaths.js.map +1 -0
  531. package/dist/runners/hubRegistry.d.ts +112 -0
  532. package/dist/runners/hubRegistry.d.ts.map +1 -0
  533. package/dist/runners/hubRegistry.js +210 -0
  534. package/dist/runners/hubRegistry.js.map +1 -0
  535. package/dist/runners/linkControl.d.ts +27 -0
  536. package/dist/runners/linkControl.d.ts.map +1 -0
  537. package/dist/runners/linkControl.js +124 -0
  538. package/dist/runners/linkControl.js.map +1 -0
  539. package/dist/runners/pairCode.d.ts +30 -0
  540. package/dist/runners/pairCode.d.ts.map +1 -0
  541. package/dist/runners/pairCode.js +46 -0
  542. package/dist/runners/pairCode.js.map +1 -0
  543. package/dist/runners/pairingTiming.d.ts +18 -0
  544. package/dist/runners/pairingTiming.d.ts.map +1 -0
  545. package/dist/runners/pairingTiming.js +42 -0
  546. package/dist/runners/pairingTiming.js.map +1 -0
  547. package/dist/runners/runnerProxy.d.ts +9 -0
  548. package/dist/runners/runnerProxy.d.ts.map +1 -0
  549. package/dist/runners/runnerProxy.js +67 -0
  550. package/dist/runners/runnerProxy.js.map +1 -0
  551. package/dist/runners/runnerRemoval.d.ts +21 -0
  552. package/dist/runners/runnerRemoval.d.ts.map +1 -0
  553. package/dist/runners/runnerRemoval.js +82 -0
  554. package/dist/runners/runnerRemoval.js.map +1 -0
  555. package/dist/runners/runnersCli.d.ts +16 -0
  556. package/dist/runners/runnersCli.d.ts.map +1 -0
  557. package/dist/runners/runnersCli.js +214 -0
  558. package/dist/runners/runnersCli.js.map +1 -0
  559. package/dist/runners/runnersList.d.ts +17 -0
  560. package/dist/runners/runnersList.d.ts.map +1 -0
  561. package/dist/runners/runnersList.js +49 -0
  562. package/dist/runners/runnersList.js.map +1 -0
  563. package/dist/runners/runnersOverview.d.ts +20 -0
  564. package/dist/runners/runnersOverview.d.ts.map +1 -0
  565. package/dist/runners/runnersOverview.js +55 -0
  566. package/dist/runners/runnersOverview.js.map +1 -0
  567. package/dist/runners/sshKeys.d.ts +26 -0
  568. package/dist/runners/sshKeys.d.ts.map +1 -0
  569. package/dist/runners/sshKeys.js +60 -0
  570. package/dist/runners/sshKeys.js.map +1 -0
  571. package/dist/runners/tarArchive.d.ts +20 -0
  572. package/dist/runners/tarArchive.d.ts.map +1 -0
  573. package/dist/runners/tarArchive.js +70 -0
  574. package/dist/runners/tarArchive.js.map +1 -0
  575. package/dist/scheduler/delivery.d.ts +2 -0
  576. package/dist/scheduler/delivery.d.ts.map +1 -1
  577. package/dist/scheduler/delivery.js +8 -4
  578. package/dist/scheduler/delivery.js.map +1 -1
  579. package/dist/scheduler/mcpSurface.d.ts +65 -10
  580. package/dist/scheduler/mcpSurface.d.ts.map +1 -1
  581. package/dist/scheduler/mcpSurface.js +319 -89
  582. package/dist/scheduler/mcpSurface.js.map +1 -1
  583. package/dist/scheduler/recurrence.d.ts +5 -0
  584. package/dist/scheduler/recurrence.d.ts.map +1 -1
  585. package/dist/scheduler/recurrence.js +12 -2
  586. package/dist/scheduler/recurrence.js.map +1 -1
  587. package/dist/scheduler/strictToolInput.d.ts +45 -0
  588. package/dist/scheduler/strictToolInput.d.ts.map +1 -0
  589. package/dist/scheduler/strictToolInput.js +155 -0
  590. package/dist/scheduler/strictToolInput.js.map +1 -0
  591. package/dist/scheduler/types.d.ts +5 -0
  592. package/dist/scheduler/types.d.ts.map +1 -1
  593. package/dist/scheduler/workerWatch.d.ts +23 -0
  594. package/dist/scheduler/workerWatch.d.ts.map +1 -0
  595. package/dist/scheduler/workerWatch.js +26 -0
  596. package/dist/scheduler/workerWatch.js.map +1 -0
  597. package/dist/selfUpdate/emittedSource.d.ts +11 -0
  598. package/dist/selfUpdate/emittedSource.d.ts.map +1 -0
  599. package/dist/selfUpdate/emittedSource.js +24 -0
  600. package/dist/selfUpdate/emittedSource.js.map +1 -0
  601. package/dist/selfUpdate/gitSource.d.ts +0 -6
  602. package/dist/selfUpdate/gitSource.d.ts.map +1 -1
  603. package/dist/selfUpdate/gitSource.js +2 -18
  604. package/dist/selfUpdate/gitSource.js.map +1 -1
  605. package/dist/selfUpdate/selfCheck.js +2 -2
  606. package/dist/selfUpdate/selfCheck.js.map +1 -1
  607. package/dist/selfUpdate/updatePending.d.ts +1 -1
  608. package/dist/sendErrorClassifier.d.ts +10 -0
  609. package/dist/sendErrorClassifier.d.ts.map +1 -1
  610. package/dist/sendErrorClassifier.js +22 -0
  611. package/dist/sendErrorClassifier.js.map +1 -1
  612. package/dist/state.d.ts +78 -7
  613. package/dist/state.d.ts.map +1 -1
  614. package/dist/state.js +125 -8
  615. package/dist/state.js.map +1 -1
  616. package/dist/stateFile.d.ts +9 -0
  617. package/dist/stateFile.d.ts.map +1 -0
  618. package/dist/stateFile.js +57 -0
  619. package/dist/stateFile.js.map +1 -0
  620. package/dist/stt/sttInstall.d.ts +7 -3
  621. package/dist/stt/sttInstall.d.ts.map +1 -1
  622. package/dist/stt/sttInstall.js +8 -4
  623. package/dist/stt/sttInstall.js.map +1 -1
  624. package/dist/stt/sttSettings.d.ts +2 -1
  625. package/dist/stt/sttSettings.d.ts.map +1 -1
  626. package/dist/stt/sttSettings.js +3 -2
  627. package/dist/stt/sttSettings.js.map +1 -1
  628. package/dist/stt/transcribeChain.js +2 -0
  629. package/dist/stt/transcribeChain.js.map +1 -1
  630. package/dist/testTimings.d.ts +16 -3
  631. package/dist/testTimings.d.ts.map +1 -1
  632. package/dist/testTimings.js +35 -2
  633. package/dist/testTimings.js.map +1 -1
  634. package/dist/todos/board.d.ts +83 -0
  635. package/dist/todos/board.d.ts.map +1 -0
  636. package/dist/todos/board.js +227 -0
  637. package/dist/todos/board.js.map +1 -0
  638. package/dist/todos/format.d.ts +33 -0
  639. package/dist/todos/format.d.ts.map +1 -0
  640. package/dist/todos/format.js +90 -0
  641. package/dist/todos/format.js.map +1 -0
  642. package/dist/todos/merge.d.ts +46 -0
  643. package/dist/todos/merge.d.ts.map +1 -0
  644. package/dist/todos/merge.js +137 -0
  645. package/dist/todos/merge.js.map +1 -0
  646. package/dist/todos/midTurn.d.ts +75 -0
  647. package/dist/todos/midTurn.d.ts.map +1 -0
  648. package/dist/todos/midTurn.js +214 -0
  649. package/dist/todos/midTurn.js.map +1 -0
  650. package/dist/todos/nag.d.ts +85 -0
  651. package/dist/todos/nag.d.ts.map +1 -0
  652. package/dist/todos/nag.js +103 -0
  653. package/dist/todos/nag.js.map +1 -0
  654. package/dist/todos/order.d.ts +25 -0
  655. package/dist/todos/order.d.ts.map +1 -0
  656. package/dist/todos/order.js +61 -0
  657. package/dist/todos/order.js.map +1 -0
  658. package/dist/todos/projects.d.ts +102 -0
  659. package/dist/todos/projects.d.ts.map +1 -0
  660. package/dist/todos/projects.js +342 -0
  661. package/dist/todos/projects.js.map +1 -0
  662. package/dist/todos/registry.d.ts +64 -0
  663. package/dist/todos/registry.d.ts.map +1 -0
  664. package/dist/todos/registry.js +116 -0
  665. package/dist/todos/registry.js.map +1 -0
  666. package/dist/todos/reminderEngine.d.ts +78 -0
  667. package/dist/todos/reminderEngine.d.ts.map +1 -0
  668. package/dist/todos/reminderEngine.js +162 -0
  669. package/dist/todos/reminderEngine.js.map +1 -0
  670. package/dist/todos/store.d.ts +34 -0
  671. package/dist/todos/store.d.ts.map +1 -0
  672. package/dist/todos/store.js +208 -0
  673. package/dist/todos/store.js.map +1 -0
  674. package/dist/todos/tools.d.ts +26 -0
  675. package/dist/todos/tools.d.ts.map +1 -0
  676. package/dist/todos/tools.js +25 -0
  677. package/dist/todos/tools.js.map +1 -0
  678. package/dist/todos/types.d.ts +85 -0
  679. package/dist/todos/types.d.ts.map +1 -0
  680. package/dist/todos/types.js +30 -0
  681. package/dist/todos/types.js.map +1 -0
  682. package/dist/trackers/taskAgentLimit.d.ts +58 -0
  683. package/dist/trackers/taskAgentLimit.d.ts.map +1 -0
  684. package/dist/trackers/taskAgentLimit.js +62 -0
  685. package/dist/trackers/taskAgentLimit.js.map +1 -0
  686. package/dist/trackers/taskAgentSlots.d.ts +109 -0
  687. package/dist/trackers/taskAgentSlots.d.ts.map +1 -0
  688. package/dist/trackers/taskAgentSlots.js +227 -0
  689. package/dist/trackers/taskAgentSlots.js.map +1 -0
  690. package/dist/trackers/types.d.ts +14 -0
  691. package/dist/trackers/types.d.ts.map +1 -0
  692. package/dist/trackers/types.js +3 -0
  693. package/dist/trackers/types.js.map +1 -0
  694. package/dist/types.d.ts +80 -4
  695. package/dist/types.d.ts.map +1 -1
  696. package/dist/utils/adoptReplayGate.d.ts +16 -0
  697. package/dist/utils/adoptReplayGate.d.ts.map +1 -0
  698. package/dist/utils/adoptReplayGate.js +35 -0
  699. package/dist/utils/adoptReplayGate.js.map +1 -0
  700. package/dist/utils/agentEnvironment.d.ts +6 -2
  701. package/dist/utils/agentEnvironment.d.ts.map +1 -1
  702. package/dist/utils/agentEnvironment.js +13 -2
  703. package/dist/utils/agentEnvironment.js.map +1 -1
  704. package/dist/utils/agentPlugin.d.ts +113 -0
  705. package/dist/utils/agentPlugin.d.ts.map +1 -0
  706. package/dist/utils/agentPlugin.js +192 -0
  707. package/dist/utils/agentPlugin.js.map +1 -0
  708. package/dist/utils/autoContinueOnLimit.d.ts +7 -4
  709. package/dist/utils/autoContinueOnLimit.d.ts.map +1 -1
  710. package/dist/utils/autoContinueOnLimit.js +8 -5
  711. package/dist/utils/autoContinueOnLimit.js.map +1 -1
  712. package/dist/utils/botSkills.d.ts +62 -0
  713. package/dist/utils/botSkills.d.ts.map +1 -0
  714. package/dist/utils/botSkills.js +53 -0
  715. package/dist/utils/botSkills.js.map +1 -0
  716. package/dist/utils/botSkillsSetting.d.ts +7 -0
  717. package/dist/utils/botSkillsSetting.d.ts.map +1 -0
  718. package/dist/utils/botSkillsSetting.js +9 -0
  719. package/dist/utils/botSkillsSetting.js.map +1 -0
  720. package/dist/utils/claudeCodeVersion.d.ts +7 -0
  721. package/dist/utils/claudeCodeVersion.d.ts.map +1 -1
  722. package/dist/utils/claudeCodeVersion.js +14 -1
  723. package/dist/utils/claudeCodeVersion.js.map +1 -1
  724. package/dist/utils/claudeCompactHook.d.ts +33 -15
  725. package/dist/utils/claudeCompactHook.d.ts.map +1 -1
  726. package/dist/utils/claudeCompactHook.js +36 -17
  727. package/dist/utils/claudeCompactHook.js.map +1 -1
  728. package/dist/utils/claudeCompactSummary.d.ts +15 -0
  729. package/dist/utils/claudeCompactSummary.d.ts.map +1 -0
  730. package/dist/utils/claudeCompactSummary.js +96 -0
  731. package/dist/utils/claudeCompactSummary.js.map +1 -0
  732. package/dist/utils/claudeLimitSwitch.d.ts +11 -9
  733. package/dist/utils/claudeLimitSwitch.d.ts.map +1 -1
  734. package/dist/utils/claudeLimitSwitch.js +18 -16
  735. package/dist/utils/claudeLimitSwitch.js.map +1 -1
  736. package/dist/utils/claudeProfiles.d.ts +5 -0
  737. package/dist/utils/claudeProfiles.d.ts.map +1 -1
  738. package/dist/utils/claudeProfiles.js +14 -0
  739. package/dist/utils/claudeProfiles.js.map +1 -1
  740. package/dist/utils/claudeSessionTitle.d.ts +2 -1
  741. package/dist/utils/claudeSessionTitle.d.ts.map +1 -1
  742. package/dist/utils/claudeSessionTitle.js +14 -14
  743. package/dist/utils/claudeSessionTitle.js.map +1 -1
  744. package/dist/utils/claudeUsage.d.ts +95 -15
  745. package/dist/utils/claudeUsage.d.ts.map +1 -1
  746. package/dist/utils/claudeUsage.js +241 -41
  747. package/dist/utils/claudeUsage.js.map +1 -1
  748. package/dist/utils/claudeUsageRefresher.d.ts +10 -0
  749. package/dist/utils/claudeUsageRefresher.d.ts.map +1 -1
  750. package/dist/utils/claudeUsageRefresher.js +11 -0
  751. package/dist/utils/claudeUsageRefresher.js.map +1 -1
  752. package/dist/utils/claudeUserEntry.d.ts +50 -0
  753. package/dist/utils/claudeUserEntry.d.ts.map +1 -0
  754. package/dist/utils/claudeUserEntry.js +120 -0
  755. package/dist/utils/claudeUserEntry.js.map +1 -0
  756. package/dist/utils/clearThreadOutputQueues.d.ts +4 -3
  757. package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -1
  758. package/dist/utils/clearThreadOutputQueues.js +1 -1
  759. package/dist/utils/clearThreadOutputQueues.js.map +1 -1
  760. package/dist/utils/compactOnIdle.d.ts +33 -13
  761. package/dist/utils/compactOnIdle.d.ts.map +1 -1
  762. package/dist/utils/compactOnIdle.js +35 -15
  763. package/dist/utils/compactOnIdle.js.map +1 -1
  764. package/dist/utils/fallbackBridge.d.ts +5 -0
  765. package/dist/utils/fallbackBridge.d.ts.map +1 -1
  766. package/dist/utils/fallbackBridge.js +19 -3
  767. package/dist/utils/fallbackBridge.js.map +1 -1
  768. package/dist/utils/fallbackChain.d.ts +9 -3
  769. package/dist/utils/fallbackChain.d.ts.map +1 -1
  770. package/dist/utils/fallbackChain.js +21 -3
  771. package/dist/utils/fallbackChain.js.map +1 -1
  772. package/dist/utils/fileSendPlan.d.ts +6 -0
  773. package/dist/utils/fileSendPlan.d.ts.map +1 -1
  774. package/dist/utils/fileSendPlan.js +11 -0
  775. package/dist/utils/fileSendPlan.js.map +1 -1
  776. package/dist/utils/fileSendService.d.ts +7 -1
  777. package/dist/utils/fileSendService.d.ts.map +1 -1
  778. package/dist/utils/fileSendService.js +6 -2
  779. package/dist/utils/fileSendService.js.map +1 -1
  780. package/dist/utils/groupFinalizePlan.d.ts +8 -10
  781. package/dist/utils/groupFinalizePlan.d.ts.map +1 -1
  782. package/dist/utils/groupFinalizePlan.js +8 -12
  783. package/dist/utils/groupFinalizePlan.js.map +1 -1
  784. package/dist/utils/jsonStreamHost.d.ts +13 -0
  785. package/dist/utils/jsonStreamHost.d.ts.map +1 -1
  786. package/dist/utils/jsonStreamHost.js +13 -0
  787. package/dist/utils/jsonStreamHost.js.map +1 -1
  788. package/dist/utils/messageSendService.d.ts +5 -3
  789. package/dist/utils/messageSendService.d.ts.map +1 -1
  790. package/dist/utils/messageSendService.js +12 -5
  791. package/dist/utils/messageSendService.js.map +1 -1
  792. package/dist/utils/openCodeCompactPlugin.d.ts +39 -14
  793. package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -1
  794. package/dist/utils/openCodeCompactPlugin.js +106 -38
  795. package/dist/utils/openCodeCompactPlugin.js.map +1 -1
  796. package/dist/utils/promptDelivery.d.ts +29 -12
  797. package/dist/utils/promptDelivery.d.ts.map +1 -1
  798. package/dist/utils/promptDelivery.js +13 -5
  799. package/dist/utils/promptDelivery.js.map +1 -1
  800. package/dist/utils/runnersScreenPlan.d.ts +130 -0
  801. package/dist/utils/runnersScreenPlan.d.ts.map +1 -0
  802. package/dist/utils/runnersScreenPlan.js +257 -0
  803. package/dist/utils/runnersScreenPlan.js.map +1 -0
  804. package/dist/utils/sentKindsSummary.d.ts +10 -0
  805. package/dist/utils/sentKindsSummary.d.ts.map +1 -0
  806. package/dist/utils/sentKindsSummary.js +18 -0
  807. package/dist/utils/sentKindsSummary.js.map +1 -0
  808. package/dist/utils/telegramError.d.ts +6 -0
  809. package/dist/utils/telegramError.d.ts.map +1 -1
  810. package/dist/utils/telegramError.js +12 -0
  811. package/dist/utils/telegramError.js.map +1 -1
  812. package/dist/utils/topicView.d.ts +1 -1
  813. package/dist/utils/topicView.js +1 -1
  814. package/dist/utils/transcribeAudio.d.ts +10 -0
  815. package/dist/utils/transcribeAudio.d.ts.map +1 -1
  816. package/dist/utils/transcribeAudio.js +22 -3
  817. package/dist/utils/transcribeAudio.js.map +1 -1
  818. package/dist/utils/transcriptErrorTime.d.ts +8 -0
  819. package/dist/utils/transcriptErrorTime.d.ts.map +1 -0
  820. package/dist/utils/transcriptErrorTime.js +56 -0
  821. package/dist/utils/transcriptErrorTime.js.map +1 -0
  822. package/dist/utils/wedgeRecovery.d.ts +2 -0
  823. package/dist/utils/wedgeRecovery.d.ts.map +1 -1
  824. package/dist/utils/wedgeRecovery.js +1 -1
  825. package/dist/utils/wedgeRecovery.js.map +1 -1
  826. package/package.json +15 -4
  827. package/remoteRun/runner.sh +1317 -0
  828. package/stt/gigaam_sidecar.py +555 -50
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * @description The heartbeat lease of a foreground run, in a module of its own so the CLI reads it without loading the bot: a
4
+ * runner kills a job whose caller stopped writing its heartbeat byte for this long — a stock sshd never notices a half-open
5
+ * connection, so this is the only thing that ends an orphaned job.
6
+ *
7
+ * The test seam `CHARNESS_TEST_TIMINGS` (`testTimings.ts`) may only SHORTEN it (key `remoteRunLeaseMs`). The CLI cannot import
8
+ * `testTimings.ts` (its graph reaches the bot), so it reads this one key tolerantly, as the hot supervisor reads its own two; the
9
+ * boot of an instance that carries a bad value is what refuses it by name.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.remoteRunLeaseMinMs = exports.remoteRunLeaseMs = void 0;
13
+ exports.readRemoteRunLeaseMs = readRemoteRunLeaseMs;
14
+ exports.getHeartbeatIntervalMs = getHeartbeatIntervalMs;
15
+ /** Production lease: no heartbeat for this long → the job is killed. */
16
+ exports.remoteRunLeaseMs = 45 * 1000;
17
+ /** The caller beats nine times per lease, so a few lost beats never kill a healthy job (production: every 5 s). */
18
+ const beatsPerLease = 9;
19
+ /** A shorter lease than this would kill a healthy job on one slow second of the runner's. */
20
+ exports.remoteRunLeaseMinMs = 3000;
21
+ const testTimingsVariableName = 'CHARNESS_TEST_TIMINGS';
22
+ /** @description The lease in force: the production one, or the test seam's shorter `remoteRunLeaseMs` when it is a whole number of ms within [min, production]. */
23
+ function readRemoteRunLeaseMs(env) {
24
+ const rawTestTimings = env[testTimingsVariableName];
25
+ if (rawTestTimings === undefined || rawTestTimings.trim() === '')
26
+ return exports.remoteRunLeaseMs;
27
+ let overrides;
28
+ try {
29
+ overrides = JSON.parse(rawTestTimings);
30
+ }
31
+ catch {
32
+ return exports.remoteRunLeaseMs;
33
+ }
34
+ const overrideMs = overrides?.remoteRunLeaseMs;
35
+ if (overrideMs === undefined || !Number.isInteger(overrideMs))
36
+ return exports.remoteRunLeaseMs;
37
+ return overrideMs >= exports.remoteRunLeaseMinMs && overrideMs <= exports.remoteRunLeaseMs ? overrideMs : exports.remoteRunLeaseMs;
38
+ }
39
+ /** @description How often the caller writes its heartbeat byte for a lease of `leaseMs`. */
40
+ function getHeartbeatIntervalMs(leaseMs) {
41
+ return Math.floor(leaseMs / beatsPerLease);
42
+ }
43
+ //# sourceMappingURL=leaseTiming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaseTiming.js","sourceRoot":"","sources":["../../src/remoteRun/leaseTiming.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAYH,oDAYC;AAGD,wDAEC;AA3BD,wEAAwE;AAC3D,QAAA,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C,mHAAmH;AACnH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,6FAA6F;AAChF,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD,mKAAmK;AACnK,SAAgB,oBAAoB,CAAC,GAAsB;IACzD,MAAM,cAAc,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACpD,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,wBAAgB,CAAC;IAC1F,IAAI,SAA+C,CAAC;IACpD,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,EAAE,gBAAgB,CAAC;IAC/C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;QAAE,OAAO,wBAAgB,CAAC;IACvF,OAAO,UAAU,IAAI,2BAAmB,IAAI,UAAU,IAAI,wBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAgB,CAAC;AAC7G,CAAC;AAED,4FAA4F;AAC5F,SAAgB,sBAAsB,CAAC,OAAe;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @description What the commands write and where: the job's output to stdout, remote-run's own lines to stderr prefixed `remote-run: `.
3
+ * The job script writes ITS progress lines (waiting for another job of the project, installing dependencies, a timeout) into the job's
4
+ * log with the same prefix, so the router sends every log line that starts with it to stderr — a command that prints such a line itself
5
+ * only moves it to the other stream.
6
+ */
7
+ export declare const ownLinePrefix = "remote-run: ";
8
+ export interface CliIo {
9
+ stdout: (text: string) => void;
10
+ stderr: (text: string) => void;
11
+ cwd: string;
12
+ env: NodeJS.ProcessEnv;
13
+ homeDir: string;
14
+ }
15
+ /** @description The io of the real process. */
16
+ export declare function createProcessIo(): CliIo;
17
+ /** @description One of remote-run's own lines, to stderr. */
18
+ export declare function sayOwn(io: Pick<CliIo, 'stderr'>, line: string): void;
19
+ export interface JobOutputRouter {
20
+ write: (chunk: string) => void;
21
+ /** The last, unfinished line, if any (a stream that ended without a newline). */
22
+ flush: () => void;
23
+ }
24
+ export declare function createJobOutputRouter(io: Pick<CliIo, 'stdout' | 'stderr'>): JobOutputRouter;
25
+ export interface ExitMarkerFilter {
26
+ write: (chunk: string) => void;
27
+ /** Hand on what is still held back (a stream that ended). */
28
+ flush: () => void;
29
+ /** The code of the last marker seen, or `null` when none arrived. */
30
+ getExitCode: () => number | null;
31
+ }
32
+ /**
33
+ * @description Takes the exit marker `runner.sh exec` prints out of a stderr stream, however the stream is cut into chunks, and hands on
34
+ * everything else at once — a partial marker is held back only until the rest arrives or the stream ends.
35
+ */
36
+ export declare function createExitMarkerFilter(forward: (text: string) => void): ExitMarkerFilter;
37
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/remoteRun/output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,IAAI,KAAK,CAQvC;AAED,6DAA6D;AAC7D,wBAAgB,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,iFAAiF;IACjF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAAG,eAAe,CAqB3F;AAOD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,qEAAqE;IACrE,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,gBAAgB,CA2BxF"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * @description What the commands write and where: the job's output to stdout, remote-run's own lines to stderr prefixed `remote-run: `.
4
+ * The job script writes ITS progress lines (waiting for another job of the project, installing dependencies, a timeout) into the job's
5
+ * log with the same prefix, so the router sends every log line that starts with it to stderr — a command that prints such a line itself
6
+ * only moves it to the other stream.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.ownLinePrefix = void 0;
43
+ exports.createProcessIo = createProcessIo;
44
+ exports.sayOwn = sayOwn;
45
+ exports.createJobOutputRouter = createJobOutputRouter;
46
+ exports.createExitMarkerFilter = createExitMarkerFilter;
47
+ const os = __importStar(require("os"));
48
+ exports.ownLinePrefix = 'remote-run: ';
49
+ /** @description The io of the real process. */
50
+ function createProcessIo() {
51
+ return {
52
+ stdout: (text) => { process.stdout.write(text); },
53
+ stderr: (text) => { process.stderr.write(text); },
54
+ cwd: process.cwd(),
55
+ env: process.env,
56
+ homeDir: os.homedir(),
57
+ };
58
+ }
59
+ /** @description One of remote-run's own lines, to stderr. */
60
+ function sayOwn(io, line) {
61
+ io.stderr(`${exports.ownLinePrefix}${line}\n`);
62
+ }
63
+ function createJobOutputRouter(io) {
64
+ let pending = '';
65
+ const emit = (line) => {
66
+ if (line.startsWith(exports.ownLinePrefix))
67
+ io.stderr(line);
68
+ else
69
+ io.stdout(line);
70
+ };
71
+ return {
72
+ write(chunk) {
73
+ pending += chunk;
74
+ let newline = pending.indexOf('\n');
75
+ while (newline >= 0) {
76
+ emit(pending.slice(0, newline + 1));
77
+ pending = pending.slice(newline + 1);
78
+ newline = pending.indexOf('\n');
79
+ }
80
+ },
81
+ flush() {
82
+ if (pending !== '')
83
+ emit(pending);
84
+ pending = '';
85
+ },
86
+ };
87
+ }
88
+ /** The line `runner.sh exec` ends its stderr with: RS (U+001E), the name, the command's exit code, a newline. */
89
+ const exitMarkerPattern = /\u001eremote-run-exit:(\d+)\n/g;
90
+ /** A marker that has begun but not arrived whole is held back at most this long (the marker is shorter than this). */
91
+ const exitMarkerHoldBackLength = 40;
92
+ /**
93
+ * @description Takes the exit marker `runner.sh exec` prints out of a stderr stream, however the stream is cut into chunks, and hands on
94
+ * everything else at once — a partial marker is held back only until the rest arrives or the stream ends.
95
+ */
96
+ function createExitMarkerFilter(forward) {
97
+ let pending = '';
98
+ let exitCode = null;
99
+ return {
100
+ write(chunk) {
101
+ let text = pending + chunk;
102
+ pending = '';
103
+ let handedOn = 0;
104
+ for (const match of text.matchAll(exitMarkerPattern)) {
105
+ if (match.index > handedOn)
106
+ forward(text.slice(handedOn, match.index));
107
+ exitCode = Number(match[1]);
108
+ handedOn = match.index + match[0].length;
109
+ }
110
+ text = text.slice(handedOn);
111
+ const markerStart = text.lastIndexOf('\u001e');
112
+ if (markerStart >= 0 && text.length - markerStart < exitMarkerHoldBackLength && !text.slice(markerStart).includes('\n')) {
113
+ pending = text.slice(markerStart);
114
+ text = text.slice(0, markerStart);
115
+ }
116
+ if (text !== '')
117
+ forward(text);
118
+ },
119
+ flush() {
120
+ if (pending !== '')
121
+ forward(pending);
122
+ pending = '';
123
+ },
124
+ getExitCode: () => exitCode,
125
+ };
126
+ }
127
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/remoteRun/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { type ConfigFileLoad } from '../configDirFile';
2
+ import { type PairedRunner } from '../runners/hubRegistry';
3
+ import type { RunnerConfig } from './runnersConfig';
4
+ /**
5
+ * @description Paired runners as `remote-run` sees them: the same `RunnerConfig` an entry of `runners.json` gives, built from the hub's
6
+ * registry (`paired.json`, `src/runners/`), so everything above the ssh layer — the script upload, rsync, Pueue, the lease — is phase 1
7
+ * unchanged. Only the way ssh reaches the machine differs: no host and port, but a `ProxyCommand` that joins ssh to the unix socket of
8
+ * the runner's link (`charness runner-proxy`), the runner's host key pinned under an alias from the hub's own `known_hosts`, and the
9
+ * hub's key. Nothing here talks to the network or to the runner; whether the link is up is `linkControl.ts`'s question.
10
+ */
11
+ /** @description A path this machine's registry or program lives in cannot be put on an ssh command line; the runner stays out of the catalog, with the reason. */
12
+ export declare class PairedRunnerSetupError extends Error {
13
+ constructor(message: string);
14
+ }
15
+ export interface PairedSshOptionsInput {
16
+ runnerId: string;
17
+ nodePath: string;
18
+ cliPath: string;
19
+ hubDir: string;
20
+ }
21
+ /**
22
+ * @description The ssh options of every call to a paired runner (the operator's `-F /dev/null` stands in for a config file: the machine's
23
+ * own ssh config must not change how the link is reached). The host key is checked strictly against the one the runner gave at pairing.
24
+ */
25
+ export declare function buildPairedSshOptions(input: PairedSshOptionsInput): string[];
26
+ /**
27
+ * @description Where the runner's Pueue lives, from the work dir it reported: the runner utility keeps `work/`, `bin/` and `pueue/` side by
28
+ * side in `~/.charness-runner/` (`runnerHome.ts` is the one place that layout is written down). A work dir that does not follow it gives
29
+ * `undefined` — the runner script then finds Pueue on the `PATH` as for any hand-made runner.
30
+ */
31
+ export declare function getPairedRunnerPueue(workDir: string): RunnerConfig['pueue'];
32
+ export interface PairedHubEnvironment {
33
+ hubDir: string;
34
+ nodePath: string;
35
+ cliPath: string;
36
+ }
37
+ /** @description The `RunnerConfig` of one registry entry. Throws a {@link PairedRunnerSetupError} when the paths of this machine cannot be put on an ssh command line. */
38
+ export declare function buildPairedRunnerConfig(runner: PairedRunner, hub: PairedHubEnvironment): RunnerConfig;
39
+ export interface PairedRunnersLoad {
40
+ runners: RunnerConfig[];
41
+ /** One line per problem; the runners that could not be built are not in `runners`. */
42
+ errors: string[];
43
+ }
44
+ /**
45
+ * @description The paired runners of the user whose home is `homeDir`, from `paired.json` (stamp-cached like `runners.json`: the bot MCP
46
+ * asks on every connect). Missing = none paired; invalid = its errors and the last good list of this process, if any.
47
+ */
48
+ export declare function loadPairedRunners(homeDir: string): ConfigFileLoad<PairedRunnersLoad>;
49
+ /** @description Forget the cached loads (tests that swap files under one path). */
50
+ export declare function resetPairedRunnersCache(): void;
51
+ //# sourceMappingURL=pairedRunners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairedRunners.d.ts","sourceRoot":"","sources":["../../src/remoteRun/pairedRunners.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGtE;;;;;;GAMG;AAEH,kKAAkK;AAClK,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAiBD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAgB5E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAM3E;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,0KAA0K;AAC1K,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,oBAAoB,GAAG,YAAY,CAUrG;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,sFAAsF;IACtF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA0BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAOpF;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PairedRunnerSetupError = void 0;
37
+ exports.buildPairedSshOptions = buildPairedSshOptions;
38
+ exports.getPairedRunnerPueue = getPairedRunnerPueue;
39
+ exports.buildPairedRunnerConfig = buildPairedRunnerConfig;
40
+ exports.loadPairedRunners = loadPairedRunners;
41
+ exports.resetPairedRunnersCache = resetPairedRunnersCache;
42
+ const path = __importStar(require("path"));
43
+ const configDirFile_1 = require("../configDirFile");
44
+ const runnerHome_1 = require("../runnerUtility/runnerHome");
45
+ const hubPaths_1 = require("../runners/hubPaths");
46
+ const hubRegistry_1 = require("../runners/hubRegistry");
47
+ const ssh_1 = require("./ssh");
48
+ /**
49
+ * @description Paired runners as `remote-run` sees them: the same `RunnerConfig` an entry of `runners.json` gives, built from the hub's
50
+ * registry (`paired.json`, `src/runners/`), so everything above the ssh layer — the script upload, rsync, Pueue, the lease — is phase 1
51
+ * unchanged. Only the way ssh reaches the machine differs: no host and port, but a `ProxyCommand` that joins ssh to the unix socket of
52
+ * the runner's link (`charness runner-proxy`), the runner's host key pinned under an alias from the hub's own `known_hosts`, and the
53
+ * hub's key. Nothing here talks to the network or to the runner; whether the link is up is `linkControl.ts`'s question.
54
+ */
55
+ /** @description A path this machine's registry or program lives in cannot be put on an ssh command line; the runner stays out of the catalog, with the reason. */
56
+ class PairedRunnerSetupError extends Error {
57
+ constructor(message) {
58
+ super(message);
59
+ this.name = 'PairedRunnerSetupError';
60
+ }
61
+ }
62
+ exports.PairedRunnerSetupError = PairedRunnerSetupError;
63
+ /** @description `value` as an ssh path, or a {@link PairedRunnerSetupError} naming what it is the path of. */
64
+ function getUsableSshPath(value, what) {
65
+ if (!(0, ssh_1.checkIsSshPathQuotable)(value))
66
+ throw new PairedRunnerSetupError(`the path of ${what} holds a quote, a backslash, a $ or a line break, which ssh cannot be given safely`);
67
+ return value;
68
+ }
69
+ /**
70
+ * One word of the `ProxyCommand` (run by the user's shell): plain words stay as they are, anything else is double-quoted. No single quote
71
+ * ever appears in the result — `buildRsyncSshCommand` wraps the whole option in single quotes for rsync's `-e`, whose parser has no way to
72
+ * nest them.
73
+ */
74
+ function quoteProxyWord(word, what) {
75
+ return (0, ssh_1.checkIsPlainShellWord)(getUsableSshPath(word, what)) ? word : `"${word}"`;
76
+ }
77
+ /**
78
+ * @description The ssh options of every call to a paired runner (the operator's `-F /dev/null` stands in for a config file: the machine's
79
+ * own ssh config must not change how the link is reached). The host key is checked strictly against the one the runner gave at pairing.
80
+ */
81
+ function buildPairedSshOptions(input) {
82
+ const files = (0, hubPaths_1.getHubFilePaths)(input.hubDir);
83
+ const socketPath = (0, hubPaths_1.getRunnerLinkPaths)(input.hubDir, input.runnerId).socket;
84
+ const proxyCommand = [quoteProxyWord(input.nodePath, 'node'), quoteProxyWord(input.cliPath, 'the charness cli'), 'runner-proxy', quoteProxyWord(socketPath, 'the runner link')].join(' ');
85
+ return [
86
+ '-F', '/dev/null',
87
+ '-o', `ProxyCommand=${(0, ssh_1.escapeSshTokens)(proxyCommand)}`,
88
+ '-o', `HostKeyAlias=${(0, hubPaths_1.getRunnerHostAlias)(input.runnerId)}`,
89
+ '-o', `UserKnownHostsFile=${(0, ssh_1.quoteSshOptionPath)((0, ssh_1.escapeSshTokens)(getUsableSshPath(files.knownHosts, 'the hub known_hosts')))}`,
90
+ '-o', 'GlobalKnownHostsFile=/dev/null',
91
+ '-o', 'StrictHostKeyChecking=yes',
92
+ '-i', (0, ssh_1.escapeSshTokens)(getUsableSshPath(files.hubKey, 'the hub key')),
93
+ '-o', 'IdentitiesOnly=yes',
94
+ '-o', 'IdentityAgent=none',
95
+ '-o', 'LogLevel=ERROR',
96
+ ];
97
+ }
98
+ /**
99
+ * @description Where the runner's Pueue lives, from the work dir it reported: the runner utility keeps `work/`, `bin/` and `pueue/` side by
100
+ * side in `~/.charness-runner/` (`runnerHome.ts` is the one place that layout is written down). A work dir that does not follow it gives
101
+ * `undefined` — the runner script then finds Pueue on the `PATH` as for any hand-made runner.
102
+ */
103
+ function getPairedRunnerPueue(workDir) {
104
+ const stateRoot = path.posix.dirname(workDir);
105
+ const homeDir = path.posix.dirname(stateRoot);
106
+ const paths = (0, runnerHome_1.getRunnerHomePaths)(homeDir);
107
+ if (paths.workDir !== workDir)
108
+ return undefined;
109
+ return { bin: path.posix.join(paths.binDir, 'pueue'), config: paths.pueueConfig };
110
+ }
111
+ /** @description The `RunnerConfig` of one registry entry. Throws a {@link PairedRunnerSetupError} when the paths of this machine cannot be put on an ssh command line. */
112
+ function buildPairedRunnerConfig(runner, hub) {
113
+ const link = { runnerId: runner.id, hubDir: hub.hubDir, isPausedByHub: runner.isPaused, os: runner.os };
114
+ return {
115
+ name: runner.name,
116
+ ssh: (0, hubPaths_1.getRunnerHostAlias)(runner.id),
117
+ sshOptions: buildPairedSshOptions({ runnerId: runner.id, nodePath: hub.nodePath, cliPath: hub.cliPath, hubDir: hub.hubDir }),
118
+ workDir: runner.workDir,
119
+ pueue: getPairedRunnerPueue(runner.workDir),
120
+ paired: link,
121
+ };
122
+ }
123
+ const pairedFileLoader = (0, configDirFile_1.createConfigFileLoader)({
124
+ fileName: 'paired.json',
125
+ createEmpty: () => ({ rev: 0, runners: [] }),
126
+ validate: (parsedJson) => {
127
+ const parsed = hubRegistry_1.pairedFileSchema.safeParse(parsedJson);
128
+ if (parsed.success)
129
+ return { ok: true, config: parsed.data };
130
+ return { ok: false, errors: parsed.error.issues.map((issue) => `paired.json ${issue.path.join('.') || '(root)'}: ${issue.message}`) };
131
+ },
132
+ });
133
+ function buildRunners(file, hub) {
134
+ const runners = [];
135
+ const errors = [];
136
+ for (const entry of file.runners) {
137
+ try {
138
+ runners.push(buildPairedRunnerConfig(entry, hub));
139
+ }
140
+ catch (error) {
141
+ if (!(error instanceof PairedRunnerSetupError))
142
+ throw error;
143
+ errors.push(`paired runner "${entry.name}": ${error.message}`);
144
+ }
145
+ }
146
+ return { runners, errors };
147
+ }
148
+ /**
149
+ * @description The paired runners of the user whose home is `homeDir`, from `paired.json` (stamp-cached like `runners.json`: the bot MCP
150
+ * asks on every connect). Missing = none paired; invalid = its errors and the last good list of this process, if any.
151
+ */
152
+ function loadPairedRunners(homeDir) {
153
+ const context = (0, hubPaths_1.createHubContext)({ homeDir });
154
+ const hub = { hubDir: context.dir, nodePath: context.nodePath, cliPath: context.cliPath };
155
+ const load = pairedFileLoader.load((0, hubPaths_1.getHubFilePaths)(context.dir).paired);
156
+ if (load.status === 'invalid')
157
+ return { status: 'invalid', config: load.config === null ? null : buildRunners(load.config, hub), errors: load.errors };
158
+ const built = buildRunners(load.config, hub);
159
+ return built.errors.length === 0 ? { status: load.status, config: built } : { status: 'invalid', config: built, errors: built.errors };
160
+ }
161
+ /** @description Forget the cached loads (tests that swap files under one path). */
162
+ function resetPairedRunnersCache() {
163
+ pairedFileLoader.resetCache();
164
+ }
165
+ //# sourceMappingURL=pairedRunners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairedRunners.js","sourceRoot":"","sources":["../../src/remoteRun/pairedRunners.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @description The ONE definition of what a path pattern of `.remote-run` (`pull:`, `exclude:`, `send:`, `install-key:`) means, as
3
+ * extended regular expressions: the main box applies them with `RegExp` and the runner script with bash's `=~` over the very same
4
+ * strings, so the two can never disagree about which files a pattern names.
5
+ *
6
+ * A pattern is relative to the project root. `*` is any run of characters inside one path segment, `?` one character, `**` a whole
7
+ * segment of any depth (`**` + `/` before a name, `/` + `**` at the end). A pattern names a file OR a directory: a directory brings
8
+ * everything below it (`test-results` is `test-results/a/b.png` too). Nothing floats: `snapshots` is the folder at the root only,
9
+ * `**` + `/snapshots` any `snapshots` folder.
10
+ */
11
+ /** @description Why `pattern` cannot be used, or `null` when it can: not empty, relative, inside the project, no control characters. */
12
+ export declare function getPathPatternProblem(pattern: string): string | null;
13
+ /** @description The extended regular expression (anchored) a project-relative path must match to be named by `pattern`. */
14
+ export declare function compilePathPattern(pattern: string): string;
15
+ /** @description The compiled expressions of `patterns`, in order (the form the runner script receives, one per line). */
16
+ export declare function compilePathPatterns(patterns: readonly string[]): string[];
17
+ /** The root every path of the project lies under. */
18
+ export declare const projectSearchRoot = ".";
19
+ /**
20
+ * @description The folder a walk must start from to find every path `pattern` names: its leading segments that hold no `*`, `?` or `**`
21
+ * (`e2e/artifacts` → itself, `test-results/**` + `/*.xml` → `test-results`, `**` + `/*.png` → `.`). A fully literal pattern is its own root: a file or
22
+ * a folder, either is found from there.
23
+ */
24
+ export declare function getPathPatternSearchRoot(pattern: string): string;
25
+ /**
26
+ * @description The folders to walk to find what any of `patterns` names, without the ones another root already covers; just `.` as soon
27
+ * as one pattern starts with a wildcard (that one needs the whole tree). The runner walks these instead of the whole copy, which holds
28
+ * `node_modules` and every build folder.
29
+ */
30
+ export declare function getPathPatternSearchRoots(patterns: readonly string[]): string[];
31
+ /** @description A predicate over project-relative paths: does any of `patterns` name it? No pattern names nothing. */
32
+ export declare function createPathMatcher(patterns: readonly string[]): (relativePath: string) => boolean;
33
+ //# sourceMappingURL=pathPatterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathPatterns.d.ts","sourceRoot":"","sources":["../../src/remoteRun/pathPatterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,wIAAwI;AACxI,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQpE;AAED,2HAA2H;AAC3H,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsB1D;AAED,yHAAyH;AACzH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAEzE;AAED,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI/E;AAED,sHAAsH;AACtH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAGhG"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ /**
3
+ * @description The ONE definition of what a path pattern of `.remote-run` (`pull:`, `exclude:`, `send:`, `install-key:`) means, as
4
+ * extended regular expressions: the main box applies them with `RegExp` and the runner script with bash's `=~` over the very same
5
+ * strings, so the two can never disagree about which files a pattern names.
6
+ *
7
+ * A pattern is relative to the project root. `*` is any run of characters inside one path segment, `?` one character, `**` a whole
8
+ * segment of any depth (`**` + `/` before a name, `/` + `**` at the end). A pattern names a file OR a directory: a directory brings
9
+ * everything below it (`test-results` is `test-results/a/b.png` too). Nothing floats: `snapshots` is the folder at the root only,
10
+ * `**` + `/snapshots` any `snapshots` folder.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.projectSearchRoot = void 0;
14
+ exports.getPathPatternProblem = getPathPatternProblem;
15
+ exports.compilePathPattern = compilePathPattern;
16
+ exports.compilePathPatterns = compilePathPatterns;
17
+ exports.getPathPatternSearchRoot = getPathPatternSearchRoot;
18
+ exports.getPathPatternSearchRoots = getPathPatternSearchRoots;
19
+ exports.createPathMatcher = createPathMatcher;
20
+ const regexSpecialCharacters = /[.[\]{}()*+?|^$\\]/g;
21
+ const anyDepthPrefix = '(.*/)?';
22
+ const anyDepthSuffix = '.*';
23
+ const singleSegmentRun = '[^/]*';
24
+ const singleCharacter = '[^/]';
25
+ /** Control characters (a newline would split the pattern file the runner reads one pattern per line). */
26
+ const controlCharacters = /[\x00-\x1f\x7f]/;
27
+ function escapeLiteral(text) {
28
+ return text.replace(regexSpecialCharacters, '\\$&');
29
+ }
30
+ /** The parts of a pattern between slashes, without `./` prefixes, trailing slashes or empty parts; consecutive `**` parts are one (they mean the same, and nested any-depth groups backtrack badly). */
31
+ function splitPatternSegments(pattern) {
32
+ const segments = pattern.replace(/^(\.\/)+/, '').replace(/\/+$/, '').split('/').filter((segment) => segment !== '' && segment !== '.');
33
+ return segments.filter((segment, index) => !(segment === '**' && segments[index - 1] === '**'));
34
+ }
35
+ /** @description Why `pattern` cannot be used, or `null` when it can: not empty, relative, inside the project, no control characters. */
36
+ function getPathPatternProblem(pattern) {
37
+ if (pattern.trim() === '')
38
+ return 'is empty';
39
+ if (controlCharacters.test(pattern))
40
+ return 'holds a control character';
41
+ if (pattern.startsWith('/'))
42
+ return 'must be relative to the project root, not absolute';
43
+ if (pattern.startsWith('~'))
44
+ return 'must be relative to the project root, not start with ~';
45
+ if (pattern.split('/').includes('..'))
46
+ return 'must stay inside the project (no ".." part)';
47
+ if (splitPatternSegments(pattern).length === 0)
48
+ return 'names no path (name a file or a folder of the project)';
49
+ return null;
50
+ }
51
+ /** @description The extended regular expression (anchored) a project-relative path must match to be named by `pattern`. */
52
+ function compilePathPattern(pattern) {
53
+ const problem = getPathPatternProblem(pattern);
54
+ if (problem !== null)
55
+ throw new Error(`a path pattern ${problem}`);
56
+ const segments = splitPatternSegments(pattern);
57
+ let source = '';
58
+ segments.forEach((segment, index) => {
59
+ const isLast = index === segments.length - 1;
60
+ if (segment === '**') {
61
+ source += isLast ? anyDepthSuffix : anyDepthPrefix;
62
+ return;
63
+ }
64
+ let escaped = '';
65
+ for (const character of segment) {
66
+ if (character === '*')
67
+ escaped += singleSegmentRun;
68
+ else if (character === '?')
69
+ escaped += singleCharacter;
70
+ else
71
+ escaped += escapeLiteral(character);
72
+ }
73
+ source += isLast ? escaped : `${escaped}/`;
74
+ });
75
+ // A trailing `**` already ends in `.*` after a slash; a trailing name may be a directory with files below it.
76
+ const needsDirectoryTail = segments[segments.length - 1] !== '**';
77
+ return `^${source}${needsDirectoryTail ? '(/.*)?' : ''}$`;
78
+ }
79
+ /** @description The compiled expressions of `patterns`, in order (the form the runner script receives, one per line). */
80
+ function compilePathPatterns(patterns) {
81
+ return patterns.map(compilePathPattern);
82
+ }
83
+ /** The root every path of the project lies under. */
84
+ exports.projectSearchRoot = '.';
85
+ /**
86
+ * @description The folder a walk must start from to find every path `pattern` names: its leading segments that hold no `*`, `?` or `**`
87
+ * (`e2e/artifacts` → itself, `test-results/**` + `/*.xml` → `test-results`, `**` + `/*.png` → `.`). A fully literal pattern is its own root: a file or
88
+ * a folder, either is found from there.
89
+ */
90
+ function getPathPatternSearchRoot(pattern) {
91
+ const fixedSegments = [];
92
+ for (const segment of splitPatternSegments(pattern)) {
93
+ if (segment.includes('*') || segment.includes('?'))
94
+ break;
95
+ fixedSegments.push(segment);
96
+ }
97
+ return fixedSegments.length === 0 ? exports.projectSearchRoot : fixedSegments.join('/');
98
+ }
99
+ /**
100
+ * @description The folders to walk to find what any of `patterns` names, without the ones another root already covers; just `.` as soon
101
+ * as one pattern starts with a wildcard (that one needs the whole tree). The runner walks these instead of the whole copy, which holds
102
+ * `node_modules` and every build folder.
103
+ */
104
+ function getPathPatternSearchRoots(patterns) {
105
+ const roots = [...new Set(patterns.map(getPathPatternSearchRoot))];
106
+ if (roots.includes(exports.projectSearchRoot))
107
+ return [exports.projectSearchRoot];
108
+ return roots.filter((root) => !roots.some((other) => other !== root && root.startsWith(`${other}/`)));
109
+ }
110
+ /** @description A predicate over project-relative paths: does any of `patterns` name it? No pattern names nothing. */
111
+ function createPathMatcher(patterns) {
112
+ const expressions = compilePathPatterns(patterns).map((source) => new RegExp(source));
113
+ return (relativePath) => expressions.some((expression) => expression.test(relativePath));
114
+ }
115
+ //# sourceMappingURL=pathPatterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathPatterns.js","sourceRoot":"","sources":["../../src/remoteRun/pathPatterns.ts"],"names":[],"mappings":"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"}