@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,72 @@
1
+ # Azure DevOps Authentication
2
+
3
+ Personal Access Tokens (PATs) with configurable scopes and expiration. Auth: empty username, PAT as password.
4
+
5
+ ## Setup
6
+
7
+ 1. Go to `https://dev.azure.com/{org}/_settings/tokens`
8
+ 2. Click "New Token"
9
+ 3. Set descriptive name (e.g., "fleet-{name}")
10
+ 4. Select required scopes (see below)
11
+ 5. Set expiration (recommend: 90 days)
12
+ 6. Copy token — shown only once
13
+ 7. Provide token and org URL when prompted
14
+
15
+ ## Deploy
16
+
17
+ ```
18
+ provision_vcs_auth(member_id, provider: 'azure-devops', org_url: 'https://dev.azure.com/myorg', pat: '...')
19
+ ```
20
+
21
+ ## Scopes
22
+
23
+ | Role | PAT Scopes |
24
+ |------|-----------|
25
+ | development | Code: R&W, Pull Request Threads: R&W |
26
+ | code-review | Code: Read, Pull Request Threads: R&W |
27
+ | testing | Code: Read, Build: Read |
28
+ | devops | Full access, or Code + Build + Release: R&W |
29
+ | debugging | Code: Read |
30
+
31
+ Union of all roles assigned to the member.
32
+
33
+ ## Test
34
+
35
+ ```bash
36
+ curl -sf -u :pat "https://dev.azure.com/{org}/_apis/projects?api-version=7.1&\$top=1"
37
+ git ls-remote https://dev.azure.com/{org}/{project}/_git/{repo} HEAD
38
+ ```
39
+
40
+ ## Troubleshooting
41
+
42
+ | Symptom | Fix |
43
+ |---------|-----|
44
+ | 401 Unauthorized | Create new PAT and re-deploy |
45
+ | 403 Forbidden | Create PAT with broader scopes |
46
+ | TF400813: Resource not available | Verify org URL matches `https://dev.azure.com/{org}` |
47
+ | Clone prompts for password | Re-run `provision_vcs_auth` |
48
+
49
+ ## Storing tokens for reuse
50
+
51
+ After provisioning VCS auth, you can store the Azure DevOps PAT in the credential store for direct use in `execute_command` — for example, calling the Azure DevOps REST API or authenticating git operations manually.
52
+
53
+ **Store an Azure DevOps PAT for reuse:**
54
+
55
+ ```
56
+ credential_store_set name=azdevops_pat
57
+ ```
58
+
59
+ **Use it in a command on a member:**
60
+
61
+ ```
62
+ execute_command command="curl -sf -u :{{secure.azdevops_pat}} 'https://dev.azure.com/{org}/_apis/projects?api-version=7.1'"
63
+ execute_command command="git remote set-url origin https://token:{{secure.azdevops_pat}}@dev.azure.com/{org}/{project}/_git/{repo}"
64
+ ```
65
+
66
+ The token is resolved server-side and redacted in output (`[REDACTED:azdevops_pat]`) — it never appears in the LLM conversation or command logs.
67
+
68
+ ## Notes
69
+
70
+ - PAT expiration: default 30 days, max 1 year
71
+ - Azure DevOps does not support app-based tokens — PATs are the standard
72
+ - Org URL must be base URL without trailing path
@@ -0,0 +1,65 @@
1
+ # Bitbucket Authentication
2
+
3
+ API tokens (app passwords) tied to a user account. Long-lived, no auto-expire.
4
+
5
+ ## Setup
6
+
7
+ 1. Go to `https://id.atlassian.com/manage-profile/security/api-tokens`
8
+ (or Bitbucket: Settings > Personal Bitbucket settings > App passwords)
9
+ 2. Create app password with required scopes (see below)
10
+ 3. Copy token — shown only once
11
+ 4. Provide token, email, and workspace slug when prompted
12
+
13
+ ## Deploy
14
+
15
+ ```
16
+ provision_vcs_auth(member_id, provider: 'bitbucket', email: '...', api_token: 'ATBB_...', workspace: '...')
17
+ ```
18
+
19
+ ## Scopes
20
+
21
+ | Role | Scopes |
22
+ |------|--------|
23
+ | development | `repository:write`, `pullrequest:write` |
24
+ | code-review | `repository:read`, `pullrequest:read` |
25
+ | testing | `repository:read`, `pipeline:read` |
26
+ | devops | `repository:admin`, `pipeline:write`, `pullrequest:write` |
27
+ | debugging | `repository:read` |
28
+
29
+ Union of all roles assigned to the member.
30
+
31
+ ## Test
32
+
33
+ ```bash
34
+ curl -sf -u email:token https://api.bitbucket.org/2.0/user
35
+ curl -sf -u email:token https://api.bitbucket.org/2.0/repositories/{workspace}?pagelen=1
36
+ git ls-remote https://bitbucket.org/{workspace}/{repo}.git HEAD
37
+ ```
38
+
39
+ ## Storing tokens for reuse
40
+
41
+ After provisioning VCS auth, you can store the Bitbucket API token in the credential store for direct use in `execute_command` — for example, calling the Bitbucket REST API or authenticating git operations manually.
42
+
43
+ **Store a Bitbucket token for reuse:**
44
+
45
+ ```
46
+ credential_store_set name=bitbucket_token
47
+ ```
48
+
49
+ **Use it in a command on a member:**
50
+
51
+ ```
52
+ execute_command command="curl -sf -u me@example.com:{{secure.bitbucket_token}} https://api.bitbucket.org/2.0/user"
53
+ execute_command command="git remote set-url origin https://me@example.com:{{secure.bitbucket_token}}@bitbucket.org/workspace/repo.git"
54
+ ```
55
+
56
+ The token is resolved server-side and redacted in output (`[REDACTED:bitbucket_token]`) — it never appears in the LLM conversation or command logs.
57
+
58
+ ## Troubleshooting
59
+
60
+ | Symptom | Fix |
61
+ |---------|-----|
62
+ | 401 Unauthorized | Verify email matches Atlassian account; regenerate token |
63
+ | 403 Forbidden | Create new app password with additional scopes |
64
+ | Repository not found | Check workspace slug in Bitbucket URL |
65
+ | Clone prompts for password | Re-run `provision_vcs_auth` |
@@ -0,0 +1,86 @@
1
+ # GitHub Authentication
2
+
3
+ Two modes via `provision_vcs_auth`:
4
+
5
+ ## GitHub App (Recommended)
6
+
7
+ Short-lived tokens, minted automatically. Requires one-time `setup_git_app`.
8
+
9
+ When to use: Org repos where you have admin access to install a GitHub App.
10
+
11
+ Setup:
12
+ 1. Create GitHub App at `https://github.com/organizations/{org}/settings/apps`
13
+ 2. Grant permissions (Contents, Pull Requests, Actions, etc.)
14
+ 3. Install on your organization
15
+ 4. Download private key (.pem file)
16
+ 5. Run `setup_git_app` with App ID, private key path, installation ID
17
+
18
+ Deploy:
19
+ ```
20
+ provision_vcs_auth(member_id, provider: 'github')
21
+ provision_vcs_auth(member_id, provider: 'github', git_access: 'push', repos: ['Org/Repo'])
22
+ ```
23
+
24
+ Tokens expire after 1 hour. Re-mint via `provision_vcs_auth` when needed.
25
+
26
+ ## Personal Access Token (PAT)
27
+
28
+ Long-lived token from the user.
29
+
30
+ When to use: Personal repos, or when GitHub App install isn't possible.
31
+
32
+ Setup:
33
+ 1. Go to `https://github.com/settings/tokens`
34
+ 2. Create fine-grained or classic token with required scopes
35
+ 3. Provide token when prompted
36
+
37
+ Deploy:
38
+ ```
39
+ provision_vcs_auth(member_id, provider: 'github', github_mode: 'pat', token: 'ghp_...')
40
+ ```
41
+
42
+ ## Scopes
43
+
44
+ | Role | Scopes |
45
+ |------|--------|
46
+ | development | `repo` |
47
+ | code-review | `repo:read` |
48
+ | testing | `repo:read`, `actions:read` |
49
+ | devops | `repo`, `actions:write` |
50
+ | debugging | `repo:read` |
51
+
52
+ ## Test
53
+
54
+ ```bash
55
+ gh auth status
56
+ git ls-remote https://github.com/{owner}/{repo}.git HEAD
57
+ gh api /user
58
+ ```
59
+
60
+ ## Storing tokens for reuse
61
+
62
+ After provisioning VCS auth, you can also store the token in the credential store so members can use it directly in `execute_command` calls — for example, when calling the GitHub REST API or authenticating git operations that bypass the configured remote URL.
63
+
64
+ **Store a GitHub PAT for reuse:**
65
+
66
+ ```
67
+ credential_store_set name=github_pat
68
+ ```
69
+
70
+ **Use it in a command on a member:**
71
+
72
+ ```
73
+ execute_command command="curl -H 'Authorization: Bearer {{secure.github_pat}}' https://api.github.com/user"
74
+ execute_command command="git remote set-url origin https://token:{{secure.github_pat}}@github.com/Org/Repo.git"
75
+ ```
76
+
77
+ The token is resolved server-side and redacted in output (`[REDACTED:github_pat]`) — it never appears in the LLM conversation or command logs.
78
+
79
+ ## Troubleshooting
80
+
81
+ | Symptom | Fix |
82
+ |---------|-----|
83
+ | 401 Bad credentials | Re-mint via `provision_vcs_auth` |
84
+ | 403 Resource not accessible | Check App permissions or PAT scopes |
85
+ | Repository not found | Add repo to GitHub App installation |
86
+ | gh: command not found | Install via `brew install gh` or `apt install gh` |
@@ -0,0 +1,90 @@
1
+ # Beads — Persistent Task DB for Fleet Users
2
+
3
+ Beads (`bd`) is a lightweight, dependency-aware task database installed automatically by `apra-fleet install`.
4
+
5
+ **`bd` runs on the orchestrator via `Bash` — never expose `bd` commands to the user and never run `bd` via `execute_command` on a member.**
6
+
7
+ ---
8
+
9
+ ## Quick Reference
10
+
11
+ ```bash
12
+ bd init # init Beads in current dir (once per repo, idempotent)
13
+ bd ready # show all unblocked open tasks
14
+ bd create "title" -p <n> # create task (priority: 0=critical 1=high 2=med 3=low)
15
+ bd update <id> --assignee <member> # assign to a member
16
+ bd close <id> # mark complete (idempotent)
17
+ bd reopen <id> # reopen a closed task
18
+ bd note <id> "text" # append a note (e.g. PR URL, blocker reason)
19
+ bd dep add <child-id> <parent-id> # child is blocked until parent is done
20
+ bd show <id> # full task details
21
+ bd list --all --pretty # full tree: all tasks, all statuses
22
+ bd list --assignee <member> # tasks for a specific member
23
+ bd search "text" --status all --json # find existing issues by title (use for dedup)
24
+ ```
25
+
26
+ ---
27
+
28
+ ## When to Use Beads
29
+
30
+ | Scenario | What to do |
31
+ |----------|-----------|
32
+ | Tracking work across multiple fleet sessions | `bd create` a task per work item; `bd update --assignee <member> --status in_progress` on dispatch |
33
+ | Expressing dependencies between tasks | `bd dep add <blocked> <blocker>` |
34
+ | Session restart — instant orientation | `bd ready` — shows all in-flight tasks without reading files |
35
+ | Linking a PR to a task | `bd update <id> --note "PR: <url>"` |
36
+
37
+ ---
38
+
39
+ ## Task Priorities
40
+
41
+ | Priority | Meaning |
42
+ |----------|---------|
43
+ | `0` | Critical — must fix now |
44
+ | `1` | High — next up |
45
+ | `2` | Medium — current sprint |
46
+ | `3` | Low — backlog / deferred |
47
+
48
+ ---
49
+
50
+ ## Typical Fleet-User Workflow
51
+
52
+ ```bash
53
+ # Start: init Beads in the repo
54
+ bd init
55
+
56
+ # Create a top-level epic for your current effort
57
+ bd create "feat: add SFTP transport" -p 1 # → epic-id
58
+
59
+ # Break it into tasks
60
+ bd create "T1: implement connection" -p 1 --parent <epic-id> # → t1-id
61
+ bd create "T2: add retry logic" -p 2 --parent <epic-id> # → t2-id
62
+ bd dep add <t2-id> <t1-id> # T2 blocked until T1 is done
63
+
64
+ # Dispatch a member to T1
65
+ bd update <t1-id> --assignee <member> --status in_progress
66
+
67
+ # After T1 is complete
68
+ bd close <t1-id>
69
+ bd ready # confirms T2 is now unblocked
70
+
71
+ # At completion — link PR
72
+ bd close <epic-id>
73
+ bd note <epic-id> "PR: https://github.com/org/repo/pull/42"
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Session Recovery
79
+
80
+ After any interruption, `bd ready` is the first command to run:
81
+
82
+ ```bash
83
+ bd ready # shows everything in-flight across ALL epics
84
+ ```
85
+
86
+ It shows:
87
+ - What's in-progress
88
+ - What's unblocked and ready to start
89
+ - What's blocked and why
90
+
@@ -0,0 +1,92 @@
1
+ # Member Onboarding
2
+
3
+ After `register_member`, run these 8 steps before dispatching any work.
4
+
5
+ ## Step 1: Setup SSH Key Auth (remote members only)
6
+
7
+ Check `member_detail` - if member type is `remote` and `authType` is `password`, run `setup_ssh_key` to migrate to key-based authentication. Skip entirely for local members or members already on key auth.
8
+
9
+ ## Step 1.5: Verify CLI Installation
10
+
11
+ Use `member_detail` to determine `llmProvider` and `os`. Run `execute_command` with the provider's version command to confirm the agent CLI is installed:
12
+
13
+ - **Claude:** `claude --version`
14
+ - **Antigravity:** `agy --version 2>&1`
15
+ - **Codex:** `codex --version`
16
+ - **Copilot:** `copilot --version`
17
+ - **Gemini:** `gemini --version`
18
+
19
+ If the LLM CLI is not installed or the command fails, use `update_llm_cli` to install it before proceeding. Do not attempt any prompt dispatch until the CLI is confirmed.
20
+
21
+ ## Step 1.7: Provision LLM Auth
22
+
23
+ Call `provision_llm_auth`. Skip for local members - they inherit auth from the PM machine.
24
+
25
+ ## Step 2: Disable AI Attribution
26
+
27
+ **Claude only.** Write `{"attribution":{"commit":"","pr":""}}` to `.claude/settings.json` in the member's work folder via `execute_command`. Merge if file already exists.
28
+
29
+ Antigravity, Codex, Copilot, and Gemini do not support attribution config - skip this step for those providers.
30
+
31
+ ## Step 3: Detect VCS Provider
32
+
33
+ Run on the member: `git remote -v`
34
+
35
+ - `github.com` -> GitHub
36
+ - `bitbucket.org` -> Bitbucket
37
+ - `dev.azure.com` -> Azure DevOps
38
+
39
+ No remotes? Ask the user for VCS provider and repo URL.
40
+
41
+ ## Step 4: Determine Roles
42
+
43
+ Ask the user. Roles: development, code-review, testing, devops, debugging. A member can have multiple.
44
+
45
+ ## Step 5: Setup VCS Auth
46
+
47
+ Verify auth, provision if needed. See auth-{provider}.md for provider-specific steps and required scopes per role. Skip for local members - they inherit the user's native git credentials.
48
+
49
+ ## Step 6: Check/Install Required Skills
50
+
51
+ Look up the member's project + VCS + roles in skill-matrix.md. Install any missing skills.
52
+
53
+ ## Step 7: Add Fleet Ephemeral Files to .gitignore
54
+
55
+ Run `execute_command -> echo '.fleet-task.md' >> .gitignore` on the member's work folder. These are ephemeral prompt delivery files managed by the fleet server and must never be committed to the repo.
56
+
57
+ ## Step 8: Update Member Status File
58
+
59
+ Add to the member's status file:
60
+
61
+ ```
62
+ ## Member Profile
63
+ - LLM Provider: Claude (or agy, gemini, etc.)
64
+ - VCS: Bitbucket (kumaakh/apra-lic-mgr)
65
+ - Roles: development, code-review
66
+ - Auth: Bitbucket API token (verified)
67
+ - Skills: bitbucket-devops (installed)
68
+ ```
69
+
70
+ ## Pre-loading credentials before dispatch
71
+
72
+ If the task you are about to dispatch requires an API key, token, or password (e.g., calling an external API, pushing to a private registry, authenticating to a third-party service), store it in the credential store **before** dispatching the member.
73
+
74
+ **Why:** `execute_prompt` prompts are visible in the LLM conversation. Passing raw secrets there exposes them in logs and chat history. The credential store keeps the plaintext out of the LLM entirely.
75
+
76
+ **Steps:**
77
+ 1. Call `credential_store_set` with a descriptive name (e.g., `github_pat`, `npm_token`, `openai_key`) - Fleet opens an OOB terminal prompt for the value
78
+ 2. Pass the `sec://NAME` handle in the task prompt - reference by name only (e.g. `"authenticate using credential github_pat"`). The secret value is only injected server-side when `{{secure.NAME}}` appears in an `execute_command` call - never in AI prompt text.
79
+ 3. The member uses `{{secure.NAME}}` in `execute_command` - Fleet resolves the value server-side and redacts it from output before the LLM sees it
80
+
81
+ **Example - dispatching a member that needs to push code to GitHub:**
82
+
83
+ ```
84
+ # PM stores the token before dispatch
85
+ credential_store_set name=github_pat
86
+
87
+ # PM includes in the task prompt - reference by name only:
88
+ "When pushing code to GitHub, authenticate using credential github_pat."
89
+
90
+ # Member uses it in a command transparently
91
+ execute_command command="git remote set-url origin https://token:{{secure.github_pat}}@github.com/Org/Repo.git"
92
+ ```
@@ -0,0 +1,23 @@
1
+ # Member Permissions
2
+
3
+ ## Before dispatching work
4
+
5
+ Call `compose_permissions` with the member and role (`doer` or `reviewer` — additional roles can be added to the profiles). Optionally pass `project_folder` — the path to a folder containing a `permissions.json` ledger of previously approved permissions. The tool detects the project stack (Node.js, Python, Go, etc.) from the member's `work_folder`, selects the matching permission profile from the fleet profiles, merges any ledger grants, and delivers the right provider-native config to the member. Same call works across all agentic providers.
6
+
7
+ > "Compose permissions for java-dev1 as doer, project folder ./my-project"
8
+
9
+ ## Permission denial during execution
10
+
11
+ When `execute_prompt` output contains a permission denial, call `compose_permissions` with `grant`:
12
+
13
+ > "Grant Bash(docker:*) to build-server, reason: integration tests, project folder ./my-project"
14
+
15
+ The tool validates (blocks dangerous tools like sudo/env), expands co-occurrences (docker→docker-compose), delivers the updated config, and appends to the project ledger for future use.
16
+
17
+ ## Role switch
18
+
19
+ When a member's role changes, re-run `compose_permissions` with the new role.
20
+
21
+ ## Never auto-granted
22
+
23
+ `sudo`, `su`, `env`, `printenv`, `nc`, `nmap` — the tool rejects these. Escalate to user.
@@ -0,0 +1,18 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Read", "Write", "Edit", "Glob", "Grep",
5
+ "Bash(git:*)",
6
+ "Bash(which:*)", "Bash(ls:*)", "Bash(cat:*)", "Bash(head:*)", "Bash(tail:*)",
7
+ "Bash(mkdir:*)", "Bash(cp:*)", "Bash(mv:*)", "Bash(rm:*)",
8
+ "Bash(find:*)", "Bash(wc:*)", "Bash(sort:*)", "Bash(diff:*)",
9
+ "Bash(echo:*)", "Bash(touch:*)", "Bash(chmod:*)",
10
+ "Bash(curl:*)", "Bash(tar:*)", "Bash(unzip:*)",
11
+ "Bash(grep:*)", "Bash(sed:*)", "Bash(awk:*)",
12
+ "Bash(tee:*)", "Bash(xargs:*)", "Bash(sleep:*)",
13
+ "Bash(kill:*)", "Bash(pkill:*)",
14
+ "Bash(bash:*)", "Bash(sh:*)",
15
+ "Bash(gh:*)", "Bash(jq:*)"
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Read", "Glob", "Grep",
5
+ "Write(docs/**)", "Write(feedback.md)", "Write(feedback-*.md)", "Write(progress.json)",
6
+ "Edit(docs/**)", "Edit(feedback.md)", "Edit(feedback-*.md)", "Edit(progress.json)",
7
+ "Bash(git:*)",
8
+ "Bash(which:*)", "Bash(ls:*)", "Bash(cat:*)", "Bash(head:*)", "Bash(tail:*)",
9
+ "Bash(find:*)", "Bash(wc:*)", "Bash(sort:*)", "Bash(diff:*)",
10
+ "Bash(echo:*)", "Bash(grep:*)",
11
+ "Bash(gh:*)", "Bash(jq:*)"
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(make:*)", "Bash(cmake:*)", "Bash(gcc:*)", "Bash(g++:*)", "Bash(clang:*)", "Bash(ninja:*)"],
3
+ "reviewer": ["Bash(make test:*)", "Bash(ctest:*)"]
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(dotnet:*)"],
3
+ "reviewer": ["Bash(dotnet test:*)"]
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(go:*)", "Bash(gofmt:*)", "Bash(golangci-lint:*)"],
3
+ "reviewer": ["Bash(go test:*)", "Bash(go vet:*)", "Bash(golangci-lint:*)"]
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(gradle:*)", "Bash(./gradlew:*)", "Bash(mvn:*)", "Bash(java:*)", "Bash(javac:*)"],
3
+ "reviewer": ["Bash(gradle test:*)", "Bash(./gradlew test:*)", "Bash(mvn test:*)"]
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(npm:*)", "Bash(npx:*)", "Bash(node:*)", "Bash(yarn:*)", "Bash(pnpm:*)", "Bash(tsx:*)"],
3
+ "reviewer": ["Bash(npm test:*)", "Bash(npm run test:*)", "Bash(npm run lint:*)", "Bash(npx:*)"]
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(python:*)", "Bash(python3:*)", "Bash(pip:*)", "Bash(pip3:*)", "Bash(pytest:*)", "Bash(uv:*)", "Bash(poetry:*)", "Bash(ruff:*)", "Bash(mypy:*)"],
3
+ "reviewer": ["Bash(pytest:*)", "Bash(python -m pytest:*)", "Bash(ruff:*)", "Bash(mypy:*)"]
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "dev": ["Bash(cargo:*)", "Bash(rustc:*)", "Bash(rustup:*)"],
3
+ "reviewer": ["Bash(cargo test:*)", "Bash(cargo clippy:*)", "Bash(cargo check:*)"]
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "_example_granted_entry": { "permission": "Bash(docker:*)", "reason": "integration tests", "date": "2026-03-15" },
3
+ "stacks": [],
4
+ "granted": []
5
+ }
@@ -0,0 +1,34 @@
1
+ # Skill Matrix
2
+
3
+ Maps project + role to required skills. Used during onboarding (Step 6).
4
+
5
+ | Project | VCS | Role | Required Skills |
6
+ |---------|-----|------|----------------|
7
+ | Any | GitHub | Any | None (gh CLI sufficient) |
8
+ | Any | Bitbucket | devops | `bitbucket-devops` |
9
+ | Any | Bitbucket | code-review | `bitbucket-devops` |
10
+ | Any | Bitbucket | development | None |
11
+ | Any | Bitbucket | testing | None |
12
+ | Any | Bitbucket | debugging | None |
13
+ | Any | Azure DevOps | devops | `azdevops-devops` (future) |
14
+ | Any | Azure DevOps | code-review | `azdevops-devops` (future) |
15
+ | Any | Azure DevOps | development | None |
16
+ | ApraPipes | Any | devops | `aprapipes-devops` |
17
+ | StreamSurv AVMS | Any | debugging | `lvsm-log-analyzer-skill` |
18
+
19
+ ## Skills
20
+
21
+ | Skill | Purpose |
22
+ |-------|---------|
23
+ | `bitbucket-devops` | Bitbucket API: create/merge PRs, manage pipelines, review code |
24
+ | `aprapipes-devops` | ApraPipes-specific build, test, deployment |
25
+ | `azdevops-devops` | Azure DevOps API operations (planned) |
26
+ | `lvsm-log-analyzer-skill` | SiteManager log analysis for AVMS/BBNVR devices |
27
+
28
+ ## Rules
29
+
30
+ 1. Skills are additive — multiple roles = union of all required skills
31
+ 2. GitHub members rarely need extra skills — gh CLI covers most operations
32
+ 3. Bitbucket/Azure DevOps members need provider-specific skills for devops/code-review (LLMs lack native API knowledge without skills)
33
+ 4. Project-specific skills layer on top of VCS skills
34
+ 5. Skills are independent of the member's LLM provider — a Gemini member needs the same project skills as a Claude member. Skill selection is driven by VCS provider and project, not LLM provider.
@@ -0,0 +1,13 @@
1
+ # Troubleshooting
2
+
3
+ | Symptom | Action |
4
+ |---------|--------|
5
+ | Empty response | Check auth token expiry -> re-provision via `provision_vcs_auth` |
6
+ | Timeout (inactivity) | `timeout_s`: fires when no stdout/stderr output arrives for N seconds (default 300s / 5 min). Applies to all members and all providers - transport-level, not provider-specific. Common cause: test runners and build tools that buffer output (npm test, vitest, cargo build) producing no output for long stretches even while active. Fix: increase `timeout_s` to 600-1200 for build/test dispatches. |
7
+ | Timeout (total) | `max_total_s`: fires after N seconds of total elapsed time regardless of output activity. Provider-agnostic. Use for hard ceilings on long-running jobs. Set alongside `timeout_s` when you need both a silence guard and a wall-clock cap. |
8
+ | Permission denied | Run `compose_permissions` for the member - it produces provider-native config. Claude: check `.claude/settings.local.json`. Agy: check `~/.gemini/config/hooks.json` and `mcp_config.json`. Codex: check `.codex/config.toml` approval mode. Copilot: check `.github/copilot/settings.local.json`. Gemini: check `.gemini/policies/`. |
9
+ | Stuck after reset | Escalate model (cheap->standard->premium). Still stuck? Flag to user |
10
+ | Auth error (401/403) | GitHub App: re-mint via `provision_vcs_auth`. Bitbucket/Azure DevOps: ask user for fresh token, provision, retry. See auth-*.md |
11
+ | Token/password appears in command output | Use `credential_store_set` to store the secret, then reference it as `{{secure.NAME}}` in `execute_command` - Fleet redacts it to `[REDACTED:NAME]` before the LLM sees the output |
12
+ | Need to rotate a credential without re-provisioning | Run `credential_store_delete name=<NAME>` then `credential_store_set name=<NAME>` - the new value is picked up immediately on the next `execute_command` that references `{{secure.NAME}}` |
13
+ | Tool execution issue (unexpected behavior, missing output, silent failure) | Check `APRA_FLEET_DATA_DIR/logs/fleet-<pid>.log` for detailed execution traces. Filter by member with `jq 'select(.member_id == "<uuid>")'` or by tool with `jq 'select(.tag == "<tool>")'`. See the **Fleet Logs** section in SKILL.md for full field reference and `jq` examples. |