@apralabs/apra-fleet 0.2.2

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 (482) hide show
  1. package/LICENSE +182 -0
  2. package/README.md +324 -0
  3. package/dist/cli/auth.d.ts +2 -0
  4. package/dist/cli/auth.d.ts.map +1 -0
  5. package/dist/cli/auth.js +210 -0
  6. package/dist/cli/auth.js.map +1 -0
  7. package/dist/cli/config.d.ts +30 -0
  8. package/dist/cli/config.d.ts.map +1 -0
  9. package/dist/cli/config.js +157 -0
  10. package/dist/cli/config.js.map +1 -0
  11. package/dist/cli/install.d.ts +37 -0
  12. package/dist/cli/install.d.ts.map +1 -0
  13. package/dist/cli/install.js +630 -0
  14. package/dist/cli/install.js.map +1 -0
  15. package/dist/cli/secret.d.ts +2 -0
  16. package/dist/cli/secret.d.ts.map +1 -0
  17. package/dist/cli/secret.js +366 -0
  18. package/dist/cli/secret.js.map +1 -0
  19. package/dist/cli/uninstall.d.ts +2 -0
  20. package/dist/cli/uninstall.d.ts.map +1 -0
  21. package/dist/cli/uninstall.js +312 -0
  22. package/dist/cli/uninstall.js.map +1 -0
  23. package/dist/cli/update.d.ts +2 -0
  24. package/dist/cli/update.d.ts.map +1 -0
  25. package/dist/cli/update.js +105 -0
  26. package/dist/cli/update.js.map +1 -0
  27. package/dist/delivery-mode.d.ts +19 -0
  28. package/dist/delivery-mode.d.ts.map +1 -0
  29. package/dist/delivery-mode.js +26 -0
  30. package/dist/delivery-mode.js.map +1 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +272 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/onboarding/text.d.ts +83 -0
  36. package/dist/onboarding/text.d.ts.map +1 -0
  37. package/dist/onboarding/text.js +126 -0
  38. package/dist/onboarding/text.js.map +1 -0
  39. package/dist/os/index.d.ts +9 -0
  40. package/dist/os/index.d.ts.map +1 -0
  41. package/dist/os/index.js +16 -0
  42. package/dist/os/index.js.map +1 -0
  43. package/dist/os/linux.d.ts +50 -0
  44. package/dist/os/linux.d.ts.map +1 -0
  45. package/dist/os/linux.js +244 -0
  46. package/dist/os/linux.js.map +1 -0
  47. package/dist/os/macos.d.ts +12 -0
  48. package/dist/os/macos.d.ts.map +1 -0
  49. package/dist/os/macos.js +41 -0
  50. package/dist/os/macos.js.map +1 -0
  51. package/dist/os/os-commands.d.ts +47 -0
  52. package/dist/os/os-commands.d.ts.map +1 -0
  53. package/dist/os/os-commands.js +3 -0
  54. package/dist/os/os-commands.js.map +1 -0
  55. package/dist/os/windows-wrapper.d.ts +6 -0
  56. package/dist/os/windows-wrapper.d.ts.map +1 -0
  57. package/dist/os/windows-wrapper.js +9 -0
  58. package/dist/os/windows-wrapper.js.map +1 -0
  59. package/dist/os/windows.d.ts +44 -0
  60. package/dist/os/windows.d.ts.map +1 -0
  61. package/dist/os/windows.js +269 -0
  62. package/dist/os/windows.js.map +1 -0
  63. package/dist/paths.d.ts +2 -0
  64. package/dist/paths.d.ts.map +1 -0
  65. package/dist/paths.js +4 -0
  66. package/dist/paths.js.map +1 -0
  67. package/dist/providers/agy.d.ts +41 -0
  68. package/dist/providers/agy.d.ts.map +1 -0
  69. package/dist/providers/agy.js +208 -0
  70. package/dist/providers/agy.js.map +1 -0
  71. package/dist/providers/claude.d.ts +40 -0
  72. package/dist/providers/claude.d.ts.map +1 -0
  73. package/dist/providers/claude.js +178 -0
  74. package/dist/providers/claude.js.map +1 -0
  75. package/dist/providers/codex.d.ts +44 -0
  76. package/dist/providers/codex.d.ts.map +1 -0
  77. package/dist/providers/codex.js +173 -0
  78. package/dist/providers/codex.js.map +1 -0
  79. package/dist/providers/copilot.d.ts +40 -0
  80. package/dist/providers/copilot.d.ts.map +1 -0
  81. package/dist/providers/copilot.js +172 -0
  82. package/dist/providers/copilot.js.map +1 -0
  83. package/dist/providers/gemini.d.ts +41 -0
  84. package/dist/providers/gemini.d.ts.map +1 -0
  85. package/dist/providers/gemini.js +192 -0
  86. package/dist/providers/gemini.js.map +1 -0
  87. package/dist/providers/index.d.ts +10 -0
  88. package/dist/providers/index.d.ts.map +1 -0
  89. package/dist/providers/index.js +27 -0
  90. package/dist/providers/index.js.map +1 -0
  91. package/dist/providers/provider.d.ts +85 -0
  92. package/dist/providers/provider.d.ts.map +1 -0
  93. package/dist/providers/provider.js +21 -0
  94. package/dist/providers/provider.js.map +1 -0
  95. package/dist/services/auth-socket.d.ts +87 -0
  96. package/dist/services/auth-socket.d.ts.map +1 -0
  97. package/dist/services/auth-socket.js +684 -0
  98. package/dist/services/auth-socket.js.map +1 -0
  99. package/dist/services/auth-web.d.ts +31 -0
  100. package/dist/services/auth-web.d.ts.map +1 -0
  101. package/dist/services/auth-web.js +202 -0
  102. package/dist/services/auth-web.js.map +1 -0
  103. package/dist/services/cloud/activity.d.ts +16 -0
  104. package/dist/services/cloud/activity.d.ts.map +1 -0
  105. package/dist/services/cloud/activity.js +61 -0
  106. package/dist/services/cloud/activity.js.map +1 -0
  107. package/dist/services/cloud/aws.d.ts +24 -0
  108. package/dist/services/cloud/aws.d.ts.map +1 -0
  109. package/dist/services/cloud/aws.js +114 -0
  110. package/dist/services/cloud/aws.js.map +1 -0
  111. package/dist/services/cloud/cost.d.ts +46 -0
  112. package/dist/services/cloud/cost.d.ts.map +1 -0
  113. package/dist/services/cloud/cost.js +161 -0
  114. package/dist/services/cloud/cost.js.map +1 -0
  115. package/dist/services/cloud/idle-manager.d.ts +20 -0
  116. package/dist/services/cloud/idle-manager.d.ts.map +1 -0
  117. package/dist/services/cloud/idle-manager.js +103 -0
  118. package/dist/services/cloud/idle-manager.js.map +1 -0
  119. package/dist/services/cloud/lifecycle.d.ts +14 -0
  120. package/dist/services/cloud/lifecycle.d.ts.map +1 -0
  121. package/dist/services/cloud/lifecycle.js +128 -0
  122. package/dist/services/cloud/lifecycle.js.map +1 -0
  123. package/dist/services/cloud/task-wrapper.d.ts +30 -0
  124. package/dist/services/cloud/task-wrapper.d.ts.map +1 -0
  125. package/dist/services/cloud/task-wrapper.js +116 -0
  126. package/dist/services/cloud/task-wrapper.js.map +1 -0
  127. package/dist/services/cloud/types.d.ts +26 -0
  128. package/dist/services/cloud/types.d.ts.map +1 -0
  129. package/dist/services/cloud/types.js +2 -0
  130. package/dist/services/cloud/types.js.map +1 -0
  131. package/dist/services/credential-cleanup.d.ts +4 -0
  132. package/dist/services/credential-cleanup.d.ts.map +1 -0
  133. package/dist/services/credential-cleanup.js +61 -0
  134. package/dist/services/credential-cleanup.js.map +1 -0
  135. package/dist/services/credential-store.d.ts +56 -0
  136. package/dist/services/credential-store.d.ts.map +1 -0
  137. package/dist/services/credential-store.js +280 -0
  138. package/dist/services/credential-store.js.map +1 -0
  139. package/dist/services/file-transfer.d.ts +22 -0
  140. package/dist/services/file-transfer.d.ts.map +1 -0
  141. package/dist/services/file-transfer.js +14 -0
  142. package/dist/services/file-transfer.js.map +1 -0
  143. package/dist/services/git-config.d.ts +6 -0
  144. package/dist/services/git-config.d.ts.map +1 -0
  145. package/dist/services/git-config.js +31 -0
  146. package/dist/services/git-config.js.map +1 -0
  147. package/dist/services/github-app.d.ts +30 -0
  148. package/dist/services/github-app.d.ts.map +1 -0
  149. package/dist/services/github-app.js +96 -0
  150. package/dist/services/github-app.js.map +1 -0
  151. package/dist/services/icons.d.ts +16 -0
  152. package/dist/services/icons.d.ts.map +1 -0
  153. package/dist/services/icons.js +67 -0
  154. package/dist/services/icons.js.map +1 -0
  155. package/dist/services/known-hosts.d.ts +23 -0
  156. package/dist/services/known-hosts.d.ts.map +1 -0
  157. package/dist/services/known-hosts.js +86 -0
  158. package/dist/services/known-hosts.js.map +1 -0
  159. package/dist/services/onboarding.d.ts +68 -0
  160. package/dist/services/onboarding.d.ts.map +1 -0
  161. package/dist/services/onboarding.js +205 -0
  162. package/dist/services/onboarding.js.map +1 -0
  163. package/dist/services/registry.d.ts +16 -0
  164. package/dist/services/registry.d.ts.map +1 -0
  165. package/dist/services/registry.js +156 -0
  166. package/dist/services/registry.js.map +1 -0
  167. package/dist/services/sftp.d.ts +16 -0
  168. package/dist/services/sftp.d.ts.map +1 -0
  169. package/dist/services/sftp.js +104 -0
  170. package/dist/services/sftp.js.map +1 -0
  171. package/dist/services/ssh.d.ts +29 -0
  172. package/dist/services/ssh.d.ts.map +1 -0
  173. package/dist/services/ssh.js +297 -0
  174. package/dist/services/ssh.js.map +1 -0
  175. package/dist/services/stall/find-log-file.d.ts +2 -0
  176. package/dist/services/stall/find-log-file.d.ts.map +1 -0
  177. package/dist/services/stall/find-log-file.js +153 -0
  178. package/dist/services/stall/find-log-file.js.map +1 -0
  179. package/dist/services/stall/index.d.ts +4 -0
  180. package/dist/services/stall/index.d.ts.map +1 -0
  181. package/dist/services/stall/index.js +4 -0
  182. package/dist/services/stall/index.js.map +1 -0
  183. package/dist/services/stall/log-path-resolver.d.ts +4 -0
  184. package/dist/services/stall/log-path-resolver.d.ts.map +1 -0
  185. package/dist/services/stall/log-path-resolver.js +32 -0
  186. package/dist/services/stall/log-path-resolver.js.map +1 -0
  187. package/dist/services/stall/log-path-resolver.test.d.ts +2 -0
  188. package/dist/services/stall/log-path-resolver.test.d.ts.map +1 -0
  189. package/dist/services/stall/log-path-resolver.test.js +76 -0
  190. package/dist/services/stall/log-path-resolver.test.js.map +1 -0
  191. package/dist/services/stall/read-log-tail.d.ts +6 -0
  192. package/dist/services/stall/read-log-tail.d.ts.map +1 -0
  193. package/dist/services/stall/read-log-tail.js +44 -0
  194. package/dist/services/stall/read-log-tail.js.map +1 -0
  195. package/dist/services/stall/stall-detector.d.ts +25 -0
  196. package/dist/services/stall/stall-detector.d.ts.map +1 -0
  197. package/dist/services/stall/stall-detector.js +153 -0
  198. package/dist/services/stall/stall-detector.js.map +1 -0
  199. package/dist/services/stall/stall-poller.d.ts +6 -0
  200. package/dist/services/stall/stall-poller.d.ts.map +1 -0
  201. package/dist/services/stall/stall-poller.js +75 -0
  202. package/dist/services/stall/stall-poller.js.map +1 -0
  203. package/dist/services/stall/time-utils.d.ts +4 -0
  204. package/dist/services/stall/time-utils.d.ts.map +1 -0
  205. package/dist/services/stall/time-utils.js +22 -0
  206. package/dist/services/stall/time-utils.js.map +1 -0
  207. package/dist/services/statusline.d.ts +10 -0
  208. package/dist/services/statusline.d.ts.map +1 -0
  209. package/dist/services/statusline.js +84 -0
  210. package/dist/services/statusline.js.map +1 -0
  211. package/dist/services/strategy.d.ts +16 -0
  212. package/dist/services/strategy.d.ts.map +1 -0
  213. package/dist/services/strategy.js +241 -0
  214. package/dist/services/strategy.js.map +1 -0
  215. package/dist/services/task-cleanup.d.ts +3 -0
  216. package/dist/services/task-cleanup.d.ts.map +1 -0
  217. package/dist/services/task-cleanup.js +81 -0
  218. package/dist/services/task-cleanup.js.map +1 -0
  219. package/dist/services/update-check.d.ts +15 -0
  220. package/dist/services/update-check.d.ts.map +1 -0
  221. package/dist/services/update-check.js +67 -0
  222. package/dist/services/update-check.js.map +1 -0
  223. package/dist/services/user-config.d.ts +12 -0
  224. package/dist/services/user-config.d.ts.map +1 -0
  225. package/dist/services/user-config.js +73 -0
  226. package/dist/services/user-config.js.map +1 -0
  227. package/dist/services/vcs/azure-devops.d.ts +7 -0
  228. package/dist/services/vcs/azure-devops.d.ts.map +1 -0
  229. package/dist/services/vcs/azure-devops.js +38 -0
  230. package/dist/services/vcs/azure-devops.js.map +1 -0
  231. package/dist/services/vcs/bitbucket.d.ts +6 -0
  232. package/dist/services/vcs/bitbucket.d.ts.map +1 -0
  233. package/dist/services/vcs/bitbucket.js +31 -0
  234. package/dist/services/vcs/bitbucket.js.map +1 -0
  235. package/dist/services/vcs/constants.d.ts +2 -0
  236. package/dist/services/vcs/constants.d.ts.map +1 -0
  237. package/dist/services/vcs/constants.js +6 -0
  238. package/dist/services/vcs/constants.js.map +1 -0
  239. package/dist/services/vcs/github.d.ts +6 -0
  240. package/dist/services/vcs/github.d.ts.map +1 -0
  241. package/dist/services/vcs/github.js +81 -0
  242. package/dist/services/vcs/github.js.map +1 -0
  243. package/dist/services/vcs/types.d.ts +52 -0
  244. package/dist/services/vcs/types.d.ts.map +1 -0
  245. package/dist/services/vcs/types.js +8 -0
  246. package/dist/services/vcs/types.js.map +1 -0
  247. package/dist/smoke-test.d.ts +10 -0
  248. package/dist/smoke-test.d.ts.map +1 -0
  249. package/dist/smoke-test.js +102 -0
  250. package/dist/smoke-test.js.map +1 -0
  251. package/dist/tools/check-status.d.ts +11 -0
  252. package/dist/tools/check-status.d.ts.map +1 -0
  253. package/dist/tools/check-status.js +247 -0
  254. package/dist/tools/check-status.js.map +1 -0
  255. package/dist/tools/cloud-control.d.ts +17 -0
  256. package/dist/tools/cloud-control.d.ts.map +1 -0
  257. package/dist/tools/cloud-control.js +102 -0
  258. package/dist/tools/cloud-control.js.map +1 -0
  259. package/dist/tools/compose-permissions.d.ts +26 -0
  260. package/dist/tools/compose-permissions.d.ts.map +1 -0
  261. package/dist/tools/compose-permissions.js +217 -0
  262. package/dist/tools/compose-permissions.js.map +1 -0
  263. package/dist/tools/credential-store-delete.d.ts +11 -0
  264. package/dist/tools/credential-store-delete.d.ts.map +1 -0
  265. package/dist/tools/credential-store-delete.js +15 -0
  266. package/dist/tools/credential-store-delete.js.map +1 -0
  267. package/dist/tools/credential-store-list.d.ts +4 -0
  268. package/dist/tools/credential-store-list.d.ts.map +1 -0
  269. package/dist/tools/credential-store-list.js +30 -0
  270. package/dist/tools/credential-store-list.js.map +1 -0
  271. package/dist/tools/credential-store-set.d.ts +26 -0
  272. package/dist/tools/credential-store-set.d.ts.map +1 -0
  273. package/dist/tools/credential-store-set.js +28 -0
  274. package/dist/tools/credential-store-set.js.map +1 -0
  275. package/dist/tools/credential-store-update.d.ts +20 -0
  276. package/dist/tools/credential-store-update.d.ts.map +1 -0
  277. package/dist/tools/credential-store-update.js +38 -0
  278. package/dist/tools/credential-store-update.js.map +1 -0
  279. package/dist/tools/execute-command.d.ts +33 -0
  280. package/dist/tools/execute-command.d.ts.map +1 -0
  281. package/dist/tools/execute-command.js +231 -0
  282. package/dist/tools/execute-command.js.map +1 -0
  283. package/dist/tools/execute-prompt.d.ts +36 -0
  284. package/dist/tools/execute-prompt.d.ts.map +1 -0
  285. package/dist/tools/execute-prompt.js +310 -0
  286. package/dist/tools/execute-prompt.js.map +1 -0
  287. package/dist/tools/list-members.d.ts +11 -0
  288. package/dist/tools/list-members.d.ts.map +1 -0
  289. package/dist/tools/list-members.js +108 -0
  290. package/dist/tools/list-members.js.map +1 -0
  291. package/dist/tools/member-detail.d.ts +17 -0
  292. package/dist/tools/member-detail.d.ts.map +1 -0
  293. package/dist/tools/member-detail.js +263 -0
  294. package/dist/tools/member-detail.js.map +1 -0
  295. package/dist/tools/monitor-task.d.ts +20 -0
  296. package/dist/tools/monitor-task.d.ts.map +1 -0
  297. package/dist/tools/monitor-task.js +89 -0
  298. package/dist/tools/monitor-task.js.map +1 -0
  299. package/dist/tools/provision-auth.d.ts +17 -0
  300. package/dist/tools/provision-auth.d.ts.map +1 -0
  301. package/dist/tools/provision-auth.js +256 -0
  302. package/dist/tools/provision-auth.js.map +1 -0
  303. package/dist/tools/provision-vcs-auth.d.ts +50 -0
  304. package/dist/tools/provision-vcs-auth.d.ts.map +1 -0
  305. package/dist/tools/provision-vcs-auth.js +187 -0
  306. package/dist/tools/provision-vcs-auth.js.map +1 -0
  307. package/dist/tools/receive-files.d.ts +20 -0
  308. package/dist/tools/receive-files.d.ts.map +1 -0
  309. package/dist/tools/receive-files.js +82 -0
  310. package/dist/tools/receive-files.js.map +1 -0
  311. package/dist/tools/register-member.d.ts +74 -0
  312. package/dist/tools/register-member.d.ts.map +1 -0
  313. package/dist/tools/register-member.js +310 -0
  314. package/dist/tools/register-member.js.map +1 -0
  315. package/dist/tools/remove-member.d.ts +17 -0
  316. package/dist/tools/remove-member.d.ts.map +1 -0
  317. package/dist/tools/remove-member.js +126 -0
  318. package/dist/tools/remove-member.js.map +1 -0
  319. package/dist/tools/revoke-vcs-auth.d.ts +23 -0
  320. package/dist/tools/revoke-vcs-auth.d.ts.map +1 -0
  321. package/dist/tools/revoke-vcs-auth.js +55 -0
  322. package/dist/tools/revoke-vcs-auth.js.map +1 -0
  323. package/dist/tools/send-files.d.ts +20 -0
  324. package/dist/tools/send-files.d.ts.map +1 -0
  325. package/dist/tools/send-files.js +103 -0
  326. package/dist/tools/send-files.js.map +1 -0
  327. package/dist/tools/setup-git-app.d.ts +17 -0
  328. package/dist/tools/setup-git-app.d.ts.map +1 -0
  329. package/dist/tools/setup-git-app.js +89 -0
  330. package/dist/tools/setup-git-app.js.map +1 -0
  331. package/dist/tools/setup-ssh-key.d.ts +14 -0
  332. package/dist/tools/setup-ssh-key.d.ts.map +1 -0
  333. package/dist/tools/setup-ssh-key.js +119 -0
  334. package/dist/tools/setup-ssh-key.js.map +1 -0
  335. package/dist/tools/shutdown-server.d.ts +4 -0
  336. package/dist/tools/shutdown-server.d.ts.map +1 -0
  337. package/dist/tools/shutdown-server.js +9 -0
  338. package/dist/tools/shutdown-server.js.map +1 -0
  339. package/dist/tools/stop-prompt.d.ts +14 -0
  340. package/dist/tools/stop-prompt.d.ts.map +1 -0
  341. package/dist/tools/stop-prompt.js +44 -0
  342. package/dist/tools/stop-prompt.js.map +1 -0
  343. package/dist/tools/update-agent-cli.d.ts +17 -0
  344. package/dist/tools/update-agent-cli.d.ts.map +1 -0
  345. package/dist/tools/update-agent-cli.js +110 -0
  346. package/dist/tools/update-agent-cli.js.map +1 -0
  347. package/dist/tools/update-member.d.ts +77 -0
  348. package/dist/tools/update-member.d.ts.map +1 -0
  349. package/dist/tools/update-member.js +202 -0
  350. package/dist/tools/update-member.js.map +1 -0
  351. package/dist/tools/version.d.ts +4 -0
  352. package/dist/tools/version.d.ts.map +1 -0
  353. package/dist/tools/version.js +7 -0
  354. package/dist/tools/version.js.map +1 -0
  355. package/dist/types.d.ts +70 -0
  356. package/dist/types.d.ts.map +1 -0
  357. package/dist/types.js +2 -0
  358. package/dist/types.js.map +1 -0
  359. package/dist/utils/agent-helpers.d.ts +41 -0
  360. package/dist/utils/agent-helpers.d.ts.map +1 -0
  361. package/dist/utils/agent-helpers.js +84 -0
  362. package/dist/utils/agent-helpers.js.map +1 -0
  363. package/dist/utils/ansi.d.ts +6 -0
  364. package/dist/utils/ansi.d.ts.map +1 -0
  365. package/dist/utils/ansi.js +20 -0
  366. package/dist/utils/ansi.js.map +1 -0
  367. package/dist/utils/auth-env.d.ts +8 -0
  368. package/dist/utils/auth-env.d.ts.map +1 -0
  369. package/dist/utils/auth-env.js +30 -0
  370. package/dist/utils/auth-env.js.map +1 -0
  371. package/dist/utils/collect-secret.d.ts +2 -0
  372. package/dist/utils/collect-secret.d.ts.map +1 -0
  373. package/dist/utils/collect-secret.js +80 -0
  374. package/dist/utils/collect-secret.js.map +1 -0
  375. package/dist/utils/credential-validation.d.ts +13 -0
  376. package/dist/utils/credential-validation.d.ts.map +1 -0
  377. package/dist/utils/credential-validation.js +35 -0
  378. package/dist/utils/credential-validation.js.map +1 -0
  379. package/dist/utils/crypto.d.ts +3 -0
  380. package/dist/utils/crypto.d.ts.map +1 -0
  381. package/dist/utils/crypto.js +61 -0
  382. package/dist/utils/crypto.js.map +1 -0
  383. package/dist/utils/deep-merge.d.ts +3 -0
  384. package/dist/utils/deep-merge.d.ts.map +1 -0
  385. package/dist/utils/deep-merge.js +23 -0
  386. package/dist/utils/deep-merge.js.map +1 -0
  387. package/dist/utils/file-permissions.d.ts +8 -0
  388. package/dist/utils/file-permissions.d.ts.map +1 -0
  389. package/dist/utils/file-permissions.js +13 -0
  390. package/dist/utils/file-permissions.js.map +1 -0
  391. package/dist/utils/gpu-parser.d.ts +6 -0
  392. package/dist/utils/gpu-parser.d.ts.map +1 -0
  393. package/dist/utils/gpu-parser.js +15 -0
  394. package/dist/utils/gpu-parser.js.map +1 -0
  395. package/dist/utils/log-helpers.d.ts +29 -0
  396. package/dist/utils/log-helpers.d.ts.map +1 -0
  397. package/dist/utils/log-helpers.js +128 -0
  398. package/dist/utils/log-helpers.js.map +1 -0
  399. package/dist/utils/oob-timeout.d.ts +2 -0
  400. package/dist/utils/oob-timeout.d.ts.map +1 -0
  401. package/dist/utils/oob-timeout.js +2 -0
  402. package/dist/utils/oob-timeout.js.map +1 -0
  403. package/dist/utils/pid-helpers.d.ts +11 -0
  404. package/dist/utils/pid-helpers.d.ts.map +1 -0
  405. package/dist/utils/pid-helpers.js +21 -0
  406. package/dist/utils/pid-helpers.js.map +1 -0
  407. package/dist/utils/platform.d.ts +13 -0
  408. package/dist/utils/platform.d.ts.map +1 -0
  409. package/dist/utils/platform.js +60 -0
  410. package/dist/utils/platform.js.map +1 -0
  411. package/dist/utils/prompt-errors.d.ts +5 -0
  412. package/dist/utils/prompt-errors.d.ts.map +1 -0
  413. package/dist/utils/prompt-errors.js +15 -0
  414. package/dist/utils/prompt-errors.js.map +1 -0
  415. package/dist/utils/resolve-member.d.ts +18 -0
  416. package/dist/utils/resolve-member.d.ts.map +1 -0
  417. package/dist/utils/resolve-member.js +23 -0
  418. package/dist/utils/resolve-member.js.map +1 -0
  419. package/dist/utils/secure-input.d.ts +6 -0
  420. package/dist/utils/secure-input.d.ts.map +1 -0
  421. package/dist/utils/secure-input.js +60 -0
  422. package/dist/utils/secure-input.js.map +1 -0
  423. package/dist/utils/shell-escape.d.ts +43 -0
  424. package/dist/utils/shell-escape.d.ts.map +1 -0
  425. package/dist/utils/shell-escape.js +67 -0
  426. package/dist/utils/shell-escape.js.map +1 -0
  427. package/dist/utils/ssh-error-messages.d.ts +5 -0
  428. package/dist/utils/ssh-error-messages.d.ts.map +1 -0
  429. package/dist/utils/ssh-error-messages.js +20 -0
  430. package/dist/utils/ssh-error-messages.js.map +1 -0
  431. package/dist/version.d.ts +18 -0
  432. package/dist/version.d.ts.map +1 -0
  433. package/dist/version.js +101 -0
  434. package/dist/version.js.map +1 -0
  435. package/hooks/hooks-config.json +15 -0
  436. package/hooks/post-register-member.sh +10 -0
  437. package/package.json +82 -0
  438. package/scripts/agy-settings-merge.js +27 -0
  439. package/scripts/agy-transcript-reader.js +62 -0
  440. package/scripts/fleet-statusline.sh +43 -0
  441. package/skills/fleet/SKILL.md +262 -0
  442. package/skills/fleet/auth-azdevops.md +72 -0
  443. package/skills/fleet/auth-bitbucket.md +65 -0
  444. package/skills/fleet/auth-github.md +86 -0
  445. package/skills/fleet/beads.md +90 -0
  446. package/skills/fleet/onboarding.md +92 -0
  447. package/skills/fleet/permissions.md +23 -0
  448. package/skills/fleet/profiles/base-dev.json +18 -0
  449. package/skills/fleet/profiles/base-reviewer.json +14 -0
  450. package/skills/fleet/profiles/cpp.json +4 -0
  451. package/skills/fleet/profiles/dotnet.json +4 -0
  452. package/skills/fleet/profiles/go.json +4 -0
  453. package/skills/fleet/profiles/jvm.json +4 -0
  454. package/skills/fleet/profiles/node.json +4 -0
  455. package/skills/fleet/profiles/python.json +4 -0
  456. package/skills/fleet/profiles/rust.json +4 -0
  457. package/skills/fleet/profiles/tpl-permissions.json +5 -0
  458. package/skills/fleet/skill-matrix.md +34 -0
  459. package/skills/fleet/troubleshooting.md +13 -0
  460. package/skills/pm/SKILL.md +110 -0
  461. package/skills/pm/backlog-item.md +65 -0
  462. package/skills/pm/beads.md +192 -0
  463. package/skills/pm/cleanup.md +15 -0
  464. package/skills/pm/context-file.md +40 -0
  465. package/skills/pm/doer-reviewer.md +123 -0
  466. package/skills/pm/init.md +25 -0
  467. package/skills/pm/multi-pair-sprint.md +64 -0
  468. package/skills/pm/plan-prompt.md +94 -0
  469. package/skills/pm/simple-sprint.md +42 -0
  470. package/skills/pm/single-pair-sprint.md +178 -0
  471. package/skills/pm/tpl-deploy.md +24 -0
  472. package/skills/pm/tpl-design.md +29 -0
  473. package/skills/pm/tpl-doer.md +43 -0
  474. package/skills/pm/tpl-plan.md +72 -0
  475. package/skills/pm/tpl-pm.md +2 -0
  476. package/skills/pm/tpl-progress.json +28 -0
  477. package/skills/pm/tpl-projects.md +4 -0
  478. package/skills/pm/tpl-requirements.md +21 -0
  479. package/skills/pm/tpl-reviewer-plan.md +53 -0
  480. package/skills/pm/tpl-reviewer.md +72 -0
  481. package/skills/pm/tpl-status.md +29 -0
  482. package/version.json +3 -0
