lastlight 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/README.md +265 -118
  2. package/agent-context/rules.md +62 -9
  3. package/agent-context/security.md +69 -0
  4. package/config/default.yaml +89 -0
  5. package/deploy/.env.production.example +20 -2
  6. package/deploy/entrypoint.sh +16 -17
  7. package/deploy/native/README.md +160 -0
  8. package/deploy/native/install.sh +110 -0
  9. package/deploy/native/lastlight.env.example +95 -0
  10. package/deploy/native/lastlight.service +50 -0
  11. package/deploy/sandbox-entrypoint.sh +59 -42
  12. package/dist/admin/auth.d.ts +1 -1
  13. package/dist/admin/auth.js +3 -1
  14. package/dist/admin/auth.js.map +1 -1
  15. package/dist/admin/chat-session-reader.d.ts +11 -14
  16. package/dist/admin/chat-session-reader.js +27 -51
  17. package/dist/admin/chat-session-reader.js.map +1 -1
  18. package/dist/admin/docker.d.ts +37 -0
  19. package/dist/admin/docker.js +86 -1
  20. package/dist/admin/docker.js.map +1 -1
  21. package/dist/admin/index.js +38 -3
  22. package/dist/admin/index.js.map +1 -1
  23. package/dist/admin/log-search.test.d.ts +1 -0
  24. package/dist/admin/log-search.test.js +78 -0
  25. package/dist/admin/log-search.test.js.map +1 -0
  26. package/dist/admin/routes.d.ts +52 -3
  27. package/dist/admin/routes.js +780 -63
  28. package/dist/admin/routes.js.map +1 -1
  29. package/dist/admin/routes.test.js +680 -14
  30. package/dist/admin/routes.test.js.map +1 -1
  31. package/dist/admin/server-logs.test.d.ts +1 -0
  32. package/dist/admin/server-logs.test.js +58 -0
  33. package/dist/admin/server-logs.test.js.map +1 -0
  34. package/dist/admin/sessions.d.ts +26 -39
  35. package/dist/admin/sessions.js +86 -310
  36. package/dist/admin/sessions.js.map +1 -1
  37. package/dist/admin/sessions.test.d.ts +1 -0
  38. package/dist/admin/sessions.test.js +78 -0
  39. package/dist/admin/sessions.test.js.map +1 -0
  40. package/dist/admin/version.d.ts +15 -0
  41. package/dist/admin/version.js +73 -0
  42. package/dist/admin/version.js.map +1 -0
  43. package/dist/admin/version.test.d.ts +1 -0
  44. package/dist/admin/version.test.js +71 -0
  45. package/dist/admin/version.test.js.map +1 -0
  46. package/dist/cli-config.d.ts +55 -0
  47. package/dist/cli-config.js +119 -0
  48. package/dist/cli-config.js.map +1 -0
  49. package/dist/cli-config.test.d.ts +1 -0
  50. package/dist/cli-config.test.js +92 -0
  51. package/dist/cli-config.test.js.map +1 -0
  52. package/dist/cli-format.d.ts +19 -0
  53. package/dist/cli-format.js +107 -0
  54. package/dist/cli-format.js.map +1 -0
  55. package/dist/cli-server.d.ts +73 -0
  56. package/dist/cli-server.js +347 -0
  57. package/dist/cli-server.js.map +1 -0
  58. package/dist/cli-server.test.d.ts +1 -0
  59. package/dist/cli-server.test.js +38 -0
  60. package/dist/cli-server.test.js.map +1 -0
  61. package/dist/cli-timeline.d.ts +35 -0
  62. package/dist/cli-timeline.js +373 -0
  63. package/dist/cli-timeline.js.map +1 -0
  64. package/dist/cli-timeline.test.d.ts +1 -0
  65. package/dist/cli-timeline.test.js +104 -0
  66. package/dist/cli-timeline.test.js.map +1 -0
  67. package/dist/cli.d.ts +0 -19
  68. package/dist/cli.js +910 -194
  69. package/dist/cli.js.map +1 -1
  70. package/dist/config-overlay.test.d.ts +1 -0
  71. package/dist/config-overlay.test.js +112 -0
  72. package/dist/config-overlay.test.js.map +1 -0
  73. package/dist/config-resolve.d.ts +28 -0
  74. package/dist/config-resolve.js +47 -0
  75. package/dist/config-resolve.js.map +1 -0
  76. package/dist/config-resolve.test.d.ts +1 -0
  77. package/dist/config-resolve.test.js +68 -0
  78. package/dist/config-resolve.test.js.map +1 -0
  79. package/dist/config.d.ts +62 -49
  80. package/dist/config.js +452 -76
  81. package/dist/config.js.map +1 -1
  82. package/dist/config.test.js +201 -32
  83. package/dist/config.test.js.map +1 -1
  84. package/dist/connectors/github-webhook.js +83 -5
  85. package/dist/connectors/github-webhook.js.map +1 -1
  86. package/dist/connectors/github-webhook.test.d.ts +1 -0
  87. package/dist/connectors/github-webhook.test.js +156 -0
  88. package/dist/connectors/github-webhook.test.js.map +1 -0
  89. package/dist/connectors/messaging/session-manager.d.ts +18 -0
  90. package/dist/connectors/messaging/session-manager.js +83 -2
  91. package/dist/connectors/messaging/session-manager.js.map +1 -1
  92. package/dist/connectors/messaging/session-manager.test.d.ts +1 -0
  93. package/dist/connectors/messaging/session-manager.test.js +144 -0
  94. package/dist/connectors/messaging/session-manager.test.js.map +1 -0
  95. package/dist/connectors/slack/connector.d.ts +9 -0
  96. package/dist/connectors/slack/connector.js +15 -0
  97. package/dist/connectors/slack/connector.js.map +1 -1
  98. package/dist/connectors/slack/mrkdwn.js +81 -0
  99. package/dist/connectors/slack/mrkdwn.js.map +1 -1
  100. package/dist/connectors/slack/mrkdwn.test.js +49 -0
  101. package/dist/connectors/slack/mrkdwn.test.js.map +1 -1
  102. package/dist/connectors/types.d.ts +1 -1
  103. package/dist/cron/fanout.d.ts +33 -0
  104. package/dist/cron/fanout.js +55 -0
  105. package/dist/cron/fanout.js.map +1 -0
  106. package/dist/cron/fanout.test.d.ts +1 -0
  107. package/dist/cron/fanout.test.js +73 -0
  108. package/dist/cron/fanout.test.js.map +1 -0
  109. package/dist/cron/jobs.d.ts +5 -0
  110. package/dist/cron/jobs.js +10 -3
  111. package/dist/cron/jobs.js.map +1 -1
  112. package/dist/cron/scheduler.d.ts +12 -0
  113. package/dist/cron/scheduler.js +27 -1
  114. package/dist/cron/scheduler.js.map +1 -1
  115. package/dist/engine/agent-executor.d.ts +158 -0
  116. package/dist/engine/agent-executor.js +1140 -0
  117. package/dist/engine/agent-executor.js.map +1 -0
  118. package/dist/engine/agent-executor.test.d.ts +1 -0
  119. package/dist/engine/agent-executor.test.js +395 -0
  120. package/dist/engine/agent-executor.test.js.map +1 -0
  121. package/dist/engine/chat-runner.d.ts +123 -0
  122. package/dist/engine/chat-runner.js +379 -0
  123. package/dist/engine/chat-runner.js.map +1 -0
  124. package/dist/engine/chat-runner.test.d.ts +1 -0
  125. package/dist/engine/chat-runner.test.js +104 -0
  126. package/dist/engine/chat-runner.test.js.map +1 -0
  127. package/dist/engine/chat-skills.d.ts +45 -0
  128. package/dist/engine/chat-skills.js +184 -0
  129. package/dist/engine/chat-skills.js.map +1 -0
  130. package/dist/engine/chat-skills.test.d.ts +1 -0
  131. package/dist/engine/chat-skills.test.js +20 -0
  132. package/dist/engine/chat-skills.test.js.map +1 -0
  133. package/dist/engine/chat.d.ts +20 -23
  134. package/dist/engine/chat.js +251 -155
  135. package/dist/engine/chat.js.map +1 -1
  136. package/dist/engine/chat.test.d.ts +1 -0
  137. package/dist/engine/chat.test.js +42 -0
  138. package/dist/engine/chat.test.js.map +1 -0
  139. package/dist/engine/classifier.d.ts +35 -2
  140. package/dist/engine/classifier.js +170 -31
  141. package/dist/engine/classifier.js.map +1 -1
  142. package/dist/engine/classifier.test.d.ts +1 -0
  143. package/dist/engine/classifier.test.js +115 -0
  144. package/dist/engine/classifier.test.js.map +1 -0
  145. package/dist/engine/dispatcher.d.ts +60 -0
  146. package/dist/engine/dispatcher.js +601 -0
  147. package/dist/engine/dispatcher.js.map +1 -0
  148. package/dist/engine/dispatcher.test.d.ts +1 -0
  149. package/dist/engine/dispatcher.test.js +511 -0
  150. package/dist/engine/dispatcher.test.js.map +1 -0
  151. package/dist/engine/event-shim.d.ts +117 -0
  152. package/dist/engine/event-shim.js +435 -0
  153. package/dist/engine/event-shim.js.map +1 -0
  154. package/dist/engine/event-shim.test.d.ts +1 -0
  155. package/dist/engine/event-shim.test.js +194 -0
  156. package/dist/engine/event-shim.test.js.map +1 -0
  157. package/dist/engine/git-auth.d.ts +13 -17
  158. package/dist/engine/git-auth.js +99 -42
  159. package/dist/engine/git-auth.js.map +1 -1
  160. package/dist/engine/git-auth.test.d.ts +1 -0
  161. package/dist/engine/git-auth.test.js +117 -0
  162. package/dist/engine/git-auth.test.js.map +1 -0
  163. package/dist/engine/github-app-client.d.ts +7 -0
  164. package/dist/engine/github-app-client.js +16 -0
  165. package/dist/engine/github-app-client.js.map +1 -0
  166. package/dist/engine/github-app-client.test.d.ts +1 -0
  167. package/dist/engine/github-app-client.test.js +44 -0
  168. package/dist/engine/github-app-client.test.js.map +1 -0
  169. package/dist/engine/github-tools.d.ts +12 -0
  170. package/dist/engine/github-tools.js +261 -0
  171. package/dist/engine/github-tools.js.map +1 -0
  172. package/dist/engine/github.d.ts +1027 -43
  173. package/dist/engine/github.js +153 -14
  174. package/dist/engine/github.js.map +1 -1
  175. package/dist/engine/llm.d.ts +47 -0
  176. package/dist/engine/llm.js +221 -0
  177. package/dist/engine/llm.js.map +1 -0
  178. package/dist/engine/llm.test.d.ts +1 -0
  179. package/dist/engine/llm.test.js +189 -0
  180. package/dist/engine/llm.test.js.map +1 -0
  181. package/dist/engine/profiles.d.ts +249 -0
  182. package/dist/engine/profiles.js +42 -0
  183. package/dist/engine/profiles.js.map +1 -0
  184. package/dist/engine/router.d.ts +12 -6
  185. package/dist/engine/router.js +339 -81
  186. package/dist/engine/router.js.map +1 -1
  187. package/dist/engine/router.test.js +428 -78
  188. package/dist/engine/router.test.js.map +1 -1
  189. package/dist/engine/screen.d.ts +41 -0
  190. package/dist/engine/screen.js +93 -0
  191. package/dist/engine/screen.js.map +1 -0
  192. package/dist/engine/screen.test.d.ts +1 -0
  193. package/dist/engine/screen.test.js +82 -0
  194. package/dist/engine/screen.test.js.map +1 -0
  195. package/dist/index.js +423 -437
  196. package/dist/index.js.map +1 -1
  197. package/dist/managed-repos.d.ts +7 -9
  198. package/dist/managed-repos.js +12 -15
  199. package/dist/managed-repos.js.map +1 -1
  200. package/dist/managed-repos.test.js +24 -19
  201. package/dist/managed-repos.test.js.map +1 -1
  202. package/dist/notify/index.d.ts +15 -0
  203. package/dist/notify/index.js +6 -0
  204. package/dist/notify/index.js.map +1 -0
  205. package/dist/notify/model.d.ts +57 -0
  206. package/dist/notify/model.js +89 -0
  207. package/dist/notify/model.js.map +1 -0
  208. package/dist/notify/model.test.d.ts +1 -0
  209. package/dist/notify/model.test.js +109 -0
  210. package/dist/notify/model.test.js.map +1 -0
  211. package/dist/notify/notifier.d.ts +17 -0
  212. package/dist/notify/notifier.js +87 -0
  213. package/dist/notify/notifier.js.map +1 -0
  214. package/dist/notify/notifier.test.d.ts +1 -0
  215. package/dist/notify/notifier.test.js +100 -0
  216. package/dist/notify/notifier.test.js.map +1 -0
  217. package/dist/notify/render.d.ts +21 -0
  218. package/dist/notify/render.js +59 -0
  219. package/dist/notify/render.js.map +1 -0
  220. package/dist/notify/render.test.d.ts +1 -0
  221. package/dist/notify/render.test.js +65 -0
  222. package/dist/notify/render.test.js.map +1 -0
  223. package/dist/notify/transports/github.d.ts +26 -0
  224. package/dist/notify/transports/github.js +26 -0
  225. package/dist/notify/transports/github.js.map +1 -0
  226. package/dist/notify/transports/slack.d.ts +26 -0
  227. package/dist/notify/transports/slack.js +28 -0
  228. package/dist/notify/transports/slack.js.map +1 -0
  229. package/dist/notify/transports.test.d.ts +1 -0
  230. package/dist/notify/transports.test.js +71 -0
  231. package/dist/notify/transports.test.js.map +1 -0
  232. package/dist/notify/types.d.ts +95 -0
  233. package/dist/notify/types.js +16 -0
  234. package/dist/notify/types.js.map +1 -0
  235. package/dist/sandbox/docker-compose.test.d.ts +1 -0
  236. package/dist/sandbox/docker-compose.test.js +128 -0
  237. package/dist/sandbox/docker-compose.test.js.map +1 -0
  238. package/dist/sandbox/docker.d.ts +97 -9
  239. package/dist/sandbox/docker.js +192 -41
  240. package/dist/sandbox/docker.js.map +1 -1
  241. package/dist/sandbox/docker.test.d.ts +1 -0
  242. package/dist/sandbox/docker.test.js +137 -0
  243. package/dist/sandbox/docker.test.js.map +1 -0
  244. package/dist/sandbox/egress-allowlist.d.ts +69 -0
  245. package/dist/sandbox/egress-allowlist.js +164 -0
  246. package/dist/sandbox/egress-allowlist.js.map +1 -0
  247. package/dist/sandbox/egress-allowlist.test.d.ts +1 -0
  248. package/dist/sandbox/egress-allowlist.test.js +65 -0
  249. package/dist/sandbox/egress-allowlist.test.js.map +1 -0
  250. package/dist/sandbox/egress-firewall-config.d.ts +127 -0
  251. package/dist/sandbox/egress-firewall-config.js +434 -0
  252. package/dist/sandbox/egress-firewall-config.js.map +1 -0
  253. package/dist/sandbox/egress-firewall-config.test.d.ts +1 -0
  254. package/dist/sandbox/egress-firewall-config.test.js +244 -0
  255. package/dist/sandbox/egress-firewall-config.test.js.map +1 -0
  256. package/dist/sandbox/images.d.ts +23 -0
  257. package/dist/sandbox/images.js +55 -0
  258. package/dist/sandbox/images.js.map +1 -0
  259. package/dist/sandbox/index.d.ts +82 -3
  260. package/dist/sandbox/index.js +223 -93
  261. package/dist/sandbox/index.js.map +1 -1
  262. package/dist/sandbox/index.test.d.ts +1 -0
  263. package/dist/sandbox/index.test.js +157 -0
  264. package/dist/sandbox/index.test.js.map +1 -0
  265. package/dist/session-log.d.ts +63 -0
  266. package/dist/session-log.js +290 -0
  267. package/dist/session-log.js.map +1 -0
  268. package/dist/session-log.test.d.ts +1 -0
  269. package/dist/session-log.test.js +85 -0
  270. package/dist/session-log.test.js.map +1 -0
  271. package/dist/setup.d.ts +31 -12
  272. package/dist/setup.js +516 -174
  273. package/dist/setup.js.map +1 -1
  274. package/dist/setup.test.js +138 -6
  275. package/dist/setup.test.js.map +1 -1
  276. package/dist/state/approval-store.d.ts +86 -0
  277. package/dist/state/approval-store.js +140 -0
  278. package/dist/state/approval-store.js.map +1 -0
  279. package/dist/state/build-assets.d.ts +50 -0
  280. package/dist/state/build-assets.js +154 -0
  281. package/dist/state/build-assets.js.map +1 -0
  282. package/dist/state/build-assets.test.d.ts +1 -0
  283. package/dist/state/build-assets.test.js +106 -0
  284. package/dist/state/build-assets.test.js.map +1 -0
  285. package/dist/state/db.d.ts +65 -333
  286. package/dist/state/db.js +112 -835
  287. package/dist/state/db.js.map +1 -1
  288. package/dist/state/db.test.js +127 -91
  289. package/dist/state/db.test.js.map +1 -1
  290. package/dist/state/execution-store.d.ts +257 -0
  291. package/dist/state/execution-store.js +527 -0
  292. package/dist/state/execution-store.js.map +1 -0
  293. package/dist/state/migrate.d.ts +15 -0
  294. package/dist/state/migrate.js +175 -0
  295. package/dist/state/migrate.js.map +1 -0
  296. package/dist/state/workflow-run-store.d.ts +195 -0
  297. package/dist/state/workflow-run-store.js +363 -0
  298. package/dist/state/workflow-run-store.js.map +1 -0
  299. package/dist/state/workflow-run-store.test.d.ts +1 -0
  300. package/dist/state/workflow-run-store.test.js +264 -0
  301. package/dist/state/workflow-run-store.test.js.map +1 -0
  302. package/dist/telemetry/index.d.ts +38 -0
  303. package/dist/telemetry/index.js +253 -0
  304. package/dist/telemetry/index.js.map +1 -0
  305. package/dist/telemetry/index.test.d.ts +1 -0
  306. package/dist/telemetry/index.test.js +73 -0
  307. package/dist/telemetry/index.test.js.map +1 -0
  308. package/dist/telemetry/pi-events.d.ts +12 -0
  309. package/dist/telemetry/pi-events.js +134 -0
  310. package/dist/telemetry/pi-events.js.map +1 -0
  311. package/dist/telemetry/pi-events.test.d.ts +1 -0
  312. package/dist/telemetry/pi-events.test.js +69 -0
  313. package/dist/telemetry/pi-events.test.js.map +1 -0
  314. package/dist/workflows/dag.d.ts +13 -1
  315. package/dist/workflows/dag.js +7 -3
  316. package/dist/workflows/dag.js.map +1 -1
  317. package/dist/workflows/dag.test.js +22 -0
  318. package/dist/workflows/dag.test.js.map +1 -1
  319. package/dist/workflows/golden-build.test.d.ts +1 -0
  320. package/dist/workflows/golden-build.test.js +45 -0
  321. package/dist/workflows/golden-build.test.js.map +1 -0
  322. package/dist/workflows/loader-overlay.test.d.ts +1 -0
  323. package/dist/workflows/loader-overlay.test.js +101 -0
  324. package/dist/workflows/loader-overlay.test.js.map +1 -0
  325. package/dist/workflows/loader.d.ts +36 -11
  326. package/dist/workflows/loader.js +311 -87
  327. package/dist/workflows/loader.js.map +1 -1
  328. package/dist/workflows/loader.test.js +114 -10
  329. package/dist/workflows/loader.test.js.map +1 -1
  330. package/dist/workflows/loop-eval.js +2 -0
  331. package/dist/workflows/loop-eval.js.map +1 -1
  332. package/dist/workflows/loop-eval.test.js +14 -0
  333. package/dist/workflows/loop-eval.test.js.map +1 -1
  334. package/dist/workflows/phase-executor.d.ts +145 -0
  335. package/dist/workflows/phase-executor.js +691 -0
  336. package/dist/workflows/phase-executor.js.map +1 -0
  337. package/dist/workflows/phase-executor.test.d.ts +1 -0
  338. package/dist/workflows/phase-executor.test.js +434 -0
  339. package/dist/workflows/phase-executor.test.js.map +1 -0
  340. package/dist/workflows/phase-ref.d.ts +44 -0
  341. package/dist/workflows/phase-ref.js +78 -0
  342. package/dist/workflows/phase-ref.js.map +1 -0
  343. package/dist/workflows/phase-ref.test.d.ts +1 -0
  344. package/dist/workflows/phase-ref.test.js +24 -0
  345. package/dist/workflows/phase-ref.test.js.map +1 -0
  346. package/dist/workflows/resume.d.ts +5 -11
  347. package/dist/workflows/resume.js +88 -7
  348. package/dist/workflows/resume.js.map +1 -1
  349. package/dist/workflows/runner.d.ts +34 -27
  350. package/dist/workflows/runner.js +252 -930
  351. package/dist/workflows/runner.js.map +1 -1
  352. package/dist/workflows/runner.test.js +346 -35
  353. package/dist/workflows/runner.test.js.map +1 -1
  354. package/dist/workflows/schema.d.ts +52 -10
  355. package/dist/workflows/schema.js +147 -7
  356. package/dist/workflows/schema.js.map +1 -1
  357. package/dist/workflows/simple.d.ts +67 -3
  358. package/dist/workflows/simple.js +248 -87
  359. package/dist/workflows/simple.js.map +1 -1
  360. package/dist/workflows/simple.test.d.ts +1 -0
  361. package/dist/workflows/simple.test.js +107 -0
  362. package/dist/workflows/simple.test.js.map +1 -0
  363. package/dist/workflows/templates.d.ts +29 -0
  364. package/dist/workflows/templates.js +42 -4
  365. package/dist/workflows/templates.js.map +1 -1
  366. package/dist/workflows/templates.test.js +103 -0
  367. package/dist/workflows/templates.test.js.map +1 -1
  368. package/dist/workflows/triggers.d.ts +21 -0
  369. package/dist/workflows/triggers.js +44 -0
  370. package/dist/workflows/triggers.js.map +1 -0
  371. package/dist/workflows/verdict.d.ts +19 -0
  372. package/dist/workflows/verdict.js +30 -0
  373. package/dist/workflows/verdict.js.map +1 -0
  374. package/dist/workflows/verdict.test.d.ts +1 -0
  375. package/dist/workflows/verdict.test.js +44 -0
  376. package/dist/workflows/verdict.test.js.map +1 -0
  377. package/dist/worktree/manager.d.ts +1 -1
  378. package/dist/worktree/manager.js +14 -14
  379. package/dist/worktree/manager.js.map +1 -1
  380. package/dist/worktree/manager.test.d.ts +1 -0
  381. package/dist/worktree/manager.test.js +87 -0
  382. package/dist/worktree/manager.test.js.map +1 -0
  383. package/docker-compose.yml +206 -5
  384. package/package.json +19 -7
  385. package/sandbox.Dockerfile +97 -18
  386. package/skills/README.md +40 -0
  387. package/skills/browser-qa/SKILL.md +193 -0
  388. package/skills/browser-qa/scripts/agent-browser.mjs +380 -0
  389. package/skills/building/SKILL.md +95 -0
  390. package/skills/chat/SKILL.md +30 -11
  391. package/skills/code-review/SKILL.md +59 -0
  392. package/skills/debug-production/SKILL.md +108 -0
  393. package/skills/demo/SKILL.md +194 -0
  394. package/skills/demo/scripts/compose-demo.sh +205 -0
  395. package/skills/issue-answer/SKILL.md +90 -0
  396. package/skills/issue-comment/SKILL.md +38 -24
  397. package/skills/issue-triage/SKILL.md +103 -37
  398. package/skills/issue-triage/references/AGENT-BRIEF.md +61 -0
  399. package/skills/pr-comment/SKILL.md +64 -0
  400. package/skills/pr-review/SKILL.md +65 -49
  401. package/skills/qa-test/SKILL.md +97 -0
  402. package/skills/repo-health/SKILL.md +48 -45
  403. package/skills/security-feedback/SKILL.md +173 -0
  404. package/skills/security-feedback/references/templates.md +77 -0
  405. package/skills/security-review/SKILL.md +213 -0
  406. package/skills/security-review/references/issue-format.md +302 -0
  407. package/skills/verify/SKILL.md +118 -0
  408. package/workflows/answer.yaml +37 -0
  409. package/workflows/build.yaml +32 -22
  410. package/workflows/cron-security.yaml +6 -0
  411. package/workflows/demo.yaml +55 -0
  412. package/workflows/explore.yaml +9 -0
  413. package/workflows/pr-comment.yaml +16 -0
  414. package/workflows/pr-fix.yaml +3 -0
  415. package/workflows/pr-review.yaml +4 -1
  416. package/workflows/prompts/answer.md +67 -0
  417. package/workflows/prompts/architect.md +24 -7
  418. package/workflows/prompts/demo.md +100 -0
  419. package/workflows/prompts/executor.md +29 -20
  420. package/workflows/prompts/explore-ask.md +51 -22
  421. package/workflows/prompts/explore-publish.md +2 -2
  422. package/workflows/prompts/explore-read.md +24 -10
  423. package/workflows/prompts/explore-synthesize.md +15 -8
  424. package/workflows/prompts/fix.md +9 -10
  425. package/workflows/prompts/guardrails.md +26 -8
  426. package/workflows/prompts/pr-fix.md +6 -7
  427. package/workflows/prompts/pr.md +11 -10
  428. package/workflows/prompts/qa-browser.md +95 -0
  429. package/workflows/prompts/qa-synth.md +44 -0
  430. package/workflows/prompts/qa-test.md +60 -0
  431. package/workflows/prompts/re-reviewer.md +8 -9
  432. package/workflows/prompts/reviewer.md +10 -9
  433. package/workflows/prompts/verify-browser.md +93 -0
  434. package/workflows/prompts/verify-synth.md +44 -0
  435. package/workflows/prompts/verify.md +63 -0
  436. package/workflows/qa-test.yaml +87 -0
  437. package/workflows/security-feedback.yaml +25 -0
  438. package/workflows/security-review.yaml +29 -0
  439. package/workflows/verify.yaml +85 -0
  440. package/deploy/mcp-config.tmpl.json +0 -14
  441. package/dist/cron/rate-limits.d.ts +0 -26
  442. package/dist/cron/rate-limits.js +0 -193
  443. package/dist/cron/rate-limits.js.map +0 -1
  444. package/dist/engine/executor.d.ts +0 -75
  445. package/dist/engine/executor.js +0 -292
  446. package/dist/engine/executor.js.map +0 -1
  447. package/mcp-github-app/package.json +0 -18
  448. package/mcp-github-app/src/auth.js +0 -66
  449. package/mcp-github-app/src/github.js +0 -371
  450. package/mcp-github-app/src/index.js +0 -534
  451. package/skills/devops/webhook-subscriptions/SKILL.md +0 -180
  452. package/skills/github/DESCRIPTION.md +0 -3
  453. package/skills/github/codebase-inspection/SKILL.md +0 -115
  454. package/skills/github/github-auth/SKILL.md +0 -54
  455. package/skills/github/github-auth/scripts/gh-env.sh +0 -66
  456. package/skills/github/github-code-review/SKILL.md +0 -480
  457. package/skills/github/github-code-review/references/review-output-template.md +0 -74
  458. package/skills/github/github-issues/SKILL.md +0 -369
  459. package/skills/github/github-issues/templates/bug-report.md +0 -35
  460. package/skills/github/github-issues/templates/feature-request.md +0 -31
  461. package/skills/github/github-pr-workflow/SKILL.md +0 -395
  462. package/skills/github/github-pr-workflow/references/ci-troubleshooting.md +0 -183
  463. package/skills/github/github-pr-workflow/references/conventional-commits.md +0 -71
  464. package/skills/github/github-pr-workflow/templates/pr-body-bugfix.md +0 -35
  465. package/skills/github/github-pr-workflow/templates/pr-body-feature.md +0 -33
  466. package/skills/github/github-repo-management/SKILL.md +0 -515
  467. package/skills/github/github-repo-management/references/github-api-cheatsheet.md +0 -161
  468. package/skills/github-orchestrator/SKILL.md +0 -103
  469. package/skills/mcp/DESCRIPTION.md +0 -3
  470. package/skills/mcp/mcporter/SKILL.md +0 -122
  471. package/skills/mcp/native-mcp/SKILL.md +0 -356
  472. package/skills/software-development/architect/SKILL.md +0 -154
  473. package/skills/software-development/assure-guardrails/SKILL.md +0 -239
  474. package/skills/software-development/plan/SKILL.md +0 -64
  475. package/skills/software-development/requesting-code-review/SKILL.md +0 -291
  476. package/skills/software-development/subagent-driven-development/SKILL.md +0 -433
  477. package/skills/software-development/systematic-debugging/SKILL.md +0 -366
  478. package/skills/software-development/test-driven-development/SKILL.md +0 -342
