lastlight 0.1.15 → 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 +377 -432
  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 +30 -1
  272. package/dist/setup.js +241 -25
  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 +17 -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,6 +1,6 @@
1
- import type { ExecutorConfig } from "../engine/executor.js";
1
+ import type { ExecutorConfig } from "../engine/profiles.js";
2
2
  import type { StateDb } from "../state/db.js";
3
- import type { ModelConfig } from "../config.js";
3
+ import type { ModelConfig, VariantConfig } from "../config.js";
4
4
  import { type ApprovalGateConfig, type RunnerCallbacks, type WorkflowResult } from "./runner.js";
5
5
  /**
6
6
  * Lightweight invocation request for any agent workflow. The runner handles
@@ -39,7 +39,71 @@ export interface SimpleWorkflowRequest {
39
39
  * pr-fix workflow's failedChecks/branch/prNumber payload.
40
40
  */
41
41
  extra?: Record<string, unknown>;
42
+ /**
43
+ * When set, the harness pre-clones the repo at this branch into the
44
+ * sandbox workspace before the agent starts. Used by pr-review /
45
+ * pr-fix so the agent enters a workspace already checked out at the
46
+ * PR's head ref — saves a redundant `clone_repo` call inside the
47
+ * session.
48
+ */
49
+ prePopulateBranch?: string;
42
50
  }
51
+ /**
52
+ * Workflows whose workspace is keyed by **(repo, PR)** rather than per-run.
53
+ * For these the taskId drops the run-id suffix so re-reviews of the same PR
54
+ * (push → `synchronize`, cron PR-review fanout) reuse one sandbox dir — a
55
+ * warm `node_modules` + an incremental `git fetch` instead of a fresh
56
+ * 1.3G clone + full install each time, and N dirs/PR collapse to 1 (issue
57
+ * #107, cutting the #106 churn at its source). Concurrency is held off by
58
+ * the dispatcher's `isRunning(skill, triggerId)` guard plus
59
+ * `runs.getByTrigger` reuse — two runs never share the dir live; the
60
+ * cross-run refresh in `prePopulateWorkspace` resets it cleanly between them.
61
+ * `build` is excluded — it creates a new branch per run and must not reuse.
62
+ */
63
+ export declare const PER_TARGET_REUSE_WORKFLOWS: Set<string>;
64
+ /**
65
+ * Workflows that synthesize their own `lastlight/N-slug` branch (which doesn't
66
+ * exist on the remote at dispatch time) yet should still pre-populate the
67
+ * sandbox: the agent's cwd becomes the repo root (no `git clone`/`cd`), and —
68
+ * for the read-only `verify`/`qa-test` runs — server-mode artifacts the agent
69
+ * writes to `.lastlight/<key>/` (e.g. browser-QA screenshots) land where
70
+ * `serverArtifacts()` harvests them instead of being orphaned a level up.
71
+ * `build` was the original member; verify/qa-test were added for the harvest
72
+ * fix, and `demo` for the same reason (its `demo.mp4` is written under
73
+ * `.lastlight/<key>/` and harvested into the Artifacts store). The dispatcher
74
+ * leaves `prePopulateBranch` unset for all of them; the missing-branch fallback
75
+ * in `prePopulateWorkspace` clones the default branch.
76
+ */
77
+ export declare const PREPOPULATE_SYNTH_WORKFLOWS: Set<string>;
78
+ export declare function workflowScopedTaskId(repo: string, number: number | undefined, workflowName: string, workflowId: string): string;
79
+ /**
80
+ * Resolve the `{{branch}}` template var (and the matching sandbox
81
+ * `prePopulateBranch`) for a dispatch.
82
+ *
83
+ * The branch a build-style run creates and pushes is `lastlight/N-<title-slug>`,
84
+ * derived from the issue title at **first** dispatch. Every later re-entry of the
85
+ * same run — an approval-gate resume, a retry — comes through `runSimpleWorkflow`
86
+ * again, but the resume event carries an **empty** issue title, so a naive
87
+ * recompute collapses to the `lastlight/N-issue-N` fallback. That drifted name
88
+ * is harmless for phases that `git push origin HEAD` (the persisted workspace is
89
+ * still on the real branch) but fatal for the PR phase, whose prompt feeds
90
+ * `{{branch}}` straight into `github_create_pull_request`'s `head` — GitHub 422s
91
+ * because the fallback ref was never pushed.
92
+ *
93
+ * So when reusing an existing run we pin to the branch stored on the run row at
94
+ * creation, mirroring `resume.ts`'s `stored.branch ?? …` precedence. `stored`
95
+ * is `undefined` for a fresh run (no row yet).
96
+ */
97
+ export declare function resolveRunBranch(args: {
98
+ stored?: Record<string, unknown>;
99
+ requestPrePopulateBranch?: string;
100
+ issueNumber?: number;
101
+ issueTitle?: string;
102
+ workflowName: string;
103
+ }): {
104
+ branch: string;
105
+ prePopulateBranch: string | undefined;
106
+ };
43
107
  /**
44
108
  * Run a named agent workflow against a target.
45
109
  *
@@ -48,4 +112,4 @@ export interface SimpleWorkflowRequest {
48
112
  * phase — including the paused/approved/rejected paths. Otherwise we create a
49
113
  * fresh row so the dashboard sees it immediately.
50
114
  */
