lastlight 0.16.0 → 0.16.1

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 (385) hide show
  1. package/README.md +71 -692
  2. package/dist/cli-config.js.map +1 -0
  3. package/dist/cli-format.js.map +1 -0
  4. package/dist/{cli/cli-server.d.ts → cli-server.d.ts} +26 -1
  5. package/dist/{cli/cli-server.js → cli-server.js} +40 -5
  6. package/dist/cli-server.js.map +1 -0
  7. package/dist/cli-timeline.js.map +1 -0
  8. package/dist/{cli/cli.js → cli.js} +4 -3
  9. package/dist/cli.js.map +1 -0
  10. package/dist/{cli/fork-cli.d.ts → fork-cli.d.ts} +3 -3
  11. package/dist/{cli/fork-cli.js → fork-cli.js} +28 -27
  12. package/dist/fork-cli.js.map +1 -0
  13. package/dist/{cli/oauth-cli.js → oauth-cli.js} +1 -1
  14. package/dist/oauth-cli.js.map +1 -0
  15. package/dist/{cli/setup.js → setup.js} +10 -4
  16. package/dist/setup.js.map +1 -0
  17. package/dist/{cli/skills-install.d.ts → skills-install.d.ts} +6 -0
  18. package/dist/{cli/skills-install.js → skills-install.js} +6 -2
  19. package/dist/skills-install.js.map +1 -0
  20. package/package.json +20 -65
  21. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  22. package/agent-context/rules.md +0 -80
  23. package/agent-context/security.md +0 -69
  24. package/agent-context/soul.md +0 -21
  25. package/config/default.yaml +0 -119
  26. package/deploy/.env.production.example +0 -100
  27. package/deploy/entrypoint.sh +0 -82
  28. package/deploy/native/README.md +0 -160
  29. package/deploy/native/install.sh +0 -110
  30. package/deploy/native/lastlight.env.example +0 -95
  31. package/deploy/native/lastlight.service +0 -50
  32. package/deploy/sandbox-entrypoint.sh +0 -93
  33. package/dist/admin/auth.d.ts +0 -51
  34. package/dist/admin/auth.js +0 -121
  35. package/dist/admin/auth.js.map +0 -1
  36. package/dist/admin/chat-session-reader.d.ts +0 -39
  37. package/dist/admin/chat-session-reader.js +0 -84
  38. package/dist/admin/chat-session-reader.js.map +0 -1
  39. package/dist/admin/docker.d.ts +0 -61
  40. package/dist/admin/docker.js +0 -187
  41. package/dist/admin/docker.js.map +0 -1
  42. package/dist/admin/index.d.ts +0 -9
  43. package/dist/admin/index.js +0 -59
  44. package/dist/admin/index.js.map +0 -1
  45. package/dist/admin/routes.d.ts +0 -81
  46. package/dist/admin/routes.js +0 -1381
  47. package/dist/admin/routes.js.map +0 -1
  48. package/dist/admin/sessions.d.ts +0 -89
  49. package/dist/admin/sessions.js +0 -204
  50. package/dist/admin/sessions.js.map +0 -1
  51. package/dist/admin/tail.d.ts +0 -12
  52. package/dist/admin/tail.js +0 -145
  53. package/dist/admin/tail.js.map +0 -1
  54. package/dist/admin/version.d.ts +0 -22
  55. package/dist/admin/version.js +0 -92
  56. package/dist/admin/version.js.map +0 -1
  57. package/dist/cli/cli-config.js.map +0 -1
  58. package/dist/cli/cli-format.js.map +0 -1
  59. package/dist/cli/cli-server.js.map +0 -1
  60. package/dist/cli/cli-timeline.js.map +0 -1
  61. package/dist/cli/cli.js.map +0 -1
  62. package/dist/cli/fork-cli.js.map +0 -1
  63. package/dist/cli/oauth-cli.js.map +0 -1
  64. package/dist/cli/setup.js.map +0 -1
  65. package/dist/cli/skills-install.js.map +0 -1
  66. package/dist/config/config-resolve.d.ts +0 -28
  67. package/dist/config/config-resolve.js +0 -47
  68. package/dist/config/config-resolve.js.map +0 -1
  69. package/dist/config/config.d.ts +0 -157
  70. package/dist/config/config.js +0 -581
  71. package/dist/config/config.js.map +0 -1
  72. package/dist/config/core-pin.d.ts +0 -16
  73. package/dist/config/core-pin.js +0 -85
  74. package/dist/config/core-pin.js.map +0 -1
  75. package/dist/config/overlay-assets.d.ts +0 -20
  76. package/dist/config/overlay-assets.js +0 -114
  77. package/dist/config/overlay-assets.js.map +0 -1
  78. package/dist/config/overlay-bootstrap.d.ts +0 -44
  79. package/dist/config/overlay-bootstrap.js +0 -304
  80. package/dist/config/overlay-bootstrap.js.map +0 -1
  81. package/dist/connectors/github-webhook.d.ts +0 -45
  82. package/dist/connectors/github-webhook.js +0 -321
  83. package/dist/connectors/github-webhook.js.map +0 -1
  84. package/dist/connectors/index.d.ts +0 -18
  85. package/dist/connectors/index.js +0 -41
  86. package/dist/connectors/index.js.map +0 -1
  87. package/dist/connectors/messaging/base.d.ts +0 -42
  88. package/dist/connectors/messaging/base.js +0 -139
  89. package/dist/connectors/messaging/base.js.map +0 -1
  90. package/dist/connectors/messaging/delivery.d.ts +0 -14
  91. package/dist/connectors/messaging/delivery.js +0 -38
  92. package/dist/connectors/messaging/delivery.js.map +0 -1
  93. package/dist/connectors/messaging/index.d.ts +0 -4
  94. package/dist/connectors/messaging/index.js +0 -4
  95. package/dist/connectors/messaging/index.js.map +0 -1
  96. package/dist/connectors/messaging/session-manager.d.ts +0 -53
  97. package/dist/connectors/messaging/session-manager.js +0 -255
  98. package/dist/connectors/messaging/session-manager.js.map +0 -1
  99. package/dist/connectors/messaging/types.d.ts +0 -58
  100. package/dist/connectors/messaging/types.js +0 -7
  101. package/dist/connectors/messaging/types.js.map +0 -1
  102. package/dist/connectors/slack/connector.d.ts +0 -142
  103. package/dist/connectors/slack/connector.js +0 -494
  104. package/dist/connectors/slack/connector.js.map +0 -1
  105. package/dist/connectors/slack/index.d.ts +0 -2
  106. package/dist/connectors/slack/index.js +0 -3
  107. package/dist/connectors/slack/index.js.map +0 -1
  108. package/dist/connectors/slack/mrkdwn.d.ts +0 -19
  109. package/dist/connectors/slack/mrkdwn.js +0 -240
  110. package/dist/connectors/slack/mrkdwn.js.map +0 -1
  111. package/dist/connectors/types.d.ts +0 -61
  112. package/dist/connectors/types.js +0 -2
  113. package/dist/connectors/types.js.map +0 -1
  114. package/dist/cron/fanout.d.ts +0 -33
  115. package/dist/cron/fanout.js +0 -55
  116. package/dist/cron/fanout.js.map +0 -1
  117. package/dist/cron/jobs.d.ts +0 -18
  118. package/dist/cron/jobs.js +0 -37
  119. package/dist/cron/jobs.js.map +0 -1
  120. package/dist/cron/scheduler.d.ts +0 -45
  121. package/dist/cron/scheduler.js +0 -105
  122. package/dist/cron/scheduler.js.map +0 -1
  123. package/dist/engine/agent-executor.d.ts +0 -34
  124. package/dist/engine/agent-executor.js +0 -246
  125. package/dist/engine/agent-executor.js.map +0 -1
  126. package/dist/engine/chat/chat-runner.d.ts +0 -132
  127. package/dist/engine/chat/chat-runner.js +0 -424
  128. package/dist/engine/chat/chat-runner.js.map +0 -1
  129. package/dist/engine/chat/chat-skills.d.ts +0 -45
  130. package/dist/engine/chat/chat-skills.js +0 -184
  131. package/dist/engine/chat/chat-skills.js.map +0 -1
  132. package/dist/engine/chat/chat.d.ts +0 -54
  133. package/dist/engine/chat/chat.js +0 -316
  134. package/dist/engine/chat/chat.js.map +0 -1
  135. package/dist/engine/chat/message-batcher.d.ts +0 -32
  136. package/dist/engine/chat/message-batcher.js +0 -109
  137. package/dist/engine/chat/message-batcher.js.map +0 -1
  138. package/dist/engine/dispatcher.d.ts +0 -73
  139. package/dist/engine/dispatcher.js +0 -663
  140. package/dist/engine/dispatcher.js.map +0 -1
  141. package/dist/engine/event-shim.d.ts +0 -117
  142. package/dist/engine/event-shim.js +0 -435
  143. package/dist/engine/event-shim.js.map +0 -1
  144. package/dist/engine/executors/orchestrator.d.ts +0 -81
  145. package/dist/engine/executors/orchestrator.js +0 -365
  146. package/dist/engine/executors/orchestrator.js.map +0 -1
  147. package/dist/engine/executors/shared.d.ts +0 -189
  148. package/dist/engine/executors/shared.js +0 -616
  149. package/dist/engine/executors/shared.js.map +0 -1
  150. package/dist/engine/github/git-auth.d.ts +0 -62
  151. package/dist/engine/github/git-auth.js +0 -161
  152. package/dist/engine/github/git-auth.js.map +0 -1
  153. package/dist/engine/github/github-app-client.d.ts +0 -23
  154. package/dist/engine/github/github-app-client.js +0 -33
  155. package/dist/engine/github/github-app-client.js.map +0 -1
  156. package/dist/engine/github/github-tools.d.ts +0 -18
  157. package/dist/engine/github/github-tools.js +0 -263
  158. package/dist/engine/github/github-tools.js.map +0 -1
  159. package/dist/engine/github/github.d.ts +0 -1193
  160. package/dist/engine/github/github.js +0 -357
  161. package/dist/engine/github/github.js.map +0 -1
  162. package/dist/engine/github/profiles.d.ts +0 -279
  163. package/dist/engine/github/profiles.js +0 -42
  164. package/dist/engine/github/profiles.js.map +0 -1
  165. package/dist/engine/github/review-poster.d.ts +0 -98
  166. package/dist/engine/github/review-poster.js +0 -177
  167. package/dist/engine/github/review-poster.js.map +0 -1
  168. package/dist/engine/llm.d.ts +0 -79
  169. package/dist/engine/llm.js +0 -269
  170. package/dist/engine/llm.js.map +0 -1
  171. package/dist/engine/oauth.d.ts +0 -43
  172. package/dist/engine/oauth.js +0 -103
  173. package/dist/engine/oauth.js.map +0 -1
  174. package/dist/engine/router.d.ts +0 -29
  175. package/dist/engine/router.js +0 -680
  176. package/dist/engine/router.js.map +0 -1
  177. package/dist/engine/screen/classifier.d.ts +0 -93
  178. package/dist/engine/screen/classifier.js +0 -215
  179. package/dist/engine/screen/classifier.js.map +0 -1
  180. package/dist/engine/screen/screen.d.ts +0 -41
  181. package/dist/engine/screen/screen.js +0 -93
  182. package/dist/engine/screen/screen.js.map +0 -1
  183. package/dist/evals-api.d.ts +0 -24
  184. package/dist/evals-api.js +0 -22
  185. package/dist/evals-api.js.map +0 -1
  186. package/dist/index.d.ts +0 -1
  187. package/dist/index.js +0 -940
  188. package/dist/index.js.map +0 -1
  189. package/dist/managed-repos.d.ts +0 -30
  190. package/dist/managed-repos.js +0 -72
  191. package/dist/managed-repos.js.map +0 -1
  192. package/dist/notify/blocks.d.ts +0 -23
  193. package/dist/notify/blocks.js +0 -118
  194. package/dist/notify/blocks.js.map +0 -1
  195. package/dist/notify/index.d.ts +0 -17
  196. package/dist/notify/index.js +0 -7
  197. package/dist/notify/index.js.map +0 -1
  198. package/dist/notify/model.d.ts +0 -57
  199. package/dist/notify/model.js +0 -89
  200. package/dist/notify/model.js.map +0 -1
  201. package/dist/notify/notifier.d.ts +0 -18
  202. package/dist/notify/notifier.js +0 -100
  203. package/dist/notify/notifier.js.map +0 -1
  204. package/dist/notify/render.d.ts +0 -21
  205. package/dist/notify/render.js +0 -59
  206. package/dist/notify/render.js.map +0 -1
  207. package/dist/notify/transports/github.d.ts +0 -26
  208. package/dist/notify/transports/github.js +0 -27
  209. package/dist/notify/transports/github.js.map +0 -1
  210. package/dist/notify/transports/slack.d.ts +0 -27
  211. package/dist/notify/transports/slack.js +0 -37
  212. package/dist/notify/transports/slack.js.map +0 -1
  213. package/dist/notify/types.d.ts +0 -119
  214. package/dist/notify/types.js +0 -16
  215. package/dist/notify/types.js.map +0 -1
  216. package/dist/providers.d.ts +0 -125
  217. package/dist/providers.js +0 -279
  218. package/dist/providers.js.map +0 -1
  219. package/dist/sandbox/docker.d.ts +0 -180
  220. package/dist/sandbox/docker.js +0 -517
  221. package/dist/sandbox/docker.js.map +0 -1
  222. package/dist/sandbox/egress-allowlist.d.ts +0 -74
  223. package/dist/sandbox/egress-allowlist.js +0 -164
  224. package/dist/sandbox/egress-allowlist.js.map +0 -1
  225. package/dist/sandbox/egress-firewall-config.d.ts +0 -127
  226. package/dist/sandbox/egress-firewall-config.js +0 -434
  227. package/dist/sandbox/egress-firewall-config.js.map +0 -1
  228. package/dist/sandbox/images.d.ts +0 -23
  229. package/dist/sandbox/images.js +0 -55
  230. package/dist/sandbox/images.js.map +0 -1
  231. package/dist/sandbox/index.d.ts +0 -112
  232. package/dist/sandbox/index.js +0 -332
  233. package/dist/sandbox/index.js.map +0 -1
  234. package/dist/sandbox/sandbox.d.ts +0 -214
  235. package/dist/sandbox/sandbox.js +0 -453
  236. package/dist/sandbox/sandbox.js.map +0 -1
  237. package/dist/sandbox/smol.d.ts +0 -162
  238. package/dist/sandbox/smol.js +0 -485
  239. package/dist/sandbox/smol.js.map +0 -1
  240. package/dist/session-log.d.ts +0 -63
  241. package/dist/session-log.js +0 -290
  242. package/dist/session-log.js.map +0 -1
  243. package/dist/state/approval-store.d.ts +0 -88
  244. package/dist/state/approval-store.js +0 -149
  245. package/dist/state/approval-store.js.map +0 -1
  246. package/dist/state/build-assets.d.ts +0 -50
  247. package/dist/state/build-assets.js +0 -154
  248. package/dist/state/build-assets.js.map +0 -1
  249. package/dist/state/db.d.ts +0 -81
  250. package/dist/state/db.js +0 -155
  251. package/dist/state/db.js.map +0 -1
  252. package/dist/state/execution-store.d.ts +0 -257
  253. package/dist/state/execution-store.js +0 -527
  254. package/dist/state/execution-store.js.map +0 -1
  255. package/dist/state/migrate.d.ts +0 -15
  256. package/dist/state/migrate.js +0 -175
  257. package/dist/state/migrate.js.map +0 -1
  258. package/dist/state/workflow-run-store.d.ts +0 -216
  259. package/dist/state/workflow-run-store.js +0 -403
  260. package/dist/state/workflow-run-store.js.map +0 -1
  261. package/dist/telemetry/index.d.ts +0 -38
  262. package/dist/telemetry/index.js +0 -253
  263. package/dist/telemetry/index.js.map +0 -1
  264. package/dist/telemetry/pi-events.d.ts +0 -12
  265. package/dist/telemetry/pi-events.js +0 -134
  266. package/dist/telemetry/pi-events.js.map +0 -1
  267. package/dist/workflows/dag.d.ts +0 -37
  268. package/dist/workflows/dag.js +0 -118
  269. package/dist/workflows/dag.js.map +0 -1
  270. package/dist/workflows/loader.d.ts +0 -53
  271. package/dist/workflows/loader.js +0 -421
  272. package/dist/workflows/loader.js.map +0 -1
  273. package/dist/workflows/loop-eval.d.ts +0 -28
  274. package/dist/workflows/loop-eval.js +0 -74
  275. package/dist/workflows/loop-eval.js.map +0 -1
  276. package/dist/workflows/phase-executor.d.ts +0 -222
  277. package/dist/workflows/phase-executor.js +0 -1153
  278. package/dist/workflows/phase-executor.js.map +0 -1
  279. package/dist/workflows/phase-ref.d.ts +0 -50
  280. package/dist/workflows/phase-ref.js +0 -91
  281. package/dist/workflows/phase-ref.js.map +0 -1
  282. package/dist/workflows/resume.d.ts +0 -58
  283. package/dist/workflows/resume.js +0 -313
  284. package/dist/workflows/resume.js.map +0 -1
  285. package/dist/workflows/runner.d.ts +0 -63
  286. package/dist/workflows/runner.js +0 -381
  287. package/dist/workflows/runner.js.map +0 -1
  288. package/dist/workflows/schema.d.ts +0 -344
  289. package/dist/workflows/schema.js +0 -460
  290. package/dist/workflows/schema.js.map +0 -1
  291. package/dist/workflows/simple.d.ts +0 -90
  292. package/dist/workflows/simple.js +0 -393
  293. package/dist/workflows/simple.js.map +0 -1
  294. package/dist/workflows/target-policy.d.ts +0 -74
  295. package/dist/workflows/target-policy.js +0 -80
  296. package/dist/workflows/target-policy.js.map +0 -1
  297. package/dist/workflows/templates.d.ts +0 -88
  298. package/dist/workflows/templates.js +0 -127
  299. package/dist/workflows/templates.js.map +0 -1
  300. package/dist/workflows/triggers.d.ts +0 -21
  301. package/dist/workflows/triggers.js +0 -45
  302. package/dist/workflows/triggers.js.map +0 -1
  303. package/dist/workflows/verdict.d.ts +0 -19
  304. package/dist/workflows/verdict.js +0 -30
  305. package/dist/workflows/verdict.js.map +0 -1
  306. package/dist/worktree/manager.d.ts +0 -43
  307. package/dist/worktree/manager.js +0 -127
  308. package/dist/worktree/manager.js.map +0 -1
  309. package/docker-compose.yml +0 -274
  310. package/sandbox.Dockerfile +0 -68
  311. package/skills/README.md +0 -42
  312. package/skills/browser-qa/SKILL.md +0 -208
  313. package/skills/browser-qa/scripts/agent-browser.mjs +0 -531
  314. package/skills/building/SKILL.md +0 -95
  315. package/skills/chat/SKILL.md +0 -36
  316. package/skills/code-review/SKILL.md +0 -82
  317. package/skills/debug-production/SKILL.md +0 -108
  318. package/skills/demo/SKILL.md +0 -228
  319. package/skills/demo/scripts/compose-demo.sh +0 -243
  320. package/skills/issue-answer/SKILL.md +0 -91
  321. package/skills/issue-comment/SKILL.md +0 -49
  322. package/skills/issue-triage/SKILL.md +0 -149
  323. package/skills/issue-triage/references/AGENT-BRIEF.md +0 -65
  324. package/skills/pr-comment/SKILL.md +0 -64
  325. package/skills/pr-review/SKILL.md +0 -148
  326. package/skills/pr-review/references/findings-schema.md +0 -89
  327. package/skills/qa-test/SKILL.md +0 -97
  328. package/skills/repo-health/SKILL.md +0 -67
  329. package/skills/security-feedback/SKILL.md +0 -173
  330. package/skills/security-feedback/references/templates.md +0 -77
  331. package/skills/security-review/SKILL.md +0 -215
  332. package/skills/security-review/references/issue-format.md +0 -302
  333. package/skills/verify/SKILL.md +0 -118
  334. package/workflows/answer.yaml +0 -44
  335. package/workflows/build.yaml +0 -129
  336. package/workflows/cron-health.yaml +0 -6
  337. package/workflows/cron-review.yaml +0 -8
  338. package/workflows/cron-security.yaml +0 -6
  339. package/workflows/cron-triage.yaml +0 -8
  340. package/workflows/demo.yaml +0 -62
  341. package/workflows/examples/bash-smoke.yaml +0 -41
  342. package/workflows/examples/parallel-review.yaml +0 -36
  343. package/workflows/examples/tdd-loop.yaml +0 -17
  344. package/workflows/explore.yaml +0 -80
  345. package/workflows/issue-comment.yaml +0 -15
  346. package/workflows/issue-triage.yaml +0 -22
  347. package/workflows/pr-comment.yaml +0 -16
  348. package/workflows/pr-fix.yaml +0 -17
  349. package/workflows/pr-review.yaml +0 -50
  350. package/workflows/prompts/answer.md +0 -68
  351. package/workflows/prompts/architect.md +0 -44
  352. package/workflows/prompts/classifier.md +0 -60
  353. package/workflows/prompts/classify-adds-info.md +0 -17
  354. package/workflows/prompts/demo.md +0 -125
  355. package/workflows/prompts/executor.md +0 -42
  356. package/workflows/prompts/explore-ask.md +0 -99
  357. package/workflows/prompts/explore-publish.md +0 -31
  358. package/workflows/prompts/explore-read.md +0 -120
  359. package/workflows/prompts/explore-synthesize.md +0 -88
  360. package/workflows/prompts/fix.md +0 -18
  361. package/workflows/prompts/guardrails.md +0 -96
  362. package/workflows/prompts/pr-fix.md +0 -26
  363. package/workflows/prompts/pr.md +0 -39
  364. package/workflows/prompts/qa-browser.md +0 -95
  365. package/workflows/prompts/qa-synth.md +0 -44
  366. package/workflows/prompts/qa-test.md +0 -60
  367. package/workflows/prompts/re-reviewer.md +0 -33
  368. package/workflows/prompts/reviewer.md +0 -60
  369. package/workflows/prompts/verify-browser.md +0 -93
  370. package/workflows/prompts/verify-synth.md +0 -44
  371. package/workflows/prompts/verify.md +0 -63
  372. package/workflows/qa-test.yaml +0 -94
  373. package/workflows/repo-health.yaml +0 -15
  374. package/workflows/security-feedback.yaml +0 -25
  375. package/workflows/security-review.yaml +0 -37
  376. package/workflows/verify.yaml +0 -93
  377. /package/dist/{cli/cli-config.d.ts → cli-config.d.ts} +0 -0
  378. /package/dist/{cli/cli-config.js → cli-config.js} +0 -0
  379. /package/dist/{cli/cli-format.d.ts → cli-format.d.ts} +0 -0
  380. /package/dist/{cli/cli-format.js → cli-format.js} +0 -0
  381. /package/dist/{cli/cli-timeline.d.ts → cli-timeline.d.ts} +0 -0
  382. /package/dist/{cli/cli-timeline.js → cli-timeline.js} +0 -0
  383. /package/dist/{cli/cli.d.ts → cli.d.ts} +0 -0
  384. /package/dist/{cli/oauth-cli.d.ts → oauth-cli.d.ts} +0 -0
  385. /package/dist/{cli/setup.d.ts → setup.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/workflows/resume.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- import type { ExecutorConfig, GitAccessProfile, GitSandboxAccess } from "../engine/github/profiles.js";
2
- import type { StateDb } from "../state/db.js";
3
- import type { ModelConfig, VariantConfig } from "../config/config.js";
4
- import type { AgentWorkflowDefinition } from "./schema.js";
5
- import { type TemplateContext } from "./templates.js";
6
- import { isTerminated } from "./phase-executor.js";
7
- import type { ProgressReporter } from "../notify/types.js";
8
- export { isTerminated };
9
- /**
10
- * Map of approval gate name → enabled. Gate names are arbitrary strings
11
- * declared in YAML (`phase.approval_gate`, `phase.loop.approval_gate`); a
12
- * gate pauses only if the corresponding key is `true` here.
13
- */
14
- export type ApprovalGateConfig = Record<string, boolean>;
15
- export interface PhaseResult {
16
- phase: string;
17
- success: boolean;
18
- output: string;
19
- error?: string;
20
- }
21
- export interface RunnerCallbacks {
22
- onPhaseStart?: (phase: string) => Promise<void>;
23
- onPhaseEnd?: (phase: string, result: PhaseResult) => Promise<void>;
24
- postComment?: (body: string) => Promise<void>;
25
- /**
26
- * In-place "task list" progress surface. When set (workflows that opt in via
27
- * `status_checklist: true`), the runner drives this instead of posting a new
28
- * comment per phase. When unset, the runner falls back to `postComment`.
29
- */
30
- reporter?: ProgressReporter;
31
- /**
32
- * Fires once the workflow_runs row is known. Used by the Slack dispatch path
33
- * to post the "Starting <skill>" reply with a deep link to the run.
34
- */
35
- onRunStart?: (runId: string) => Promise<void>;
36
- /**
37
- * Public base URL of the admin dashboard (`config.publicUrl`). When set, the
38
- * progress checklist embeds a live-run deep link in its meta. Undefined when
39
- * no public URL is configured (the link is simply omitted).
40
- */
41
- publicUrl?: string;
42
- }
43
- export interface WorkflowResult {
44
- success: boolean;
45
- phases: PhaseResult[];
46
- prNumber?: number;
47
- paused?: boolean;
48
- }
49
- export declare function gitAccessProfileForWorkflow(workflowName: string): GitAccessProfile;
50
- export declare function gitSandboxAccessForWorkflow(workflowName: string, owner: string, repo: string, prePopulateBranch?: string, runId?: string): GitSandboxAccess;
51
- /**
52
- * Run an agent workflow defined by a YAML definition.
53
- *
54
- * Every workflow executes as a DAG: workflows that declare no `depends_on`
55
- * are run as a synthesized chain (each phase depends on the one before it),
56
- * reproducing the old linear semantics including the failure cascade. Ready
57
- * nodes are executed **one at a time in declaration order** (sequential).
58
- * Each node's body — context / standard agent / reviewer-loop / generic-loop,
59
- * plus approval and reply gates — lives in {@link PhaseExecutor}; the
60
- * scheduler here owns the DAG, the `phases[]`/`outputs{}` accumulation, and
61
- * the in-memory node status.
62
- */
63
- export declare function runWorkflow(definition: AgentWorkflowDefinition, ctx: TemplateContext, config: ExecutorConfig, callbacks: RunnerCallbacks, db?: StateDb, models?: ModelConfig, approvalConfig?: ApprovalGateConfig, workflowId?: string, variants?: VariantConfig): Promise<WorkflowResult>;
@@ -1,381 +0,0 @@
1
- import { resolveModel, resolveVariant } from "../config/config.js";
2
- import { loadPromptTemplate } from "./loader.js";
3
- import { renderTemplate } from "./templates.js";
4
- import { buildDag, getReadyNodes, getNodesToSkip, isComplete } from "./dag.js";
5
- import { PER_TARGET_RECREATE_WORKFLOWS } from "./target-policy.js";
6
- import { qaImageAvailable, SANDBOX_IMAGE_QA } from "../sandbox/images.js";
7
- import { PhaseExecutor, isTerminated, } from "./phase-executor.js";
8
- import { collapseDetail } from "../notify/render.js";
9
- // `isTerminated` used to live here; re-exported for API stability.
10
- export { isTerminated };
11
- export function gitAccessProfileForWorkflow(workflowName) {
12
- switch (workflowName) {
13
- case "build":
14
- case "pr-fix":
15
- return "repo-write";
16
- case "pr-review":
17
- return "review-write";
18
- case "issue-triage":
19
- case "issue-comment":
20
- case "pr-comment":
21
- case "explore":
22
- case "answer":
23
- case "security-review":
24
- // verify / qa-test / demo read the repo and post a findings/demo comment —
25
- // they never push code, so issues-write (contents:read + issues:write) is
26
- // enough.
27
- case "verify":
28
- case "qa-test":
29
- case "demo":
30
- return "issues-write";
31
- case "security-feedback":
32
- return "repo-write";
33
- default:
34
- return "read";
35
- }
36
- }
37
- export function gitSandboxAccessForWorkflow(workflowName, owner, repo, prePopulateBranch, runId) {
38
- const profile = gitAccessProfileForWorkflow(workflowName);
39
- return {
40
- owner,
41
- repo,
42
- profile,
43
- // Never forward the App PEM into sandboxes. The harness already mints a
44
- // profile-scoped token and forwards it as GITHUB_TOKEN, so the agent gets
45
- // github tools in static-token mode without the App private key ever
46
- // entering the sandbox.
47
- allowMcpAppAuth: false,
48
- prePopulateBranch,
49
- runId,
50
- // Read-only workflows never need git history — clone at --depth 1. Only
51
- // the code-pushing profiles (build / pr-fix / security-feedback) keep the
52
- // deeper clone for rebase/amend headroom.
53
- shallow: profile !== "repo-write",
54
- // `build` recreates its workspace from the default branch on a fresh run
55
- // (issue #153) rather than refreshing a possibly-stale feature branch.
56
- recreateFromBase: PER_TARGET_RECREATE_WORKFLOWS.has(workflowName),
57
- };
58
- }
59
- // ── Unified workflow scheduler ───────────────────────────────────────────────
60
- /**
61
- * Run an agent workflow defined by a YAML definition.
62
- *
63
- * Every workflow executes as a DAG: workflows that declare no `depends_on`
64
- * are run as a synthesized chain (each phase depends on the one before it),
65
- * reproducing the old linear semantics including the failure cascade. Ready
66
- * nodes are executed **one at a time in declaration order** (sequential).
67
- * Each node's body — context / standard agent / reviewer-loop / generic-loop,
68
- * plus approval and reply gates — lives in {@link PhaseExecutor}; the
69
- * scheduler here owns the DAG, the `phases[]`/`outputs{}` accumulation, and
70
- * the in-memory node status.
71
- */
72
- export async function runWorkflow(definition, ctx, config, callbacks, db, models, approvalConfig, workflowId, variants) {
73
- const phases = [];
74
- const outputs = {};
75
- const { taskId } = ctx;
76
- // Slack-originated runs carry an explicit `slack:` trigger id — everything
77
- // else (GitHub webhook, CLI) uses the legacy owner/repo#N shape.
78
- const triggerId = ctx.triggerIdOverride
79
- || `${ctx.owner}/${ctx.repo}#${ctx.issueNumber}`;
80
- // Load scratch state from the workflow run so generic loops can resume
81
- // iteration at the right index and templates can read {{scratch.*}}.
82
- const scratch = ctx.scratch
83
- ? { ...ctx.scratch }
84
- : (db && workflowId ? { ...(db.runs.getRun(workflowId)?.scratch ?? {}) } : {});
85
- ctx.scratch = scratch;
86
- const prePopulateBranch = typeof ctx.prePopulateBranch === "string"
87
- ? ctx.prePopulateBranch
88
- : undefined;
89
- const githubAccess = gitSandboxAccessForWorkflow(definition.name, ctx.owner, ctx.repo, prePopulateBranch, workflowId);
90
- const notify = callbacks.postComment || (async () => { });
91
- const reporter = callbacks.reporter;
92
- const onStart = callbacks.onPhaseStart || (async () => { });
93
- const onEnd = callbacks.onPhaseEnd || (async () => { });
94
- // Terminal step key — dynamic loop steps (re-review / fix cycles) are
95
- // inserted just above it so the checklist reads top-to-bottom in run order.
96
- const lastPhaseKey = [...definition.phases]
97
- .reverse()
98
- .find((p) => (p.type ?? "agent") !== "context")?.name;
99
- const modelFor = (taskType) => models ? resolveModel(models, taskType) : undefined;
100
- const variantFor = (taskType) => variants ? resolveVariant(variants, taskType) : undefined;
101
- /** Render a prompt template with current context + outputs. */
102
- const renderPrompt = (promptPath, extraCtx) => {
103
- const template = loadPromptTemplate(promptPath);
104
- return renderTemplate(template, { ...ctx, phaseOutputs: outputs, ...(extraCtx || {}) });
105
- };
106
- /**
107
- * Render a YAML message template and post it as a *standalone* message.
108
- * Routes through `reporter.note()` when the in-place checklist is active,
109
- * else the legacy `postComment`.
110
- */
111
- const notifyMessage = async (template, extraCtx) => {
112
- if (!template)
113
- return;
114
- const rendered = renderTemplate(template, { ...ctx, phaseOutputs: outputs, ...(extraCtx || {}) });
115
- if (!rendered.trim())
116
- return;
117
- if (reporter)
118
- await reporter.note(rendered);
119
- else
120
- await notify(rendered);
121
- };
122
- /** Post a pre-rendered standalone message (already-built string). */
123
- const postNote = async (text) => {
124
- if (!text.trim())
125
- return;
126
- if (reporter)
127
- await reporter.note(text);
128
- else
129
- await notify(text);
130
- };
131
- /**
132
- * Render a YAML message template and post it as an interactive approval
133
- * prompt — Approve/Reject buttons on rich surfaces (Slack), plain text on the
134
- * legacy `notify` path or a surface without buttons (GitHub).
135
- */
136
- const approvalNote = async (template, extraCtx, meta) => {
137
- if (!template)
138
- return;
139
- const rendered = renderTemplate(template, { ...ctx, phaseOutputs: outputs, ...(extraCtx || {}) });
140
- if (!rendered.trim())
141
- return;
142
- if (reporter)
143
- await reporter.noteApproval(rendered, meta);
144
- else
145
- await notify(rendered);
146
- };
147
- /** Transition a checklist step (and optionally render a YAML message detail). */
148
- const reportStep = async (key, status, template, extraCtx, opts) => {
149
- const rendered = template
150
- ? renderTemplate(template, { ...ctx, phaseOutputs: outputs, ...(extraCtx || {}) }).trim()
151
- : "";
152
- if (reporter) {
153
- const detail = collapseDetail(rendered);
154
- if (opts?.insert) {
155
- const step = { key, label: opts.label ?? key, status, detail };
156
- await reporter.insertStep(step, opts.insertBefore ?? lastPhaseKey);
157
- }
158
- else {
159
- await reporter.step(key, status, detail);
160
- }
161
- if (opts?.alsoNote && rendered)
162
- await reporter.note(rendered);
163
- }
164
- else if (rendered) {
165
- await notify(rendered);
166
- }
167
- };
168
- /** Persist a phase transition to the DB workflow run. */
169
- const persistPhase = (phase, summary) => {
170
- if (db && workflowId) {
171
- const entry = {
172
- phase,
173
- timestamp: new Date().toISOString(),
174
- success: true,
175
- summary,
176
- };
177
- db.runs.appendPhase(workflowId, phase, entry);
178
- }
179
- };
180
- /** Mark the workflow run as failed. */
181
- const failWorkflow = (errorMsg) => {
182
- if (db && workflowId) {
183
- db.runs.finishRun(workflowId, "failed", { error: errorMsg });
184
- }
185
- };
186
- /** Should an approval gate with this name actually pause the workflow? */
187
- const gateEnabled = (gateName) => !!gateName && approvalConfig?.[gateName] === true;
188
- // ── Collaborators ───────────────────────────────────────────────────────────
189
- const runScope = {
190
- definition,
191
- ctx,
192
- config,
193
- taskId,
194
- triggerId,
195
- githubAccess,
196
- scratch,
197
- db,
198
- workflowId,
199
- };
200
- const phaseReporter = {
201
- onStart,
202
- onEnd,
203
- step: reportStep,
204
- message: notifyMessage,
205
- approvalNote,
206
- postNote,
207
- persistPhase,
208
- failWorkflow,
209
- };
210
- const phaseResolver = {
211
- modelFor,
212
- variantFor,
213
- renderPrompt,
214
- gateEnabled,
215
- };
216
- const executor = new PhaseExecutor(runScope, phaseReporter, phaseResolver);
217
- // ── Schedule ─────────────────────────────────────────────────────────────────
218
- const dag = buildDag(definition.phases, { chainIfNoDeps: true });
219
- // Phase lookup + the backend this run is actually executing on. Used by the
220
- // `requires_sandbox` gate below — config.sandbox is undefined when no backend
221
- // override is set, which resolves to gondolin (see agent-executor).
222
- const phaseByName = new Map(definition.phases.map((p) => [p.name, p]));
223
- const activeBackend = config.sandbox ?? "gondolin";
224
- while (!isComplete(dag)) {
225
- // Honour a cancel that landed during the previous phase's execution.
226
- if (db && workflowId) {
227
- const latest = db.runs.getRun(workflowId);
228
- if (latest?.status === "cancelled") {
229
- console.log(`[runner] ${definition.name} cancelled — stopping`);
230
- return { success: false, phases };
231
- }
232
- }
233
- // Skip nodes whose trigger rule fails (deps terminal, rule unsatisfied).
234
- // This is how a failure cascades to the end of a chain as skips. Skips are
235
- // recorded in the executions ledger — the single source of truth the
236
- // dashboard derives phase status from.
237
- const toSkip = getNodesToSkip(dag);
238
- for (const node of toSkip) {
239
- node.status = "skipped";
240
- phases.push({ phase: node.name, success: true, output: "Skipped (trigger rule not satisfied)" });
241
- db?.executions.recordSkippedPhase(`${definition.name}:${node.name}`, triggerId, workflowId, githubAccess.repo);
242
- await reportStep(node.name, "skipped");
243
- }
244
- const ready = getReadyNodes(dag);
245
- // Capability gate: skip any ready node whose declared capability isn't
246
- // available on this host. Safe-by-default graceful degradation — a gated
247
- // phase (e.g. the browser-QA step that needs the docker image) silently
248
- // no-ops instead of failing the workflow. Two reasons trigger a skip:
249
- // 1. `requires_sandbox` names a backend other than the one running.
250
- // 2. `sandbox_image: qa` but the browser-QA image isn't built here (only
251
- // checked on docker — on other backends the field is inert).
252
- // Uses the same non-failing skip mechanics as the trigger-rule skip above,
253
- // plus the phase's `on_skipped_done` message so the user sees why.
254
- const gatedSkip = [];
255
- for (const node of ready) {
256
- const phaseDef = phaseByName.get(node.name);
257
- const req = phaseDef?.requires_sandbox;
258
- if (req !== undefined && req !== activeBackend) {
259
- gatedSkip.push({ node, reason: `requires ${req} sandbox; running ${activeBackend}` });
260
- }
261
- else if (phaseDef?.sandbox_image === "qa" &&
262
- activeBackend === "docker" &&
263
- !qaImageAvailable()) {
264
- gatedSkip.push({ node, reason: `requires the ${SANDBOX_IMAGE_QA} image, not built on this host` });
265
- }
266
- }
267
- if (gatedSkip.length > 0) {
268
- for (const { node, reason } of gatedSkip) {
269
- node.status = "skipped";
270
- const phaseDef = phaseByName.get(node.name);
271
- phases.push({
272
- phase: node.name,
273
- success: true,
274
- output: `Skipped (${reason})`,
275
- });
276
- db?.executions.recordSkippedPhase(`${definition.name}:${node.name}`, triggerId, workflowId, githubAccess.repo);
277
- await reportStep(node.name, "skipped", phaseDef?.messages?.on_skipped_done);
278
- }
279
- continue; // re-evaluate the DAG with these nodes now terminal
280
- }
281
- if (ready.length === 0) {
282
- if (toSkip.length === 0)
283
- break; // stuck (shouldn't happen in a valid DAG)
284
- continue; // only had skips — loop to process downstream
285
- }
286
- // Sequential: run the earliest-declared ready node, one at a time.
287
- // Resume is ledger-driven: a completed phase's `runPhase` call returns
288
- // skipped:done via `shouldRunPhase`, so re-running from the top is safe.
289
- const node = ready[0];
290
- node.status = "running";
291
- let outcome;
292
- try {
293
- outcome = await executor.execute(node, outputs);
294
- }
295
- catch (err) {
296
- // An agent call threw (OOM / unexpected). Mark the node failed so the
297
- // failure cascades to downstream skips, mirroring a normal failure.
298
- console.error(`[runner] Phase "${node.name}" threw unexpectedly:`, err);
299
- phases.push({ phase: node.name, success: false, error: String(err), output: "" });
300
- node.status = "failed";
301
- continue;
302
- }
303
- for (const r of outcome.results)
304
- phases.push(r);
305
- if (outcome.outputVars)
306
- Object.assign(outputs, outcome.outputVars);
307
- if (outcome.aborted) {
308
- // Dedup running-skip — another instance owns this phase. Stop without
309
- // cascading skips; this isn't a phase failure.
310
- return { success: false, phases };
311
- }
312
- if (outcome.paused) {
313
- return { success: true, phases, paused: true };
314
- }
315
- node.status = outcome.status;
316
- }
317
- // ── Workflow wrap-up ──────────────────────────────────────────────────────
318
- //
319
- // If the definition declares an `on_success.set_phase` terminal marker on any
320
- // phase, record it so the DB row shows the workflow as fully complete. Also
321
- // opportunistically extract a PR number from the terminal phase's output.
322
- const anyFailed = phases.some((p) => !p.success);
323
- const success = !anyFailed;
324
- let prNumber;
325
- let prUrl;
326
- const terminalPhase = [...definition.phases].reverse().find((p) => p.on_success?.set_phase);
327
- if (terminalPhase) {
328
- const terminalResult = phases.find((p) => p.phase === terminalPhase.name);
329
- const prMatch = terminalResult?.output?.match(/#(\d+)/);
330
- if (prMatch)
331
- prNumber = parseInt(prMatch[1], 10);
332
- const urlMatch = terminalResult?.output?.match(/https?:\/\/[^\s)]+\/pull\/\d+/);
333
- if (urlMatch)
334
- prUrl = urlMatch[0];
335
- }
336
- if (success) {
337
- if (db && workflowId) {
338
- // Fold the `on_success.set_phase` terminal marker into the same
339
- // transaction as the status flip so the dashboard never sees one
340
- // without the other.
341
- const terminalMarker = terminalPhase?.on_success?.set_phase
342
- ? { phase: terminalPhase.on_success.set_phase, summary: prNumber ? `PR #${prNumber}` : undefined }
343
- : undefined;
344
- db.runs.finishRun(workflowId, "succeeded", terminalMarker ? { terminalMarker } : {});
345
- }
346
- }
347
- else {
348
- const firstFailure = phases.find((p) => !p.success);
349
- failWorkflow(firstFailure?.error || "workflow failed");
350
- }
351
- // Single final update: render the workflow's `final_message` against the
352
- // accumulated outputs and deliver it once — folded into the checklist comment
353
- // as its footer when the in-place reporter is active, else posted as one
354
- // standalone comment. Empty render ⇒ no-op (e.g. the synthesizing phase was
355
- // skipped). This is what lets verify/qa-test end with a single combined
356
- // verdict instead of a comment per phase.
357
- if (success && definition.final_message) {
358
- const finalRendered = renderTemplate(definition.final_message, {
359
- ...ctx,
360
- phaseOutputs: outputs,
361
- }).trim();
362
- if (finalRendered) {
363
- if (reporter)
364
- await reporter.footer(finalRendered);
365
- else
366
- await notify(finalRendered);
367
- }
368
- }
369
- if (reporter) {
370
- if (success && prNumber && terminalPhase) {
371
- const link = prUrl ? `[PR #${prNumber}](${prUrl})` : `PR #${prNumber}`;
372
- await reporter.step(terminalPhase.name, "done", link);
373
- }
374
- const prSuffix = prNumber ? ` — PR #${prNumber}` : "";
375
- await reporter.noteTerminal(success
376
- ? `✅ **${definition.name} complete**${prSuffix}.`
377
- : `❌ **${definition.name} failed** — see the checklist above for the failing step.`);
378
- }
379
- return { success, phases, prNumber };
380
- }
381
- //# sourceMappingURL=runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/workflows/runner.ts"],"names":[],"mappings":"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"}