@@ -1,395 +0,0 @@
1
- ---
2
- name: github-pr-workflow
3
- description: Full pull request lifecycle — create branches, commit changes, open PRs, monitor CI status, auto-fix failures, and merge. Works with gh CLI or falls back to git + GitHub REST API via curl.
4
- version: 1.1.0
5
- author: Hermes Agent
6
- license: MIT
7
- metadata:
8
- hermes:
9
- tags: [GitHub, Pull-Requests, CI/CD, Git, Automation, Merge]
10
- related_skills: [github-auth, github-code-review]
11
- ---
12
-
13
- # GitHub Pull Request Workflow
14
-
15
- Complete guide for managing the PR lifecycle. Each section shows the `gh` way first, then the `git` + `curl` fallback for machines without `gh`.
16
-
17
- ## Prerequisites
18
-
19
- - Authenticated with GitHub (see `github-auth` skill)
20
- - Inside a git repository with a GitHub remote
21
-
22
- ### Quick Auth Detection
23
-
24
- ```bash
25
- # Determine which method to use throughout this workflow
26
- if command -v gh &>/dev/null && gh auth status &>/dev/null; then
27
- AUTH="gh"
28
- else
29
- AUTH="git"
30
- # Ensure we have a token for API calls
31
- if [ -z "$GITHUB_TOKEN" ]; then
32
- if [ -f ~/.hermes/.env ] && grep -q "^GITHUB_TOKEN=" ~/.hermes/.env; then
33
- GITHUB_TOKEN=$(grep "^GITHUB_TOKEN=" ~/.hermes/.env | head -1 | cut -d= -f2 | tr -d '\n\r')
34
- elif grep -q "github.com" ~/.git-credentials 2>/dev/null; then
35
- GITHUB_TOKEN=$(grep "github.com" ~/.git-credentials 2>/dev/null | head -1 | sed 's|https://[^:]*:\([^@]*\)@.*|\1|')
36
- fi
37
- fi
38
- fi
39
- echo "Using: $AUTH"
40
- ```
41
-
42
- ### Extracting Owner/Repo from the Git Remote
43
-
44
- Many `curl` commands need `owner/repo`. Extract it from the git remote:
45
-
46
- ```bash
47
- # Works for both HTTPS and SSH remote URLs
48
- REMOTE_URL=$(git remote get-url origin)
49
- OWNER_REPO=$(echo "$REMOTE_URL" | sed -E 's|.*github\.com[:/]||; s|\.git$||')
50
- OWNER=$(echo "$OWNER_REPO" | cut -d/ -f1)
51
- REPO=$(echo "$OWNER_REPO" | cut -d/ -f2)
52
- echo "Owner: $OWNER, Repo: $REPO"
53
- ```
54
-
55
- ---
56
-
57
- ## 1. Branch Creation
58
-
59
- This part is pure `git` — identical either way:
60
-
61
- ```bash
62
- # Make sure you're up to date
63
- git fetch origin
64
- git checkout main && git pull origin main
65
-
66
- # Create and switch to a new branch
67
- git checkout -b feat/add-user-authentication
68
- ```
69
-
70
- Branch naming conventions:
71
- - `feat/description` — new features
72
- - `fix/description` — bug fixes
73
- - `refactor/description` — code restructuring
74
- - `docs/description` — documentation
75
- - `ci/description` — CI/CD changes
76
-
77
- ## 2. Making Commits
78
-
79
- Use the agent's file tools (`write_file`, `patch`) to make changes, then commit:
80
-
81
- ```bash
82
- # Stage specific files
83
- git add src/auth.py src/models/user.py tests/test_auth.py
84
-
85
- # Commit with a conventional commit message
86
- git commit -m "feat: add JWT-based user authentication
87
-
88
- - Add login/register endpoints
89
- - Add User model with password hashing
90
- - Add auth middleware for protected routes
91
- - Add unit tests for auth flow"
92
- ```
93
-
94
- Commit message format (Conventional Commits):
95
- ```
96
- type(scope): short description
97
-
98
- Longer explanation if needed. Wrap at 72 characters.
99
- ```
100
-
101
- Types: `feat`, `fix`, `refactor`, `docs`, `test`, `ci`, `chore`, `perf`
102
-
103
- ## 3. Pushing and Creating a PR
104
-
105
- ### Push the Branch (same either way)
106
-
107
- ```bash
108
- git push -u origin HEAD
109
- ```
110
-
111
- ### Auth setup
112
-
113
- The token file (`.gh-token`) and git config (`.gitconfig-bot`) are auto-synced into the sandbox by Hermes before each command via `terminal.credential_files`. To activate:
114
-
115
- 1. Call `setup_git_auth` MCP tool (refreshes the token)
116
- 2. Run the returned `configure_git` command (one-time per session)
117
- 3. `git push -u origin HEAD` should just work
118
-
119
- ### MCP fallback when git push fails
120
-
121
- If `git push` fails with `Invalid username or token` / `Authentication failed`, fall back to the GitHub MCP tools:
122
-
123
- 1. Create the remote branch with `mcp_github_create_branch`
124
- 2. Push changed files with `mcp_github_push_files`
125
- 3. Open the PR with `mcp_github_create_pull_request`
126
-
127
- Limitation: `mcp_github_push_files` supports creating/updating files, but **not deleting/renaming** files. Prefer `git push` when possible.
128
-
129
- ### Last resort when no push path works
130
-
131
- If both `git push` and MCP push fail, post a concise issue comment summarizing:
132
- - what was implemented locally
133
- - exact validation commands/results
134
- - local commit SHA and commit message
135
- - files touched
136
- - that PR creation was blocked by sandbox auth
137
-
138
- This gives the maintainer a reproducible handoff instead of a vague failure report.
139
-
140
- ### Create the PR
141
-
142
- **With gh:**
143
-
144
- ```bash
145
- gh pr create \
146
- --title "feat: add JWT-based user authentication" \
147
- --body "## Summary
148
- - Adds login and register API endpoints
149
- - JWT token generation and validation
150
-
151
- ## Test Plan
152
- - [ ] Unit tests pass
153
-
154
- Closes #42"
155
- ```
156
-
157
- Options: `--draft`, `--reviewer user1,user2`, `--label "enhancement"`, `--base develop`
158
-
159
- **With git + curl:**
160
-
161
- ```bash
162
- BRANCH=$(git branch --show-current)
163
-
164
- curl -s -X POST \
165
- -H "Authorization: token $GITHUB_TOKEN" \
166
- -H "Accept: application/vnd.github.v3+json" \
167
- https://api.github.com/repos/$OWNER/$REPO/pulls \
168
- -d "{
169
- \"title\": \"feat: add JWT-based user authentication\",
170
- \"body\": \"## Summary\nAdds login and register API endpoints.\n\nCloses #42\",
171
- \"head\": \"$BRANCH\",
172
- \"base\": \"main\"
173
- }"
174
- ```
175
-
176
- The response JSON includes the PR `number` — save it for later commands.
177
-
178
- To create as a draft, add `"draft": true` to the JSON body.
179
-
180
- ## 4. Monitoring CI Status
181
-
182
- ### Check CI Status
183
-
184
- **With gh:**
185
-
186
- ```bash
187
- # One-shot check
188
- gh pr checks
189
-
190
- # Watch until all checks finish (polls every 10s)
191
- gh pr checks --watch
192
- ```
193
-
194
- **With git + curl:**
195
-
196
- ```bash
197
- # Get the latest commit SHA on the current branch
198
- SHA=$(git rev-parse HEAD)
199
-
200
- # Query the combined status
201
- curl -s \
202
- -H "Authorization: token $GITHUB_TOKEN" \
203
- https://api.github.com/repos/$OWNER/$REPO/commits/$SHA/status \
204
- | python3 -c "
205
- import sys, json
206
- data = json.load(sys.stdin)
207
- print(f\"Overall: {data['state']}\")
208
- for s in data.get('statuses', []):
209
- print(f\" {s['context']}: {s['state']} - {s.get('description', '')}\")"
210
-
211
- # Also check GitHub Actions check runs (separate endpoint)
212
- curl -s \
213
- -H "Authorization: token $GITHUB_TOKEN" \
214
- https://api.github.com/repos/$OWNER/$REPO/commits/$SHA/check-runs \
215
- | python3 -c "
216
- import sys, json
217
- data = json.load(sys.stdin)
218
- for cr in data.get('check_runs', []):
219
- print(f\" {cr['name']}: {cr['status']} / {cr['conclusion'] or 'pending'}\")"
220
- ```
221
-
222
- ### Poll Until Complete (git + curl)
223
-
224
- ```bash
225
- # Simple polling loop — check every 30 seconds, up to 10 minutes
226
- SHA=$(git rev-parse HEAD)
227
- for i in $(seq 1 20); do
228
- STATUS=$(curl -s \
229
- -H "Authorization: token $GITHUB_TOKEN" \
230
- https://api.github.com/repos/$OWNER/$REPO/commits/$SHA/status \
231
- | python3 -c "import sys,json; print(json.load(sys.stdin)['state'])")
232
- echo "Check $i: $STATUS"
233
- if [ "$STATUS" = "success" ] || [ "$STATUS" = "failure" ] || [ "$STATUS" = "error" ]; then
234
- break
235
- fi
236
- sleep 30
237
- done
238
- ```
239
-
240
- ## 5. Auto-Fixing CI Failures
241
-
242
- When CI fails, diagnose and fix. This loop works with either auth method.
243
-
244
- ### Step 1: Get Failure Details
245
-
246
- **With gh:**
247
-
248
- ```bash
249
- # List recent workflow runs on this branch
250
- gh run list --branch $(git branch --show-current) --limit 5
251
-
252
- # View failed logs
253
- gh run view <RUN_ID> --log-failed
254
- ```
255
-
256
- **With git + curl:**
257
-
258
- ```bash
259
- BRANCH=$(git branch --show-current)
260
-
261
- # List workflow runs on this branch
262
- curl -s \
263
- -H "Authorization: token $GITHUB_TOKEN" \
264
- "https://api.github.com/repos/$OWNER/$REPO/actions/runs?branch=$BRANCH&per_page=5" \
265
- | python3 -c "
266
- import sys, json
267
- runs = json.load(sys.stdin)['workflow_runs']
268
- for r in runs:
269
- print(f\"Run {r['id']}: {r['name']} - {r['conclusion'] or r['status']}\")"
270
-
271
- # Get failed job logs (download as zip, extract, read)
272
- RUN_ID=<run_id>
273
- curl -s -L \
274
- -H "Authorization: token $GITHUB_TOKEN" \
275
- https://api.github.com/repos/$OWNER/$REPO/actions/runs/$RUN_ID/logs \
276
- -o /tmp/ci-logs.zip
277
- cd /tmp && unzip -o ci-logs.zip -d ci-logs && cat ci-logs/*.txt
278
- ```
279
-
280
- ### Step 2: Fix and Push
281
-
282
- After identifying the issue, use file tools (`patch`, `write_file`) to fix it:
283
-
284
- ```bash
285
- git add <fixed_files>
286
- git commit -m "fix: resolve CI failure in <check_name>"
287
- git push
288
- ```
289
-
290
- ### Step 3: Verify
291
-
292
- Re-check CI status using the commands from Section 4 above.
293
-
294
- ### Auto-Fix Loop Pattern
295
-
296
- When asked to auto-fix CI, follow this loop:
297
-
298
- 1. Check CI status → identify failures
299
- 2. Read failure logs → understand the error
300
- 3. Use `read_file` + `patch`/`write_file` → fix the code
301
- 4. `git add . && git commit -m "fix: ..." && git push`
302
- 5. Wait for CI → re-check status
303
- 6. Repeat if still failing (up to 3 attempts, then ask the user)
304
-
305
- ## 6. Merging
306
-
307
- **With gh:**
308
-
309
- ```bash
310
- # Squash merge + delete branch (cleanest for feature branches)
311
- gh pr merge --squash --delete-branch
312
-
313
- # Enable auto-merge (merges when all checks pass)
314
- gh pr merge --auto --squash --delete-branch
315
- ```
316
-
317
- **With git + curl:**
318
-
319
- ```bash
320
- PR_NUMBER=<number>
321
-
322
- # Merge the PR via API (squash)
323
- curl -s -X PUT \
324
- -H "Authorization: token $GITHUB_TOKEN" \
325
- https://api.github.com/repos/$OWNER/$REPO/pulls/$PR_NUMBER/merge \
326
- -d "{
327
- \"merge_method\": \"squash\",
328
- \"commit_title\": \"feat: add user authentication (#$PR_NUMBER)\"
329
- }"
330
-
331
- # Delete the remote branch after merge
332
- BRANCH=$(git branch --show-current)
333
- git push origin --delete $BRANCH
334
-
335
- # Switch back to main locally
336
- git checkout main && git pull origin main
337
- git branch -d $BRANCH
338
- ```
339
-
340
- Merge methods: `"merge"` (merge commit), `"squash"`, `"rebase"`
341
-
342
- ### Enable Auto-Merge (curl)
343
-
344
- ```bash
345
- # Auto-merge requires the repo to have it enabled in settings.
346
- # This uses the GraphQL API since REST doesn't support auto-merge.
347
- PR_NODE_ID=$(curl -s \
348
- -H "Authorization: token $GITHUB_TOKEN" \
349
- https://api.github.com/repos/$OWNER/$REPO/pulls/$PR_NUMBER \
350
- | python3 -c "import sys,json; print(json.load(sys.stdin)['node_id'])")
351
-
352
- curl -s -X POST \
353
- -H "Authorization: token $GITHUB_TOKEN" \
354
- https://api.github.com/graphql \
355
- -d "{\"query\": \"mutation { enablePullRequestAutoMerge(input: {pullRequestId: \\\"$PR_NODE_ID\\\", mergeMethod: SQUASH}) { clientMutationId } }\"}"
356
- ```
357
-
358
- ## 7. Complete Workflow Example
359
-
360
- ```bash
361
- # 1. Start from clean main
362
- git checkout main && git pull origin main
363
-
364
- # 2. Branch
365
- git checkout -b fix/login-redirect-bug
366
-
367
- # 3. (Agent makes code changes with file tools)
368
-
369
- # 4. Commit
370
- git add src/auth/login.py tests/test_login.py
371
- git commit -m "fix: correct redirect URL after login
372
-
373
- Preserves the ?next= parameter instead of always redirecting to /dashboard."
374
-
375
- # 5. Push
376
- git push -u origin HEAD
377
-
378
- # 6. Create PR (picks gh or curl based on what's available)
379
- # ... (see Section 3)
380
-
381
- # 7. Monitor CI (see Section 4)
382
-
383
- # 8. Merge when green (see Section 6)
384
- ```
385
-
386
- ## Useful PR Commands Reference
387
-
388
- | Action | gh | git + curl |
389
- |--------|-----|-----------|
390
- | List my PRs | `gh pr list --author @me` | `curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$OWNER/$REPO/pulls?state=open"` |
391
- | View PR diff | `gh pr diff` | `git diff main...HEAD` (local) or `curl -H "Accept: application/vnd.github.diff" ...` |
392
- | Add comment | `gh pr comment N --body "..."` | `curl -X POST .../issues/N/comments -d '{"body":"..."}'` |
393
- | Request review | `gh pr edit N --add-reviewer user` | `curl -X POST .../pulls/N/requested_reviewers -d '{"reviewers":["user"]}'` |
394
- | Close PR | `gh pr close N` | `curl -X PATCH .../pulls/N -d '{"state":"closed"}'` |
395
- | Check out someone's PR | `gh pr checkout N` | `git fetch origin pull/N/head:pr-N && git checkout pr-N` |
@@ -1,183 +0,0 @@
1
- # CI Troubleshooting Quick Reference
2
-
3
- Common CI failure patterns and how to diagnose them from the logs.
4
-
5
- ## Reading CI Logs
6
-
7
- ```bash
8
- # With gh
9
- gh run view <RUN_ID> --log-failed
10
-
11
- # With curl — download and extract
12
- curl -sL -H "Authorization: token $GITHUB_TOKEN" \
13
- https://api.github.com/repos/$GH_OWNER/$GH_REPO/actions/runs/<RUN_ID>/logs \
14
- -o /tmp/ci-logs.zip && unzip -o /tmp/ci-logs.zip -d /tmp/ci-logs
15
- ```
16
-
17
- ## Common Failure Patterns
18
-
19
- ### Test Failures
20
-
21
- **Signatures in logs:**
22
- ```
23
- FAILED tests/test_foo.py::test_bar - AssertionError
24
- E assert 42 == 43
25
- ERROR tests/test_foo.py - ModuleNotFoundError
26
- ```
27
-
28
- **Diagnosis:**
29
- 1. Find the test file and line number from the traceback
30
- 2. Use `read_file` to read the failing test
31
- 3. Check if it's a logic error in the code or a stale test assertion
32
- 4. Look for `ModuleNotFoundError` — usually a missing dependency in CI
33
-
34
- **Common fixes:**
35
- - Update assertion to match new expected behavior
36
- - Add missing dependency to requirements.txt / pyproject.toml
37
- - Fix flaky test (add retry, mock external service, fix race condition)
38
-
39
- ---
40
-
41
- ### Lint / Formatting Failures
42
-
43
- **Signatures in logs:**
44
- ```
45
- src/auth.py:45:1: E302 expected 2 blank lines, got 1
46
- src/models.py:12:80: E501 line too long (95 > 88 characters)
47
- error: would reformat src/utils.py
48
- ```
49
-
50
- **Diagnosis:**
51
- 1. Read the specific file:line numbers mentioned
52
- 2. Check which linter is complaining (flake8, ruff, black, isort, mypy)
53
-
54
- **Common fixes:**
55
- - Run the formatter locally: `black .`, `isort .`, `ruff check --fix .`
56
- - Fix the specific style violation by editing the file
57
- - If using `patch`, make sure to match existing indentation style
58
-
59
- ---
60
-
61
- ### Type Check Failures (mypy / pyright)
62
-
63
- **Signatures in logs:**
64
- ```
65
- src/api.py:23: error: Argument 1 to "process" has incompatible type "str"; expected "int"
66
- src/models.py:45: error: Missing return statement
67
- ```
68
-
69
- **Diagnosis:**
70
- 1. Read the file at the mentioned line
71
- 2. Check the function signature and what's being passed
72
-
73
- **Common fixes:**
74
- - Add type cast or conversion
75
- - Fix the function signature
76
- - Add `# type: ignore` comment as last resort (with explanation)
77
-
78
- ---
79
-
80
- ### Build / Compilation Failures
81
-
82
- **Signatures in logs:**
83
- ```
84
- ModuleNotFoundError: No module named 'some_package'
85
- ERROR: Could not find a version that satisfies the requirement foo==1.2.3
86
- npm ERR! Could not resolve dependency
87
- ```
88
-
89
- **Diagnosis:**
90
- 1. Check requirements.txt / package.json for the missing or incompatible dependency
91
- 2. Compare local vs CI Python/Node version
92
-
93
- **Common fixes:**
94
- - Add missing dependency to requirements file
95
- - Pin compatible version
96
- - Update lockfile (`pip freeze`, `npm install`)
97
-
98
- ---
99
-
100
- ### Permission / Auth Failures
101
-
102
- **Signatures in logs:**
103
- ```
104
- fatal: could not read Username for 'https://github.com': No such device or address
105
- Error: Resource not accessible by integration
106
- 403 Forbidden
107
- ```
108
-
109
- **Diagnosis:**
110
- 1. Check if the workflow needs special permissions (token scopes)
111
- 2. Check if secrets are configured (missing `GITHUB_TOKEN` or custom secrets)
112
-
113
- **Common fixes:**
114
- - Add `permissions:` block to workflow YAML
115
- - Verify secrets exist: `gh secret list` or check repo settings
116
- - For fork PRs: some secrets aren't available by design
117
-
118
- ---
119
-
120
- ### Timeout Failures
121
-
122
- **Signatures in logs:**
123
- ```
124
- Error: The operation was canceled.
125
- The job running on runner ... has exceeded the maximum execution time
126
- ```
127
-
128
- **Diagnosis:**
129
- 1. Check which step timed out
130
- 2. Look for infinite loops, hung processes, or slow network calls
131
-
132
- **Common fixes:**
133
- - Add timeout to the specific step: `timeout-minutes: 10`
134
- - Fix the underlying performance issue
135
- - Split into parallel jobs
136
-
137
- ---
138
-
139
- ### Docker / Container Failures
140
-
141
- **Signatures in logs:**
142
- ```
143
- docker: Error response from daemon
144
- failed to solve: ... not found
145
- COPY failed: file not found in build context
146
- ```
147
-
148
- **Diagnosis:**
149
- 1. Check Dockerfile for the failing step
150
- 2. Verify the referenced files exist in the repo
151
-
152
- **Common fixes:**
153
- - Fix path in COPY/ADD command
154
- - Update base image tag
155
- - Add missing file to `.dockerignore` exclusion or remove from it
156
-
157
- ---
158
-
159
- ## Auto-Fix Decision Tree
160
-
161
- ```
162
- CI Failed
163
- ├── Test failure
164
- │ ├── Assertion mismatch → update test or fix logic
165
- │ └── Import/module error → add dependency
166
- ├── Lint failure → run formatter, fix style
167
- ├── Type error → fix types
168
- ├── Build failure
169
- │ ├── Missing dep → add to requirements
170
- │ └── Version conflict → update pins
171
- ├── Permission error → update workflow permissions (needs user)
172
- └── Timeout → investigate perf (may need user input)
173
- ```
174
-
175
- ## Re-running After Fix
176
-
177
- ```bash
178
- git add <fixed_files> && git commit -m "fix: resolve CI failure" && git push
179
-
180
- # Then monitor
181
- gh pr checks --watch 2>/dev/null || \
182
- echo "Poll with: curl -s -H 'Authorization: token ...' https://api.github.com/repos/.../commits/$(git rev-parse HEAD)/status"
183
- ```
@@ -1,71 +0,0 @@
1
- # Conventional Commits Quick Reference
2
-
3
- Format: `type(scope): description`
4
-
5
- ## Types
6
-
7
- | Type | When to use | Example |
8
- |------|------------|---------|
9
- | `feat` | New feature or capability | `feat(auth): add OAuth2 login flow` |
10
- | `fix` | Bug fix | `fix(api): handle null response from /users endpoint` |
11
- | `refactor` | Code restructuring, no behavior change | `refactor(db): extract query builder into separate module` |
12
- | `docs` | Documentation only | `docs: update API usage examples in README` |
13
- | `test` | Adding or updating tests | `test(auth): add integration tests for token refresh` |
14
- | `ci` | CI/CD configuration | `ci: add Python 3.12 to test matrix` |
15
- | `chore` | Maintenance, dependencies, tooling | `chore: upgrade pytest to 8.x` |
16
- | `perf` | Performance improvement | `perf(search): add index on users.email column` |
17
- | `style` | Formatting, whitespace, semicolons | `style: run black formatter on src/` |
18
- | `build` | Build system or external deps | `build: switch from setuptools to hatch` |
19
- | `revert` | Reverts a previous commit | `revert: revert "feat(auth): add OAuth2 login flow"` |
20
-
21
- ## Scope (optional)
22
-
23
- Short identifier for the area of the codebase: `auth`, `api`, `db`, `ui`, `cli`, etc.
24
-
25
- ## Breaking Changes
26
-
27
- Add `!` after type or `BREAKING CHANGE:` in footer:
28
-
29
- ```
30
- feat(api)!: change authentication to use bearer tokens
31
-
32
- BREAKING CHANGE: API endpoints now require Bearer token instead of API key header.
33
- Migration guide: https://docs.example.com/migrate-auth
34
- ```
35
-
36
- ## Multi-line Body
37
-
38
- Wrap at 72 characters. Use bullet points for multiple changes:
39
-
40
- ```
41
- feat(auth): add JWT-based user authentication
42
-
43
- - Add login/register endpoints with input validation
44
- - Add User model with argon2 password hashing
45
- - Add auth middleware for protected routes
46
- - Add token refresh endpoint with rotation
47
-
48
- Closes #42
49
- ```
50
-
51
- ## Linking Issues
52
-
53
- In the commit body or footer:
54
-
55
- ```
56
- Closes #42 ← closes the issue when merged
57
- Fixes #42 ← same effect
58
- Refs #42 ← references without closing
59
- Co-authored-by: Name <email>
60
- ```
61
-
62
- ## Quick Decision Guide
63
-
64
- - Added something new? → `feat`
65
- - Something was broken and you fixed it? → `fix`
66
- - Changed how code is organized but not what it does? → `refactor`
67
- - Only touched tests? → `test`
68
- - Only touched docs? → `docs`
69
- - Updated CI/CD pipelines? → `ci`
70
- - Updated dependencies or tooling? → `chore`
71
- - Made something faster? → `perf`
@@ -1,35 +0,0 @@
1
- ## Bug Description
2
-
3
- <!-- What was happening? -->
4
-
5
- Fixes #
6
-
7
- ## Root Cause
8
-
9
- <!-- What was causing the bug? -->
10
-
11
- ## Fix
12
-
13
- <!-- What does this PR change to fix it? -->
14
-
15
- -
16
-
17
- ## How to Verify
18
-
19
- <!-- Steps a reviewer can follow to confirm the fix -->
20
-
21
- 1.
22
- 2.
23
- 3.
24
-
25
- ## Test Plan
26
-
27
- - [ ] Added regression test for this bug
28
- - [ ] Existing tests still pass
29
- - [ ] Manual verification of the fix
30
-
31
- ## Risk Assessment
32
-
33
- <!-- Could this fix break anything else? What's the blast radius? -->
34
-
35
- Low / Medium / High — <!-- explanation -->