51
- export declare function runSimpleWorkflow(workflowName: string, request: SimpleWorkflowRequest, config: ExecutorConfig, callbacks: RunnerCallbacks, db: StateDb, models?: ModelConfig, approvalConfig?: ApprovalGateConfig, bootstrapLabel?: string): Promise<WorkflowResult>;
115
+ export declare function runSimpleWorkflow(workflowName: string, request: SimpleWorkflowRequest, config: ExecutorConfig, callbacks: RunnerCallbacks, db: StateDb, models?: ModelConfig, approvalConfig?: ApprovalGateConfig, bootstrapLabel?: string, variants?: VariantConfig): Promise<WorkflowResult>;
@@ -1,13 +1,86 @@
1
1
  import { randomUUID } from "crypto";
2
2
  import { getWorkflow } from "./loader.js";
3
- import { runWorkflow, nextPhaseAfter, } from "./runner.js";
3
+ import { runWorkflow, } from "./runner.js";
4
+ import { PhaseRef } from "./phase-ref.js";
4
5
  import { slugify } from "./templates.js";
5
- function workflowScopedTaskId(repo, number, workflowName, workflowId) {
6
+ import { wrapUntrusted } from "../engine/screen.js";
7
+ import { buildProgressModel, runDashboardUrl } from "../notify/model.js";
8
+ import { buildAssetIssueKey } from "../state/build-assets.js";
9
+ /**
10
+ * Workflows whose workspace is keyed by **(repo, PR)** rather than per-run.
11
+ * For these the taskId drops the run-id suffix so re-reviews of the same PR
12
+ * (push → `synchronize`, cron PR-review fanout) reuse one sandbox dir — a
13
+ * warm `node_modules` + an incremental `git fetch` instead of a fresh
14
+ * 1.3G clone + full install each time, and N dirs/PR collapse to 1 (issue
15
+ * #107, cutting the #106 churn at its source). Concurrency is held off by
16
+ * the dispatcher's `isRunning(skill, triggerId)` guard plus
17
+ * `runs.getByTrigger` reuse — two runs never share the dir live; the
18
+ * cross-run refresh in `prePopulateWorkspace` resets it cleanly between them.
19
+ * `build` is excluded — it creates a new branch per run and must not reuse.
20
+ */
21
+ export const PER_TARGET_REUSE_WORKFLOWS = new Set(["pr-review", "pr-fix"]);
22
+ /**
23
+ * Workflows that synthesize their own `lastlight/N-slug` branch (which doesn't
24
+ * exist on the remote at dispatch time) yet should still pre-populate the
25
+ * sandbox: the agent's cwd becomes the repo root (no `git clone`/`cd`), and —
26
+ * for the read-only `verify`/`qa-test` runs — server-mode artifacts the agent
27
+ * writes to `.lastlight/<key>/` (e.g. browser-QA screenshots) land where
28
+ * `serverArtifacts()` harvests them instead of being orphaned a level up.
29
+ * `build` was the original member; verify/qa-test were added for the harvest
30
+ * fix, and `demo` for the same reason (its `demo.mp4` is written under
31
+ * `.lastlight/<key>/` and harvested into the Artifacts store). The dispatcher
32
+ * leaves `prePopulateBranch` unset for all of them; the missing-branch fallback
33
+ * in `prePopulateWorkspace` clones the default branch.
34
+ */
35
+ export const PREPOPULATE_SYNTH_WORKFLOWS = new Set(["build", "verify", "qa-test", "demo"]);
36
+ export function workflowScopedTaskId(repo, number, workflowName, workflowId) {
37
+ // Reusable per-PR workspaces are keyed by (repo, PR) only — no run suffix.
38
+ if (number !== undefined && PER_TARGET_REUSE_WORKFLOWS.has(workflowName)) {
39
+ return `${repo}-${number}-${workflowName}`;
40
+ }
6
41
  const suffix = workflowId.slice(0, 8);
7
42
  return number !== undefined
8
43
  ? `${repo}-${number}-${workflowName}-${suffix}`
9
44
  : `${repo}-${workflowName}-${suffix}`;
10
45
  }
46
+ /**
47
+ * Resolve the `{{branch}}` template var (and the matching sandbox
48
+ * `prePopulateBranch`) for a dispatch.
49
+ *
50
+ * The branch a build-style run creates and pushes is `lastlight/N-<title-slug>`,
51
+ * derived from the issue title at **first** dispatch. Every later re-entry of the
52
+ * same run — an approval-gate resume, a retry — comes through `runSimpleWorkflow`
53
+ * again, but the resume event carries an **empty** issue title, so a naive
54
+ * recompute collapses to the `lastlight/N-issue-N` fallback. That drifted name
55
+ * is harmless for phases that `git push origin HEAD` (the persisted workspace is
56
+ * still on the real branch) but fatal for the PR phase, whose prompt feeds
57
+ * `{{branch}}` straight into `github_create_pull_request`'s `head` — GitHub 422s
58
+ * because the fallback ref was never pushed.
59
+ *
60
+ * So when reusing an existing run we pin to the branch stored on the run row at
61
+ * creation, mirroring `resume.ts`'s `stored.branch ?? …` precedence. `stored`
62
+ * is `undefined` for a fresh run (no row yet).
63
+ */
64
+ export function resolveRunBranch(args) {
65
+ const { stored, requestPrePopulateBranch, issueNumber, issueTitle, workflowName } = args;
66
+ const storedBranch = typeof stored?.branch === "string" && stored.branch ? stored.branch : undefined;
67
+ const storedPrePopulate = typeof stored?.prePopulateBranch === "string" && stored.prePopulateBranch
68
+ ? stored.prePopulateBranch
69
+ : undefined;
70
+ const branch = storedBranch
71
+ ?? requestPrePopulateBranch
72
+ ?? (issueNumber !== undefined
73
+ ? `lastlight/${issueNumber}-${slugify(issueTitle || `issue-${issueNumber}`)}`
74
+ : `lastlight/${workflowName}`);
75
+ // Pre-populate (clone into the sandbox, cwd = repo root) for the workflows in
76
+ // PREPOPULATE_SYNTH_WORKFLOWS even though they synthesize a not-yet-pushed
77
+ // branch — see that const's doc comment for why (the verify/qa-test harvest
78
+ // fix in particular).
79
+ const prePopulateBranch = storedPrePopulate
80
+ ?? requestPrePopulateBranch
81
+ ?? (PREPOPULATE_SYNTH_WORKFLOWS.has(workflowName) ? branch : undefined);
82
+ return { branch, prePopulateBranch };
83
+ }
11
84
  /**
12
85
  * Run a named agent workflow against a target.
13
86
  *
@@ -16,7 +89,15 @@ function workflowScopedTaskId(repo, number, workflowName, workflowId) {
16
89
  * phase — including the paused/approved/rejected paths. Otherwise we create a
17
90
  * fresh row so the dashboard sees it immediately.
18
91
  */
19
- export async function runSimpleWorkflow(workflowName, request, config, callbacks, db, models, approvalConfig, bootstrapLabel = "lastlight:bootstrap") {
92
+ export async function runSimpleWorkflow(workflowName, request, config, callbacks, db, models, approvalConfig, bootstrapLabel = "lastlight:bootstrap", variants) {
93
+ // Kill switch — if an admin has disabled this workflow in the dashboard,
94
+ // skip every trigger source (cron, webhooks, mentions, Slack) without
95
+ // creating a workflow_runs row. Returning success=true keeps callers
96
+ // (router, cron tick, etc.) from treating this as an error.
97
+ if (!db.isWorkflowEnabled(workflowName)) {
98
+ console.log(`[workflow] skipped "${workflowName}" — disabled in admin dashboard`);
99
+ return { success: true, phases: [] };
100
+ }
20
101
  const definition = getWorkflow(workflowName);
21
102
  const { owner, repo, issueNumber, prNumber } = request;
22
103
  const notify = callbacks.postComment || (async () => { });
@@ -28,14 +109,26 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
28
109
  ?? (number !== undefined
29
110
  ? `${owner}/${repo}#${number}`
30
111
  : `${owner}/${repo}::${workflowName}`);
31
- const branch = number !== undefined
32
- ? `lastlight/${number}-${slugify(request.issueTitle || `issue-${number}`)}`
33
- : `lastlight/${workflowName}`;
112
+ // When the dispatcher passes `prePopulateBranch` (set for pr-review /
113
+ // pr-fix from the actual PR head ref), use that as the `branch` template
114
+ // var too — the agent's workspace is going to be checked out at that
115
+ // ref, so the prompt should reflect reality rather than a lastlight/N-slug
116
+ // name that doesn't exist. Build-style workflows still get the synthesized
117
+ // lastlight/N-slug branch they create themselves.
118
+ // `let`, not `const`: when we reuse an existing run below the resolution is
119
+ // redone with the run's stored context so the branch can't drift off the
120
+ // already-pushed name on resume — see `resolveRunBranch`.
121
+ let { branch, prePopulateBranch: effectivePrePopulateBranch } = resolveRunBranch({
122
+ requestPrePopulateBranch: request.prePopulateBranch,
123
+ issueNumber: number,
124
+ issueTitle: request.issueTitle,
125
+ workflowName,
126
+ });
34
127
  // ── Resume handling ────────────────────────────────────────────────────────
35
128
  //
36
129
  // If a workflow_run already exists for this trigger, reuse its id. The
37
- // runner's `nextPhaseAfter(definition, currentPhase)` derives the resume
38
- // point — no per-workflow branching needed.
130
+ // runner re-runs from the top and the executions ledger (`shouldRunPhase`)
131
+ // skips already-completed phases — no per-workflow branching needed.
39
132
  // Only reuse a workflow_run row when the existing run is still live
40
133
  // (running/paused). `getWorkflowRunByTrigger` already filters out
41
134
  // completed rows — a fresh re-trigger for a succeeded run falls through
@@ -44,7 +137,7 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
44
137
  let workflowId;
45
138
  let taskId;
46
139
  let issueDir;
47
- const existingRun = db.getWorkflowRunByTrigger(triggerId);
140
+ const existingRun = db.runs.getByTrigger(triggerId);
48
141
  if (existingRun && existingRun.workflowName === workflowName) {
49
142
  workflowId = existingRun.id;
50
143
  const stored = (existingRun.context || {});
@@ -53,9 +146,20 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
53
146
  // Recover issueDir from stored context so resumed runs use the same
54
147
  // workspace path as the original.
55
148
  issueDir = stored.issueDir
56
- || (number !== undefined
57
- ? `.lastlight/issue-${number}`
58
- : `.lastlight/${workflowName}-${workflowId.slice(0, 8)}`);
149
+ || `.lastlight/${buildAssetIssueKey(workflowName, number, workflowId)}`;
150
+ // Re-resolve the branch with the run's stored context. A resume event (e.g.
151
+ // an approval response) carries an empty issue title, so the fresh
152
+ // computation above drifts to the `lastlight/N-issue-N` fallback — but the
153
+ // executor already pushed under the original title-slug name. Pinning to the
154
+ // stored branch keeps every re-entered phase's `{{branch}}` correct, most
155
+ // critically the PR phase's `head:` ref (otherwise GitHub 422s on create).
156
+ ({ branch, prePopulateBranch: effectivePrePopulateBranch } = resolveRunBranch({
157
+ stored,
158
+ requestPrePopulateBranch: request.prePopulateBranch,
159
+ issueNumber: number,
160
+ issueTitle: request.issueTitle,
161
+ workflowName,
162
+ }));
59
163
  const handled = await handleExistingRun(existingRun, definition, notify, db);
60
164
  if (handled)
61
165
  return handled;
@@ -66,10 +170,8 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
66
170
  // Issue-scoped workflows share a dir by issue number; non-issue
67
171
  // workflows (explore, health, etc.) get a run-scoped dir so
68
172
  // concurrent sessions never overlap.
69
- issueDir = number !== undefined
70
- ? `.lastlight/issue-${number}`
71
- : `.lastlight/${workflowName}-${workflowId.slice(0, 8)}`;
72
- db.createWorkflowRun({
173
+ issueDir = `.lastlight/${buildAssetIssueKey(workflowName, number, workflowId)}`;
174
+ db.runs.createRun({
73
175
  id: workflowId,
74
176
  workflowName,
75
177
  triggerId,
@@ -83,16 +185,80 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
83
185
  branch,
84
186
  taskId,
85
187
  issueDir,
188
+ prePopulateBranch: effectivePrePopulateBranch,
86
189
  models: models,
190
+ variants: variants,
87
191
  ...request.extra,
88
192
  },
89
193
  startedAt: new Date().toISOString(),
90
194
  });
91
195
  console.log(`[simple] Created workflow run ${workflowId} (${workflowName})`);
92
196
  }
197
+ // Surface the run id to the dispatch layer as soon as it's known (either
198
+ // fresh or reused). Fire-and-forget so a slow/broken downstream hook can't
199
+ // stall the workflow.
200
+ if (callbacks.onRunStart) {
201
+ callbacks.onRunStart(workflowId).catch((err) => {
202
+ const msg = err instanceof Error ? err.message : String(err);
203
+ console.warn(`[simple] onRunStart callback threw: ${msg}`);
204
+ });
205
+ }
206
+ // ── Seed the in-place progress checklist ───────────────────────────────────
207
+ //
208
+ // For workflows that opt into `status_checklist`, build the task-list model
209
+ // from the definition's phases and publish the initial surface (one GitHub
210
+ // comment / one Slack message that subsequent phases edit in place). On a
211
+ // resumed run we re-seed the SAME surface (the transport re-attaches to the
212
+ // stored comment id / message ts) and mark already-completed phases done.
213
+ if (callbacks.reporter && definition.status_checklist) {
214
+ const completed = new Set((existingRun?.phaseHistory ?? []).map((h) => h.phase));
215
+ const model = buildProgressModel(definition, {
216
+ workflowName,
217
+ number,
218
+ issueTitle: request.issueTitle,
219
+ owner,
220
+ repo,
221
+ branch,
222
+ completed,
223
+ runUrl: runDashboardUrl(callbacks.publicUrl, workflowId, workflowName),
224
+ });
225
+ await callbacks.reporter.start(model).catch((err) => {
226
+ const msg = err instanceof Error ? err.message : String(err);
227
+ console.warn(`[simple] reporter.start threw: ${msg}`);
228
+ });
229
+ }
93
230
  // ── Build template context ─────────────────────────────────────────────────
94
- const contextSnapshot = request.issueBody
95
- ? `Task: ${request.commentBody || request.issueBody}\nIssue: ${owner}/${repo}${issueNumber ? `#${issueNumber}` : ""} ${request.issueTitle || ""}\nRequested by: ${request.sender}\nBranch: ${branch}`
231
+ //
232
+ // The context snapshot is the agent's primary view of the task. All
233
+ // user-provided text is wrapped in <<<USER_CONTENT_UNTRUSTED>>> markers so
234
+ // the agent — anchored by agent-context/security.md — treats them as data
235
+ // rather than instructions. The trigger metadata (sender, branch, issue
236
+ // ref) sits outside the wrappers so identity is established out-of-band.
237
+ //
238
+ // For build/pr-fix/explore workflows the dispatch path (src/index.ts)
239
+ // pre-fetches the real issue body + full comment thread and stitches them
240
+ // into request.extra.combinedContext (one screening call). For everything
241
+ // else we fall back to whatever the envelope carried.
242
+ const combinedContext = request.extra?.combinedContext || "";
243
+ const issueRef = `${owner}/${repo}${issueNumber ? `#${issueNumber}` : ""}`;
244
+ const hasAnyUserContent = !!(combinedContext || request.issueBody || request.commentBody);
245
+ const contextSnapshot = hasAnyUserContent
246
+ ? [
247
+ `Repo: ${issueRef}`,
248
+ `Issue title: ${request.issueTitle || "(none)"}`,
249
+ request.commentBody
250
+ ? `Triggering comment:\n${wrapUntrusted(request.commentBody, { source: "github-comment", author: request.sender })}`
251
+ : "",
252
+ `Requested by: ${request.sender}`,
253
+ `Branch: ${branch}`,
254
+ combinedContext
255
+ ? `Issue body and full thread:\n${wrapUntrusted(combinedContext, { source: "github-issue-thread" })}`
256
+ : request.issueBody
257
+ ? `Issue body:\n${wrapUntrusted(request.issueBody, { source: "github-issue-body" })}`
258
+ : "",
259
+ ]
260
+ .filter(Boolean)
261
+ .join("\n\n")
96
262
  : "";
97
263
  const ctx = {
98
264
  owner,
@@ -106,9 +272,33 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
106
272
  branch,
107
273
  taskId,
108
274
  issueDir,
275
+ // True only in server mode — prompts gate their `git add .lastlight/ &&
276
+ // commit` behind `{{#if !externalizeArtifacts}}` so the handoff docs are
277
+ // never committed into the target repo (they're harvested to the server
278
+ // store instead). Absent/false ⇒ repo behaviour (commit the docs).
279
+ externalizeArtifacts: config.buildAssets === "server",
280
+ // Dashboard base URL for the {{artifactUrl}} helper (server-mode doc links).
281
+ publicUrl: callbacks.publicUrl,
282
+ // Public, unauthenticated, image-only base URL for inline screenshot embeds
283
+ // in the browser-QA comment (so GitHub's image proxy can fetch them without
284
+ // a login). The agent appends `/<name>.png` per screenshot it saves. Empty
285
+ // when no PUBLIC_URL is configured — the prompt then falls back to
286
+ // filename-only references via `{{#if !artifactBaseUrl}}`. issueKey is
287
+ // issueDir minus the `.lastlight/` prefix.
288
+ artifactBaseUrl: callbacks.publicUrl
289
+ ? `${String(callbacks.publicUrl).replace(/\/+$/, "")}/admin/api/public/artifacts/${owner}/${repo}/${issueDir.replace(/^\.lastlight\//, "")}`
290
+ : "",
109
291
  bootstrapLabel,
110
292
  contextSnapshot,
293
+ // Forwarded to the executor (via gitSandboxAccessForWorkflow) so the
294
+ // harness pre-clones this branch into the sandbox workspace before
295
+ // the agent starts. Stored on the workflow_run row above; also lives
296
+ // on ctx so the runner can read it without an extra DB lookup.
297
+ prePopulateBranch: effectivePrePopulateBranch,
111
298
  models: models,
299
+ // Reasoning-effort overrides per phase. Empty/undefined entries skip
300
+ // the --variant flag (model uses its default effort).
301
+ variants: variants,
112
302
  // Slack-initiated runs need the runner to pause/resume on the thread id,
113
303
  // not on owner/repo#N. Passing the override through here keeps the
114
304
  // runner's triggerId derivation in one place.
@@ -118,19 +308,36 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
118
308
  // them directly via {{failedChecks}} etc.
119
309
  ...(request.extra || {}),
120
310
  };
311
+ // In server mode, tag the run's config with its artifact identity so the
312
+ // executor's stage-in/harvest seam can locate this run's docs in the store
313
+ // at `<buildAssetsDir>/<owner>/<repo>/<issueKey>/`. issueKey is issueDir
314
+ // without the `.lastlight/` prefix, so it tracks however issueDir was formed
315
+ // (fresh derivation or recovered-from-context on resume).
316
+ const runConfig = config.buildAssets === "server"
317
+ ? {
318
+ ...config,
319
+ buildAssetsKey: {
320
+ owner,
321
+ repo,
322
+ issueKey: issueDir.replace(/^\.lastlight\//, ""),
323
+ },
324
+ }
325
+ : config;
121
326
  try {
122
- const result = await runWorkflow(definition, ctx, config, callbacks, db, models, approvalConfig, workflowId);
327
+ const result = await runWorkflow(definition, ctx, runConfig, callbacks, db, models, approvalConfig, workflowId, variants);
123
328
  if (result.success && !result.paused) {
124
- db.finishWorkflowRun(workflowId, "succeeded");
329
+ db.runs.finishRun(workflowId, "succeeded");
125
330
  }
126
331
  else if (!result.success && !result.paused) {
127
- db.finishWorkflowRun(workflowId, "failed", result.phases.find((p) => !p.success)?.error || "workflow failed");
332
+ db.runs.finishRun(workflowId, "failed", {
333
+ error: result.phases.find((p) => !p.success)?.error || "workflow failed",
334
+ });
128
335
  }
129
336
  return result;
130
337
  }
131
338
  catch (err) {
132
339
  const msg = err instanceof Error ? err.message : String(err);
133
- db.finishWorkflowRun(workflowId, "failed", msg);
340
+ db.runs.finishRun(workflowId, "failed", { error: msg });
134
341
  throw err;
135
342
  }
136
343
  }
@@ -140,53 +347,31 @@ export async function runSimpleWorkflow(workflowName, request, config, callbacks
140
347
  * paused), or `null` to continue into `runWorkflow` for normal resume.
141
348
  */
142
349
  async function handleExistingRun(run, definition, notify, db) {
143
- // Workflow already completed (currentPhase points past the last real phase
144
- // e.g. a set_phase terminal marker like "complete"). Don't re-run.
145
- // "waiting_approval" is a synthetic phase set when the runner pauses at a
146
- // gate it's NOT a terminal marker, so exclude it from this check.
350
+ // Workflow already completed: currentPhase is a terminal set_phase marker
351
+ // (e.g. "complete") — i.e. not a declared phase, not a generated loop label
352
+ // (`*_fix_N` / `*_recheck_N` / `*_iter_N`), and not the synthetic
353
+ // "waiting_approval" pause marker. Don't re-run.
147
354
  if (run.currentPhase &&
148
355
  run.currentPhase !== "waiting_approval" &&
149
- nextPhaseAfter(definition, run.currentPhase) === null) {
150
- const exactIdx = definition.phases.findIndex((p) => p.name === run.currentPhase);
151
- if (exactIdx === -1) {
152
- await notify(`Workflow \`${run.workflowName}\` is already complete for this trigger.`);
153
- return {
154
- success: true,
155
- phases: [{ phase: "resume", success: true, output: "Already complete" }],
156
- };
157
- }
356
+ !definition.phases.some((p) => p.name === run.currentPhase) &&
357
+ PhaseRef.parse(run.currentPhase).kind === "phase") {
358
+ await notify(`Workflow \`${run.workflowName}\` is already complete for this trigger.`);
359
+ return {
360
+ success: true,
361
+ phases: [{ phase: "resume", success: true, output: "Already complete" }],
362
+ };
158
363
  }
159
364
  // Paused awaiting approval — see if a human has responded.
160
365
  if (run.status === "paused" && run.currentPhase === "waiting_approval") {
161
- const pendingApproval = db.getPendingApprovalForWorkflow(run.id);
366
+ const pendingApproval = db.approvals.getPendingForWorkflow(run.id);
162
367
  if (pendingApproval?.status === "approved") {
163
- // Reply gates are a different shape than approve gates: the runner
164
- // needs to RE-ENTER the same phase (to run the next loop iteration)
165
- // rather than skip past it. Find the phase that owns the gate, and
166
- // set currentPhase to the phase BEFORE it so nextPhaseAfter lands
167
- // on the owning phase on resume.
168
- const owningPhase = findPhaseOwningLoopGate(definition, pendingApproval.gate)
169
- ?? findPhaseOwningGate(definition, pendingApproval.gate);
170
- if (owningPhase && pendingApproval.kind === "reply") {
171
- const ownIdx = definition.phases.findIndex((p) => p.name === owningPhase);
172
- const priorPhase = ownIdx > 0 ? definition.phases[ownIdx - 1].name : "";
173
- db.updateWorkflowPhase(run.id, priorPhase || owningPhase, {
174
- phase: priorPhase || owningPhase,
175
- timestamp: new Date().toISOString(),
176
- success: true,
177
- summary: `Resumed after reply on gate: ${pendingApproval.gate}`,
178
- });
179
- }
180
- else if (owningPhase) {
181
- db.updateWorkflowPhase(run.id, owningPhase, {
182
- phase: owningPhase,
183
- timestamp: new Date().toISOString(),
184
- success: true,
185
- summary: `Resumed after gate approval: ${pendingApproval.gate}`,
186
- });
187
- }
368
+ // Resume is ledger-driven: the runner re-runs from the top and every
369
+ // completed phase skips via `shouldRunPhase` (the executions ledger).
370
+ // No currentPhase manipulation is needed for an approve gate the
371
+ // gated phase is already `done` so the runner proceeds past it; for a
372
+ // reply gate the loop node resumes from `scratch.iteration`.
188
373
  console.log(`[simple] ${pendingApproval.kind === "reply" ? "Reply" : "Approval"} received for gate ${pendingApproval.gate} — resuming ${run.workflowName}`);
189
- db.resumeWorkflowRun(run.id);
374
+ db.runs.setRunning(run.id);
190
375
  if (pendingApproval.kind !== "reply") {
191
376
  await notify(`**Approval received** — resuming \`${run.workflowName}\`.`);
192
377
  }
@@ -194,7 +379,7 @@ async function handleExistingRun(run, definition, notify, db) {
194
379
  }
195
380
  else if (pendingApproval?.status === "rejected") {
196
381
  const reason = pendingApproval.response || "no reason given";
197
- db.finishWorkflowRun(run.id, "failed", `Rejected: ${reason}`);
382
+ db.runs.finishRun(run.id, "failed", { error: `Rejected: ${reason}` });
198
383
  await notify(`Workflow \`${run.workflowName}\` was rejected. Reason: ${reason}`);
199
384
  return {
200
385
  success: false,
@@ -210,28 +395,4 @@ async function handleExistingRun(run, definition, notify, db) {
210
395
  console.log(`[simple] Resuming ${run.workflowName} for ${run.triggerId} (last phase: ${run.currentPhase})`);
211
396
  return null;
212
397
  }
213
- /** Walk definition.phases and return the phase that declares this gate. */
214
- function findPhaseOwningGate(definition, gateName) {
215
- for (const p of definition.phases) {
216
- if (p.approval_gate === gateName)
217
- return p.name;
218
- if (p.loop?.approval_gate === gateName)
219
- return p.name;
220
- }
221
- return null;
222
- }
223
- /**
224
- * Generic-loop gates are named `${phaseName}_iter_${N}`, so walk the phases
225
- * with `generic_loop` set and match by prefix. Used for reply-gate resume
226
- * where the gate name isn't declared up front.
227
- */
228
- function findPhaseOwningLoopGate(definition, gateName) {
229
- for (const p of definition.phases) {
230
- if (!p.generic_loop)
231
- continue;
232
- if (gateName.startsWith(`${p.name}_iter_`))
233
- return p.name;
234
- }
235
- return null;
236
- }
237
398
  //# sourceMappingURL=simple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/workflows/simple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/workflows/simple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};