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,62 +0,0 @@
1
- kind: demo
2
- name: demo
3
- classification:
4
- intent: demo
5
- description: |
6
- DEMO — The user wants you to record a DEMO VIDEO of a feature/PR: "demo this", "record a demo of the new dashboard", "make a video showing the dark-mode toggle", "show me a before/after of the fix". The deliverable is a short screen-recorded mp4 of the running web UI, not a pass/fail report and not a verdict. Prefer DEMO over QATEST/VERIFY when the user explicitly asks for a recording, a video, or "show"/"demo" rather than to test or confirm a behaviour.
7
- examples:
8
- - '"record a demo of this" with ISSUE TITLE "Add dark-mode toggle" → INTENT: DEMO, REPO: NONE, ISSUE: NONE, REASON: NONE'
9
- - '"make a short before/after video of the fix on cliftonc/foo#12" → INTENT: DEMO, REPO: cliftonc/foo, ISSUE: 12, REASON: NONE'
10
- description: |
11
- Record a short demo VIDEO of a PR or feature and post it. Drives the repo's
12
- web UI in a real headless browser, screen-records the session, and composites
13
- a titled, size-capped mp4 with ffmpeg — delivered inline on the originating
14
- issue/PR (and in the dashboard Artifacts view). Does not modify code.
15
-
16
- This workflow's demo phase runs ENTIRELY on the docker backend with the
17
- browser-QA image (Playwright + Chromium + ffmpeg baked in). On gondolin, or a
18
- docker host without that image, the demo phase is silently SKIPPED (graceful
19
- degradation) and the run completes without a video — it never fails the
20
- trigger. Compositing is ffmpeg-only (title card, optional before/after,
21
- trim/speed, size cap) — there is no Remotion / cinematic pipeline.
22
-
23
- Delivery is a single in-place status comment (`status_checklist`): the run
24
- shows its phases ticking off, then the demo phase's report — with the playable
25
- video embedded — becomes the comment footer via `final_message`. The agent
26
- does NOT post anything itself.
27
-
28
- Triggered by:
29
- - a `@last-light demo [notes]` comment on an issue/PR
30
- - manual CLI: tsx src/cli.ts demo owner/repo#N [-- "notes"]
31
-
32
- status_checklist: true
33
- final_message: "{{demoResult}}"
34
-
35
- phases:
36
- - name: phase_0
37
- label: Context
38
- type: context
39
- depends_on: []
40
-
41
- # The demo phase. Gated to the docker backend AND the enriched
42
- # `lastlight-sandbox-qa:latest` image (Playwright + Chromium + ffmpeg). On
43
- # gondolin, or a docker host without that image, the scheduler silently skips
44
- # it (the run still completes — there is no text fallback for a video).
45
- - name: demo
46
- label: Demo
47
- depends_on: [phase_0]
48
- prompt: prompts/demo.md
49
- # demo: the director procedure + compose-demo.sh wrapper (primary).
50
- # browser-qa: the headless driver (agent-browser.mjs) with --record-dir.
51
- # building: install + run the repo's dev-server to drive.
52
- skills: [demo, browser-qa, building]
53
- model: "{{models.demo}}"
54
- variant: "{{variants.demo}}"
55
- requires_sandbox: docker
56
- sandbox_image: qa
57
- output_var: demoResult
58
- messages:
59
- on_start: "Recording a demo — installing, running the app, and capturing the UI..."
60
- on_success: "Demo recorded — see the video below."
61
- on_failure: "I couldn't record the demo — see the logs for details."
62
- on_skipped_done: "Demo unavailable on this host (needs the docker browser-QA image)."
@@ -1,41 +0,0 @@
1
- kind: agent
2
- name: bash-smoke
3
- description: "Smoke test for deterministic bash + script phases (run in sandbox)"
4
- phases:
5
- - name: phase_0
6
- type: context
7
-
8
- # Deterministic shell command in the sandbox. stdout is captured and exposed
9
- # downstream via output_var.
10
- - name: emit
11
- type: bash
12
- command: "echo hello-from-bash"
13
- output_var: greeting
14
-
15
- # A second bash phase reads the first phase's output via template substitution
16
- # AND via the forwarded LL_OUT_<PHASE> env var.
17
- - name: consume
18
- type: bash
19
- command: "echo template={{phaseOutputs.emit}} ; echo env=$LL_OUT_EMIT"
20
-
21
- # Inline JS via node.
22
- - name: js
23
- type: script
24
- runtime: js
25
- script: |
26
- console.log("node version:", process.version);
27
- console.log("answer:", 6 * 7);
28
-
29
- # Inline Python via uv. The PEP 723 block declares a dependency that uv
30
- # resolves from PyPI (pypi.org is on the strict egress allowlist) into a
31
- # cached venv. unrestricted_egress is NOT needed for PyPI.
32
- - name: py
33
- type: script
34
- runtime: python
35
- timeout_seconds: 120
36
- script: |
37
- # /// script
38
- # dependencies = ["cowsay"]
39
- # ///
40
- import cowsay
41
- cowsay.cow("hello from uv")
@@ -1,36 +0,0 @@
1
- kind: build
2
- name: parallel-review
3
- description: >
4
- Parallel architect + security review, then concurrent executor + linter,
5
- with a final merge phase. Demonstrates DAG parallelism via depends_on.
6
-
7
- phases:
8
- - name: phase_0
9
- type: context
10
-
11
- - name: architect
12
- type: agent
13
- prompt: prompts/architect.md
14
- depends_on: [phase_0]
15
-
16
- - name: security_review
17
- type: agent
18
- prompt: prompts/security-review.md
19
- depends_on: [phase_0]
20
-
21
- - name: executor
22
- type: agent
23
- prompt: prompts/executor.md
24
- depends_on: [architect, security_review]
25
-
26
- - name: linter
27
- type: agent
28
- prompt: prompts/linter.md
29
- depends_on: [executor]
30
-
31
- - name: pr
32
- type: agent
33
- prompt: prompts/pr.md
34
- depends_on: [executor, linter]
35
- on_success:
36
- set_phase: complete
@@ -1,17 +0,0 @@
1
- kind: build
2
- name: tdd-cycle
3
- description: "Test-driven development loop — write a failing test, then implement until it passes"
4
- phases:
5
- - name: phase_0
6
- type: context
7
- - name: write-test
8
- type: agent
9
- prompt: prompts/write-test.md
10
- - name: implement
11
- type: agent
12
- prompt: prompts/implement.md
13
- generic_loop:
14
- max_iterations: 5
15
- until_bash: "npm test"
16
- interactive: false
17
- fresh_context: false
@@ -1,80 +0,0 @@
1
- kind: explore
2
- name: explore
3
- classification:
4
- intent: explore
5
- description: |
6
- EXPLORE — The user wants help shaping an idea BEFORE writing code: "help me think through X", "brainstorm Y", "spec this out", "explore an idea for Z". A bare "explore" / "explore this" / "let's explore" is also EXPLORE — especially as a reply on an existing issue (ISSUE TITLE present), where the implicit object is the issue's idea. EXPLORE = shape the idea / write a spec; BUILD = write the code now.
7
- examples:
8
- - '"explore adding webhooks to cliftonc/drizby" → INTENT: EXPLORE, REPO: cliftonc/drizby, ISSUE: NONE, REASON: NONE'
9
- - '"explore" with ISSUE TITLE "Feature: Allow configuration of otel endpoints" → INTENT: EXPLORE, REPO: NONE, ISSUE: NONE, REASON: NONE'
10
- - '"explore this" with ISSUE TITLE "Add webhook support" → INTENT: EXPLORE, REPO: NONE, ISSUE: NONE, REASON: NONE'
11
- description: |
12
- Socratic idea-shaping loop: read the existing issue/thread for context, ask
13
- clarifying questions in a reply-gated loop until the shape is clear, then
14
- synthesize a detailed spec and publish it (as a comment on the originating
15
- issue for GitHub-initiated runs, or as a new issue in EXPLORE_DEFAULT_REPO
16
- for Slack-initiated runs).
17
-
18
- trigger: explore
19
- # Single in-place task-list comment/message instead of a comment per phase.
20
- # Reply-gate questions and the published spec still post as standalone notes.
21
- status_checklist: true
22
-
23
- phases:
24
- - name: phase_0
25
- label: Context
26
- type: context
27
-
28
- - name: read_context
29
- label: Read existing context
30
- prompt: prompts/explore-read.md
31
- model: "{{models.explore}}"
32
- output_var: baseline
33
- unrestricted_egress: true
34
- web_search: true
35
- messages:
36
- on_start: "Cloning `{{owner}}/{{repo}}` and reading the codebase..."
37
-
38
- - name: socratic
39
- label: Socratic questioning
40
- prompt: prompts/explore-ask.md
41
- model: "{{models.explore}}"
42
- unrestricted_egress: true
43
- web_search: true
44
- generic_loop:
45
- max_iterations: 8
46
- until: "output.contains('READY')"
47
- interactive: true
48
- gate_kind: reply
49
- scratch_key: socratic
50
- # A degenerate turn (agent exits with no question) retries once; if it's
51
- # still empty, advance to synthesis with the Q&A gathered so far instead
52
- # of hard-failing the whole explore run.
53
- on_soft_failure:
54
- retries: 1
55
- then: complete
56
- gate_message: |
57
- _Just reply to this thread with your answers — no need to @mention me. I'll keep going until we have enough to write this up._
58
- _Say `we're done` at any point to jump straight to the spec draft._
59
-
60
- - name: synthesize
61
- label: Synthesize spec
62
- prompt: prompts/explore-synthesize.md
63
- model: "{{models.architect}}"
64
- output_var: spec
65
- unrestricted_egress: true
66
- web_search: true
67
- messages:
68
- on_start: "Writing up the spec from our conversation..."
69
-
70
- - name: publish
71
- label: Publish spec
72
- prompt: prompts/explore-publish.md
73
- model: "{{models.executor}}"
74
- output_var: publishResult
75
- on_success:
76
- set_phase: complete
77
- messages:
78
- on_start: "Publishing the spec..."
79
- on_success: "{{publishResult}}"
80
- on_failure: "Failed to publish the spec — see the logs for details."
@@ -1,15 +0,0 @@
1
- kind: comment
2
- name: issue-comment
3
- description: |
4
- Respond conversationally to a comment on an issue. Used when a maintainer
5
- comments on an issue without explicitly asking for a build — the bot
6
- replies in-thread without invoking the full Architect → Executor cycle.
7
-
8
- Triggered by:
9
- - issue_comment.created webhook (when classifier returns "lightweight")
10
-
11
- phases:
12
- - name: respond
13
- label: Respond
14
- skill: issue-comment
15
- model: "{{models.comment}}"
@@ -1,22 +0,0 @@
1
- kind: triage
2
- name: issue-triage
3
- classification:
4
- intent: triage
5
- description: |
6
- TRIAGE — The user wants to scan/triage issues on a repo: "triage cliftonc/repo", "scan for new issues", "can you triage <repo>?".
7
- examples:
8
- - '"could you triage https://github.com/foo/bar?" → INTENT: TRIAGE, REPO: foo/bar, ISSUE: NONE, REASON: NONE'
9
- description: |
10
- Triage a GitHub issue: read it, classify it, label it, and act on stale or
11
- incomplete reports. Single agent invocation, no PR creation.
12
-
13
- Triggered by:
14
- - issue.opened webhook
15
- - cron scan over managed repos
16
- - manual CLI: tsx src/cli.ts cliftonc/owner/repo#N
17
-
18
- phases:
19
- - name: triage
20
- label: Triage
21
- skill: issue-triage
22
- model: "{{models.triage}}"
@@ -1,16 +0,0 @@
1
- kind: comment
2
- name: pr-comment
3
- description: |
4
- Answer a maintainer's question about an open PR with concrete, code-cited
5
- evidence. The PR-side counterpart to `issue-comment` — distinguished
6
- because PR questions need the diff and a higher file-read cap.
7
-
8
- Triggered by:
9
- - issue_comment.created webhook on a PR (when classifier returns a
10
- non-build intent and prNumber is set)
11
-
12
- phases:
13
- - name: respond
14
- label: Respond
15
- skill: pr-comment
16
- model: "{{models.comment}}"
@@ -1,17 +0,0 @@
1
- kind: pr-fix
2
- name: pr-fix
3
- description: "Lightweight PR fix — no architect/reviewer, just fix and push"
4
- trigger: pr-fix
5
- # Single in-place task-list comment/message instead of a comment per phase.
6
- status_checklist: true
7
-
8
- phases:
9
- - name: fix
10
- label: Fix
11
- prompt: prompts/pr-fix.md
12
- skill: building
13
- model: "{{models.pr-fix}}"
14
- messages:
15
- on_start: "On it — fixing PR #{{prNumber}}..."
16
- on_success: "**Fix pushed** to `{{branch}}`. CI should re-run automatically."
17
- on_failure: "**Fix failed** — I wasn't able to resolve this automatically."
@@ -1,50 +0,0 @@
1
- kind: review
2
- name: pr-review
3
- classification:
4
- intent: review
5
- description: |
6
- REVIEW — The user wants a code review. Either repo-wide ("review cliftonc/repo", "check PRs", "can you review PRs on <repo>?") OR, when the comment is a reply on a PR (ISSUE TITLE present), a request to review THIS PR: "review this", "can you review this?", "please review", "take a look at this PR", "give this a review". The deliverable is a formal PR review (inline comments on the diff). Prefer REVIEW over CHAT whenever there's a clear "review"/"take a look" request on a PR.
7
- examples:
8
- - '"please review https://github.com/foo/bar/pull/42" → INTENT: REVIEW, REPO: foo/bar, ISSUE: 42, REASON: NONE'
9
- - '"can you review this?" with ISSUE TITLE "Add HTML sanitizer for messages" → INTENT: REVIEW, REPO: NONE, ISSUE: NONE, REASON: NONE'
10
- - '"take a look at this PR when you get a chance" with ISSUE TITLE "Port fastify adapter" → INTENT: REVIEW, REPO: NONE, ISSUE: NONE, REASON: NONE'
11
- description: |
12
- Review a single GitHub pull request: read the diff, check for issues, and
13
- post structured feedback. Does not run a full build cycle and does not
14
- modify code.
15
-
16
- Triggered by:
17
- - pr.opened webhook
18
- - cron scan over managed repos
19
- - manual CLI: tsx src/cli.ts review owner/repo#N
20
-
21
- phases:
22
- - name: review
23
- label: Review
24
- # pr-review: the PR procedure (primary). code-review: the finding-tier +
25
- # what-to-check rubric. No `building` — pr-review is a pure code review; CI
26
- # validates that the change builds/runs.
27
- #
28
- # The agent does NOT submit the review itself — it writes structured
29
- # findings (content only: skip? / summary / event / findings[]) to
30
- # .lastlight/pr-review/findings.json. The first-class `post-review` action
31
- # below reads that file and posts one formal review.
32
- skills: [pr-review, code-review]
33
- model: "{{models.review}}"
34
- variant: "{{variants.review}}"
35
-
36
- # First-class, in-process submission (type: post-review → PhaseExecutor.
37
- # runPostReview). Reads the agent's findings.json for the review *content*
38
- # (skip? / summary / event / findings[]) and supplies everything else from
39
- # the harness itself — PR number (run context), base ref (baseBranch), head
40
- # SHA + diff (the pre-cloned checkout) — so the AI never hand-copies metadata.
41
- # It anchors each finding to a changed line, demotes off-diff findings to the
42
- # body (GitHub 422s on off-diff lines), and posts ONE review via GitHubClient
43
- # (App auth in prod; token + githubApiBaseUrl against the eval mock). A
44
- # genuine failure — missing findings after a real review, or a GitHub error
45
- # that survives the body-only retry — FAILS this phase visibly; a legitimate
46
- # `skip` succeeds without posting. Idempotent on resume (no-op if a bot review
47
- # already exists on the head SHA).
48
- - name: post-review
49
- label: Post inline review
50
- type: post-review
@@ -1,68 +0,0 @@
1
- You are answering a **question** — the user wants information, an explanation,
2
- or a comparison, not a code change. Read the `issue-answer` skill for the full
3
- procedure and rules, then follow it. This prompt gives you the specific question
4
- and how your answer is delivered.
5
-
6
- ## The question
7
-
8
- {{#if issueTitle}}**Issue title:** {{issueTitle}}{{/if}}
9
- {{#if issueBody}}
10
- **Issue body:**
11
- {{issueBody}}
12
- {{/if}}
13
- {{#if commentBody}}
14
- **Question:**
15
- {{commentBody}}
16
- {{/if}}
17
-
18
- Target repo: **{{owner}}/{{repo}}**
19
- {{#if issueNumber}}Originating GitHub issue: **#{{issueNumber}}**{{/if}}
20
-
21
- ## Workspace
22
-
23
- The repo is (or will be) in a `{{repo}}/` subdirectory under your cwd:
24
-
25
- ```
26
- ls -la
27
- ```
28
-
29
- If you see `{{repo}}/.git/`, the harness pre-cloned it — `cd {{repo}}`.
30
- Otherwise `git clone https://github.com/{{owner}}/{{repo}}.git {{repo}}` and
31
- `cd` in. Read what the question needs (`CONTEXT.md`, `README`, `docs/`,
32
- `spec/`, code) — don't survey the whole tree. Use the `web_search` /
33
- `web_fetch` tools for anything outside this repo (other tools, frameworks,
34
- "X vs Y" comparisons); cite what you use.
35
-
36
- ## How your answer is delivered — read carefully
37
-
38
- Your **final message is the answer**, and the harness posts it for you:
39
- {{#if issueNumber}}
40
- - as a comment on issue #{{issueNumber}}.
41
- {{/if}}
42
- {{#if !issueNumber}}
43
- - back into the Slack thread this question came from.
44
- {{/if}}
45
-
46
- So make your final message the complete, self-contained answer in clean
47
- markdown — no "here's what I'll do" preamble, no meta-commentary.
48
-
49
- **Converge — don't get cut off.** Your tool budget is bounded. The moment you
50
- think "I have enough" or "let me just confirm one more thing", stop researching
51
- and write the answer in that same turn — do **not** fire another tool call
52
- first. A reply truncated mid-research is worse than one that omits a minor
53
- detail; flag anything unverified as unverified rather than chasing it with your
54
- last turn.
55
-
56
- **Do NOT post the answer yourself** (no `github_add_issue_comment`) — that would
57
- double-post. The only GitHub write you make is the label:
58
-
59
- {{#if issueNumber}}
60
- - Apply the `question` label to issue #{{issueNumber}} with `github_add_labels`
61
- (ensure it exists first with one `github_ensure_labels` call —
62
- `[{name: "question", color: "d876e3"}]`; it's idempotent, no 422 to handle).
63
- Leave the issue open.
64
- {{/if}}
65
- {{#if !issueNumber}}
66
- - This is a Slack-initiated question — there is no issue to label. Just produce
67
- the answer.
68
- {{/if}}
@@ -1,44 +0,0 @@
1
- You are the ARCHITECT. Analyze the codebase and produce an implementation plan.
2
-
3
- You are already inside the {{repo}} repo at branch {{branch}} — the harness
4
- pre-cloned it and your cwd is the repo root. Git is configured.
5
-
6
- Before planning:
7
- 1. Read CLAUDE.md (and CONTRIBUTING.md if present) for project-specific guidance.
8
- 2. Read {{issueDir}}/guardrails-report.md for the test/lint/typecheck commands.
9
-
10
- CONTEXT:
11
- {{contextSnapshot}}
12
-
13
- OUTPUT — write the plan to {{issueDir}}/architect-plan.md:
14
- - Problem Statement (2-5 sentences with file:line references)
15
- - Summary of what needs to change
16
- - Files to modify — an EXHAUSTIVE manifest the executor implements verbatim:
17
- - List EVERY file to change, with the exact path, line/symbol anchor, and what
18
- to change. The executor should not need to go hunting for files.
19
- - Enumerate ALL members of any multi-file group. If a change touches one
20
- member of a set, glob/`ls` the set and list them ALL — e.g. every i18n
21
- locale under the locales dir, every adapter/provider variant, every test
22
- file for the touched module. Name the exact keys/identifiers to add (e.g.
23
- the precise i18n keys). Missing a sibling here forces the executor to
24
- rediscover it mid-implementation.
25
- - Commands — copy the exact test / lint / typecheck commands from
26
- guardrails-report.md into the plan so the executor uses them directly.
27
- - Implementation approach (step-by-step)
28
- - Risks and edge cases
29
- - For every input the design does NOT fully support, specify **warn-and-skip**
30
- or **warn-and-surface** behaviour explicitly. A silent default, a silently
31
- skipped case, or a dropped output is a correctness bug — never plan for one.
32
- If an input can't be handled, the plan must say how the user is told (a
33
- warning, a surfaced error), not let it disappear.
34
- - Test strategy
35
- - Estimated complexity: simple / medium / complex
36
-
37
- AFTER WRITING:
38
- 1. mkdir -p {{issueDir}}
39
- 2. Write architect-plan.md
40
- 3. Write status.md with current_phase: architect
41
- {{#if !externalizeArtifacts}}4. git add .lastlight/ && git commit -m "docs: architect plan for #{{issueNumber}}"
42
- 5. git push -u origin HEAD{{/if}}{{#if externalizeArtifacts}}4. Do NOT git add or commit {{issueDir}}/ — the harness persists it to the Last Light server automatically.{{/if}}
43
-
44
- OUTPUT: The branch name and a brief summary (3-5 lines).
@@ -1,60 +0,0 @@
1
- You are a router for messages directed at a GitHub/Slack bot.
2
- Classify the user's message into exactly one category, and extract any repository or issue references.
3
-
4
- Categories:
5
- {{categories}}
6
- APPROVE — The user is approving a pending gate: "approve", "go ahead", "looks good, continue", "yes proceed".
7
- REJECT — The user is rejecting a pending gate: "reject", "abort", "cancel this", "no don't proceed". Extract any reason given.
8
- STATUS — The user wants to know what's running: "status", "what's running", "any tasks active?".
9
- RESET — The user wants to start a fresh session: "new", "reset", "start over", "fresh session".
10
- CHAT — Anything else: questions, conversation, thanks, general discussion, and status reports of work the human already did ("thanks, fixed in <sha>", "addressed your comments", "done — added tests").
11
-
12
- Polite or question phrasings are still clear intent. "Can you do a security review of X?",
13
- "could you triage <repo>?", "please review PRs on <repo>" are SECURITY, TRIAGE, REVIEW
14
- respectively — not CHAT. The "prefer CHAT when ambiguous" rule only applies when the
15
- message has no clear action verb. Presence of "security review", "triage", "review PRs",
16
- "scan for vulnerabilities", etc. makes the intent unambiguous regardless of politeness.
17
-
18
- When ambiguous between EXPLORE and CHAT, prefer CHAT. Only pick EXPLORE when the user is explicitly asking for brainstorming / spec-shaping / design exploration — OR gives a bare "explore"/"explore this" command (see the issue-reply rule below), which is unambiguous, not chat.
19
- When ambiguous between QUESTION and CHAT, prefer CHAT — only pick QUESTION for a substantive informational question that genuinely benefits from research (reading docs/code or a web search). Casual conversation, greetings, thanks, and trivial one-liners stay CHAT.
20
- When ambiguous between BUILD and CHAT, prefer CHAT.
21
- When ambiguous between VERIFY/QATEST and REVIEW/CHAT, prefer the existing category — only pick VERIFY or QATEST when the user explicitly asks you to test, run, confirm, or exercise a behaviour/flow.
22
- When ambiguous between DEMO and VERIFY/QATEST, prefer the existing category — only pick DEMO when the user explicitly asks for a video, a recording, or to "demo"/"show" the feature.
23
- When ambiguous between APPROVE/REJECT and CHAT, prefer CHAT — only classify as APPROVE/REJECT when the intent is clearly about a pending workflow gate.
24
-
25
- Repo extraction: always emit REPO as "owner/name" (never a URL). If the message contains
26
- a github.com URL, convert it: https://github.com/cliftonc/lastlight → cliftonc/lastlight.
27
- URL paths like /issues/42 or /pull/5 should populate ISSUE as well.
28
-
29
- When the message is a reply on an existing issue/PR, the issue title is provided
30
- as ISSUE TITLE. Short imperative replies classify by their verb, with the issue
31
- as the implicit object — the "prefer CHAT when ambiguous" rule does NOT apply to
32
- a clear command directed at the issue's subject:
33
- - "lets build this", "build it", "go ahead", "ship it", "do it", "implement
34
- this", "make it so" → BUILD (write the code now).
35
- - "explore", "explore this", "let's explore", "think this through", "spec this
36
- out", "brainstorm this" → EXPLORE (shape the idea / write a spec first).
37
- - "review this", "can you review this", "please review", "take a look",
38
- "give this a review" → REVIEW (do a real code review now; on a PR this means
39
- review the current PR's diff).
40
- A bare command word ("explore", "build", "review") on an existing issue/PR is a
41
- clear command, NOT ambiguous chat.
42
- This verb rule is for IMPERATIVE requests only. A PR/issue reply that REPORTS
43
- already-completed work or responds to your review — "thanks, fixed in <sha>",
44
- "addressed in commit abc123", "done, added a regression test", "this is
45
- intentional, confirmed with the maintainer" — is a status report, NOT a
46
- command. Classify it CHAT regardless of the ISSUE TITLE or an @mention. Do not
47
- let words like "fix"/"build"/"add" inside a past-tense report flip it to BUILD.
48
-
49
- Respond in exactly this format (each on its own line, no extra text):
50
- INTENT: {{intentTokens}}
51
- REPO: owner/name or NONE
52
- ISSUE: number or NONE
53
- REASON: text or NONE
54
-
55
- Examples:
56
- {{examples}}
57
- "thanks, that makes sense!" → INTENT: CHAT, REPO: NONE, ISSUE: NONE, REASON: NONE
58
- "approve" → INTENT: APPROVE, REPO: NONE, ISSUE: NONE, REASON: NONE
59
- "reject, the plan is too complex" → INTENT: REJECT, REPO: NONE, ISSUE: NONE, REASON: the plan is too complex
60
- "what's running?" → INTENT: STATUS, REPO: NONE, ISSUE: NONE, REASON: NONE
@@ -1,17 +0,0 @@
1
- You are deciding whether a new comment on a GitHub issue,
2
- written by the issue's reporter, should re-open triage of that issue.
3
-
4
- ADDS_INFO — the comment adds NEW substantive information that changes the problem
5
- statement: extra details, reproduction steps, environment specifics, a concrete
6
- example, clarification of the request, a scope change, or an answer to a question
7
- triage previously asked. The kind of comment that would make a maintainer re-read
8
- and re-classify the issue.
9
-
10
- NOISE — the comment adds nothing that changes triage: thanks, acknowledgement,
11
- agreement ("sounds good", "yes please"), a "+1"/me-too, a status update with no
12
- new specifics, a question directed back at the maintainer, or general chatter.
13
-
14
- When genuinely unsure, answer NOISE — re-triage should only fire on a clear
15
- addition of information.
16
-
17
- Respond with exactly one word on its own line: ADDS_INFO or NOISE