@@ -0,0 +1,50 @@
1
+ import type { OsCommands, ProviderAdapter, PromptOptions } from './os-commands.js';
2
+ /**
3
+ * Wrap a bash command string with PID capture.
4
+ * Backgrounds the command in a subshell, emits FLEET_PID:<pid> to stdout
5
+ * immediately (before the inner command produces any output), then waits
6
+ * for the subshell and propagates its exit code.
7
+ */
8
+ export declare function pidWrapUnix(cmd: string): string;
9
+ export declare class LinuxCommands implements OsCommands {
10
+ private cachedEnv;
11
+ protected loginShell(): string;
12
+ private getCleanEnv;
13
+ cpuLoad(): string;
14
+ memory(): string;
15
+ disk(folder: string): string;
16
+ fleetProcessCheck(folder: string, sessionId?: string, processName?: string): string;
17
+ agentCommand(provider: ProviderAdapter, args: string): string;
18
+ agentVersion(provider: ProviderAdapter): string;
19
+ installAgent(provider: ProviderAdapter): string;
20
+ updateAgent(provider: ProviderAdapter): string;
21
+ buildAgentPromptCommand(provider: ProviderAdapter, opts: PromptOptions): string;
22
+ mkdir(folder: string): string;
23
+ readTextFile(destPath: string): string;
24
+ writeTextFile(destPath: string, content: string): string;
25
+ readRemoteJson(destPath: string): string;
26
+ deepMergeJson(destPath: string, newObj: Record<string, unknown>): string;
27
+ credentialFileCheck(destPath: string): string;
28
+ credentialFileWrite(content: string, destPath: string): string;
29
+ credentialFileRemove(destPath: string): string;
30
+ apiKeyCheck(envVarName?: string): string;
31
+ setEnv(name: string, value: string): string[];
32
+ unsetEnv(name: string): string[];
33
+ envPrefix(name: string, value: string): string;
34
+ gitCredentialHelperWrite(host: string, username: string, token: string, label?: string, scopeUrl?: string): string;
35
+ gitCredentialHelperRemove(host: string, label?: string, scopeUrl?: string): string;
36
+ deploySSHPublicKey(publicKeyLine: string): string[];
37
+ cleanExec(command: string): {
38
+ command: string;
39
+ env?: Record<string, string>;
40
+ shell?: string;
41
+ };
42
+ wrapInWorkFolder(folder: string, command: string): string;
43
+ gitCurrentBranch(folder: string): string;
44
+ killPid(pid: number): string;
45
+ gpuProcessCheck(): string;
46
+ gpuUtilization(): string;
47
+ parseMemory(stdout: string): string;
48
+ parseDisk(stdout: string): string;
49
+ }
50
+ //# sourceMappingURL=linux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linux.d.ts","sourceRoot":"","sources":["../../src/os/linux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { escapeDoubleQuoted, escapeGrepPattern, sanitizeSessionId } from './os-commands.js';
3
+ import { escapeShellArg } from '../utils/shell-escape.js';
4
+ const CLI_PATH = 'export PATH="$HOME/.local/bin:$PATH" && unset ANTIGRAVITY_SOURCE_METADATA GEMINI_SOURCE_METADATA CLAUDE_SOURCE_METADATA COPILOT_SOURCE_METADATA CODEX_SOURCE_METADATA && ';
5
+ /**
6
+ * Wrap a bash command string with PID capture.
7
+ * Backgrounds the command in a subshell, emits FLEET_PID:<pid> to stdout
8
+ * immediately (before the inner command produces any output), then waits
9
+ * for the subshell and propagates its exit code.
10
+ */
11
+ export function pidWrapUnix(cmd) {
12
+ return `{ ${cmd}; } & _fleet_pid=$!; printf 'FLEET_PID:%s\\n' "$_fleet_pid"; wait "$_fleet_pid"; exit $?`;
13
+ }
14
+ /** Replace leading ~ with $HOME so paths expand correctly inside double-quoted shell strings. */
15
+ function expandHome(p) {
16
+ return p.startsWith('~/') ? `$HOME/${p.slice(2)}` : p === '~' ? '$HOME' : p;
17
+ }
18
+ /**
19
+ * Escape a path for safe use inside a double-quoted shell string.
20
+ * Preserves $HOME at the start (it must expand on the remote shell),
21
+ * and escapes special characters in the rest of the path.
22
+ */
23
+ function shellPath(p) {
24
+ if (p.startsWith('$HOME/') || p === '$HOME') {
25
+ return '$HOME' + escapeDoubleQuoted(p.slice('$HOME'.length));
26
+ }
27
+ return escapeDoubleQuoted(p);
28
+ }
29
+ export class LinuxCommands {
30
+ cachedEnv = null;
31
+ loginShell() { return 'bash'; }
32
+ getCleanEnv() {
33
+ if (this.cachedEnv)
34
+ return this.cachedEnv;
35
+ // Rebuild a pristine env from system defaults + login profiles.
36
+ // env -i strips everything; bash -l sources /etc/profile and ~/.profile
37
+ // which reconstruct PATH etc. We seed HOME, USER, LOGNAME, SHELL so
38
+ // profile scripts (like the ~/.local/bin guard) work correctly.
39
+ const seed = ['HOME', 'USER', 'LOGNAME', 'SHELL']
40
+ .filter(k => process.env[k])
41
+ .map(k => `${k}=${escapeShellArg(process.env[k])}`)
42
+ .join(' ');
43
+ const script = `env -i ${seed} ${this.loginShell()} -l -c 'env -0'`;
44
+ const raw = execSync(script, { encoding: 'utf-8' });
45
+ const env = {};
46
+ for (const entry of raw.split('\0')) {
47
+ const idx = entry.indexOf('=');
48
+ if (idx > 0)
49
+ env[entry.slice(0, idx)] = entry.slice(idx + 1);
50
+ }
51
+ this.cachedEnv = env;
52
+ return env;
53
+ }
54
+ // --- Resources ---
55
+ cpuLoad() {
56
+ return 'uptime';
57
+ }
58
+ memory() {
59
+ return 'free -m';
60
+ }
61
+ disk(folder) {
62
+ return `df -h "${escapeDoubleQuoted(folder)}"`;
63
+ }
64
+ // --- Process check ---
65
+ fleetProcessCheck(folder, sessionId, processName) {
66
+ const pname = processName ?? 'claude';
67
+ // Use bracket trick to avoid pgrep matching its own grep process
68
+ const bracketName = `[${pname[0]}]${pname.slice(1)}`;
69
+ const folderPattern = escapeGrepPattern(folder);
70
+ const fleetMatch = sessionId
71
+ ? `grep -E "(${folderPattern}|${escapeGrepPattern(sanitizeSessionId(sessionId))})"`
72
+ : `grep "${folderPattern}"`;
73
+ return `AGENT_PIDS=$(pgrep -f "${bracketName}" 2>/dev/null); `
74
+ + `if [ -z "$AGENT_PIDS" ]; then echo "idle"; `
75
+ + `else CMDLINES=$(ps -o args= -p $AGENT_PIDS 2>/dev/null); `
76
+ + `if echo "$CMDLINES" | ${fleetMatch} > /dev/null 2>&1; then echo "fleet-busy"; `
77
+ + `else echo "other-busy"; fi; fi`;
78
+ }
79
+ // --- Generic agent CLI ---
80
+ agentCommand(provider, args) {
81
+ return `${CLI_PATH}${provider.cliCommand(args)}`;
82
+ }
83
+ agentVersion(provider) {
84
+ return `${CLI_PATH}${provider.versionCommand()}`;
85
+ }
86
+ installAgent(provider) {
87
+ return provider.installCommand('linux');
88
+ }
89
+ updateAgent(provider) {
90
+ return `${CLI_PATH}${provider.updateCommand()}`;
91
+ }
92
+ buildAgentPromptCommand(provider, opts) {
93
+ const { folder } = opts;
94
+ const escapedFolder = escapeDoubleQuoted(folder);
95
+ const providerCmd = provider.buildPromptCommand(opts);
96
+ // Provider command starts with `cd "folder" && <cli> ...`
97
+ // Inject PATH prepend after the cd so the binary is findable
98
+ const cdPrefix = `cd "${escapedFolder}" && `;
99
+ let innerCmd;
100
+ if (providerCmd.startsWith(cdPrefix)) {
101
+ innerCmd = `${cdPrefix}${CLI_PATH}${providerCmd.slice(cdPrefix.length)}`;
102
+ }
103
+ else {
104
+ innerCmd = `${CLI_PATH}${providerCmd}`;
105
+ }
106
+ return pidWrapUnix(innerCmd);
107
+ }
108
+ // --- Filesystem ---
109
+ mkdir(folder) {
110
+ return `mkdir -p "${escapeDoubleQuoted(folder)}"`;
111
+ }
112
+ readTextFile(destPath) {
113
+ return `cat "${escapeDoubleQuoted(destPath)}"`;
114
+ }
115
+ writeTextFile(destPath, content) {
116
+ return `mkdir -p "$(dirname "${escapeDoubleQuoted(destPath)}")" && printf '%s' "${escapeDoubleQuoted(content)}" > "${escapeDoubleQuoted(destPath)}"`;
117
+ }
118
+ readRemoteJson(destPath) {
119
+ const p = expandHome(destPath);
120
+ return `[ -f "${shellPath(p)}" ] && cat "${shellPath(p)}" || echo '{}'`;
121
+ }
122
+ deepMergeJson(destPath, newObj) {
123
+ const p = expandHome(destPath);
124
+ const sp = shellPath(p);
125
+ const newJson = JSON.stringify(newObj).replace(/'/g, "'\\''");
126
+ const script = `const fs=require("fs");const path=process.argv[1];const newObj=JSON.parse(fs.readFileSync(0,"utf8"));let currentData={};try{currentData=JSON.parse(fs.readFileSync(path,"utf8"))}catch(e){}const deepMerge=(target,source)=>{for(const key in source){if(source[key]&&typeof source[key]==="object"&&!Array.isArray(source[key])){target[key]=deepMerge(target[key]||{},source[key])}else{target[key]=source[key]}}return target};const merged=deepMerge(currentData,newObj);fs.writeFileSync(path,JSON.stringify(merged,null,2));`;
127
+ return `mkdir -p "$(dirname "${sp}")" && printf '%s' '${newJson}' | node -e '${script}' "${sp}"`;
128
+ }
129
+ // --- Auth ---
130
+ credentialFileCheck(destPath) {
131
+ const p = expandHome(destPath);
132
+ return `test -f "${shellPath(p)}" && echo found || echo missing`;
133
+ }
134
+ credentialFileWrite(content, destPath) {
135
+ const p = expandHome(destPath);
136
+ const escaped = escapeDoubleQuoted(content);
137
+ return `mkdir -p "$(dirname "${shellPath(p)}")" && printf '%s' "${escaped}" > "${shellPath(p)}" && chmod 600 "${shellPath(p)}"`;
138
+ }
139
+ credentialFileRemove(destPath) {
140
+ return `rm -f "${shellPath(expandHome(destPath))}"`;
141
+ }
142
+ apiKeyCheck(envVarName) {
143
+ const varName = envVarName ?? 'ANTHROPIC_API_KEY';
144
+ if (!/^[A-Z_][A-Z0-9_]*$/i.test(varName))
145
+ throw new Error('Invalid env var name: ' + varName);
146
+ return `bash -l -c 'echo "\${${varName}:0:10}"'`;
147
+ }
148
+ setEnv(name, value) {
149
+ if (!/^[A-Z_][A-Z0-9_]*$/i.test(name))
150
+ throw new Error('Invalid env var name: ' + name);
151
+ const escaped = escapeDoubleQuoted(value);
152
+ return [
153
+ `echo 'export ${name}="${escaped}"' >> ~/.bashrc`,
154
+ `echo 'export ${name}="${escaped}"' >> ~/.profile`,
155
+ `export ${name}="${escaped}"`,
156
+ ];
157
+ }
158
+ unsetEnv(name) {
159
+ if (!/^[A-Z_][A-Z0-9_]*$/i.test(name))
160
+ throw new Error('Invalid env var name: ' + name);
161
+ return [
162
+ `sed -i '/export ${name}=/d' ~/.bashrc 2>/dev/null || true`,
163
+ `sed -i '/export ${name}=/d' ~/.profile 2>/dev/null || true`,
164
+ `unset ${name}`,
165
+ ];
166
+ }
167
+ envPrefix(name, value) {
168
+ return `${name}="${escapeDoubleQuoted(value)}"`;
169
+ }
170
+ // --- Git credential helper ---
171
+ gitCredentialHelperWrite(host, username, token, label, scopeUrl) {
172
+ const escapedHost = escapeDoubleQuoted(host);
173
+ const escapedUser = escapeDoubleQuoted(username);
174
+ const escapedToken = escapeDoubleQuoted(token);
175
+ const credFile = label ? `~/.fleet-git-credential-${escapeDoubleQuoted(label)}` : '~/.fleet-git-credential';
176
+ // scope_url is passed through escapeDoubleQuoted and embedded inside a double-quoted git config arg — safe against injection.
177
+ const credUrl = scopeUrl ? escapeDoubleQuoted(scopeUrl) : `https://${escapedHost}`;
178
+ return `printf '#!/bin/sh\\necho "protocol=https"\\necho "host=${escapedHost}"\\necho "username=${escapedUser}"\\necho "password=${escapedToken}"\\n' > "${credFile}" && chmod 600 "${credFile}" && chmod +x "${credFile}" && git config --global --replace-all "credential.${credUrl}.helper" "" && git config --global --add "credential.${credUrl}.helper" "${credFile}"`;
179
+ }
180
+ gitCredentialHelperRemove(host, label, scopeUrl) {
181
+ const escapedHost = escapeDoubleQuoted(host);
182
+ const credFile = label ? `~/.fleet-git-credential-${escapeDoubleQuoted(label)}` : '~/.fleet-git-credential';
183
+ // scope_url is passed through escapeDoubleQuoted and embedded inside a double-quoted git config arg — safe against injection.
184
+ const credUrl = scopeUrl ? escapeDoubleQuoted(scopeUrl) : `https://${escapedHost}`;
185
+ return `rm -f "${credFile}" && git config --global --unset-all "credential.${credUrl}.helper" 2>/dev/null || true`;
186
+ }
187
+ // --- SSH key deployment ---
188
+ deploySSHPublicKey(publicKeyLine) {
189
+ const escaped = escapeShellArg(publicKeyLine);
190
+ return [
191
+ 'mkdir -p ~/.ssh',
192
+ 'chmod 700 ~/.ssh',
193
+ 'touch ~/.ssh/authorized_keys',
194
+ 'chmod 600 ~/.ssh/authorized_keys',
195
+ `echo ${escaped} >> ~/.ssh/authorized_keys`,
196
+ ];
197
+ }
198
+ // --- Local exec ---
199
+ cleanExec(command) {
200
+ return { command, env: this.getCleanEnv() };
201
+ }
202
+ // --- Shell ---
203
+ wrapInWorkFolder(folder, command) {
204
+ return `cd "${escapeDoubleQuoted(folder)}" && ${command}`;
205
+ }
206
+ // --- Git ---
207
+ gitCurrentBranch(folder) {
208
+ return `git -C "${escapeDoubleQuoted(folder)}" branch --show-current 2>/dev/null || true`;
209
+ }
210
+ // --- Process management ---
211
+ killPid(pid) {
212
+ return `kill -9 ${pid}`;
213
+ }
214
+ // --- GPU activity ---
215
+ gpuProcessCheck() {
216
+ // Exits 2 if nvidia-smi not installed. If installed: outputs "busy" when GPU
217
+ // compute processes are running, "idle" otherwise.
218
+ return 'which nvidia-smi >/dev/null 2>&1 || exit 2; '
219
+ + 'COUNT=$(nvidia-smi --query-compute-apps=pid --format=csv,noheader 2>/dev/null | wc -l | tr -d " "); '
220
+ + '[ "${COUNT:-0}" -gt 0 ] && echo "busy" || echo "idle"';
221
+ }
222
+ gpuUtilization() {
223
+ // Outputs GPU utilization % (0-100), or empty string if nvidia-smi not available.
224
+ return 'nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits 2>/dev/null | head -1 | tr -d " "';
225
+ }
226
+ // --- Resource output parsing ---
227
+ parseMemory(stdout) {
228
+ const lines = stdout.trim().split('\n');
229
+ const memLine = lines.find(l => l.startsWith('Mem:'));
230
+ if (memLine) {
231
+ const parts = memLine.split(/\s+/);
232
+ return `${parts[2]} MB / ${parts[1]} MB`;
233
+ }
234
+ return stdout.trim();
235
+ }
236
+ parseDisk(stdout) {
237
+ const lines = stdout.trim().split('\n');
238
+ if (lines.length >= 2) {
239
+ return lines[1].trim();
240
+ }
241
+ return stdout.trim();
242
+ }
243
+ }
244
+ //# sourceMappingURL=linux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/os/linux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { LinuxCommands } from './linux.js';
2
+ import type { ProviderAdapter } from './os-commands.js';
3
+ export declare class MacOSCommands extends LinuxCommands {
4
+ protected loginShell(): string;
5
+ installAgent(provider: ProviderAdapter): string;
6
+ cpuLoad(): string;
7
+ memory(): string;
8
+ setEnv(name: string, value: string): string[];
9
+ unsetEnv(name: string): string[];
10
+ parseMemory(stdout: string): string;
11
+ }
12
+ //# sourceMappingURL=macos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos.d.ts","sourceRoot":"","sources":["../../src/os/macos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,qBAAa,aAAc,SAAQ,aAAa;cAC3B,UAAU,IAAI,MAAM;IAE9B,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAI/C,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAY7C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAWhC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAG7C"}
@@ -0,0 +1,41 @@
1
+ import { LinuxCommands } from './linux.js';
2
+ import { escapeDoubleQuoted } from './os-commands.js';
3
+ export class MacOSCommands extends LinuxCommands {
4
+ loginShell() { return 'zsh'; }
5
+ installAgent(provider) {
6
+ return provider.installCommand('macos');
7
+ }
8
+ cpuLoad() {
9
+ return 'sysctl -n vm.loadavg';
10
+ }
11
+ memory() {
12
+ return 'vm_stat && echo "---" && sysctl -n hw.memsize';
13
+ }
14
+ setEnv(name, value) {
15
+ if (!/^[A-Z_][A-Z0-9_]*$/i.test(name))
16
+ throw new Error('Invalid env var name: ' + name);
17
+ const escaped = escapeDoubleQuoted(value);
18
+ return [
19
+ `echo 'export ${name}="${escaped}"' >> ~/.bashrc`,
20
+ `echo 'export ${name}="${escaped}"' >> ~/.zshrc`,
21
+ `echo 'export ${name}="${escaped}"' >> ~/.zshenv`,
22
+ `echo 'export ${name}="${escaped}"' >> ~/.profile`,
23
+ `export ${name}="${escaped}"`,
24
+ ];
25
+ }
26
+ unsetEnv(name) {
27
+ if (!/^[A-Z_][A-Z0-9_]*$/i.test(name))
28
+ throw new Error('Invalid env var name: ' + name);
29
+ return [
30
+ `sed -i '' '/export ${name}=/d' ~/.bashrc 2>/dev/null || true`,
31
+ `sed -i '' '/export ${name}=/d' ~/.zshrc 2>/dev/null || true`,
32
+ `sed -i '' '/export ${name}=/d' ~/.zshenv 2>/dev/null || true`,
33
+ `sed -i '' '/export ${name}=/d' ~/.profile 2>/dev/null || true`,
34
+ `unset ${name}`,
35
+ ];
36
+ }
37
+ parseMemory(stdout) {
38
+ return stdout.trim().substring(0, 200);
39
+ }
40
+ }
41
+ //# sourceMappingURL=macos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos.js","sourceRoot":"","sources":["../../src/os/macos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC3B,UAAU,KAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAEhD,YAAY,CAAC,QAAyB;QAC7C,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEQ,OAAO;QACd,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAEQ,MAAM;QACb,OAAO,+CAA+C,CAAC;IACzD,CAAC;IAEQ,MAAM,CAAC,IAAY,EAAE,KAAa;QACzC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO;YACL,gBAAgB,IAAI,KAAK,OAAO,iBAAiB;YACjD,gBAAgB,IAAI,KAAK,OAAO,gBAAgB;YAChD,gBAAgB,IAAI,KAAK,OAAO,iBAAiB;YACjD,gBAAgB,IAAI,KAAK,OAAO,kBAAkB;YAClD,UAAU,IAAI,KAAK,OAAO,GAAG;SAC9B,CAAC;IACJ,CAAC;IAEQ,QAAQ,CAAC,IAAY;QAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;QACxF,OAAO;YACL,sBAAsB,IAAI,oCAAoC;YAC9D,sBAAsB,IAAI,mCAAmC;YAC7D,sBAAsB,IAAI,oCAAoC;YAC9D,sBAAsB,IAAI,qCAAqC;YAC/D,SAAS,IAAI,EAAE;SAChB,CAAC;IACJ,CAAC;IAEQ,WAAW,CAAC,MAAc;QACjC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,47 @@
1
+ import { escapeDoubleQuoted, escapeWindowsArg, escapeGrepPattern, sanitizeSessionId } from '../utils/shell-escape.js';
2
+ import type { ProviderAdapter, PromptOptions } from '../providers/provider.js';
3
+ export { escapeDoubleQuoted, escapeWindowsArg, escapeGrepPattern, sanitizeSessionId };
4
+ export type { ProviderAdapter, PromptOptions };
5
+ /**
6
+ * Platform-specific command builders.
7
+ * Each OS implements this interface — no switch/if on OS outside this module.
8
+ */
9
+ export interface OsCommands {
10
+ cpuLoad(): string;
11
+ memory(): string;
12
+ disk(folder: string): string;
13
+ fleetProcessCheck(folder: string, sessionId?: string, processName?: string): string;
14
+ agentCommand(provider: ProviderAdapter, args: string): string;
15
+ agentVersion(provider: ProviderAdapter): string;
16
+ installAgent(provider: ProviderAdapter): string;
17
+ updateAgent(provider: ProviderAdapter): string;
18
+ mkdir(folder: string): string;
19
+ readTextFile(destPath: string): string;
20
+ writeTextFile(destPath: string, content: string): string;
21
+ readRemoteJson(destPath: string): string;
22
+ deepMergeJson(destPath: string, newObj: Record<string, unknown>): string;
23
+ credentialFileCheck(destPath: string): string;
24
+ credentialFileWrite(content: string, destPath: string): string;
25
+ credentialFileRemove(destPath: string): string;
26
+ apiKeyCheck(envVarName?: string): string;
27
+ setEnv(name: string, value: string): string[];
28
+ unsetEnv(name: string): string[];
29
+ envPrefix(name: string, value: string): string;
30
+ gitCredentialHelperWrite(host: string, username: string, token: string, label?: string, scopeUrl?: string): string;
31
+ gitCredentialHelperRemove(host: string, label?: string, scopeUrl?: string): string;
32
+ deploySSHPublicKey(publicKeyLine: string): string[];
33
+ cleanExec(command: string): {
34
+ command: string;
35
+ env?: Record<string, string>;
36
+ shell?: string;
37
+ };
38
+ wrapInWorkFolder(folder: string, command: string): string;
39
+ buildAgentPromptCommand(provider: ProviderAdapter, opts: PromptOptions): string;
40
+ killPid(pid: number): string;
41
+ gitCurrentBranch(folder: string): string;
42
+ gpuProcessCheck(): string;
43
+ gpuUtilization(): string;
44
+ parseMemory(stdout: string): string;
45
+ parseDisk(stdout: string): string;
46
+ }
47
+ //# sourceMappingURL=os-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os-commands.d.ts","sourceRoot":"","sources":["../../src/os/os-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACtH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,UAAU;IAEzB,OAAO,IAAI,MAAM,CAAC;IAClB,MAAM,IAAI,MAAM,CAAC;IACjB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAG7B,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGpF,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9D,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC;IAChD,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC;IAChD,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC;IAG/C,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAGzE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9C,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAG/C,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnH,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGnF,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAGpD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAG9F,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAG1D,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;IAGhF,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAG7B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAGzC,eAAe,IAAI,MAAM,CAAC;IAC1B,cAAc,IAAI,MAAM,CAAC;IAGzB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ import { escapeDoubleQuoted, escapeWindowsArg, escapeGrepPattern, sanitizeSessionId } from '../utils/shell-escape.js';
2
+ export { escapeDoubleQuoted, escapeWindowsArg, escapeGrepPattern, sanitizeSessionId };
3
+ //# sourceMappingURL=os-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os-commands.js","sourceRoot":"","sources":["../../src/os/os-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Standard Windows command wrapper using .NET ProcessStartInfo to capture child PID.
3
+ * Native binaries (like claude.exe) work best with this low-level wrapper.
4
+ */
5
+ export declare function defaultWindowsPidWrapper(setupCmd: string, filePath: string, argList: string): string;
6
+ //# sourceMappingURL=windows-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-wrapper.d.ts","sourceRoot":"","sources":["../../src/os/windows-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Standard Windows command wrapper using .NET ProcessStartInfo to capture child PID.
3
+ * Native binaries (like claude.exe) work best with this low-level wrapper.
4
+ */
5
+ export function defaultWindowsPidWrapper(setupCmd, filePath, argList) {
6
+ const escapedArgs = argList.replace(/'/g, "''");
7
+ return `${setupCmd}$_f_exe = if ("${filePath}" -notlike "*.*") { "${filePath}.exe" } else { "${filePath}" }; $_fleet_psi = [System.Diagnostics.ProcessStartInfo]::new($_f_exe, '${escapedArgs}'); $_fleet_psi.UseShellExecute = $false; $_fleet_psi.CreateNoWindow = $true; $_fleet_proc = [System.Diagnostics.Process]::Start($_fleet_psi); Write-Output "FLEET_PID:$($_fleet_proc.Id)"; [Console]::Out.Flush(); $_fleet_proc.WaitForExit(); exit $_fleet_proc.ExitCode`;
8
+ }
9
+ //# sourceMappingURL=windows-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-wrapper.js","sourceRoot":"","sources":["../../src/os/windows-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAe;IAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,OAAO,GAAG,QAAQ,kBAAkB,QAAQ,wBAAwB,QAAQ,mBAAmB,QAAQ,2EAA2E,WAAW,4QAA4Q,CAAC;AAC5c,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { defaultWindowsPidWrapper } from './windows-wrapper.js';
2
+ export { defaultWindowsPidWrapper as pidWrapWindows };
3
+ import type { OsCommands, ProviderAdapter, PromptOptions } from './os-commands.js';
4
+ export declare class WindowsCommands implements OsCommands {
5
+ private cachedEnv;
6
+ private getCleanEnv;
7
+ cpuLoad(): string;
8
+ memory(): string;
9
+ disk(folder: string): string;
10
+ fleetProcessCheck(folder: string, sessionId?: string, processName?: string): string;
11
+ agentCommand(provider: ProviderAdapter, args: string): string;
12
+ agentVersion(provider: ProviderAdapter): string;
13
+ installAgent(provider: ProviderAdapter): string;
14
+ updateAgent(provider: ProviderAdapter): string;
15
+ buildAgentPromptCommand(provider: ProviderAdapter, opts: PromptOptions): string;
16
+ mkdir(folder: string): string;
17
+ readTextFile(destPath: string): string;
18
+ writeTextFile(destPath: string, content: string): string;
19
+ readRemoteJson(destPath: string): string;
20
+ deepMergeJson(destPath: string, newObj: Record<string, unknown>): string;
21
+ credentialFileCheck(destPath: string): string;
22
+ credentialFileWrite(content: string, destPath: string): string;
23
+ credentialFileRemove(destPath: string): string;
24
+ apiKeyCheck(envVarName?: string): string;
25
+ setEnv(name: string, value: string): string[];
26
+ unsetEnv(name: string): string[];
27
+ envPrefix(name: string, value: string): string;
28
+ gitCredentialHelperWrite(host: string, username: string, token: string, label?: string, scopeUrl?: string): string;
29
+ gitCredentialHelperRemove(host: string, label?: string, scopeUrl?: string): string;
30
+ deploySSHPublicKey(publicKeyLine: string): string[];
31
+ cleanExec(command: string): {
32
+ command: string;
33
+ env?: Record<string, string>;
34
+ shell?: string;
35
+ };
36
+ wrapInWorkFolder(folder: string, command: string): string;
37
+ gitCurrentBranch(folder: string): string;
38
+ killPid(pid: number): string;
39
+ gpuProcessCheck(): string;
40
+ gpuUtilization(): string;
41
+ parseMemory(stdout: string): string;
42
+ parseDisk(stdout: string): string;
43
+ }
44
+ //# sourceMappingURL=windows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows.d.ts","sourceRoot":"","sources":["../../src/os/windows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,wBAAwB,IAAI,cAAc,EAAE,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAmBnF,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,SAAS,CAAuC;IAExD,OAAO,CAAC,WAAW;IA6BnB,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAIhB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAO5B,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAcnF,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7D,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAI/C,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAI/C,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAI9C,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM;IAsC/E,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAItC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAMxD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAKxC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAqCxE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI7C,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM9D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAMxC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAM7C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAKhC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAO9C,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBlH,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAUlF,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAgBnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAM7F,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAMzD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAMxC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAM5B,eAAe,IAAI,MAAM;IAKzB,cAAc,IAAI,MAAM;IAMxB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGlC"}